Plan Notarius configuration profile support
This commit is contained in:
102
docs/roadmap/feature-request-notarius-config-profile.yml
Normal file
102
docs/roadmap/feature-request-notarius-config-profile.yml
Normal file
@@ -0,0 +1,102 @@
|
||||
---
|
||||
title: Select a Notarius configuration profile through Narratio
|
||||
status: proposed
|
||||
consumer: rakestraw.dnd Ansible collection and its pipeline role
|
||||
|
||||
use_case: >-
|
||||
The Ansible pipeline role deploys Narratio and Notarius as independently
|
||||
configured applications. Operators select Narratio's testing profile to
|
||||
develop prompts and other pipeline assets with inexpensive models while
|
||||
retaining production settings in the base configuration. That selection
|
||||
currently cannot select a Notarius configuration profile, leaving extraction
|
||||
on its production settings.
|
||||
|
||||
desired_outcome: >-
|
||||
Narratio's testing overlay can explicitly select Notarius's testing overlay.
|
||||
Notarius owns the resulting model choices and any other testing-specific
|
||||
settings. The operator selects testing once when invoking Narratio, without
|
||||
editing production files or separately invoking Notarius.
|
||||
|
||||
rationale: >-
|
||||
Both applications already use ConfigKit configuration overlays. Selecting
|
||||
the downstream overlay preserves each application's configuration ownership
|
||||
and supports future Notarius testing adjustments without adding a Narratio
|
||||
configuration field for every downstream setting. This is explicit profile
|
||||
composition, not a requirement for arbitrary recursive orchestration.
|
||||
|
||||
requested_interface:
|
||||
field: pipeline.notarius.config_profile
|
||||
value: Optional Notarius ConfigKit configuration profile name
|
||||
supplied: >-
|
||||
Invoke Notarius with --config-profile and the selected name when extraction
|
||||
executes. The setting is available in Narratio's base configuration and
|
||||
its ordinary configuration overlays.
|
||||
omitted_or_null: >-
|
||||
Do not supply a profile-selection flag. Preserve existing Notarius
|
||||
configuration selection behavior.
|
||||
downstream_semantics: >-
|
||||
Retain Notarius's existing selector semantics, including the default
|
||||
selector for its base configuration. Notarius resolves profiles relative
|
||||
to its own configuration root, not Narratio's root.
|
||||
explicit_selection: >-
|
||||
Do not automatically forward Narratio's profile name. The selected
|
||||
Notarius profile may have the same name or a different name.
|
||||
distinction: >-
|
||||
This selects a ConfigKit configuration overlay through --config-profile,
|
||||
not a PromptKit LLM profile through --llm-profile. The Notarius overlay
|
||||
can itself select the desired LLM profiles using native Notarius settings.
|
||||
|
||||
illustrative_consumer_configuration:
|
||||
note: >-
|
||||
These are separate files managed by the Ansible suite, not a proposed
|
||||
combined configuration document. The Notarius pipeline and LLM profile
|
||||
names are illustrative; the referenced LLM profile must be available to
|
||||
Notarius.
|
||||
narratio_profiles_testing_yml: |
|
||||
notarius:
|
||||
config_profile: testing
|
||||
notarius_profiles_testing_yml: |
|
||||
pipelines:
|
||||
dnd-session:
|
||||
llm_profile: gemini-flash-latest
|
||||
operator_workflow: >-
|
||||
Select --profile testing on the ordinary Narratio invocation. Narratio
|
||||
selects Notarius's testing configuration overlay when it runs extraction;
|
||||
other Narratio testing overrides continue to apply normally.
|
||||
|
||||
observable_behavior:
|
||||
- >-
|
||||
Notarius owns overlay discovery, composition, validation, and the effective
|
||||
downstream settings. A missing or invalid selected overlay must not silently
|
||||
fall back to production or be reported as successful extraction.
|
||||
- >-
|
||||
Changing the selected Notarius configuration profile must not silently
|
||||
reuse Narratio's completed extraction from the previous selection.
|
||||
Existing downstream invalidation behavior applies when extraction changes.
|
||||
- >-
|
||||
Editing Notarius overlay contents behind an unchanged selector retains
|
||||
the existing operator responsibility to force extraction when needed.
|
||||
This request does not require inspecting or tracking private Notarius files.
|
||||
- >-
|
||||
Existing credential forwarding remains independently configurable through
|
||||
notarius.llm_api_key, including in the Narratio testing overlay when the
|
||||
selected Notarius settings require a different credential reference.
|
||||
|
||||
consumer_follow_up: >-
|
||||
After Narratio releases this interface, the standalone Narratio Ansible role
|
||||
can expose an optional variable and omit the field when unset. The suite role
|
||||
can deploy Notarius's testing overlay and select it from Narratio's testing
|
||||
overlay, then distribute the changes through the collection. These consumer
|
||||
updates are separate from this upstream feature request.
|
||||
|
||||
scope_boundaries:
|
||||
- No Notarius change is currently required; v0.7.0 supports --config-profile.
|
||||
- No separate Narratio-side Notarius LLM-profile selector is requested.
|
||||
- No automatic profile-name propagation or downstream configuration rewriting.
|
||||
- No new credential discovery, copying, or provider-name remapping.
|
||||
- This request specifies consumer behavior, not internal Narratio code changes.
|
||||
|
||||
references:
|
||||
narratio_configuration: ../config.md
|
||||
narratio_notarius_integration: ../integrations/notarius.md
|
||||
notarius_cli: https://gitea.maximumdirect.net/eric/notarius/src/tag/v0.7.0/docs/cli.md
|
||||
248
docs/roadmap/implementation.md
Normal file
248
docs/roadmap/implementation.md
Normal file
@@ -0,0 +1,248 @@
|
||||
# Implementation Plan: Notarius Configuration Profile Selection
|
||||
|
||||
Status: Ready for implementation; all stages pending.
|
||||
|
||||
## Scope and Working Instructions
|
||||
|
||||
Implement the [feature roadmap](notarius-config-profile.md), whose authority is
|
||||
the [consumer request](feature-request-notarius-config-profile.yml). Complete
|
||||
the numbered stages in order. Each stage is a bounded task for a gpt-5.6-terra
|
||||
coding agent. Do not treat completion of an intermediate stage as completion of
|
||||
the feature. Record completed stages and actual verification results here.
|
||||
|
||||
Before each stage, read `docs/development.md`, all documents under
|
||||
`docs/policy/`, the feature roadmap, and that stage's preparation list. Follow
|
||||
AGENTS.md discovery guidance. Use existing collaborators and fixtures; do not
|
||||
build a new configuration, cache, or profile-management subsystem. Tests must
|
||||
remain offline and independent of installed Notarius binaries and credentials.
|
||||
Do not change dependencies, implement Ansible changes, tag, or release as part
|
||||
of this plan.
|
||||
|
||||
## Implementation Decisions
|
||||
|
||||
These choices resolve implementation details without adding restrictions to
|
||||
the feature request:
|
||||
|
||||
- Represent the authored field as `ConfigProfile *string` with YAML/JSON name
|
||||
`config_profile` and `omitempty`, in both typed configuration and its safe
|
||||
YAML projection. Nil means omitted/null. A non-nil pointer preserves an
|
||||
explicitly supplied empty string as well as `default` and named selections.
|
||||
- Carry the same optional value in the Notarius adapter request. Nil emits no
|
||||
flag; non-nil emits `--config-profile` followed by the exact supplied string
|
||||
as a separate argument, including an empty string. Do not trim, lowercase,
|
||||
substitute Narratio's profile, impose a name regex, or inspect profile files.
|
||||
Notarius owns validation and selector interpretation.
|
||||
- For reuse evidence only, use one small stage-local helper that maps nil,
|
||||
`""`, and exact `"default"` to the empty identity; other values remain
|
||||
unchanged. Both extraction fingerprints use it. This does not mutate the
|
||||
authored field or change CLI forwarding. Do not attempt to recreate the
|
||||
downstream parser's complete normalization rules.
|
||||
- Add `ConfigProfile string` with `json:"config_profile,omitempty"` to both
|
||||
existing fingerprint payloads, populated only where extraction is enabled.
|
||||
Preserve existing field ordering and the current semantic fingerprint version
|
||||
(1). With no non-base selector the serialized payload remains unchanged;
|
||||
a named selection adds evidence that old records cannot already possess.
|
||||
No dual-reader, manifest migration, new durable metadata field, or broad
|
||||
fingerprint-version bump is needed. This is a minimal additive encoding,
|
||||
not a permanent promise to freeze fingerprint bytes across future releases.
|
||||
- Profile changes trigger the existing non-resumable/invalidation paths, not
|
||||
force mode. Preserve configured resume/cache controls, force precedence,
|
||||
credentials, output contracts, and stage-range behavior. Do not run extraction
|
||||
outside the operator's selected range or add a separate testing workspace.
|
||||
- Preserve the existing division of ownership: private downstream file changes
|
||||
behind an unchanged selector require operator-directed force when needed.
|
||||
No downstream configuration validation subprocess or runtime version gate
|
||||
is added.
|
||||
|
||||
## Stage 1: Add Configuration and Adapter Support
|
||||
|
||||
Status: Pending.
|
||||
|
||||
Preparation:
|
||||
|
||||
- `docs/config.md` (composition, profiles, Notarius, credentials).
|
||||
- `docs/integrations/notarius.md` (invocation and failure behavior).
|
||||
- `internal/config/config.go`, `credential_projection.go`,
|
||||
`pipeline_configkit.go`, `pipeline_normalize.go`, and `notarius_test.go`.
|
||||
- `internal/adapters/notarius/runner.go`, `subprocess.go`, `fake.go`, and
|
||||
`subprocess_test.go`.
|
||||
|
||||
Work:
|
||||
|
||||
1. Add the optional field to `NotariusConfig` and the `safeNotarius` projection,
|
||||
including its returned value. Let existing ConfigKit composition handle
|
||||
overrides and null; do not add a default or resolve this name as a path.
|
||||
2. Add the optional field to `notarius.RunRequest` and append the argument pair
|
||||
when non-nil in `SubprocessRunner.Run`, before `--json`. Leave subprocess
|
||||
environment construction and error propagation unchanged.
|
||||
3. Audit any explicit Notarius configuration/request copies for the new field.
|
||||
Update actual omissions without introducing a generic cloning framework.
|
||||
4. Extend real configuration-load tests to cover a base selection, an overlay
|
||||
replacing it with a differently named downstream selection, and an overlay
|
||||
clearing it with null. Cover omitted, empty, and `default` values compactly.
|
||||
Verify the safe effective-YAML output retains a supplied value, including
|
||||
explicit empty, and round-trips without leaking credential values. Reuse
|
||||
existing credential tests rather than duplicating their full matrix.
|
||||
5. Extend adapter invocation tests for omitted and supplied selections,
|
||||
including empty and `default`. Assert the argument/value boundary rather
|
||||
than imposing new ordering requirements on unrelated arguments. Reuse the
|
||||
existing nonzero-exit test with a selected profile to prove there is no
|
||||
fallback or successful receipt processing after failure.
|
||||
|
||||
Verification:
|
||||
|
||||
```sh
|
||||
go test ./internal/config ./internal/adapters/notarius
|
||||
```
|
||||
|
||||
Completion: Configuration composition and safe inspection preserve the field,
|
||||
and the adapter forwards it correctly. The executing stage is connected in
|
||||
Stage 2 together with reuse tracking, so it cannot start using untracked profile
|
||||
selections as an intermediate implementation.
|
||||
|
||||
## Stage 2: Wire Extraction and Profile-Sensitive Reuse
|
||||
|
||||
Status: Pending.
|
||||
|
||||
Preparation:
|
||||
|
||||
- `docs/internal/stage-extract.md`.
|
||||
- `internal/stage/extract.go`, `extract_resume.go`,
|
||||
`semantic_contracts_delivery.go`, and their focused tests.
|
||||
- In particular, `TestExtractStageResolvesManifestInputAndBuildsExactRequest`,
|
||||
`TestExtractSemanticConfigSensitivityAndOperationalExclusions`, and
|
||||
`TestExtractStageResumeValidationRequiresFreshEvidence`.
|
||||
|
||||
Work:
|
||||
|
||||
1. Pass `cfg.ConfigProfile` to the adapter request when extraction executes.
|
||||
Keep the field independent of credential forwarding and force overrides.
|
||||
2. Implement the reuse-identity helper and additive fingerprint fields described
|
||||
above. Update both `extractSemanticConfig` and `fingerprintDocument`, using
|
||||
the same identity in semantic comparison and `extractionFingerprint`.
|
||||
Keep disabled extraction insensitive to unused downstream settings.
|
||||
3. Extend the existing stage request test to prove the authored selection
|
||||
reaches the adapter. Cover ordinary and forced execution sufficiently to
|
||||
show that profile forwarding does not alter existing cache-control precedence.
|
||||
4. Extend semantic-sensitivity coverage: base to named, named to different named,
|
||||
and named to base change evidence; unchanged selection does not. Verify
|
||||
nil/empty/`default` share base evidence and disabled settings remain inert.
|
||||
5. Exercise the focused resume validator with an actual valid recorded bundle:
|
||||
it remains reusable for the same selection and becomes non-resumable for a
|
||||
changed selection. This guards the second fingerprint path independently
|
||||
of the application's semantic comparison.
|
||||
6. Check the additive encoding against the prior no-profile payload shape once
|
||||
in focused coverage or a recorded development check. Avoid whole-manifest
|
||||
snapshots and a permanent historical compatibility harness; retain existing
|
||||
input/output/reference sorting and all unrelated fingerprint fields.
|
||||
|
||||
Verification:
|
||||
|
||||
```sh
|
||||
go test ./internal/stage ./internal/adapters/notarius ./internal/config
|
||||
```
|
||||
|
||||
Completion: Selected profiles reach actual extraction, and both existing reuse
|
||||
checks account for the selection without forcing downstream cache refresh or
|
||||
changing the manifest schema.
|
||||
|
||||
## Stage 3: Verify Application Lifecycle Behavior
|
||||
|
||||
Status: Pending.
|
||||
|
||||
Preparation:
|
||||
|
||||
- `internal/app/extract_lifecycle_test.go`, `runner_test.go`, and
|
||||
`run_control_test.go`.
|
||||
- Existing fixtures and tests for changed extraction outcomes, failure/retry,
|
||||
and independent render/extract invalidation.
|
||||
|
||||
Work:
|
||||
|
||||
1. Extend the existing lifecycle fixtures rather than building another harness.
|
||||
Run a successful extraction with a configured profile, then verify ordinary
|
||||
reuse for that same profile. Change only the downstream selection and verify
|
||||
that extraction executes again with the new value, upstream transcripts and
|
||||
render remain current, and succeeded dependents are invalidated/rerun through
|
||||
the existing runner policy. Include returning from a named selection to base.
|
||||
2. Cover the changed-profile failure boundary with the existing fake runner:
|
||||
return an ordinary downstream error and verify extraction is failed, the
|
||||
previous result is not advertised as current success, and dependents are not
|
||||
silently reused. Reuse existing retry coverage where it already proves the
|
||||
recovery behavior. Do not assert Notarius-specific diagnostic wording.
|
||||
3. Ensure one configuration-to-execution path proves explicit composition:
|
||||
Narratio's testing overlay can select a differently named Notarius overlay;
|
||||
without the field, selecting a Narratio profile does not populate the
|
||||
downstream request. Use real configuration loading and the existing injected
|
||||
runner, not a production provider or sibling repository dependency.
|
||||
4. Review existing operational-exclusion and force tests for continued validity.
|
||||
Do not broaden invalidation to the full effective configuration digest or
|
||||
Narratio's profile label, and do not automatically change cache options.
|
||||
|
||||
Verification:
|
||||
|
||||
```sh
|
||||
go test ./internal/app ./internal/stage
|
||||
```
|
||||
|
||||
Completion: Tests demonstrate the requested workflow, including selection
|
||||
changes and failure, across the real Narratio configuration/runner boundaries.
|
||||
Notarius's own overlay loader and cache internals remain outside these tests.
|
||||
|
||||
## Stage 4: Document the Feature and Validate the Completed Change
|
||||
|
||||
Status: Pending.
|
||||
|
||||
Preparation: Canonical documentation owners listed in the feature roadmap,
|
||||
`examples/README.md`, and the existing development-focused operations guidance.
|
||||
|
||||
Work:
|
||||
|
||||
1. Document the optional field in `docs/config.md`, including omitted/null,
|
||||
explicit base selectors, and independence from Narratio's profile and
|
||||
`notarius.llm_api_key`. Do not add profile-name restrictions.
|
||||
2. Update the invocation in `docs/integrations/notarius.md` to include the
|
||||
optional flag and identify Notarius v0.7.0 as a known supporting version,
|
||||
not an unconditional version requirement. Preserve the distinction from
|
||||
`--llm-profile` and ordinary downstream failure handling.
|
||||
3. Update `docs/internal/stage-extract.md` to describe selection-sensitive reuse
|
||||
and retain its distinction from private file content and operational settings.
|
||||
Make clear this is an explicit downstream setting, not blanket invalidation
|
||||
by Narratio's profile label or effective digest.
|
||||
4. Add concise development workflow guidance in `docs/operations.md`: explicit
|
||||
testing-overlay composition; different downstream names are allowed;
|
||||
switching selection triggers extraction when that stage is in scope; edits
|
||||
behind an unchanged selector may need force; testing is not a separate
|
||||
workspace. Preserve the existing distinction between extract+analyze and
|
||||
analyze-only regeneration.
|
||||
5. Update the maintained annotated pipeline example to show the optional field
|
||||
without requiring an externally installed testing overlay (use a commented
|
||||
named-selection example). Do not make previously runnable examples depend
|
||||
on new downstream files. Link to canonical owners instead of duplicating
|
||||
full contracts or adding new top-level Narratio flags.
|
||||
6. Review the final diff against every observable behavior and scope boundary
|
||||
in the consumer request. Mark the implementation stages and roadmap status
|
||||
accurately after verification; do not remove the original request or alter
|
||||
historical release notes.
|
||||
|
||||
Run the repository checks with the maintained Go 1.26 toolchain:
|
||||
|
||||
```sh
|
||||
go test ./...
|
||||
go test -race ./...
|
||||
go vet ./...
|
||||
go build ./...
|
||||
go test ./internal/doccheck
|
||||
go test ./internal/config -run '^TestExamplesLoadAndValidate$'
|
||||
git diff --check
|
||||
```
|
||||
|
||||
Completion: The requested interface, failure and reuse behavior, examples, and
|
||||
canonical documentation agree; all checks pass. No release is part of this
|
||||
implementation sprint.
|
||||
|
||||
## Open Questions
|
||||
|
||||
None. The consumer request resolves the product behavior. The choices above
|
||||
settle implementation details without adding new operator restrictions,
|
||||
downstream configuration ownership, or cache guarantees.
|
||||
151
docs/roadmap/notarius-config-profile.md
Normal file
151
docs/roadmap/notarius-config-profile.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# Notarius Configuration Profile Selection
|
||||
|
||||
Status: Proposed; not implemented.
|
||||
|
||||
## Goal and Authority
|
||||
|
||||
Implement the consumer behavior in the
|
||||
[feature request](feature-request-notarius-config-profile.yml): let a Narratio
|
||||
configuration overlay explicitly select a Notarius configuration overlay.
|
||||
Operators can select testing once in Narratio while each application retains
|
||||
ownership of its own model choices and other settings.
|
||||
|
||||
This roadmap describes the target state and required change areas, not an
|
||||
implementation sequence; the [implementation plan](implementation.md) owns
|
||||
the ordered work and implementation decisions. The feature request is the scope
|
||||
authority; the mechanisms suggested below do not establish additional
|
||||
user-facing contracts.
|
||||
|
||||
## Underlying Issue
|
||||
|
||||
Narratio can select its own testing profile, but extraction currently invokes
|
||||
Notarius without a configuration-profile selector. Consequently, a Narratio
|
||||
testing invocation cannot explicitly select the independently deployed Notarius
|
||||
testing overlay through pipeline configuration.
|
||||
|
||||
Adding individual downstream model or tuning fields would duplicate Notarius's
|
||||
configuration responsibilities. Passing its existing profile selector provides
|
||||
the requested flexibility without that duplication.
|
||||
|
||||
## Targeted End State
|
||||
|
||||
### Explicit Configuration Composition
|
||||
|
||||
`pipeline.notarius.config_profile` is an optional Notarius configuration-profile
|
||||
name, usable in Narratio's base configuration and ordinary overlays. For
|
||||
example, Narratio's `profiles/testing.yml` may contain:
|
||||
|
||||
```yaml
|
||||
notarius:
|
||||
config_profile: testing
|
||||
```
|
||||
|
||||
Selecting Narratio's `--profile testing` then selects that explicit downstream
|
||||
profile whenever extraction executes. The two profile names need not match.
|
||||
Narratio does not automatically forward its own profile name.
|
||||
|
||||
When supplied, the selection is passed through Notarius's `--config-profile`
|
||||
argument. Omitted or null values add no profile-selection flag and preserve
|
||||
existing downstream selection behavior. Notarius's selector semantics remain
|
||||
authoritative, including empty and `default` selections for the composed base
|
||||
configuration. Narratio does not introduce a stricter profile-name policy.
|
||||
|
||||
This field selects a ConfigKit configuration overlay, not a PromptKit profile
|
||||
through `--llm-profile`. The Notarius overlay owns any resulting LLM-profile
|
||||
selection. Notarius resolves overlays relative to its own configuration root;
|
||||
Narratio neither resolves those files against its own root nor rewrites them.
|
||||
|
||||
### Execution, Reuse, and Failure
|
||||
|
||||
A changed downstream profile selection must not silently reuse Narratio's
|
||||
completed extraction from the previous selection. Existing dependent-stage
|
||||
invalidation applies when extraction changes; the feature does not change the
|
||||
pipeline order or transcript-generation behavior.
|
||||
|
||||
Notarius continues to own downstream overlay discovery, composition, validation,
|
||||
and cache compatibility. A missing or invalid selected overlay must fail
|
||||
extraction through the existing subprocess error path, without silently falling
|
||||
back to production or reporting successful extraction.
|
||||
|
||||
Existing resume and chunk-cache controls, including force precedence, remain
|
||||
in place. Profile selection does not itself mean forced regeneration or cache
|
||||
deletion. Narratio's decision to execute extraction and Notarius's decision to
|
||||
reuse compatible work remain separate responsibilities.
|
||||
|
||||
Changes to private Notarius configuration behind an unchanged selector retain
|
||||
the existing operator responsibility to force extraction when needed. There is
|
||||
no new downstream file inspection or content-tracking requirement.
|
||||
|
||||
Credential forwarding remains independently configured through
|
||||
`notarius.llm_api_key`. A Narratio testing overlay may select a different
|
||||
credential reference alongside the downstream profile; no new credential
|
||||
discovery or provider-name mapping is introduced.
|
||||
|
||||
## Required Change Areas
|
||||
|
||||
### Configuration and Inspection
|
||||
|
||||
Extend the typed Notarius configuration and its existing safe effective-YAML
|
||||
projection to carry the optional field. Preserve the ordinary configuration
|
||||
composition behavior for base values, overlay overrides, and null values.
|
||||
Configuration inspection must reflect the selected field without exposing
|
||||
credential values. No replacement configuration loader or downstream preflight
|
||||
loader is needed.
|
||||
|
||||
### Stage and Adapter Boundary
|
||||
|
||||
Carry the selection from resolved configuration through the extraction request
|
||||
to the subprocess adapter. Construct the optional CLI flag using the existing
|
||||
argument-vector mechanism, alongside the current configuration path, references,
|
||||
credential forwarding, and cache controls. Retain normal Notarius error handling.
|
||||
|
||||
### Extraction Reuse Evidence
|
||||
|
||||
Account for the downstream selection in the existing extraction reuse evidence.
|
||||
The current semantic-configuration and invocation fingerprints are the relevant
|
||||
change points. Keep their treatment of selection consistent so that a profile
|
||||
change cannot bypass the required rerun and downstream invalidation.
|
||||
|
||||
This roadmap does not require a new manifest schema, separate profile-indexed
|
||||
workspaces, historical per-profile result retention, or an upgrade-wide forced
|
||||
rerun.
|
||||
|
||||
### Verification and Documentation
|
||||
|
||||
Use focused behavioral coverage for configuration composition and inspection,
|
||||
explicit argument forwarding and omission, changed-selection reuse decisions,
|
||||
and ordinary subprocess failure handling. Reuse existing test coverage where
|
||||
it already protects unchanged credentials, force behavior, and invalidation;
|
||||
do not duplicate Notarius's complete profile-validation or cache test suites.
|
||||
|
||||
When implemented, update the canonical
|
||||
[configuration reference](../config.md),
|
||||
[Notarius integration contract](../integrations/notarius.md),
|
||||
[extract internals](../internal/stage-extract.md), and relevant maintained
|
||||
examples. The development workflow in [Operations](../operations.md) should
|
||||
explain explicit profile composition and the existing need to force extraction
|
||||
after private downstream edits. Clarify that profile selection does not create
|
||||
an isolated testing workspace or separate current extraction state.
|
||||
|
||||
## Compatibility and Scope Boundaries
|
||||
|
||||
Notarius v0.7.0 already documents `--config-profile`; no upstream change is
|
||||
required. Document the capability needed when the option is used, without adding
|
||||
an unconditional runtime version gate for existing unconfigured deployments.
|
||||
|
||||
This feature adds no Narratio CLI selector, automatic profile propagation,
|
||||
Notarius LLM-profile selector, downstream configuration rewriting, new
|
||||
credential mechanism, or generalized recursive orchestration. Existing output
|
||||
and receipt contracts remain unchanged.
|
||||
|
||||
The consumer's Ansible role and suite updates are follow-up work outside this
|
||||
repository. They can deploy downstream overlays and populate this field after
|
||||
the interface is released.
|
||||
|
||||
## Scope Review
|
||||
|
||||
No stronger requirements or new invariants are proposed beyond the feature
|
||||
request and existing repository contracts. In particular, minimizing one-time
|
||||
upgrade invalidation and avoiding reruns between equivalent base selectors are
|
||||
implementation considerations, not additional acceptance guarantees imposed
|
||||
by this roadmap. No user decisions are currently required before planning.
|
||||
Reference in New Issue
Block a user