onto-mcp 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/.onto/authority/core-lexicon.yaml +1 -0
  2. package/.onto/domains/software-engineering/competency_qs.md +192 -63
  3. package/.onto/domains/software-engineering/concepts.md +67 -5
  4. package/.onto/domains/software-engineering/conciseness_rules.md +22 -2
  5. package/.onto/domains/software-engineering/dependency_rules.md +78 -8
  6. package/.onto/domains/software-engineering/domain_scope.md +181 -150
  7. package/.onto/domains/software-engineering/extension_cases.md +318 -542
  8. package/.onto/domains/software-engineering/logic_rules.md +75 -3
  9. package/.onto/domains/software-engineering/problem_framing_profile.md +29 -2
  10. package/.onto/domains/software-engineering/prompt_interface.md +122 -0
  11. package/.onto/domains/software-engineering/structure_spec.md +53 -4
  12. package/.onto/principles/llm-native-development-guideline.md +20 -0
  13. package/.onto/principles/productization-charter.md +6 -0
  14. package/.onto/processes/reconstruct/reconstruct-boundary-contract.md +278 -91
  15. package/.onto/processes/reconstruct/reconstruct-execution-ux-contract.md +45 -12
  16. package/.onto/processes/reconstruct/source-profile-contract.md +39 -6
  17. package/.onto/processes/reconstruct/top-level-concept-discovery-contract.md +387 -0
  18. package/.onto/processes/review/lens-registry.md +16 -0
  19. package/.onto/processes/shared/target-material-kind-contract.md +18 -2
  20. package/.onto/roles/axiology.md +7 -2
  21. package/AGENTS.md +3 -2
  22. package/README.md +39 -33
  23. package/dist/core-api/reconstruct-api.js +22 -5
  24. package/dist/core-api/review-api.js +1288 -533
  25. package/dist/core-runtime/cli/mock-review-unit-executor.js +17 -0
  26. package/dist/core-runtime/cli/review-invoke.js +23 -48
  27. package/dist/core-runtime/cli/run-review-prompt-execution.js +122 -0
  28. package/dist/core-runtime/path-boundary.js +58 -0
  29. package/dist/core-runtime/reconstruct/artifact-types.js +5 -0
  30. package/dist/core-runtime/reconstruct/materialize-preparation.js +54 -4
  31. package/dist/core-runtime/reconstruct/pipeline-execution-ledger.js +38 -2
  32. package/dist/core-runtime/reconstruct/post-seed-validation.js +13 -0
  33. package/dist/core-runtime/reconstruct/record.js +11 -0
  34. package/dist/core-runtime/reconstruct/run.js +1133 -26
  35. package/dist/core-runtime/reconstruct/seed-candidate-validation.js +29 -0
  36. package/dist/core-runtime/review/execution-plan-boundary.js +123 -0
  37. package/dist/core-runtime/review/materializers.js +8 -3
  38. package/dist/core-runtime/review/review-artifact-utils.js +15 -2
  39. package/dist/core-runtime/review/review-invocation-runner.js +604 -0
  40. package/dist/core-runtime/target-material-kind.js +43 -5
  41. package/dist/mcp/server.js +158 -39
  42. package/dist/mcp/tool-schemas.js +22 -2
  43. package/package.json +3 -1
  44. package/.onto/domains/llm-native-development/competency_qs.md +0 -430
  45. package/.onto/domains/llm-native-development/concepts.md +0 -242
  46. package/.onto/domains/llm-native-development/conciseness_rules.md +0 -163
  47. package/.onto/domains/llm-native-development/dependency_rules.md +0 -216
  48. package/.onto/domains/llm-native-development/domain_scope.md +0 -197
  49. package/.onto/domains/llm-native-development/extension_cases.md +0 -474
  50. package/.onto/domains/llm-native-development/logic_rules.md +0 -123
  51. package/.onto/domains/llm-native-development/prompt_interface.md +0 -49
  52. package/.onto/domains/llm-native-development/structure_spec.md +0 -245
@@ -1,14 +1,20 @@
1
1
  # Reconstruct Boundary Contract
2
2
 
3
- > Status: design contract with bounded happy-path runtime and post-Seed loop target.
4
- > Purpose: define how `reconstruct` should be reintroduced without reviving the
5
- > retired runtime ontology generator path.
3
+ > Status: design contract with bounded observer runtime and integral exploration target.
4
+ > Purpose: define how `reconstruct` should operate as an integral exploration
5
+ > loop without reviving the retired runtime ontology generator or legacy
6
+ > Explorer/fact_type path.
6
7
 
7
8
  ## 1. Position
8
9
 
9
10
  `reconstruct` is a host-LLM-led ontology reconstruction process with
10
11
  deterministic runtime gates. It is not a runtime ontology generator.
11
12
 
13
+ `reconstruct` uses integral exploration. Runtime observes bounded source
14
+ structure, host LLM lenses judge semantic meaning and gaps, an LLM-authored
15
+ source frontier selects unjudged source refs for the next observation round, and
16
+ runtime validates that frontier before observing the next source slice.
17
+
12
18
  `reconstruct` is material-aware from the start. A reconstruction target may be
13
19
  code, a spreadsheet, a document, a database, a mixed bundle, or an unsupported
14
20
  material. The process must classify the target's `target_material_kind` before
@@ -19,7 +25,7 @@ The shared goal contract for this axis is
19
25
 
20
26
  The active full product runtime remains `review`. `reconstruct` now has a
21
27
  bounded MCP surface for source profile listing, source observation, directive
22
- validation, post-Seed mock execution, status, and result reads. The runtime path
28
+ validation, direct-call semantic execution, status, and result reads. The runtime path
23
29
  is not a general ontology generator: it requires pluggable LLM-owned directive
24
30
  authors and confirmation providers for Seed content, claim realization,
25
31
  competency questions, assessments, failure classifications, revision proposals,
@@ -29,8 +35,8 @@ Retired material stays retired:
29
35
 
30
36
  | Retired surface | Current status |
31
37
  |---|---|
32
- | `development-records/archive/retired-processes-20260526/processes/reconstruct.md` | historical integral-exploration process |
33
- | `development-records/archive/retired-runtime-legacy-20260526/explorers/` | historical explorer profiles |
38
+ | `development-records/archive/retired-processes-20260526/processes/reconstruct.md` | historical Explorer/fact_type implementation; integral-loop principle may be reintroduced only under the current ownership boundary |
39
+ | `development-records/archive/retired-runtime-legacy-20260526/explorers/` | historical semantic Explorer profiles; do not revive as runtime observers |
34
40
  | `src/core-runtime/evolve/commands/reconstruct.ts` | retired placeholder path that wrote `ontology-draft.md` |
35
41
 
36
42
  The current design seat is:
@@ -38,6 +44,7 @@ The current design seat is:
38
44
  ```text
39
45
  .onto/processes/reconstruct/reconstruct-boundary-contract.md
40
46
  .onto/processes/reconstruct/reconstruct-execution-ux-contract.md
47
+ .onto/processes/reconstruct/top-level-concept-discovery-contract.md
41
48
  .onto/processes/reconstruct/source-profile-contract.md
42
49
  .onto/processes/reconstruct/source-profiles/
43
50
  .onto/processes/shared/pipeline-execution-ledger-contract.md
@@ -57,12 +64,14 @@ profiles, write preparation artifacts, validate source-observation boundaries,
57
64
  validate `SourceObservationDirective` evidence refs, validate
58
65
  `SeedCandidateDirective` shape plus evidence refs, validate post-Seed artifacts,
59
66
  compute deterministic metrics, and assemble `reconstruct-record.yaml`. The
60
- runner orchestrates these gates and delegates semantic directives to a pluggable
61
- directive author.
67
+ implemented direct-call slice now includes initial source frontier, lens
68
+ judgment, exploration synthesis, source-frontier validation, Seed, confirmation,
69
+ CQ, assessment, failure, revision, stop, and final-output artifacts.
70
+ Domain-context selection remains explicitly deferred.
62
71
 
63
72
  `src/core-api/reconstruct-api.ts` exposes these helpers as a bounded library
64
73
  facade for MCP tooling. It can prepare reconstruct artifacts, list source
65
- profiles, validate LLM-authored directive files, run the post-Seed mock loop,
74
+ profiles, validate LLM-authored directive files, run the direct-call reconstruct loop,
66
75
  assemble records, and read status/result artifacts. It does not author semantic
67
76
  directives.
68
77
 
@@ -117,6 +126,18 @@ design-local in this contract.
117
126
  Do not introduce a TypeScript type, public artifact field, or MCP field with a
118
127
  new reconstruct concept name before this gate is closed.
119
128
 
129
+ Seat categories:
130
+
131
+ - `shared`: registered in `.onto/authority/core-lexicon.yaml` and reusable
132
+ across processes.
133
+ - `reconstruct-local runtime`: may appear in reconstruct artifacts or TS
134
+ implementation only under this contract.
135
+ - `reconstruct-local semantic artifact`: LLM-authored artifact shape; runtime
136
+ may validate it but must not author its meaning.
137
+ - `directive shape`: structured LLM output name, not an ontology entity.
138
+ - `design shorthand`: prose-only helper term. It must not become a TS type,
139
+ MCP field, public artifact field, or runtime status value.
140
+
120
141
  Current concept decisions:
121
142
 
122
143
  | Name | Decision | Reason |
@@ -124,33 +145,42 @@ Current concept decisions:
124
145
  | `target_material_kind` | promoted shared term | Review, reconstruct, and evolve all need a target-material axis that is separate from domain, medium, target input kind, and artifact role. |
125
146
  | `PipelineExecutionLedger` | promoted shared term | Review, reconstruct, evolve, and later pipelines need the same runtime-owned artifact trust/provenance projection. |
126
147
  | `source_kind` | not used for material classification | Review already uses `source_kind` for context-source artifacts. Reconstruct must not overload it to mean code/spreadsheet/document/database. |
127
- | `SourceProfile` | reconstruct design-local until runtime attachment | A profile guides observation for one `target_material_kind`; it is not a semantic explorer and not yet an active runtime artifact. |
128
- | `SourceObservation` | reconstruct design-local until runtime attachment | Runtime-produced structural observation with stable ids; not an ontology fact and not legacy `fact_type`. |
148
+ | `SourceProfile` | reconstruct-local runtime contract | A profile guides observation for one `target_material_kind`; it is not a semantic explorer. Public meaning is limited to the profile files under `.onto/processes/reconstruct/source-profiles/`. |
149
+ | `SourceObservation` | reconstruct-local runtime artifact | Runtime-produced structural observation with stable ids; not an ontology fact and not legacy `fact_type`. |
129
150
  | `SourceAdapter` | implementation boundary | Adapter identity may appear in artifacts later, but it is not an entity. |
130
- | `ReconstructDirective` | schema/union name | LLM-authored directive envelope, not an entity. |
131
- | `SeedConfirmation` | reconstruct design-local | User/host-mediated confirmation artifact for a Seed candidate; not a semantic concept by itself. |
132
- | `CompetencyQuestion` | reconstruct design-local | LLM-authored question artifact used to test a confirmed Seed against its declared purpose. |
133
- | `ClaimRealization` | reconstruct design-local | Claim-level stance about whether a Seed claim is observed behavior, declared intent, contract presence, fixture-only evidence, deferred/non-goal, or unknown. |
134
- | `CompetencyQuestionAssessment` | reconstruct design-local | LLM-authored assessment of every authoritative competency question against the confirmed Seed and evidence. |
135
- | `FailureClassification` | reconstruct design-local | LLM-authored explanation of why a competency question or claim cannot be trusted for the declared purpose. |
136
- | `RevisionProposal` | reconstruct design-local | LLM-authored bounded proposal to reuse, extend, rename, split, reject, or defer ontology content. |
151
+ | `ExplorationRound` | reconstruct-local runtime grouping | One bounded observe → lens judgment → synthesis → frontier cycle. It groups artifacts but does not own semantic truth. |
152
+ | `ReconstructLensJudgment` | reconstruct-local semantic artifact | LLM lens output that labels observations, names gaps, refines evidence certainty, and proposes next-source needs without directly traversing source. |
153
+ | `ExplorationSynthesis` | reconstruct-local semantic artifact | Host LLM synthesis that integrates lens judgments into a round result and source frontier without adding a new independent perspective. |
154
+ | `SourceFrontier` | reconstruct-local semantic artifact plus runtime validation | LLM-authored list of unjudged source refs requested for the next observation round, validated by runtime for boundary, support, duplication, and judgment coverage identity. |
155
+ | `ReconstructDirective` | directive shape | LLM-authored directive envelope, not an entity. |
156
+ | `OntologySeed` | reconstruct-local semantic artifact until promoted | Evidence-backed execution meaning contract confirmed by the user. Runtime may validate shape and refs but must not generate Seed meaning. |
157
+ | `SeedConfirmation` | reconstruct-local semantic artifact | User/host-mediated confirmation artifact for a Seed candidate; not a semantic concept by itself. |
158
+ | `CompetencyQuestion` | shared ontology-design term, reconstruct-local artifact instances | The term exists in core lexicon; reconstruct owns run-specific `competency-questions.yaml` artifact instances. |
159
+ | `ClaimRealization` | reconstruct-local semantic artifact | Claim-level stance about whether a Seed claim is observed behavior, declared intent, contract presence, fixture-only evidence, deferred/non-goal, or unknown. |
160
+ | `CompetencyQuestionAssessment` | reconstruct-local semantic artifact | LLM-authored assessment of every authoritative competency question against the confirmed Seed and evidence. |
161
+ | `FailureClassification` | reconstruct-local semantic artifact | LLM-authored explanation of why a competency question or claim cannot be trusted for the declared purpose. |
162
+ | `RevisionProposal` | reconstruct-local semantic artifact | LLM-authored bounded proposal to reuse, extend, rename, split, reject, or defer ontology content. |
137
163
  | `ReconstructMetrics` | reconstruct design-local | Runtime projection from existing artifacts; counts and pass rates, not a quality judgment. |
138
164
  | `StopDecision` | reconstruct design-local | LLM-authored directive that interprets metrics for the declared purpose. |
139
- | `ReconstructRunManifest` | reconstruct design-local | Runtime execution manifest for the reconstruct mock path. |
165
+ | `ReconstructRunManifest` | reconstruct design-local | Runtime execution manifest for reconstruct runs. |
140
166
  | `FinalOutput` | shared artifact role, reconstruct-local seat | Human-readable result text grounded in reconstruct artifacts; not an ontology draft authority. |
141
167
  | `ReconstructStageId` | reconstruct design-local | Stable append-only stage identifier for progress, manifests, status reads, and implementation planning. |
142
- | `RuntimeGate` | design shorthand only | Runtime implementation should use specific validators, boundary policy, and failure artifacts instead of a generic public concept. |
143
- | `DomainContextPack` | design shorthand only | Use selected domain-document refs from invocation/binding rather than creating a new domain context entity. |
168
+ | `RuntimeGate` | design shorthand only | Runtime implementation must use named validation stages, boundary policy, and failure artifacts instead of a generic public concept. |
169
+ | `DomainContextPack` | design shorthand only | Use `domain-context-selection.yaml`, selected domain-document refs, and invocation binding rather than creating a new domain context entity. |
144
170
 
145
- ## 4. Core Concepts
171
+ ## 4. Registered And Reconstruct-Local Terms
146
172
 
147
173
  | Concept | Meaning | Owner |
148
174
  |---|---|---|
149
175
  | `TargetMaterialKind` | Shared runtime axis for how the target must be read or validated: `code`, `spreadsheet`, `document`, `database`, `mixed`, or `unknown` | `.onto/authority/core-lexicon.yaml` |
150
- | `OntologySeed` | Smallest evidence-backed execution meaning contract confirmed by the user | LLM authored, user confirmed |
176
+ | `OntologySeed` | Smallest evidence-backed execution meaning contract confirmed by the user; reconstruct-local until promoted to shared lexicon | LLM authored, user confirmed |
151
177
  | `SourceProfile` | Reconstruct-local observation profile for one `target_material_kind` | `.onto/processes/reconstruct/source-profiles/` |
152
178
  | `SourceAdapter` | Runtime observer that returns material structure without ontology meaning | TS runtime |
153
179
  | `SourceObservation` | Runtime-produced structural fact about paths, cells, formulas, schemas, headings, symbols, or code patterns | TS runtime |
180
+ | `ExplorationRound` | Bounded cycle that observes a source slice, runs reconstruct lens judgments, synthesizes gaps, and validates the next source frontier | runtime manifest plus host LLM artifacts |
181
+ | `ReconstructLensJudgment` | Lens-authored semantic judgment over observed source evidence, including candidate labels, gaps, certainty refinements, and next-source needs | host LLM |
182
+ | `ExplorationSynthesis` | Integrated round result that preserves lens disagreements and converts accepted gaps into a source frontier | host LLM |
183
+ | `SourceFrontier` | Synthesized request for the next unjudged source refs to observe, including rationale, priority, and expected evidence value | host LLM authored, runtime validated |
154
184
  | `ReconstructDirective` | LLM-authored structured output submitted to a runtime gate | host LLM |
155
185
  | `SeedConfirmation` | User/host-mediated decision over the Seed candidate before downstream questions and metrics | user/host mediated |
156
186
  | `ClaimRealization` | Claim-level evidence stance used to separate observed runtime behavior from declared design intent, schema presence, fixture-only evidence, deferred scope, and unknowns | host LLM |
@@ -159,10 +189,14 @@ Current concept decisions:
159
189
  | `FailureClassification` | Cause classification for unanswered, contradicted, unsupported, or deferred questions and claims | host LLM |
160
190
  | `RevisionProposal` | Bounded change proposal derived from failures and claim realization gaps | host LLM |
161
191
  | `ReconstructMetrics` | Deterministic projection from validation, confirmation, and question artifacts | TS runtime |
162
- | `ReconstructRunManifest` | Step and artifact-ref manifest for the bounded mock path | TS runtime |
192
+ | `ReconstructRunManifest` | Step and artifact-ref manifest for reconstruct runs | TS runtime |
163
193
  | `PipelineExecutionLedger` | Shared trust/provenance projection over reconstruct stages, validations, outputs, and upstream/downstream boundaries | TS runtime |
164
- | `RuntimeGate` | Design shorthand for shape, source existence, evidence ref, and metric validation | TS runtime |
165
- | `DomainContextPack` | Design shorthand for domain documents selected by invocation/binding | `.onto/domains/` plus invocation binding |
194
+
195
+ Design shorthand names such as `RuntimeGate` and `DomainContextPack` may appear
196
+ in explanatory prose only. Runtime and MCP schemas must expose the specific
197
+ stage or artifact names instead, such as
198
+ `seed-candidate-validation.yaml`, `domain-context-selection.yaml`, or
199
+ `source-frontier-validation.yaml`.
166
200
 
167
201
  The domain axis and material axis must not be collapsed:
168
202
 
@@ -180,9 +214,9 @@ Initial bounded tools are exposed through `src/core-api/reconstruct-api.ts`.
180
214
  | Tool | Status | Runtime responsibility | Explicit non-responsibility |
181
215
  |---|---|---|---|
182
216
  | `onto.list_source_profiles` | active | list source profiles, target material kinds, scan targets, and support status | choose ontology meaning |
183
- | `onto.observe_source` | active | materialize target profile, inventory, source observations, and initial reconstruct record | infer entities, relations, actions, properties, or rules |
217
+ | `onto.observe_source` | active | materialize target profile, inventory, source observations, and initial reconstruct record for the bound target or a validated frontier | infer entities, relations, actions, properties, or rules |
184
218
  | `onto.validate_reconstruct_directive` | active | validate LLM-authored source-observation or Seed-candidate directive shape and evidence refs | repair or rewrite the directive |
185
- | `onto.reconstruct` | active | orchestrate the bounded post-Seed mock loop from target refs and intent to final output, run manifest, and reconstruct record; requires explicit mock semantic/confirmation realization until live providers exist | author ontology meaning |
219
+ | `onto.reconstruct` | active | orchestrate the bounded artifact-backed path from target refs and intent through direct-call semantic authoring, runtime validation gates, final output, run manifest, and reconstruct record | author ontology meaning |
186
220
  | `onto.reconstruct_status` | active | read `reconstruct-record.yaml` stage and artifact refs | infer missing semantic content |
187
221
  | `onto.reconstruct_result` | active | read record, run manifest, and final output text | rewrite or improve the result |
188
222
 
@@ -190,11 +224,28 @@ MCP remains a thin tool surface. It must expose bounded runtime facts and prompt
190
224
  inputs for host presentation; it must not become a second reconstruct semantics
191
225
  implementation.
192
226
 
193
- Current `onto.reconstruct` calls must explicitly set
194
- `semanticAuthorRealization=mock` and `confirmationProviderRealization=mock`.
195
- The run manifest records both realization values. A completed mock run proves the
196
- runtime gates and artifact path, not live host-LLM semantic authorship or
197
- user-mediated confirmation.
227
+ Current `onto.reconstruct` calls default to
228
+ `semanticAuthorRealization=direct_call` and
229
+ `confirmationProviderRealization=direct_call`. The run manifest records both
230
+ realization values. Missing provider/model/credential configuration, invalid
231
+ LLM-authored artifact shape, and failed runtime validation gates fail loud.
232
+ Test-only mock helpers may exist inside tests, but they are not product
233
+ completion evidence.
234
+
235
+ ### 5.1 Execution Profile Truth
236
+
237
+ The run manifest must record an execution profile. These profile labels are
238
+ manifest/status values, not ontology concepts.
239
+
240
+ | Profile | Completion claim allowed | Required disclosure |
241
+ |---|---|---|
242
+ | `observer_gate_slice` | Runtime classified material, inventoried sources, observed structure, and validated available directive refs. | No Seed, lens judgment, domain context, frontier, CQ, revision, or final ontology direction may be implied. |
243
+ | `mock_semantic_slice` | Test/fixture-only harness exercised post-Seed artifact flow with mock semantic author and mock confirmation provider. | Mock authorship, skipped live exploration, skipped domain-context selection, skipped user confirmation, and narrowed downstream authority must be visible in manifest, status, result, and final output. This profile is not product completion evidence. |
244
+ | `full_integral_exploration` | Trusted observation, lens judgment, source frontier, domain-context, Seed, confirmation, CQ, assessment, failure, revision, metrics, stop, and final-output artifacts were produced or explicitly skipped with trusted reasons. | Every skipped or deferred stage must have stage status, reason, and downstream authority impact. |
245
+
246
+ A status of `completed` always means "completed for this execution profile".
247
+ It must not be rendered as completed full reconstruct unless the execution
248
+ profile is `full_integral_exploration` and all required stage trust gates pass.
198
249
 
199
250
  ## 6. Invocation And Boundary Prelude
200
251
 
@@ -219,29 +270,36 @@ from expanding their own boundary.
219
270
  0. InvocationInterpretation and InvocationBinding
220
271
  1. Target material profiling
221
272
  2. Source inventory
222
- 3. Source observation through material-specific SourceAdapter
223
- 4. LLM writes SourceObservationDirective
224
- 5. Runtime validates observation directive
225
- 6. LLM selects domain-document context refs
226
- 7. Runtime validates domain-context selection and source snapshot refs
227
- 8. LLM writes SeedCandidateDirective
228
- 9. Runtime validates Seed evidence and shape
229
- 10. LLM writes ClaimRealizationDirective
230
- 11. Runtime validates claim realization refs and stance enums
231
- 12. User or host confirms Seed claims at claim level
232
- 13. Runtime validates confirmation transitions and derived claim sets
233
- 14. LLM writes authoritative competency questions
234
- 15. Runtime validates competency question ids, claim links, and evidence refs
235
- 16. LLM assesses every authoritative competency question
236
- 17. Runtime validates question assessment completeness and refs
237
- 18. LLM classifies material failures and unresolved gaps
238
- 19. Runtime validates failure classifications and linkage
239
- 20. LLM proposes bounded revisions or deferrals
240
- 21. Runtime validates revision proposal ids, targets, and actions
241
- 22. Runtime computes deterministic metrics from artifacts
242
- 23. LLM writes StopDecisionDirective
243
- 24. LLM writes final decision-ready output grounded in artifact refs
244
- 25. User confirms final ontology direction if needed
273
+ 3. Runtime writes the initial source frontier from bound target refs
274
+ 4. Exploration round loop:
275
+ 4.1 Runtime observes the current frontier through material-specific SourceAdapters
276
+ 4.2 Runtime records cumulative SourceObservations with round ids
277
+ 4.3 LLM writes SourceObservationDirective for evidence-candidate selection
278
+ 4.4 Runtime validates observation directive
279
+ 4.5 Reconstruct lenses write independent ReconstructLensJudgment artifacts
280
+ 4.6 Host LLM synthesizes judgments into SourceFrontierDirective
281
+ 4.7 Runtime validates source frontier for boundary, support, duplication, and ref existence
282
+ 4.8 If accepted frontier refs remain, repeat the loop with the next source slice
283
+ 5. LLM selects domain-document context refs from the accumulated evidence needs
284
+ 6. Runtime validates domain-context selection and source snapshot refs
285
+ 7. LLM writes SeedCandidateDirective from trusted observation and judgment artifacts
286
+ 8. Runtime validates Seed evidence and shape
287
+ 9. LLM writes ClaimRealizationDirective
288
+ 10. Runtime validates claim realization refs and stance enums
289
+ 11. User or host confirms Seed claims at claim level
290
+ 12. Runtime validates confirmation transitions and derived claim sets
291
+ 13. LLM writes authoritative competency questions
292
+ 14. Runtime validates competency question ids, claim links, and evidence refs
293
+ 15. LLM assesses every authoritative competency question
294
+ 16. Runtime validates question assessment completeness and refs
295
+ 17. LLM classifies material failures and unresolved gaps
296
+ 18. Runtime validates failure classifications and linkage
297
+ 19. LLM proposes bounded revisions or deferrals
298
+ 20. Runtime validates revision proposal ids, targets, and actions
299
+ 21. Runtime computes deterministic metrics from artifacts
300
+ 22. LLM writes StopDecisionDirective
301
+ 23. LLM writes final decision-ready output grounded in artifact refs
302
+ 24. User confirms final ontology direction if needed
245
303
  ```
246
304
 
247
305
  This flow intentionally uses the review product pattern: LLM-authored meaning,
@@ -258,9 +316,14 @@ ids rather than prose labels.
258
316
  | `invocation_binding` | interpretation and binding refs | host LLM plus runtime |
259
317
  | `target_material_profile` | `target-material-profile.yaml` | runtime |
260
318
  | `source_inventory` | `source-inventory.yaml` | runtime |
319
+ | `initial_source_frontier` | `initial-source-frontier.yaml` | runtime |
261
320
  | `source_observation` | `source-observations.yaml` | runtime |
262
- | `observation_directive` | `source-observation-directive.yaml` | host LLM |
263
- | `observation_directive_validation` | `source-observation-directive-validation.yaml` | runtime |
321
+ | `observation_directive` | `rounds/{round_id}/source-observation-directive.yaml` | host LLM |
322
+ | `observation_directive_validation` | `rounds/{round_id}/source-observation-directive-validation.yaml` | runtime |
323
+ | `lens_judgment` | `rounds/{round_id}/lens-judgments/{lens_id}.yaml` | host LLM |
324
+ | `exploration_synthesis` | `rounds/{round_id}/exploration-synthesis.yaml` | host LLM |
325
+ | `source_frontier` | `rounds/{round_id}/source-frontier.yaml` | host LLM |
326
+ | `source_frontier_validation` | `rounds/{round_id}/source-frontier-validation.yaml` | runtime |
264
327
  | `domain_context_selection` | `domain-context-selection.yaml` | host LLM |
265
328
  | `domain_context_selection_validation` | `domain-context-selection-validation.yaml` | runtime |
266
329
  | `seed_candidate` | `seed-candidate.yaml` | host LLM |
@@ -287,6 +350,9 @@ Rules:
287
350
  - Existing stage ids must not be renamed after runtime exposure.
288
351
  - Optional stages must be recorded as `skipped` with a reason, not omitted from
289
352
  the manifest.
353
+ - Skipped stages must record `authority_impact`, especially when skipping live
354
+ lens judgment, source-frontier exploration, domain-context selection, user
355
+ confirmation, or CQ assessment narrows the final result's trust claim.
290
356
  - Terminal halted stages must keep already-produced artifacts immutable unless a
291
357
  future explicit continuation contract says otherwise.
292
358
  - New stages may be appended between semantic phases only when their input and
@@ -321,8 +387,12 @@ views may expose ids, but must not become a second source of truth.
321
387
 
322
388
  | Id family | Authority artifact |
323
389
  |---|---|
390
+ | initial source frontier ids | `initial-source-frontier.yaml` |
324
391
  | source observation ids | `source-observations.yaml` |
325
- | selected observation ids | `source-observation-directive.yaml` |
392
+ | selected observation ids | `rounds/{round_id}/source-observation-directive.yaml` |
393
+ | exploration round ids | `reconstruct-run-manifest.yaml` |
394
+ | lens judgment ids | `rounds/{round_id}/lens-judgments/{lens_id}.yaml` |
395
+ | source frontier ids | `rounds/{round_id}/source-frontier.yaml` |
326
396
  | domain context ids and `domain_snapshot_id` | `domain-context-selection.yaml` |
327
397
  | Seed claim ids | `seed-candidate.yaml` |
328
398
  | claim realization ids | `claim-realization-map.yaml` |
@@ -332,7 +402,48 @@ views may expose ids, but must not become a second source of truth.
332
402
  | failure ids | `failure-classification.yaml` |
333
403
  | proposal ids | `revision-proposal.yaml` |
334
404
 
335
- ### 7.4 Claim Realization Stances
405
+ ### 7.4 Integral Exploration Loop
406
+
407
+ An exploration round is the smallest repeatable reconstruct unit. It starts from
408
+ a runtime-validated source frontier and ends with either a validated next
409
+ frontier or a declared no-next-frontier rationale.
410
+
411
+ Round rules:
412
+
413
+ - Lenses may request additional source refs, but they must not fetch those refs
414
+ directly.
415
+ - Source frontier requests must cite the judgment or gap that created the need,
416
+ the expected evidence value, and the material kind if known.
417
+ - Runtime validates frontier refs for declared boundary, existing inventory or
418
+ discoverability, material support, duplicate observation, duplicate judgment,
419
+ and unsafe broadness.
420
+ - Runtime records accepted, rejected, already-observed, unsupported, and
421
+ out-of-bound frontier refs separately.
422
+ - A source ref is considered unjudged only when no trusted lens judgment has
423
+ already covered the relevant observation scope for the declared purpose.
424
+ - Accumulated Seed evidence may use only trusted observations, validated
425
+ observation directives, trusted lens judgments, and validated frontier records.
426
+
427
+ Frontier validation must record enough identity data to explain duplicate,
428
+ stale, repeat, and re-exploration decisions:
429
+
430
+ - canonical source ref key
431
+ - material kind
432
+ - adapter id and adapter version or profile version
433
+ - source snapshot hash or source mtime/hash basis when available
434
+ - observation scope key
435
+ - profile id and profile version
436
+ - lens set id and lens prompt version when a judgment is involved
437
+ - domain snapshot id when domain context has been selected
438
+ - declared purpose scope id or normalized purpose summary
439
+ - prior trusted observation refs and judgment refs used for the decision
440
+
441
+ The loop may pause or halt when the next useful source is outside the declared
442
+ boundary, unsupported by adapters, too broad to validate safely, or requires a
443
+ user decision. A no-next-frontier rationale is an LLM-authored judgment, not a
444
+ runtime quality decision.
445
+
446
+ ### 7.5 Claim Realization Stances
336
447
 
337
448
  `claim-realization-map.yaml` must classify every Seed claim with one of these
338
449
  stances:
@@ -346,7 +457,7 @@ stances:
346
457
  | `deferred_or_non_goal` | The claim belongs to deferred scope or a declared non-goal. |
347
458
  | `unknown` | The available artifacts do not justify a stronger stance. |
348
459
 
349
- ### 7.5 Claim Confirmation State Rules
460
+ ### 7.6 Claim Confirmation State Rules
350
461
 
351
462
  Seed confirmation is claim-level. A single run may contain accepted, rejected,
352
463
  partial, and deferred claims.
@@ -366,16 +477,39 @@ partial, and deferred claims.
366
477
  - `deferred_claim_ids`
367
478
  - `cq_eligible_claim_ids`
368
479
 
369
- ### 7.6 Competency Question Authority
480
+ ### 7.7 Competency Question Authority
370
481
 
371
482
  `competency-questions.yaml` is the authoritative competency-question set for a
372
483
  run. It is authored after Seed confirmation so that questions test the confirmed
373
484
  Seed and declared purpose, not a discarded draft.
374
485
 
486
+ `competency-questions-validation.yaml` must prove every
487
+ `cq_eligible_claim_id` from `seed-confirmation-validation.yaml` appears in at
488
+ least one competency question. Questions may group related claims, but an
489
+ accepted claim cannot silently bypass CQ assessment.
490
+
375
491
  `competency-question-assessment.yaml` must assess every authoritative question
376
492
  exactly once. Domain-provided question templates are not in-scope unless
377
493
  `domain-context-selection.yaml` explicitly admits them into the run.
378
494
 
495
+ ### 7.8 Full Ontology Coverage Obligations
496
+
497
+ A run may present itself as full ontology reconstruction only when the
498
+ LLM-authored artifacts and runtime validation gates cover these ontology-domain
499
+ dimensions, or explicitly mark them unresolved, deferred, unsupported, or
500
+ out-of-scope:
501
+
502
+ - classification or hierarchy placement
503
+ - labels, aliases, synonyms, and homonym risks
504
+ - relation and property intent with evidence refs
505
+ - version, deprecation, and migration implications
506
+ - module or authority seat for newly proposed concepts
507
+ - reuse, extension, rename, split, reject, or defer decisions
508
+ - mapping or alignment to selected domain documents and existing lexicon terms
509
+
510
+ Runtime validates artifact shape, ids, and evidence refs for these dimensions.
511
+ Runtime must not infer the ontology meaning itself.
512
+
379
513
  ## 8. Prompt-Backed Reference Path
380
514
 
381
515
  Before runtime replacement, reconstruct needs at least one prompt-backed
@@ -389,6 +523,7 @@ The reference run may be host-LLM-authored, but it must preserve:
389
523
  - the same artifact seats
390
524
  - the same evidence-ref discipline
391
525
  - the same runtime/non-runtime ownership boundary
526
+ - at least one observe → lens judgment → source frontier loop
392
527
  - an acceptance observation describing usefulness, missing evidence, and drift
393
528
 
394
529
  Runtime implementation may replace only one deterministic boundary at a time:
@@ -399,22 +534,30 @@ calculation, then MCP exposure.
399
534
 
400
535
  | Directive | Purpose | Runtime gate |
401
536
  |---|---|---|
402
- | `SourceObservationDirective` | choose which runtime observations are evidence candidates | observation id, material kind, source ref, and location validation |
537
+ | `SourceObservationDirective` | choose which runtime observations are evidence candidates for one round | observation id, material kind, source ref, round id, and location validation |
538
+ | `ReconstructLensJudgmentDirective` | label observations, identify semantic gaps, refine certainty, and request next-source needs from one lens perspective | lens id, observation refs, claim/gap ids, evidence refs, and no-direct-source-read validation |
539
+ | `ExplorationSynthesisDirective` | compose lens judgments into an integrated round result without adding a new independent perspective | source judgment refs, conflict handling refs, and preservation of minority/open gaps |
540
+ | `SourceFrontierDirective` | request unjudged source refs for the next observation round or declare no-next-frontier rationale | boundary, inventory, material support, duplicate, broadness, and expected-evidence validation |
403
541
  | `DomainContextSelectionDirective` | choose domain documents and explain why | context existence, scope, and `domain_snapshot_id` validation |
404
- | `SeedCandidateDirective` | propose purpose, non-goals, entities, relations, actions, properties, and rules | schema shape, prior observation-directive status, selected observation, and evidence ref validation |
542
+ | `SeedCandidateDirective` | propose purpose, non-goals, entities, relations, actions, properties, and rules with separate stable `claim_id` and user-facing `name` | schema shape, required non-generic claim name, prior observation-directive status, selected observation, and evidence ref validation |
405
543
  | `ClaimRealizationDirective` | classify each Seed claim's evidence stance | claim id, stance enum, source/evidence ref, and rationale presence validation |
406
- | `EvidenceMapDirective` | connect claims to evidence | dangling ref and duplicate evidence checks |
407
544
  | `SeedConfirmationDirective` | record claim-level accepted, rejected, partial, or deferred confirmation | state transition, duplicate claim, missing claim, and derived-set validation |
408
545
  | `CompetencyQuestionDirective` | define the authoritative execution question set and scope boundaries | duplicate id, closed question set, claim linkage, and evidence-ref validation |
409
546
  | `CompetencyQuestionAssessmentDirective` | answer or mark every authoritative question | exactly-once question coverage, answer-state enum, claim linkage, and evidence-ref validation |
410
547
  | `FailureClassificationDirective` | classify why a question or claim cannot be trusted for the declared purpose | enum, question/result linkage, claim linkage, and materiality rationale checks |
411
- | `OntologyRevisionProposal` | propose reuse, extend, rename, split, reject, or defer decisions | proposal id, target id, action enum, schema, and regression checks |
548
+ | `RevisionProposalDirective` | propose reuse, extend, rename, split, reject, or defer decisions | proposal id, target id, action enum, schema, and regression checks |
412
549
  | `StopDecisionDirective` | decide continue, stop, or ask user based on metrics and purpose | metrics presence and enum validation |
413
550
  | `FinalOutputDirective` | present decision-ready user-facing output | artifact provenance, section presence, and unresolved/deferred disclosure checks |
414
551
 
415
552
  Every semantic claim in a Seed or revision proposal needs evidence refs. A claim
416
553
  without evidence remains a hypothesis or open question.
417
554
 
555
+ Evidence mapping is not a separate authority unless this contract later adds an
556
+ explicit artifact seat for it. Evidence refs are owned by the artifact that makes
557
+ the claim, assessment, failure, proposal, or final-output statement. Any future
558
+ evidence-map view must be a projection over those owning artifacts and must not
559
+ duplicate evidence authority.
560
+
418
561
  ## 10. Artifact Truth
419
562
 
420
563
  The reconstruct session should write artifacts under a dedicated session root,
@@ -427,66 +570,104 @@ Current and provisional artifact contract:
427
570
  |---|---|---|---|
428
571
  | `target-material-profile.yaml` | runtime | helper implemented | selected target material kind, candidates, confidence, selected source profiles, and unsupported-material status |
429
572
  | `source-inventory.yaml` | runtime | helper implemented | selected source roots, material-specific inventory units, and scan boundaries |
573
+ | `initial-source-frontier.yaml` | runtime | implemented | initial frontier derived from invocation binding and source inventory; authority for the first observation frontier |
430
574
  | `source-observations.yaml` | runtime | helper implemented | adapter id, material kind, location, structural data, and stable observation ids |
431
- | `source-observation-directive.yaml` | LLM | implemented through pluggable author | selected observations and evidence-candidate rationale |
432
- | `source-observation-directive-validation.yaml` | runtime | helper implemented | validation status and violations for LLM-selected observation refs |
575
+ | `source-observation-directive.yaml` | LLM | helper implemented for current single-slice path; projection only after round artifacts exist | compatibility projection of selected observations and evidence-candidate rationale; must record projection metadata and no downstream authority when round-scoped artifacts exist |
576
+ | `source-observation-directive-validation.yaml` | runtime | helper implemented for current single-slice path; projection only after round artifacts exist | compatibility projection of validation status and violations; must record projection metadata and no downstream authority when round-scoped artifacts exist |
577
+ | `rounds/{round_id}/source-observation-directive.yaml` | LLM | implemented for round 1 | round-scoped selected observations and evidence-candidate rationale |
578
+ | `rounds/{round_id}/source-observation-directive-validation.yaml` | runtime | implemented for round 1 | round-scoped validation status and violations for LLM-selected observation refs |
579
+ | `rounds/{round_id}/lens-judgments/{lens_id}.yaml` | LLM | implemented for round 1 direct-call path | independent reconstruct lens judgment over trusted observations, including labels, gaps, certainty refinements, and source needs |
580
+ | `rounds/{round_id}/exploration-synthesis.yaml` | LLM | implemented for round 1 direct-call path | integrated round result that preserves conflicts and prepares frontier selection |
581
+ | `rounds/{round_id}/source-frontier.yaml` | LLM | implemented for round 1 direct-call path | requested next source refs, priorities, rationale, and no-next-frontier judgment |
582
+ | `rounds/{round_id}/source-frontier-validation.yaml` | runtime | implemented for round 1 direct-call path | accepted/rejected frontier refs with boundary, support, duplicate, and broadness validation |
433
583
  | `domain-context-selection.yaml` | LLM | future | chosen domain context refs and rationale |
434
584
  | `domain-context-selection-validation.yaml` | runtime | future | context existence, scope, and snapshot validation |
435
- | `seed-candidate.yaml` | LLM | implemented through pluggable author | proposed Ontology Seed before user confirmation |
436
- | `seed-candidate-validation.yaml` | runtime | helper implemented | validation status and violations for LLM-authored Seed claim shape and observation evidence refs |
437
- | `claim-realization-map.yaml` | LLM | mock loop implemented through pluggable author | evidence stance for every Seed claim |
585
+ | `seed-candidate.yaml` | LLM | implemented through pluggable author | proposed Ontology Seed before user confirmation; every claim carries `claim_id`, `name`, `statement`, and evidence refs |
586
+ | `seed-candidate-validation.yaml` | runtime | helper implemented | validation status and violations for LLM-authored Seed claim shape, non-generic claim names, and observation evidence refs |
587
+ | `claim-realization-map.yaml` | LLM | implemented through pluggable direct-call author | evidence stance for every Seed claim |
438
588
  | `claim-realization-map-validation.yaml` | runtime | implemented | claim id, stance enum, and evidence linkage validation |
439
- | `seed-confirmation.yaml` | user/host mediated | mock loop implemented through pluggable provider | claim-level accepted, rejected, partial, or deferred Seed decisions |
589
+ | `seed-confirmation.yaml` | user/host mediated | implemented through pluggable direct-call provider | claim-level accepted, rejected, partial, or deferred Seed decisions |
440
590
  | `seed-confirmation-validation.yaml` | runtime | implemented | confirmation transition validation and derived claim sets |
441
591
  | `competency-questions.yaml` | LLM | implemented through pluggable author | authoritative execution questions and boundaries |
442
- | `competency-questions-validation.yaml` | runtime | implemented | closed CQ set, duplicate id, claim-link, and evidence validation |
443
- | `competency-question-assessment.yaml` | LLM | mock loop implemented through pluggable author | answer status and evidence basis for every authoritative question |
592
+ | `competency-questions-validation.yaml` | runtime | implemented | closed CQ set, duplicate id, eligible-claim coverage, claim-link, and evidence validation |
593
+ | `competency-question-assessment.yaml` | LLM | implemented through pluggable direct-call author | answer status and evidence basis for every authoritative question |
444
594
  | `competency-question-assessment-validation.yaml` | runtime | implemented | exactly-once coverage, status enum, and evidence validation |
445
- | `failure-classification.yaml` | LLM | mock loop implemented through pluggable author | failed or unsafe-to-trust question and claim causes |
595
+ | `failure-classification.yaml` | LLM | implemented through pluggable direct-call author | failed or unsafe-to-trust question and claim causes |
446
596
  | `failure-classification-validation.yaml` | runtime | implemented | failure enum, linkage, and materiality rationale validation |
447
- | `revision-proposal.yaml` | LLM | mock loop implemented through pluggable author | bounded ontology changes, deferrals, or rejection proposals |
597
+ | `revision-proposal.yaml` | LLM | implemented through pluggable direct-call author | bounded ontology changes, deferrals, or rejection proposals |
448
598
  | `revision-proposal-validation.yaml` | runtime | implemented | proposal id, target id, action enum, and regression guard validation |
449
599
  | `reconstruct-metrics.yaml` | runtime | implemented | deterministic counts and pass rates |
450
600
  | `stop-decision.yaml` | LLM | implemented through pluggable author | continue, stop, or ask-user judgment |
451
601
  | `final-output.md` | LLM | implemented through pluggable author and provenance-checked by runtime | user-facing result text grounded in artifacts |
452
602
  | `reconstruct-run-manifest.yaml` | runtime assembly | implemented | step list, owner boundary, performed-by provenance, happy-path scope, artifact refs, and execution profile |
453
- | `reconstruct-record.yaml` | runtime assembly | helper implemented, primary artifact in mock loop | primary structured reconstruct artifact with material, validation, and artifact refs |
603
+ | `reconstruct-record.yaml` | runtime assembly | implemented, primary artifact | primary structured reconstruct artifact with material, validation, and artifact refs |
454
604
 
455
605
  These artifact names are provisional but contract-owned. Runtime implementation
456
606
  must either implement this contract or update this contract before code lands.
457
607
  Runtime code must not silently fix a different schema.
458
608
 
459
- The current mock runtime path explicitly implements:
609
+ The current direct-call runtime path explicitly implements:
460
610
 
461
- - target material profile, inventory, and source observations
611
+ - target material profile, inventory, initial source frontier, and source observations
462
612
  - source-observation directive plus validation
613
+ - round 1 reconstruct lens judgments
614
+ - exploration synthesis
615
+ - source-frontier selection plus validation
463
616
  - Seed candidate plus validation
464
617
  - claim realization plus validation
465
- - Seed confirmation through an explicit mock confirmation provider
618
+ - Seed confirmation through an explicit host-mediated direct-call provider
466
619
  - Seed confirmation validation and derived claim sets
467
- - competency questions through an explicit mock directive author
620
+ - competency questions through an explicit direct-call directive author
468
621
  - competency-question validation and assessment
469
622
  - failure classification plus validation
470
623
  - revision proposal plus validation
471
624
  - deterministic reconstruct metrics
472
- - stop decision and provenance-checked final output through an explicit mock directive author
625
+ - stop decision and provenance-checked final output through an explicit direct-call directive author
473
626
  - reconstruct run manifest and primary reconstruct record
474
627
 
475
- The current mock runtime path explicitly defers:
628
+ The current direct-call runtime path explicitly defers:
476
629
 
477
630
  - `domain-context-selection.yaml`
478
631
  - `domain-context-selection-validation.yaml`
479
632
 
480
633
  These deferred artifacts require additional host/user semantic decisions and
481
- must not be implied by a completed mock run.
634
+ must not be implied by a completed run. `reconstruct-run-manifest.yaml`,
635
+ `reconstruct-record.yaml`, status payloads, result payloads, and
636
+ `final-output.md` must expose these stages as skipped or deferred for the
637
+ current execution profile.
482
638
 
483
- `reconstruct-record.yaml` is the primary artifact for the mock path in the same
639
+ `reconstruct-record.yaml` is the primary artifact for reconstruct in the same
484
640
  way `review-record.yaml` is primary for review.
485
641
 
642
+ ### 10.1 Seed Validation Prerequisites
643
+
644
+ `SeedCandidateDirective` validation is profile-sensitive:
645
+
646
+ - In `full_integral_exploration`, Seed candidate validation requires trusted
647
+ source observations, validated observation directives, trusted lens judgments,
648
+ validated source-frontier records or a trusted no-next-frontier rationale,
649
+ validated domain-context selection or a trusted skipped-stage authority
650
+ impact, and accepted source snapshot refs.
651
+ - In `mock_semantic_slice`, Seed candidate validation may prove only the
652
+ test/fixture artifact flow. It must record skipped live exploration and
653
+ skipped domain-context selection as authority limits, and it must not be used
654
+ as product completion evidence.
655
+ - In `observer_gate_slice`, Seed candidate validation must be skipped unless a
656
+ host-supplied Seed candidate artifact is explicitly provided and validated
657
+ against existing trusted observations.
658
+
659
+ No profile may present a Seed as confirmed unless `seed-confirmation.yaml` and
660
+ `seed-confirmation-validation.yaml` exist and are trusted for that profile.
661
+
486
662
  ## 11. Completion Rule
487
663
 
488
664
  Runtime computes, but does not decide:
489
665
 
666
+ - exploration round count
667
+ - observed source ref count by round
668
+ - new observation count by round
669
+ - accepted and rejected source frontier ref counts
670
+ - already-observed, unsupported, and out-of-bound frontier ref counts
490
671
  - evidence ref count
491
672
  - Seed concept count
492
673
  - claim realization stance counts
@@ -532,12 +713,15 @@ Runtime attachment is ready only when all of these are true:
532
713
  `.onto/processes/reconstruct/source-profiles/`.
533
714
  4. `target_material_kind` is recorded before source adapter selection.
534
715
  5. Source adapter output has stable observation ids and boundary failure rules.
535
- 6. Directive validation has schemas for every meaning directive it accepts.
536
- 7. Metrics are defined as deterministic projections from existing artifacts.
537
- 8. MCP schemas expose only bounded facts and artifact refs.
538
- 9. Stage ids are stable and recorded in status, run manifest, and records.
539
- 10. Cross-artifact id authority is explicit and validators reject dangling refs.
540
- 11. Final output provenance is validated against artifact ids rather than prose.
716
+ 6. Source frontier validation rejects out-of-bound, unsupported, duplicate, and
717
+ unsafe-broad next-source requests.
718
+ 7. Lens judgment artifacts are context-isolated and cannot directly fetch source.
719
+ 8. Directive validation has schemas for every meaning directive it accepts.
720
+ 9. Metrics are defined as deterministic projections from existing artifacts.
721
+ 10. MCP schemas expose only bounded facts and artifact refs.
722
+ 11. Stage ids are stable and recorded in status, run manifest, and records.
723
+ 12. Cross-artifact id authority is explicit and validators reject dangling refs.
724
+ 13. Final output provenance is validated against artifact ids rather than prose.
541
725
 
542
726
  ## 13. Verification Target
543
727
 
@@ -558,6 +742,9 @@ The first end-to-end fixture may use the `day1co/day1co-ai-usage-dashboard`
558
742
  repository or an equivalent temporary fixture. An equivalent fixture must cover:
559
743
 
560
744
  - multiple selected source observations
745
+ - at least two exploration rounds or one validated no-next-frontier rationale
746
+ - at least one accepted source frontier ref and one rejected or already-observed
747
+ frontier ref
561
748
  - at least five Seed claims
562
749
  - at least one accepted claim and one rejected, partial, or deferred claim
563
750
  - at least one competency question that is not fully answered