@c4a/context 0.7.0 → 0.7.1

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.
package/README.md CHANGED
@@ -88,7 +88,7 @@ maintain this declaration from the user's requirements.
88
88
  | `source()` and `allSources()` | References registered repo, file, or Lark source boundaries. |
89
89
  | `extractTs()` | Extracts TypeScript/JavaScript and TSX/JSX symbols and relationships into `codeindex` candidates. |
90
90
  | `extractCustom()` | Runs a project-owned code extractor while Context owns candidate, evidence, freshness, and Review state. |
91
- | `alignProse()` and `compileProse()` | Structures document evidence and compiles source-bound knowledge candidates. |
91
+ | `alignProse()` and `compileProse()` | Legacy explicit phase factories retained for existing workspace migration and repair. New workspaces use `src/indexers.yaml` and the Context Indexer lifecycle. |
92
92
  | `reviewValidity()` | Declares the review gate for one collection or the project. |
93
93
  | `customPhase()` | Adds project-specific orchestration when built-in phase factories are not enough. |
94
94
  | `kbPackage()` | Builds an Agent knowledge-base package from approved knowledge and templates. |
package/README.zh-CN.md CHANGED
@@ -82,7 +82,7 @@ Route 会按需选择维护这份声明所需的操作说明、Schema 和手册
82
82
  | `source()` 和 `allSources()` | 引用已经登记的代码仓库、本地文件或飞书来源边界。 |
83
83
  | `extractTs()` | 从 TypeScript/JavaScript 与 TSX/JSX 中提取符号和关系,生成 `codeindex` 候选。 |
84
84
  | `extractCustom()` | 运行项目自有代码提取器,同时由 Context 维护候选、证据、新鲜度和审核状态。 |
85
- | `alignProse()` 和 `compileProse()` | 整理文档证据,并生成与来源绑定的知识候选。 |
85
+ | `alignProse()` 和 `compileProse()` | 仅为既有工作区迁移和修复保留的显式阶段工厂;新工作区使用 `src/indexers.yaml` 与统一 Indexer 生命周期。 |
86
86
  | `reviewValidity()` | 声明单个知识类型或整个项目的审核门禁。 |
87
87
  | `customPhase()` | 在内置阶段无法覆盖时增加项目专用编排。 |
88
88
  | `kbPackage()` | 使用审核通过的知识和模板构建 Agent 知识库。 |
@@ -81,12 +81,14 @@ processor, confirm the source boundary and add the processor before capture.
81
81
  If the selected page is only a runtime shell, capture the rendered-site source
82
82
  or project-specific data source explicitly; do not ask the agent to invent
83
83
  missing body text. The concrete command shape is available from
84
- `context source add file --help`; after registration, declare `captureFile`,
85
- `alignProse`, `compileProse`, and `reviewValidity`.
84
+ `context source add file --help`; after registration, declare `captureFile`
85
+ and `reviewValidity`, then let the Context Indexer lifecycle create the
86
+ confirmed requirements and exact Provider registry in `src/indexers.yaml`.
86
87
 
87
88
  For a Lark / Feishu document, register a Lark source with exactly one identity
88
- form, then declare `captureLark`, `alignProse`, `compileProse`, and
89
- `reviewValidity`.
89
+ form, then declare `captureLark` and `reviewValidity`. Do not add
90
+ `alignProse`/`compileProse` to a new workspace; those factories remain only for
91
+ explicit migration and repair of older declarations.
90
92
 
91
93
  File and Lark sources use the same date-batch shape as repo sources. Multiple
92
94
  documents belong under one date instead of receiving `-2` / `-A` suffixes:
@@ -140,17 +142,17 @@ of returning an unexecutable command. Read every
140
142
  semantic rules remain available as files and are loaded only for the route that
141
143
  needs them.
142
144
 
143
- After capture, status selects `route.document.classification-required` for
144
- document modules without an align declaration. Run the Gate's returned
145
- collection-neutral inspection commands first; only then propose a mainline
146
- collection and ask for confirmation. Batch read permission does not choose a
147
- collection.
145
+ After capture, status selects `route.indexer.lifecycle-required`. Follow its
146
+ `run-indexer-lifecycle` resource and the exact `context indexer ...` outcomes:
147
+ confirm the complete requirement set, discover and resolve an exact Markdown
148
+ Provider, execute its evidence-bound worksets, reconcile/layout/audit the
149
+ Result, and compile the current Candidate batch. Batch read permission does
150
+ not choose requirements, a Provider, or a collection.
148
151
 
149
152
  When the workspace also contains repo sources, Context prioritizes untouched
150
- code after all document captures finish: the current reason is
151
- `route.extract.pending-target` until the code extraction round is current,
152
- then routing returns to document investigation. An existing document
153
- structure/compile gate is never interrupted.
153
+ code and document owner cells through that same Indexer Route. It does not
154
+ switch to a second extraction or prose lifecycle and does not interrupt an
155
+ accepted workset that is already durably recorded.
154
156
 
155
157
  For a single component package, use the package directory as the repo source
156
158
  boundary:
@@ -221,15 +223,14 @@ current Route rather than duplicating them in the project Skill.
221
223
 
222
224
  ### Document Source Flow
223
225
 
224
- For source documents, keep the project declaration small and let the CLI guide
225
- the evidence views, structure confirmation, deterministic compile projection,
226
- review, and close steps:
226
+ For source documents, keep the project declaration small. `src/index.ts`
227
+ declares the trusted source/capture/review/package surface; the confirmed
228
+ requirements and exact Provider selection live separately in
229
+ `src/indexers.yaml`:
227
230
 
228
231
  ```ts
229
232
  import {
230
- alignProse,
231
233
  captureFile,
232
- compileProse,
233
234
  defineProject,
234
235
  reviewValidity,
235
236
  source,
@@ -241,9 +242,7 @@ export default defineProject({
241
242
  sources: [docs],
242
243
  phases: [
243
244
  captureFile({ source: docs }),
244
- alignProse({ source: docs, collection: "architecture" }),
245
- compileProse({ source: docs, collection: "architecture" }),
246
- reviewValidity({ collection: "architecture" }),
245
+ reviewValidity({ scope: "all" }),
247
246
  ],
248
247
  packages: [],
249
248
  });
@@ -254,11 +253,18 @@ Then return to the installed Context Agent entry. For maintainer inspection,
254
253
  sequence is:
255
254
 
256
255
  1. capture the source into committed snapshots;
257
- 2. investigate evidence and confirm the CLI-managed lifecycle structure;
258
- 3. compile every source-bound View from confirmed structure;
259
- 4. review/apply the complete candidate batch once;
256
+ 2. confirm requirements and resolve exact Code/Markdown Providers through the
257
+ sole Indexer Route;
258
+ 3. execute and reconcile evidence-bound worksets, then derive layout and audit
259
+ the Result;
260
+ 4. compile and review/apply the complete Indexer Candidate batch once;
260
261
  5. run close once, then verify and build when packages are declared.
261
262
 
263
+ See [Indexer Provider selection and customization](./guides/indexer-provider-and-customization.md)
264
+ for the registry and Provider flow. Existing workspaces that still declare
265
+ `alignProse`/`compileProse` may use their explicit diagnostic commands during
266
+ migration, but Context does not select them as the default workflow.
267
+
262
268
  Do not read `sources/` or raw Markdown directly after entering the Context
263
269
  workflow; use the evidence views and `source_ref` values returned by the CLI.
264
270
 
@@ -122,12 +122,11 @@ Present only the current workflow surface:
122
122
  |---|---|
123
123
  | Register a knowledge boundary | `context source add file/lark/repo ...`, followed by the matching project phase declaration. Source registration is a user-confirmed boundary decision. |
124
124
  | Capture document sources | Run the declared `capture:file:<date>/<module>` or `capture:lark:<date>/<module>` phase only after read permission. Capture writes a sibling document file under the matching date directory, updates that directory's single `manifest.json`, and mechanically materializes supported Lark resources. Do not download or rewrite embedded resources outside the CLI. |
125
- | Investigate captured material | Use `context status` and the returned `context run align:<type>:<source>:<collection> --view ...` commands. Evidence views drive reading; raw directory grep is not the workflow. |
126
- | Confirm prose structure | `alignProse` validates and stages CLI-managed lifecycle structure. Validation does not equal user confirmation; only confirmed lifecycle state may enter prose compile. |
127
- | Compile source-bound drafts | `compileProse` turns confirmed structure into source-bound draft pages. It does not approve knowledge. |
128
- | Review and apply | Use `context review html` and `context review apply`. Approved prose pages are source-mirrored; rewrite/compression problems should return to structure/compile repair before apply. |
125
+ | Investigate captured material | Follow `route.indexer.lifecycle-required` and its `run-indexer-lifecycle` resource. Use only the evidence views and `context indexer ...` commands returned by the current subroute; raw directory grep is not the workflow. |
126
+ | Index documents and code | Confirm requirements, resolve exact Providers, execute/recover worksets, reconcile Results, derive layout, audit, and compile the current Indexer Candidate batch. There is no separate default extraction, classification, align, or structure-confirmation route. |
127
+ | Review and apply | Use `context review html` and `context review apply`. Approved pages retain their exact Indexer Result/evidence binding; quality problems return to the affected Indexer revision before apply. |
129
128
  | Close, verify, build | Run `context close`, `context verify`, then `context build`. Close derives `knowledge/structure.yaml`, approved edge projection, and the final verify gate. |
130
- | Code extraction | Use `context source inspect <source-name>` and the declared extract phase preview before code draft writes. |
129
+ | Code evidence | The Code Indexer uses registered parser capabilities and evidence adapters through the same Indexer Route. Legacy explicit extract phases are migration/repair entrypoints, not the default workflow. |
131
130
  | Source retraction | Follow the current status or lifecycle command if one exists. Do not delete `sources/`, `knowledge/`, `dist/`, or `.tmp` to simulate lifecycle actions. |
132
131
 
133
132
  Judgment behavior is part of evidence views, source span resolvers, repair
@@ -197,9 +196,10 @@ workspace-relative repo root plus `subpath`; do not rewrite it back to an
197
196
  absolute machine path. Local Markdown/MDX sources
198
197
  are registered with `context source add file [YYYYMMDD] --module <module> --local <path>` plus any
199
198
  needed `--include` patterns, captured with `captureFile`, then planned through
200
- `alignProse` and compiled with
201
- `compileProse`. A one-file-to-one-page outcome is a degenerate structure plan,
202
- not a separate content path. Remote Git operations require explicit user approval before any
199
+ the confirmed requirement set and exact Markdown Indexer registry in
200
+ `src/indexers.yaml`. Artifact and Section layout is derived from the validated
201
+ Provider Result; it does not require a default align/structure-confirmation
202
+ round. Remote Git operations require explicit user approval before any
203
203
  clone/checkout; clone into an ignored local path, checkout the requested commit,
204
204
  then register that local checkout. Do not commit cloned source content. Lark /
205
205
  Feishu sources are registered as document modules under a shared date batch,
@@ -238,47 +238,37 @@ revision-bound Context command and read the returned file. Long procedures and
238
238
  semantic rules live in these resources; they are loaded progressively, not
239
239
  discarded or shortened into the status response.
240
240
 
241
- Status also returns `declarationGraph` and `configurationGaps`. These expose
242
- capture, align, compile, and Review coverage for each canonical document source
243
- and declared align collection. Missing declarations are early warnings while
244
- structure is still being planned; after confirmation, every collection planned
245
- by the structure must have an exact compile route for the same source. Do not
246
- run a compile command from another collection as a fallback. A
247
- `reviewValidity({ scope: "all" })` declaration covers every collection.
248
-
249
- When `workflow.current.reason_code` is
250
- `route.document.classification-required`, execute its read-only
251
- `inspection_action` commands before adding align/compile declarations. Inspect
252
- every unclassified target, explain the evidence behind the proposed mainline
253
- collection, and wait for user confirmation. Filenames, URLs, source titles,
254
- and collection names are hints, not sufficient classification evidence.
255
-
256
- Also inspect `pendingStructureTargets`. A non-empty list means captured document
257
- work remains outside the active structure snapshots, even if the current package
258
- is already built. Follow `needs-prose-configuration` first when declarations are
259
- missing, then run the exact returned align command. Continue in the same
260
- workspace; do not replace a valid earlier structure round or create a second
261
- workspace merely to add the next document. Missing declarations are selected
262
- by `route.prose.configuration-required`; do not branch on an old top-level
263
- `needs-prose-configuration` state.
264
-
265
- Use `structureBatch` for the complete multi-source slot overview. Evidence View
266
- commands are workspace-read-only and parallel-safe; structure stage/confirm,
267
- compile stage, Review apply, and close mutate workspace state and must run
268
- serially.
269
-
270
- The confirmation and Review scopes are different: confirm each canonical source
271
- plus collection structure slot independently, but do not open Review while
272
- another declared slot remains pending in the same round. Compile every View from
273
- all slots first, open one collection-level Review, and let deterministic close
274
- merge the active slots into `knowledge/structure.yaml`.
241
+ Status also returns `declarationGraph` and `configurationGaps`. For new
242
+ workspaces, use them to diagnose source/capture/review/package declarations;
243
+ requirements, owner cells, Provider selection, worksets, audit, and Candidate
244
+ progress come from the Indexer lifecycle. `reviewValidity({ scope: "all" })`
245
+ covers the unified Candidate batch.
246
+
247
+ When `workflow.current.reason_code` is `route.indexer.lifecycle-required`, read
248
+ the selected lifecycle resource and follow the first structured Indexer
249
+ outcome. Do not invent a collection from filenames, URLs, source titles, or old
250
+ align declarations. The confirmed requirement set and exact Provider registry
251
+ are the durable authority.
252
+
253
+ Indexer evidence reads may be parallel when the current worksets and Host permit
254
+ it. Ledger transitions, Candidate compile, Review apply, and close mutate
255
+ workspace state and must follow their exact CAS-bound commands. Do not open
256
+ Review until every required owner cell has an accepted current Result and the
257
+ batch audit is ready.
275
258
 
276
259
  Do not infer permission from the presence of a command. When
277
260
  `workflow.current.commands` is empty, do not derive a lifecycle command from
278
261
  prose; complete the returned `configuration` action or resolve the returned
279
262
  gate, then rerun status.
280
263
 
281
- Extraction scope is also a human gate. If no extract phase is declared, explain
264
+ ## Legacy Explicit Code Extraction Commands
265
+
266
+ The following `extractTs`/`extractCustom` route applies only when maintaining an
267
+ existing project that still declares an explicit extraction phase. New
268
+ workspaces express code ownership and scope as Indexer requirements and use the
269
+ Code Indexer through `route.indexer.lifecycle-required`.
270
+
271
+ For an existing explicit phase, extraction scope is a human gate. If no extract phase is declared, explain
282
272
  what code area and symbol policy will become draft knowledge, then ask which
283
273
  registered source and file/symbol range to ingest. Do not inspect the source
284
274
  repository to choose packages or globs on the user's behalf. The
@@ -390,10 +380,15 @@ count packages, parse `package.json`, or sample the lifecycle candidate ledger.
390
380
  These commands still enforce the scoped candidate-id gate.
391
381
  - Do not edit approved Markdown by hand as part of review apply.
392
382
 
393
- ## Prose Align And Compile Rules
383
+ ## Legacy Prose Migration And Repair Commands
384
+
385
+ `alignProse` and `compileProse` remain callable for existing workspace
386
+ migration, explicit diagnostics, and repair. They are not selected by the
387
+ default Graph and must not be added to a new project as an alternate indexing
388
+ workflow. Use the commands below only when the current CLI explicitly returns
389
+ one of these legacy phase ids.
394
390
 
395
- After document capture, do not ask the user to choose an SDK path. Explain the
396
- product sequence:
391
+ For such an existing declaration, the compatibility sequence is:
397
392
 
398
393
  1. investigate material through Context evidence views;
399
394
  2. propose a structure draft with nodes, section plans, supported edges, and
@@ -102,28 +102,13 @@ codeindex or reuse an unrelated parser.
102
102
 
103
103
  ## Plan Before Parsing
104
104
 
105
- Classify the user-visible module before selecting language tooling or reading an
106
- archetype template: API/service, background runtime, SDK/library, interactive
107
- application, adapter, CLI/tool, monorepo container, derived source,
108
- authoritative contract source, or unknown.
109
- A hybrid module may declare several `moduleTypes` and several behavior `facets`;
110
- keep one primary `moduleType` for concise reports. Record inspected paths in
111
- `moduleTypeEvidence`, record every Markdown file actually read in `documents`, then read all matching Route-recommended files below
112
- `resources/semantic/code-index/templates/` and combine them into one plan.
113
- After that, choose exactly one closed output profile: `module-map`,
114
- `application-map`, `protocol-index`, `service-boundary`, `runtime-map`,
115
- `public-api-reference`, `command-map`, `adapter-contract`, `module-registry`,
116
- `cross-module-flow`, or `provenance-only`. The profile selects structural probes
117
- and advisory checks; an invented value is rejected.
118
-
119
- Each archetype resource is a working template for an Agent with limited prior
120
- context. It provides a minimum evidence pass, the reader questions the index
121
- must answer, suggested knowledge units, Markdown chapter blueprints,
122
- aggregation and relationship rules, composition examples, and stop conditions.
123
- The blueprints are illustrative: omit unsupported sections and merge overlap
124
- across selected templates instead of producing empty headings or duplicate
125
- pages. They shape content before the batch preview; they do not prescribe or
126
- override projected page counts.
105
+ The root workflow no longer owns module taxonomy or archetype templates. The
106
+ Indexer registry selects the applicable Provider profile, and the resolved
107
+ Provider Bundle supplies the semantic plan, evidence questions, composition
108
+ rules, and output guidance. Context only validates the closed selection,
109
+ digests, inventories, and resulting Candidate contracts. Do not reconstruct a
110
+ parallel profile taxonomy in this reference or route around the Indexer
111
+ lifecycle with an extractor-specific plan.
127
112
 
128
113
  Extractor shape defines what can be emitted. `extractTs()` creates one page per
129
114
  selected symbol and permits one owning index unit per source. Use it for an
@@ -310,32 +310,20 @@ Graph outcome. Only `selection-validation-required` returns a selection
310
310
  proposal input. The Route writes no workspace or runtime state, and neither a
311
311
  visible-Skill claim nor the Route report authorizes Bundle materialization.
312
312
 
313
- ## Contract overlay validation and trust
313
+ ## Contract overlay validation
314
314
 
315
315
  `validate-indexer-contract-overlays` recomputes the complete data-only overlay
316
316
  against the exact CLI base and operator contracts. Invalid DSL, executable
317
317
  fields, identity redefinition, threshold weakening, digest drift or a partial
318
- attestation/trust bundle fails before any authorization Route exists. A
319
- resolver's self-reported `verified` value is not an accepted input.
320
-
321
- A valid detached Ed25519 attestation is checked locally against a matching key
322
- in the complete Host trust-bundle policy, including key validity and
323
- revocation, and directly produces the common
324
- `context.indexer.overlay-trust-receipt/v1`. The receipt binds the exact Host
325
- adapter identity/version and management-authority digest as well as the policy
326
- digest, so any policy-envelope drift makes the audit stale. An unsigned overlay, an attestation
327
- without an installed trust bundle, or an attestation whose issuer/key is absent
328
- from the canonical bundle returns `authorization-required`; the request binds
329
- the exact attestation digest (or null) together with the
330
- project/overlay/base/operator/Provider/conformance digest set. The
331
- non-delegable `authorize-indexer-contract-overlay` Gate may issue that
332
- project-exact authorization under the independent
333
- `context.indexer-contract-overlay` authority; revalidation then produces the
334
- same trust-receipt protocol with trust class
335
- `project-authorized-exact-digest`. Cross-project or stale reports cannot be
336
- reused. Once the bundle contains the declared issuer/key, an invalid signature,
337
- expired key, revoked key, or malformed policy is a hard trust failure and
338
- cannot downgrade to project authorization.
318
+ Provider identity fails validation. The selected Provider Bundle integrity is
319
+ an exact input, not a self-reported trust assertion.
320
+
321
+ Successful validation emits
322
+ `context.indexer.overlay-validation-receipt/v1`. The receipt binds the exact
323
+ project, overlay, base contract, operator contract, Provider Bundle integrity
324
+ and canonical conformance report. There is no signature, KMS, trust-bundle or
325
+ overlay-authorization protocol. Changing any bound digest requires
326
+ revalidation; a stale receipt cannot be reused.
339
327
 
340
328
  ## Question amendment back-edge
341
329
 
@@ -347,8 +335,8 @@ and durable single-file journal. A Skill question ref is guidance only; it
347
335
  cannot provide or alter the contract payload.
348
336
 
349
337
  An overlay-backed question follows a different sequence. Context first
350
- recomputes overlay DSL conformance and verifies an enterprise or exact-project
351
- trust receipt. Only then may
338
+ recomputes overlay DSL conformance and verifies the exact validation receipt.
339
+ Only then may
352
340
  `context.indexer.overlay-question-amendment/v1` expand namespaced question and
353
341
  target-domain additions from that overlay. The target coverage domain must
354
342
  already be in scope and have one existing primary owner. The amendment is a
@@ -359,23 +347,24 @@ The executable sequence is
359
347
  `propose-overlay-question-amendment`,
360
348
  `confirm-overlay-question-amendment`, then
361
349
  `rebind-indexer-selection-to-requirement`. Proposal and rebind inputs carry the
362
- exact trusted overlay validation input and result; Context recomputes and
350
+ exact overlay validation input and result; Context recomputes and
363
351
  compares that pair instead of accepting a detached receipt. Confirmation emits
364
352
  the exact amendment decision and performs no project write.
365
353
 
366
354
  The rebind Action then proves that Indexer/provider
367
355
  identity, operations, scopes, profile composition, requirement bindings, owner
368
- closure and read authority are byte-identical. It revalidates overlay trust,
356
+ closure and read authority are byte-identical. It revalidates overlay
357
+ conformance,
369
358
  reuses the exact staged Bundles, and reruns both static and final selection
370
359
  against the target requirement digest. Provider and SubjectKey authority must
371
360
  remain unchanged. Final selection resolves every CLI-base question back to its
372
- exact selected profile contract and requires one current trust/conformance proof
361
+ exact selected profile contract and requires one current validation proof
373
362
  for every overlay question; forged bindings and duplicate, stale, or unused
374
363
  proofs fail before the final report is issued. The report binds the resulting
375
364
  question authority set digest. The resulting
376
365
  `context.indexer.overlay-question-registry-apply-proposal/v1` contains the full
377
366
  target `src/indexers.yaml` snapshot and binds the amendment, confirmation,
378
- overlay trust, rebound selection, SubjectKey schema set and finalized reports.
367
+ overlay validation, rebound selection, SubjectKey schema set and finalized reports.
379
368
  The proposal goes through the same `stage-indexer-project-proposal` and
380
369
  `apply-indexer-project` Actions as ordinary registry/customization proposals.
381
370
  The latter dispatches this typed proposal to one expected-base CAS, project
@@ -218,21 +218,18 @@ inventing overlapping file ranges.
218
218
 
219
219
  ### Status declaration coverage
220
220
 
221
- `context status --format json --view full` includes a `declarationGraph` and
222
- `configurationGaps` for document workflows. Each row reports capture, align,
223
- compile, and Review coverage for a canonical source plus collection. Gaps are
224
- non-blocking before structure confirmation. Once a structure is confirmed,
225
- compile routing is exact: phase selection uses canonical source plus collection,
226
- and candidate progress remains bound to the current `structure_digest`. A
227
- compile phase from another collection is never used as fallback.
228
-
229
- Captured align targets that do not yet have an active confirmed structure are
230
- reported in `pendingStructureTargets`. They remain unfinished even when the
231
- currently active structures have been closed, verified, and built. Missing
232
- compile or Review declarations route to `needs-prose-configuration`; once the
233
- declarations are complete, status returns the exact align investigation command
234
- for the next target. A built package does not freeze the workspace or require a
235
- new workspace for later sources.
221
+ `context status --format json --view full` includes `declarationGraph` and
222
+ `configurationGaps` for source/capture/review/package declarations. New
223
+ workspaces do not add align or compile rows: confirmed requirements, owner
224
+ cells, exact Provider selection, workset progress, audit, and Candidate compile
225
+ belong to the Indexer lifecycle selected by
226
+ `route.indexer.lifecycle-required`.
227
+
228
+ `pendingStructureTargets` and align/compile coverage may still appear while
229
+ diagnosing an existing workspace that explicitly declares legacy prose phases.
230
+ They are compatibility diagnostics, not a second default workflow and not a
231
+ fallback when an Indexer Result is unavailable. A built package does not freeze
232
+ the workspace or require a new workspace for later sources.
236
233
 
237
234
  `context status --format json` defaults to the compact workflow route, target,
238
235
  progress, counts, and aggregated diagnostics. Use `--view full` only when
@@ -392,7 +389,12 @@ const localDocs = source("20260712", "local-manual", { type: "file" });
392
389
 
393
390
  ### `alignProse`
394
391
 
395
- Open the prose structure gate for document evidence:
392
+ Legacy compatibility factory for an existing workspace that explicitly owns a
393
+ prose structure phase. New projects must use `src/indexers.yaml` and the
394
+ Markdown Indexer lifecycle; the default Graph never selects `alignProse` as an
395
+ alternate authoring route.
396
+
397
+ For migration or repair of an existing declaration:
396
398
 
397
399
  ```ts
398
400
  alignProse({
@@ -505,19 +507,14 @@ ranges are never structure boundaries. Structure validation blocks repeated
505
507
  fixed-width line grids that cut through AST blocks and reports sections that
506
508
  cross multiple heading paths, without classifying document topics.
507
509
 
508
- After capture, the capture phase itself exposes collection-neutral `read-plan`,
509
- `source-index`, `span-detail`, `span-text`, and other read-only evidence views.
510
- Status selects `route.document.classification-required` until every captured
511
- target has an evidence-backed, user-confirmed align declaration. Align then
512
- adds `schema` and `structure-summary` for structure work. Agents should not
513
- scan `sources/` or `.tmp` to invent evidence. They may read only the exact
514
- source-body files selected as required resources by the current Route; those
515
- files carry stable content digests and must be read in full before a receipt is
516
- reported. Read all required direct paths, then execute the Route's single
517
- `resources.after_read.command`; the CLI writes and carries the merged receipt
518
- set without requiring Agent-authored JSON. That acknowledgement response
519
- already contains the re-evaluated `workflow.current`, so no additional status
520
- command is needed.
510
+ For a new workspace, capture is followed by
511
+ `route.indexer.lifecycle-required`; the Markdown Provider receives exact
512
+ captured evidence and returns a schema-validated Result from which Context
513
+ derives layout. The align evidence views below apply only when the current CLI
514
+ explicitly selects a legacy phase for migration or repair. Agents must not scan
515
+ `sources/` or `.tmp` to invent evidence. Read only the exact source-body files
516
+ selected as required resources by that Route and execute its
517
+ `resources.after_read.command` after the complete read.
521
518
 
522
519
  Generated Context Views use the same content-addressed rule. Materialization
523
520
  returns a receipt-set path and an exact post-read command. Read the complete
@@ -539,7 +536,11 @@ separate Agent-authored payload or approval step.
539
536
 
540
537
  ### `compileProse`
541
538
 
542
- Compile confirmed prose structure into reviewable source-bound draft pages:
539
+ Legacy compatibility factory that compiles an already confirmed legacy prose
540
+ structure. New workspaces compile the accepted Indexer Result store through the
541
+ Indexer Candidate compile Route and do not declare this phase.
542
+
543
+ For migration or repair of an existing declaration:
543
544
 
544
545
  ```ts
545
546
  compileProse({
@@ -982,16 +983,16 @@ prompt. After the user reports that limitation, the exact conversation phrase
982
983
  `context review approve-all ... --force` command. Other generic approval or
983
984
  continue wording does not invoke it.
984
985
 
985
- The gate is batch-scoped: prose waits for every planned View across all active
986
- structure slots and every declared `pendingStructureTargets` item in the round;
987
- codeindex waits for every pending extract phase in the confirmed module round.
986
+ The gate is batch-scoped: the current Indexer Candidate batch waits for every
987
+ required owner cell to have an accepted current Result and a ready audit.
988
988
  Candidate count/hash therefore describes the complete current batch rather than
989
- one page, source slot, or module. Deterministic close later merges all active
990
- slots into `knowledge/structure.yaml`, retains only their source, collection,
991
- and consumed snapshot hash as `source_inputs`, then removes the lifecycle slots.
989
+ one page, source slot, or module. Deterministic close projects approved Indexer
990
+ Nodes, Views, Sections, edges, and exact source/Result bindings into
991
+ `knowledge/structure.yaml`.
992
992
 
993
- `status.structureBatch` lists unclassified, configuration-required, pending,
994
- and active structure slots together with the execution policy for the round.
993
+ `status.structureBatch` is retained only as a diagnostic for an existing
994
+ workspace with explicit legacy prose phases; it does not participate in the
995
+ default Indexer Route.
995
996
 
996
997
  If the user explicitly asks for an automated or quick approval/rejection path,
997
998
  use the scoped quick commands instead of hand-writing a payload:
package/index.d.ts CHANGED
@@ -18,8 +18,8 @@ export * from "./indexerProviderSelectionProposal.js";
18
18
  export * from "./indexerCustomizationLadder.js";
19
19
  export { indexerMetricContractSchema, indexerArtifactPolicyVariantSchema, indexerInventoryDomainSchema, indexerOperatorContractDigest, indexerOperatorContractSchema, indexerProfileContractDigest, indexerProfileContractEntrySchema, indexerProfileContractSchema, indexerProfileSubjectKeySchema, indexerQuestionTargetDomainSchema, indexerReaderQuestionContractSchema, indexerSubjectKeyContractSchema, inflationSensitiveHardMaximum, validateIndexerOperatorContract, validateIndexerProfileContract, } from "./indexerProfileContract.js";
20
20
  export type { IndexerMetricContract, IndexerOperatorContract, IndexerProfileContract, IndexerProfileContractEntry, IndexerProfileSubjectKey, IndexerReaderQuestionContract, IndexerSubjectKeyContract, } from "./indexerProfileContract.js";
21
- export { authorizeProjectIndexerOverlay, indexerContractOverlayDigest, indexerContractOverlaySchema, indexerOverlayAttestationDigest, indexerOverlayAttestationSchema, indexerOverlayAttestationSigningPayload, indexerOverlayProjectAuthorizationDigest, indexerOverlayProjectAuthorizationSchema, indexerOverlayTrustBundleDigest, indexerOverlayTrustBundleEnvelopeSchema, indexerOverlayTrustBundleSchema, indexerOverlayTrustReceiptDigest, indexerOverlayTrustReceiptSchema, validateIndexerContractOverlay, validateIndexerOverlayAttestation, validateIndexerOverlayTrustBundleEnvelope, verifyEnterpriseIndexerOverlayTrust, } from "./indexerOverlayTrust.js";
22
- export type { IndexerContractOverlay, IndexerOverlayAttestation, IndexerOverlayConformanceReport, IndexerOverlayProjectAuthorization, IndexerOverlayTrustBundle, IndexerOverlayTrustBundleEnvelope, IndexerOverlayTrustReceipt, } from "./indexerOverlayTrust.js";
21
+ export { createIndexerOverlayValidationReceipt, indexerContractOverlayDigest, indexerContractOverlaySchema, indexerOverlayValidationReceiptDigest, indexerOverlayValidationReceiptSchema, validateIndexerContractOverlay, validateIndexerOverlayValidationReceipt, } from "./indexerContractOverlay.js";
22
+ export type { IndexerContractOverlay, IndexerOverlayConformanceReport, IndexerOverlayValidationReceipt, } from "./indexerContractOverlay.js";
23
23
  export * from "./indexerOverlayQuestionAmendment.js";
24
24
  export * from "./indexerOverlayQuestionApplyProposal.js";
25
25
  export * from "./indexerBaseQuestionAmendment.js";