358 lines
20 KiB
Markdown
358 lines
20 KiB
Markdown
# Future Work
|
|
|
|
Current Notarius behavior is documented in the canonical README, CLI,
|
|
configuration, operations, internal, and integration docs. This roadmap records
|
|
future work only. Items are ordered roughly by current value and specificity,
|
|
not as committed release dates.
|
|
|
|
## Near-Term Validation And LLM Reliability
|
|
|
|
The following work forms one related program but should be promoted into
|
|
separate feature roadmaps and implemented in dependency order. PromptKit owns
|
|
structural output repair within one completion. Notarius owns stage candidates,
|
|
validator chains, semantic rejection policy, and whether another stage attempt
|
|
is warranted.
|
|
|
|
### 1. Upgrade To PromptKit v0.8.0
|
|
|
|
This item has been promoted to the standalone
|
|
[PromptKit v0.8.0 Upgrade](promptkit-v0.8.md) roadmap. That document owns the
|
|
release-by-release compatibility review, adopted features, structured-repair
|
|
policy, target integration boundary, acceptance criteria, and settled design
|
|
decisions.
|
|
|
|
### 2. Feedback-Aware Stage Validation Retries
|
|
|
|
- Model Notarius's corrective stage-retry conversation explicitly after
|
|
PromptKit v0.8.0. The first attempt sends the ordinary complete initial
|
|
prompt. If application validation rejects the resulting LLM-produced
|
|
candidate and another stage attempt is available, reconstruct that complete
|
|
initial prompt byte-for-byte and append exactly two messages: an assistant
|
|
message containing the defective response and an application-owned user
|
|
message detailing every applicable semantic validation error and requesting
|
|
one corrected, complete replacement response. This is a freshly constructed
|
|
correction request, not continuation of an accumulating conversation.
|
|
- Use the configured stage `retries` value as the one outer retry budget for
|
|
this loop. `retries: N` continues to mean at most `N` additional complete
|
|
chunk, extract, merge, or normalize attempts after the initial attempt,
|
|
whether an attempt is needed because of a producer error or semantic
|
|
rejection. Do not add a second semantic-correction count. PromptKit's
|
|
prompt-level `repair_attempts` budget is independent and internal to each
|
|
individual LLM completion, and does not consume or replenish the Notarius
|
|
stage budget.
|
|
- Extend the framework-managed validation boundary for chunk, extract, merge,
|
|
and normalize stages so a rejected LLM-produced candidate and its exact raw
|
|
model response remain available to construct the next stage attempt.
|
|
Deterministic producers cannot improve by repeating the same inputs; a
|
|
rejection from a deterministic stage is therefore terminal under the
|
|
configured rejection policy rather than consuming retries mechanically.
|
|
- Preserve the original session ID, selected profile, structured-output
|
|
contract, prompt inputs, and reusable prompt prefix. Carry only the latest
|
|
candidate and latest aggregate feedback; do not build an unbounded retry
|
|
conversation. Keep model-facing corrective guidance separate from
|
|
operator-facing diagnostics, and apply explicit size, redaction, and debug
|
|
disclosure rules to both.
|
|
- Run every applicable validator in the configured chain before deciding
|
|
whether to retry. Do not short-circuit merely because an earlier validator
|
|
rejected the candidate. Aggregate all semantic rejection reason codes and
|
|
corrective guidance into the retry message so one retry can address the
|
|
whole candidate. A validator is applicable only when its declared target and
|
|
prerequisites can be satisfied; record a deterministic skipped diagnostic
|
|
rather than invoking a validator on an input it cannot interpret. Initially
|
|
execute the chain sequentially in configured order so results, diagnostics,
|
|
costs, and feedback ordering remain deterministic; consider validator
|
|
concurrency only in response to measured latency.
|
|
- Continue running independent applicable validators after one validator
|
|
execution failure so the attempt retains as much useful diagnostic
|
|
information as practical. Do not present validator operational failures as
|
|
defects in the producer candidate and do not include them in corrective
|
|
feedback.
|
|
- Distinguish three terminal conditions and make their policies configurable
|
|
at a coherent pipeline or binding scope:
|
|
- **producer structural failure:** PromptKit could not return a usable
|
|
structured candidate after its repair budget. Default to `fail_run`; an
|
|
allowed alternative may record a terminal stage or lane rejection where
|
|
execution can safely continue, but may not accept the invalid output;
|
|
- **semantic rejection:** one or more validators completed and rejected the
|
|
candidate. Default to `fail_run` after corrective stage retries are
|
|
exhausted; allow an explicit alternative that records the existing
|
|
rejected-output outcome without advancing that output;
|
|
- **validator execution failure:** a validator could not produce a valid
|
|
decision because of generation, structural-output, transport, or internal
|
|
failure. Default to a genuine warning and an explicitly recorded
|
|
`validation_incomplete` or equivalent degraded state while allowing the
|
|
candidate to continue; allow strict configuration to fail the run instead.
|
|
- An LLM-backed validator uses the same scheduled PromptKit boundary as every
|
|
other LLM-backed module. Its own response may use PromptKit's bounded
|
|
structural repair. Distinguish its possible output states:
|
|
- output rejected by PromptKit's structural contract should consume only the
|
|
validator prompt's configured PromptKit repair budget;
|
|
- output that is structurally valid but violates a deterministically
|
|
checkable validator-result invariant should be classified as a validator
|
|
execution failure;
|
|
- output that satisfies the complete validator-result contract is the
|
|
validator's decision, even though an LLM judgment may remain imperfect.
|
|
Automatically judging that judgment would require another semantic
|
|
validator and is outside this feature.
|
|
If the validator cannot return a contract-valid decision, do not recursively
|
|
create another Notarius semantic-validation loop around it. Apply the
|
|
configured validator-failure policy. The default warning must identify the
|
|
validator and affected stage without exposing sensitive content.
|
|
- Separate validator execution retry from producer correction. A transient
|
|
validator operational failure must not automatically discard and regenerate
|
|
an otherwise usable producer candidate. Any bounded retry of the validator
|
|
itself should reuse that same immutable candidate and remain subordinate to
|
|
PromptKit and provider retry behavior.
|
|
- Preserve attempt-level provenance, cumulative token usage, validator
|
|
outcomes, aggregated correction feedback, and terminal policy decisions in
|
|
the debug and manifest models without copying raw source material into
|
|
ordinary errors or durable summaries.
|
|
- Define terminal-outcome precedence. A semantic rejection dominates a
|
|
validator execution failure for the same candidate: use the completed
|
|
rejections to correct the producer while separately recording incomplete
|
|
validation. If a later candidate has no semantic rejection but one validator
|
|
still fails, apply the configured validator-failure policy to that candidate.
|
|
Never allow a known semantic rejection to become accepted through a
|
|
warn-and-continue setting, and never accept a structurally invalid producer
|
|
response. Permissive policy may preserve a rejected-output outcome or accept
|
|
a structurally valid candidate with explicitly incomplete validation; it may
|
|
not relabel known-invalid output as approved.
|
|
|
|
Before implementation, record the generic validation and retry state machine
|
|
in an ADR. The ADR should own the separation between PromptKit repair and
|
|
Notarius correction, use of the existing stage-retry budget, reconstruction of
|
|
correction conversations, all-applicable-validator aggregation, deterministic
|
|
validator ordering, non-recursive validator failure handling, outcome
|
|
precedence, default fail-open/fail-closed choices, configurable terminal
|
|
policies, and provenance and sensitive-data constraints. A dependency-upgrade
|
|
ADR is not needed for PromptKit v0.8.0 itself. Current behavior remains
|
|
authoritative until the validation ADR is implemented and the canonical
|
|
architecture, configuration, operations, and internal documentation are
|
|
updated.
|
|
|
|
### 3. D&D Combat Scene Semantic Validation
|
|
|
|
- Add an optional production LLM-backed D&D validator that determines whether
|
|
proposed scene boundaries and classifications represent substantive active
|
|
combat correctly. Its central quality goal is that active combat is kept in
|
|
coherent scenes classified as `combat`, rather than split incorrectly or
|
|
hidden inside scenes classified as `narrative`, `recap`, or `meta`.
|
|
- Resolve the validator's exact target before implementation. The current
|
|
`dnd/scenes` chunker owns only complete, gap-free source ranges, while the
|
|
per-chunk `dnd/scene-descriptions` extractor owns the `combat`, `narrative`,
|
|
`recap`, and `meta` classification. The preferred initial placement is
|
|
therefore an extract-stage validator for `dnd/scene-descriptions`, where it
|
|
can compare one proposed kind with the corresponding transcript chunk.
|
|
- Consider a chunk-stage LLM validator only for a distinct boundary-coherence
|
|
question that can be answered from the complete transcript and proposed
|
|
range map, such as whether one continuous combat was fragmented across
|
|
inappropriate scene boundaries. Do not duplicate the same classification
|
|
judgment at both stages. Moving classification into chunk-plan annotations
|
|
would change the deliberately minimal, annotation-free chunk contract and
|
|
requires an explicit architecture review before it is selected.
|
|
- Validate both false negatives and false positives: a non-combat kind must not
|
|
omit substantive active combat, and a combat kind must be supported by such
|
|
combat. Keep the existing deterministic downstream rule that combat-turn
|
|
extraction runs only for an exact `combat` scene classification; semantic
|
|
review improves the upstream classification but does not replace that gate.
|
|
- Run the semantic validator through PromptKit, use a minimal required-field
|
|
structured response schema, and let PromptKit repair structural validator
|
|
output within its bounded budget. A contract-invalid final validator response
|
|
is a validator execution failure, not a semantic rejection and not a reason
|
|
to recursively validate the validator.
|
|
- Evaluate the prompt and decision policy against a small human-reviewed set
|
|
containing combat setup, active turns, interruptions, multi-phase encounters,
|
|
brief rules discussion, aftermath, recalled combat, and false-positive
|
|
hostile dialogue. Measure false acceptance, false rejection, retry success,
|
|
added calls, latency, and token cost before placing it in the production
|
|
default chain.
|
|
- An ADR is not required if classification remains owned by
|
|
`dnd/scene-descriptions` and the validator follows the generic validation ADR.
|
|
Create or supersede an ADR if the work transfers scene classification into
|
|
the chunker or otherwise changes stage ownership or the durable chunk-plan
|
|
contract.
|
|
|
|
### 4. Warning Signal And Presentation Reform
|
|
|
|
- Audit every warning producer and representative successful runs. Ordinary
|
|
success producing dozens of warnings is a failed operator experience: the
|
|
volume obscures actionable problems and trains operators to ignore the
|
|
warning channel.
|
|
- Define a small warning taxonomy that distinguishes actionable degradation,
|
|
incomplete validation, lossy fallback, and data-quality risk from routine
|
|
normalization observations or informational diagnostics. Preserve detailed
|
|
traceability in debug or manifest data without promoting every observation
|
|
to a top-level CLI warning.
|
|
- Consider stable deduplication and aggregation by scope and reason code,
|
|
bounded samples plus omitted counts, and a concise CLI summary with a path to
|
|
detailed diagnostics. Do not suppress genuine validator execution failures
|
|
merely to reduce the count.
|
|
- Decide which warnings affect process status, rejection summaries, durable run
|
|
receipts, or only debug output. Ensure warning ordering and aggregation are
|
|
deterministic across concurrent execution.
|
|
- Establish a representative warning-volume acceptance target and human review
|
|
workflow before changing individual producers piecemeal. The intended result
|
|
is not zero warnings; it is a small set in which every surfaced warning merits
|
|
operator attention.
|
|
- This work does not require an ADR unless it changes validation acceptance,
|
|
failure, or durable contract semantics. CLI presentation and diagnostic
|
|
taxonomy otherwise belong in a feature roadmap followed by updates to their
|
|
canonical configuration, operations, integration, and internal documents.
|
|
|
|
## Near-Term D&D Pipeline
|
|
|
|
### Evaluate Spell Extraction And Normalization
|
|
|
|
- Evaluate ordinary extraction retries and the completed normalization path
|
|
against a human-reviewed transcript set before and after adopting the shared
|
|
PromptKit repair and Notarius validation-retry policies above.
|
|
- Maintain a small set of human-reviewed transcripts and outputs for prompt,
|
|
validator, and normalizer development. Treat model-quality review as an
|
|
iterative human evaluation aid, not a deterministic correctness gate.
|
|
|
|
### Evaluate The Shared D&D Scene Plan
|
|
|
|
- Reassess whether one shared scene plan provides enough context for NPC,
|
|
spell, combat, interaction, and scene-description lanes after real-world use.
|
|
Add more complex chunking only in response to demonstrated failures.
|
|
|
|
## Shared Normalization And Quality Work
|
|
|
|
The implemented source-backed core and initial D&D registry adoption are
|
|
described by [Module Internals](../internal/modules.md#semantic-reconciliation)
|
|
and
|
|
[D&D Module Internals](../internal/dnd.md#semantic-registry-reconciliation).
|
|
The sections below keep broader extensions deferred.
|
|
|
|
### Large-Collection Semantic Reconciliation
|
|
|
|
- Evaluate deterministic candidate blocking only after representative registry
|
|
inputs exceed the active roadmap's bounded single-request limits. Blocking
|
|
should use cheap, explainable signals to form plausible comparison sets while
|
|
preserving the possibility that a duplicate appears outside a lexical name
|
|
match.
|
|
- Define correctness for candidates that appear in more than one block,
|
|
conflicting canonical selections, transitive identity across blocks, retry
|
|
isolation, and deterministic final ordering before implementation.
|
|
- Prefer a reconciliation graph or union plan with explicit conflict checks
|
|
over arbitrary fixed-size slices. Never silently treat a batch boundary as
|
|
evidence that two candidates are distinct.
|
|
- Record per-request bounds, block provenance, model calls, discarded
|
|
proposals, and final group derivation well enough to audit a collapse.
|
|
|
|
### Operator-Selected Semantic Policies
|
|
|
|
- Consider allowing an operator to select an approved semantic-policy prompt
|
|
for a typed reconciliation module without replacing the shared protocol,
|
|
response schema, or deterministic safety rules.
|
|
- Define the trusted asset source, configuration syntax, compatibility checks,
|
|
startup validation, provenance, prompt fingerprinting, checkpoint effects,
|
|
and support boundary before exposing the option.
|
|
- Prefer selection among registered, typed-policy-compatible prompt assets over
|
|
arbitrary filesystem prompt paths. Do not add this flexibility until an
|
|
operator workflow requires it; artifact-family-owned policy remains simpler
|
|
and safer for the initial implementation.
|
|
|
|
### Broader Reconciliation Inputs And Module Selection
|
|
|
|
- Revisit alternate context providers when a concrete non-source-backed entity
|
|
collection needs semantic reconciliation. Any extension must preserve the
|
|
same request-local identity, deterministic proposal validation, provenance,
|
|
and typed application guarantees.
|
|
- Consider a selectable generic normalizer only if Notarius gains a real
|
|
domain-neutral typed artifact contract that can safely support it. Do not
|
|
weaken exact artifact registration or introduce reflection-based arbitrary
|
|
JSON mutation merely to expose a universal module key.
|
|
|
|
### Validation And Review
|
|
|
|
- Add domain validators and production default chains alongside each new D&D
|
|
artifact.
|
|
- Add production LLM-backed validators only when a concrete review policy
|
|
benefits from model judgment and deterministic checks are insufficient.
|
|
- Add validator diagnostics and timing summaries if operators need more detail
|
|
than the current [durable output bundle](../integrations/json-output.md)
|
|
provides.
|
|
- Add validator compatibility metadata if deployments need config-time proof
|
|
that a validator is suitable for a particular stage, module, or artifact
|
|
kind.
|
|
- Add media-type validators when non-JSON artifact representations are
|
|
introduced.
|
|
|
|
## Further Reference Evolution
|
|
|
|
- Make prior-run artifacts easier to bind as references without changing the
|
|
existing module-facing reference-item contract.
|
|
- Add structured or parsed references, such as typed NPC registries, rosters,
|
|
or spell catalogs, when opaque UTF-8 prompt material is no longer sufficient.
|
|
- Add per-slot or per-chunk inclusion policies so large references are not
|
|
repeated in every prompt unnecessarily.
|
|
- Add token budgeting and model context-window management for reference
|
|
content.
|
|
- Add reference caching, preprocessing, summarization, embedding, or retrieval
|
|
only when reference size and observed model behavior justify them.
|
|
- Extend generated references to prior-run artifacts or derived summaries only
|
|
after same-run ordered handoffs establish the required provenance and
|
|
lifecycle semantics.
|
|
|
|
## Design Considerations To Revisit
|
|
|
|
These concerns are relevant to ordered artifact dependencies but are not
|
|
committed near-term features.
|
|
|
|
### Cross-artifact identity links
|
|
|
|
Evaluate whether downstream D&D artifacts should retain canonical NPC IDs from
|
|
the generated NPC reference in addition to normalized display names. Any such
|
|
contract must define player-character, unknown-actor, missing-NPC, and
|
|
superseded-identity behavior before implementation. Deterministic validation
|
|
may confirm that a linked ID exists in the consumed NPC artifact, but the link
|
|
must never substitute for transcript evidence that the downstream event
|
|
occurred.
|
|
|
|
### Artifact contract evolution
|
|
|
|
Define compatibility and migration policy before generated-reference chains
|
|
must span multiple schema versions or long-lived historical artifacts. The
|
|
policy should address stable identifier semantics, which schema changes permit
|
|
checkpoint reuse, when an older artifact may be decoded or adapted, and when a
|
|
producer or all dependents must be recomputed. Do not add a general migration
|
|
framework until an actual contract change requires one.
|
|
|
|
### Artifact-family-oriented physical packaging
|
|
|
|
[ADR-0004](../adr/0004-package-modules-by-domain.md) currently groups production
|
|
extensions by domain and then by pipeline stage. After artifact-family
|
|
ownership terminology is established and more families span extraction,
|
|
normalization, validation, codecs, references, and assets, reassess whether a
|
|
feature-first physical layout would improve navigation and reduce scattered
|
|
changes enough to justify a repository-wide package migration. Any change must
|
|
address Go dependency cycles, registrar ownership, stable public module keys,
|
|
and supersession of the affected ADR-0004 decision. Conceptual artifact-family
|
|
ownership does not by itself require this move.
|
|
|
|
## Blue-Sky Platform And Operations
|
|
|
|
These ideas are intentionally less specified. Promote one into an earlier
|
|
section only after a concrete workflow, contract, and priority emerge.
|
|
|
|
### Platform Extensions
|
|
|
|
- Additional input adapters, such as Markdown or note-export formats.
|
|
- Additional output encoders.
|
|
- Concurrent cross-lane entity normalization or broader workflow composition.
|
|
- Batching or specialized context-window controls for LLM-backed validators.
|
|
|
|
### Distribution And Operations
|
|
|
|
- Packaged release artifacts for alpha distribution.
|
|
- Optional generated example-output fixtures with a regeneration procedure.
|
|
- Additional diagnostics or reporting views.
|
|
|
|
### Workspace And Storage
|
|
|
|
- Default-idempotent run behavior with an explicit force override.
|
|
- Remote workspace storage.
|
|
- Workspace garbage collection and archival policies.
|
|
- Cross-machine checkpoint reuse.
|