@c4a/context-cli 0.7.9 → 0.7.10-alpha.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 (345) hide show
  1. package/cli.js +59387 -99747
  2. package/indexers/bundles/context-code-indexer/SKILL.md +19 -44
  3. package/indexers/bundles/context-code-indexer/context-indexer.yaml +2 -19
  4. package/indexers/bundles/context-code-indexer/references/composers/contracts-and-chains.md +7 -2
  5. package/indexers/bundles/context-code-indexer/references/composers/cross-module-chain.md +7 -2
  6. package/indexers/bundles/context-code-indexer/references/composers/development-and-delivery.md +7 -2
  7. package/indexers/bundles/context-code-indexer/references/composers/event-flow.md +7 -2
  8. package/indexers/bundles/context-code-indexer/references/composers/examples-and-documentation.md +7 -2
  9. package/indexers/bundles/context-code-indexer/references/composers/persistence-boundary.md +7 -2
  10. package/indexers/bundles/context-code-indexer/references/composers/protocol-boundary.md +8 -3
  11. package/indexers/bundles/context-code-indexer/references/composers/public-contract.md +9 -4
  12. package/indexers/bundles/context-code-indexer/references/indexer.md +137 -328
  13. package/indexers/bundles/context-code-indexer/references/metrics.md +1 -1
  14. package/indexers/bundles/context-code-indexer/templates/adapter-integration-maintenance-guide.md +1 -9
  15. package/indexers/bundles/context-code-indexer/templates/adapter-integration-request-adaptation-guide.md +1 -9
  16. package/indexers/bundles/context-code-indexer/templates/adapter-integration-usage-guide.md +1 -9
  17. package/indexers/bundles/context-code-indexer/templates/api-service-maintenance-guide.md +1 -9
  18. package/indexers/bundles/context-code-indexer/templates/api-service-public-api-reference.md +1 -9
  19. package/indexers/bundles/context-code-indexer/templates/background-runtime-maintenance-guide.md +1 -9
  20. package/indexers/bundles/context-code-indexer/templates/background-runtime-task-runtime-guide.md +1 -9
  21. package/indexers/bundles/context-code-indexer/templates/cli-tool-maintenance-guide.md +1 -9
  22. package/indexers/bundles/context-code-indexer/templates/cli-tool-public-api-reference.md +1 -9
  23. package/indexers/bundles/context-code-indexer/templates/cli-tool-usage-guide.md +1 -9
  24. package/indexers/bundles/context-code-indexer/templates/component-library-maintenance-guide.md +1 -9
  25. package/indexers/bundles/context-code-indexer/templates/component-library-public-api-reference.md +1 -9
  26. package/indexers/bundles/context-code-indexer/templates/component-library-usage-guide.md +1 -9
  27. package/indexers/bundles/context-code-indexer/templates/contract-source-public-api-reference.md +1 -9
  28. package/indexers/bundles/context-code-indexer/templates/contract-source-usage-guide.md +1 -9
  29. package/indexers/bundles/context-code-indexer/templates/data-sync-reconciliation-maintenance-guide.md +1 -9
  30. package/indexers/bundles/context-code-indexer/templates/data-sync-reconciliation-task-runtime-guide.md +1 -9
  31. package/indexers/bundles/context-code-indexer/templates/data-sync-reconciliation.md +5 -6
  32. package/indexers/bundles/context-code-indexer/templates/derived-generated-source-public-api-reference.md +1 -9
  33. package/indexers/bundles/context-code-indexer/templates/derived-generated-source-usage-guide.md +1 -9
  34. package/indexers/bundles/context-code-indexer/templates/domain-service-maintenance-guide.md +1 -9
  35. package/indexers/bundles/context-code-indexer/templates/domain-service-public-api-reference.md +1 -9
  36. package/indexers/bundles/context-code-indexer/templates/event-consumer-maintenance-guide.md +1 -9
  37. package/indexers/bundles/context-code-indexer/templates/event-consumer-task-runtime-guide.md +1 -9
  38. package/indexers/bundles/context-code-indexer/templates/gateway-facade-maintenance-guide.md +1 -9
  39. package/indexers/bundles/context-code-indexer/templates/gateway-facade-public-api-reference.md +1 -9
  40. package/indexers/bundles/context-code-indexer/templates/gateway-facade-request-adaptation-guide.md +1 -9
  41. package/indexers/bundles/context-code-indexer/templates/monorepo-container-maintenance-guide.md +1 -9
  42. package/indexers/bundles/context-code-indexer/templates/monorepo-container-usage-guide.md +1 -9
  43. package/indexers/bundles/context-code-indexer/templates/plugin-extension-maintenance-guide.md +1 -9
  44. package/indexers/bundles/context-code-indexer/templates/plugin-extension-public-api-reference.md +1 -9
  45. package/indexers/bundles/context-code-indexer/templates/plugin-extension-usage-guide.md +1 -9
  46. package/indexers/bundles/context-code-indexer/templates/sdk-library-maintenance-guide.md +1 -9
  47. package/indexers/bundles/context-code-indexer/templates/sdk-library-public-api-reference.md +1 -9
  48. package/indexers/bundles/context-code-indexer/templates/sdk-library-usage-guide.md +1 -9
  49. package/indexers/bundles/context-code-indexer/templates/storage-repository-maintenance-guide.md +1 -9
  50. package/indexers/bundles/context-code-indexer/templates/storage-repository-public-api-reference.md +1 -9
  51. package/indexers/bundles/context-code-indexer/templates/web-application-federation-guide.md +1 -9
  52. package/indexers/bundles/context-code-indexer/templates/web-application-maintenance-guide.md +1 -9
  53. package/indexers/bundles/context-code-indexer/templates/web-application-page-task-guide.md +1 -9
  54. package/indexers/bundles/context-code-indexer/tests/fixtures/composers.json +8 -8
  55. package/indexers/bundles/context-code-indexer/tests/fixtures/profiles.json +240 -48
  56. package/indexers/bundles/context-markdown-indexer/SKILL.md +20 -24
  57. package/indexers/bundles/context-markdown-indexer/context-indexer.yaml +2 -2
  58. package/indexers/bundles/context-markdown-indexer/references/classification.md +28 -63
  59. package/indexers/bundles/context-markdown-indexer/references/editorial-policy.md +2 -2
  60. package/indexers/bundles/context-markdown-indexer/references/indexer.md +57 -113
  61. package/indexers/bundles/context-markdown-indexer/references/semantic-planning.md +48 -176
  62. package/indexers/bundles/context-markdown-indexer/references/structure-and-artifacts.md +33 -115
  63. package/indexers/bundles/context-markdown-indexer/tests/fixtures/anonymous.json +0 -6
  64. package/indexers/bundles/context-markdown-indexer/tests/fixtures/profiles.json +195 -39
  65. package/indexers/bundles/context-note-indexer/SKILL.md +20 -5
  66. package/indexers/bundles/context-note-indexer/context-indexer.yaml +2 -371
  67. package/indexers/bundles/context-note-indexer/references/classification.md +22 -49
  68. package/indexers/bundles/context-note-indexer/references/customization.md +19 -32
  69. package/indexers/bundles/context-note-indexer/references/extension-placement.md +13 -39
  70. package/indexers/bundles/context-note-indexer/references/indexer.md +6 -2
  71. package/indexers/bundles/context-note-indexer/references/updates-and-composition.md +26 -32
  72. package/indexers/bundles/context-note-indexer/references/writing.md +4 -4
  73. package/indexers/bundles/context-note-indexer/tests/fixtures/profiles.json +0 -54
  74. package/indexers/bundles/context-sessions-indexer/SKILL.md +20 -5
  75. package/indexers/bundles/context-sessions-indexer/context-indexer.yaml +2 -371
  76. package/indexers/bundles/context-sessions-indexer/references/classification.md +22 -50
  77. package/indexers/bundles/context-sessions-indexer/references/customization.md +19 -32
  78. package/indexers/bundles/context-sessions-indexer/references/extension-placement.md +12 -39
  79. package/indexers/bundles/context-sessions-indexer/references/indexer.md +6 -2
  80. package/indexers/bundles/context-sessions-indexer/references/updates-and-composition.md +26 -32
  81. package/indexers/bundles/context-sessions-indexer/references/writing.md +4 -4
  82. package/indexers/bundles/context-sessions-indexer/tests/fixtures/profiles.json +0 -54
  83. package/indexers/contracts/operator-contract.json +2 -4
  84. package/indexers/contracts/profile-contract.json +246 -940
  85. package/indexers/release-manifest.json +94 -98
  86. package/package.json +12 -12
  87. package/parserEntryWorker.js +2759 -16446
  88. package/plugins/VERSION +1 -1
  89. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  90. package/plugins/claude/commands/context.md +6 -7
  91. package/plugins/claude/skills/context-indexer-create/SKILL.md +31 -70
  92. package/plugins/claude/skills/context-indexer-create/references/guides/indexer-skill-creation.md +107 -97
  93. package/plugins/codex/.codex-plugin/plugin.json +2 -2
  94. package/plugins/codex/skills/context/SKILL.md +6 -7
  95. package/plugins/codex/skills/context-indexer-create/SKILL.md +31 -70
  96. package/plugins/codex/skills/context-indexer-create/references/guides/indexer-skill-creation.md +107 -97
  97. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  98. package/plugins/cursor/commands/c4a-context.md +6 -7
  99. package/plugins/cursor/skills/context-indexer-create/SKILL.md +31 -70
  100. package/plugins/cursor/skills/context-indexer-create/references/guides/indexer-skill-creation.md +107 -97
  101. package/plugins/skills/context/SKILL.md +6 -7
  102. package/plugins/skills/context-code-indexer/SKILL.md +19 -44
  103. package/plugins/skills/context-code-indexer/context-indexer.yaml +2 -19
  104. package/plugins/skills/context-code-indexer/references/composers/contracts-and-chains.md +7 -2
  105. package/plugins/skills/context-code-indexer/references/composers/cross-module-chain.md +7 -2
  106. package/plugins/skills/context-code-indexer/references/composers/development-and-delivery.md +7 -2
  107. package/plugins/skills/context-code-indexer/references/composers/event-flow.md +7 -2
  108. package/plugins/skills/context-code-indexer/references/composers/examples-and-documentation.md +7 -2
  109. package/plugins/skills/context-code-indexer/references/composers/persistence-boundary.md +7 -2
  110. package/plugins/skills/context-code-indexer/references/composers/protocol-boundary.md +8 -3
  111. package/plugins/skills/context-code-indexer/references/composers/public-contract.md +9 -4
  112. package/plugins/skills/context-code-indexer/references/indexer.md +137 -328
  113. package/plugins/skills/context-code-indexer/references/metrics.md +1 -1
  114. package/plugins/skills/context-code-indexer/templates/adapter-integration-maintenance-guide.md +1 -9
  115. package/plugins/skills/context-code-indexer/templates/adapter-integration-request-adaptation-guide.md +1 -9
  116. package/plugins/skills/context-code-indexer/templates/adapter-integration-usage-guide.md +1 -9
  117. package/plugins/skills/context-code-indexer/templates/api-service-maintenance-guide.md +1 -9
  118. package/plugins/skills/context-code-indexer/templates/api-service-public-api-reference.md +1 -9
  119. package/plugins/skills/context-code-indexer/templates/background-runtime-maintenance-guide.md +1 -9
  120. package/plugins/skills/context-code-indexer/templates/background-runtime-task-runtime-guide.md +1 -9
  121. package/plugins/skills/context-code-indexer/templates/cli-tool-maintenance-guide.md +1 -9
  122. package/plugins/skills/context-code-indexer/templates/cli-tool-public-api-reference.md +1 -9
  123. package/plugins/skills/context-code-indexer/templates/cli-tool-usage-guide.md +1 -9
  124. package/plugins/skills/context-code-indexer/templates/component-library-maintenance-guide.md +1 -9
  125. package/plugins/skills/context-code-indexer/templates/component-library-public-api-reference.md +1 -9
  126. package/plugins/skills/context-code-indexer/templates/component-library-usage-guide.md +1 -9
  127. package/plugins/skills/context-code-indexer/templates/contract-source-public-api-reference.md +1 -9
  128. package/plugins/skills/context-code-indexer/templates/contract-source-usage-guide.md +1 -9
  129. package/plugins/skills/context-code-indexer/templates/data-sync-reconciliation-maintenance-guide.md +1 -9
  130. package/plugins/skills/context-code-indexer/templates/data-sync-reconciliation-task-runtime-guide.md +1 -9
  131. package/plugins/skills/context-code-indexer/templates/data-sync-reconciliation.md +5 -6
  132. package/plugins/skills/context-code-indexer/templates/derived-generated-source-public-api-reference.md +1 -9
  133. package/plugins/skills/context-code-indexer/templates/derived-generated-source-usage-guide.md +1 -9
  134. package/plugins/skills/context-code-indexer/templates/domain-service-maintenance-guide.md +1 -9
  135. package/plugins/skills/context-code-indexer/templates/domain-service-public-api-reference.md +1 -9
  136. package/plugins/skills/context-code-indexer/templates/event-consumer-maintenance-guide.md +1 -9
  137. package/plugins/skills/context-code-indexer/templates/event-consumer-task-runtime-guide.md +1 -9
  138. package/plugins/skills/context-code-indexer/templates/gateway-facade-maintenance-guide.md +1 -9
  139. package/plugins/skills/context-code-indexer/templates/gateway-facade-public-api-reference.md +1 -9
  140. package/plugins/skills/context-code-indexer/templates/gateway-facade-request-adaptation-guide.md +1 -9
  141. package/plugins/skills/context-code-indexer/templates/monorepo-container-maintenance-guide.md +1 -9
  142. package/plugins/skills/context-code-indexer/templates/monorepo-container-usage-guide.md +1 -9
  143. package/plugins/skills/context-code-indexer/templates/plugin-extension-maintenance-guide.md +1 -9
  144. package/plugins/skills/context-code-indexer/templates/plugin-extension-public-api-reference.md +1 -9
  145. package/plugins/skills/context-code-indexer/templates/plugin-extension-usage-guide.md +1 -9
  146. package/plugins/skills/context-code-indexer/templates/sdk-library-maintenance-guide.md +1 -9
  147. package/plugins/skills/context-code-indexer/templates/sdk-library-public-api-reference.md +1 -9
  148. package/plugins/skills/context-code-indexer/templates/sdk-library-usage-guide.md +1 -9
  149. package/plugins/skills/context-code-indexer/templates/storage-repository-maintenance-guide.md +1 -9
  150. package/plugins/skills/context-code-indexer/templates/storage-repository-public-api-reference.md +1 -9
  151. package/plugins/skills/context-code-indexer/templates/web-application-federation-guide.md +1 -9
  152. package/plugins/skills/context-code-indexer/templates/web-application-maintenance-guide.md +1 -9
  153. package/plugins/skills/context-code-indexer/templates/web-application-page-task-guide.md +1 -9
  154. package/plugins/skills/context-code-indexer/tests/fixtures/composers.json +8 -8
  155. package/plugins/skills/context-code-indexer/tests/fixtures/profiles.json +240 -48
  156. package/plugins/skills/context-indexer-create/SKILL.md +31 -70
  157. package/plugins/skills/context-indexer-create/references/guides/indexer-skill-creation.md +107 -97
  158. package/plugins/skills/context-markdown-indexer/SKILL.md +20 -24
  159. package/plugins/skills/context-markdown-indexer/context-indexer.yaml +2 -2
  160. package/plugins/skills/context-markdown-indexer/references/classification.md +28 -63
  161. package/plugins/skills/context-markdown-indexer/references/editorial-policy.md +2 -2
  162. package/plugins/skills/context-markdown-indexer/references/indexer.md +57 -113
  163. package/plugins/skills/context-markdown-indexer/references/semantic-planning.md +48 -176
  164. package/plugins/skills/context-markdown-indexer/references/structure-and-artifacts.md +33 -115
  165. package/plugins/skills/context-markdown-indexer/tests/fixtures/anonymous.json +0 -6
  166. package/plugins/skills/context-markdown-indexer/tests/fixtures/profiles.json +195 -39
  167. package/plugins/skills/context-note-indexer/SKILL.md +20 -5
  168. package/plugins/skills/context-note-indexer/context-indexer.yaml +2 -371
  169. package/plugins/skills/context-note-indexer/references/classification.md +22 -49
  170. package/plugins/skills/context-note-indexer/references/customization.md +19 -32
  171. package/plugins/skills/context-note-indexer/references/extension-placement.md +13 -39
  172. package/plugins/skills/context-note-indexer/references/indexer.md +6 -2
  173. package/plugins/skills/context-note-indexer/references/updates-and-composition.md +26 -32
  174. package/plugins/skills/context-note-indexer/references/writing.md +4 -4
  175. package/plugins/skills/context-note-indexer/tests/fixtures/profiles.json +0 -54
  176. package/plugins/skills/context-sessions-indexer/SKILL.md +20 -5
  177. package/plugins/skills/context-sessions-indexer/context-indexer.yaml +2 -371
  178. package/plugins/skills/context-sessions-indexer/references/classification.md +22 -50
  179. package/plugins/skills/context-sessions-indexer/references/customization.md +19 -32
  180. package/plugins/skills/context-sessions-indexer/references/extension-placement.md +12 -39
  181. package/plugins/skills/context-sessions-indexer/references/indexer.md +6 -2
  182. package/plugins/skills/context-sessions-indexer/references/updates-and-composition.md +26 -32
  183. package/plugins/skills/context-sessions-indexer/references/writing.md +4 -4
  184. package/plugins/skills/context-sessions-indexer/tests/fixtures/profiles.json +0 -54
  185. package/providers/context/actions/approve-production-report.yaml +5 -0
  186. package/providers/context/actions/configure-production-requirements.yaml +5 -0
  187. package/providers/context/actions/prepare-production-stage.yaml +5 -0
  188. package/providers/context/actions/register-source-batch.yaml +1 -1
  189. package/providers/context/actions/run-indexer-lifecycle.yaml +4 -1
  190. package/providers/context/actions/work-production-stage.yaml +5 -0
  191. package/providers/context/codes.yaml +10 -7
  192. package/providers/context/graphs/indexer.yaml +127 -596
  193. package/providers/context/graphs/workspace.yaml +2 -37
  194. package/providers/context/manifest.json +106 -813
  195. package/providers/context/provider.yaml +1 -1
  196. package/providers/context/resources/contracts/indexer-provider-guide.yaml +2 -2
  197. package/providers/context/resources/diagnostics/verification.md +4 -6
  198. package/providers/context/resources/dialogue/source-boundary.md +5 -7
  199. package/providers/context/resources/manuals/guides/code-indexer-skill-authoring.md +84 -0
  200. package/providers/context/resources/manuals/guides/indexer-provider-and-customization.md +117 -0
  201. package/providers/context/resources/manuals/guides/knowledge-updates.md +35 -14
  202. package/providers/context/resources/manuals/guides/markdown-indexer-skill-authoring.md +65 -0
  203. package/providers/context/resources/manuals/reference/package-templates.md +39 -65
  204. package/providers/context/resources/manuals/reference/template-variables.md +2 -3
  205. package/providers/context/resources/procedures/approved-revision.md +28 -35
  206. package/providers/context/resources/procedures/knowledge-review.md +1 -1
  207. package/providers/context/resources/procedures/knowledge-updates.md +35 -14
  208. package/providers/context/resources/procedures/parallel-agent-batch.md +33 -134
  209. package/providers/context/resources/procedures/production-requirements.md +61 -0
  210. package/providers/context/resources/procedures/production-stage-files.md +57 -0
  211. package/providers/context/resources/procedures/source-boundary.md +8 -10
  212. package/providers/context/resources/procedures/task-recovery.md +15 -20
  213. package/providers/context/resources/procedures/work-start-report.md +91 -413
  214. package/providers/context/resources/templates/indexer-agent-worker.md +20 -61
  215. package/providers/context/resources/templates/work-start-report.md +43 -279
  216. package/providers/context/schemas/approved-revision-result.schema.json +61 -2
  217. package/providers/context/schemas/indexer-agent-step-result.schema.json +128 -2043
  218. package/providers/context/schemas/source-batch-input.schema.json +0 -14
  219. package/providers/context/skills/resolve-current-indexer-gate/SKILL.md +11 -50
  220. package/providers/context/skills/run-indexer-agent-step/SKILL.md +19 -425
  221. package/providers/context/skills/run-indexer-lifecycle/SKILL.md +28 -214
  222. package/providers/context/skills/work-production-stage/SKILL.md +35 -0
  223. package/indexers/bundles/context-markdown-indexer/tests/fixtures/migration-equivalence.json +0 -186
  224. package/plugins/claude/skills/context-indexer-create/references/guides/code-indexer-skill-authoring.md +0 -180
  225. package/plugins/claude/skills/context-indexer-create/references/guides/indexer-manifest-example.md +0 -103
  226. package/plugins/claude/skills/context-indexer-create/references/guides/indexer-provider-and-customization.md +0 -471
  227. package/plugins/claude/skills/context-indexer-create/references/guides/markdown-indexer-skill-authoring.md +0 -136
  228. package/plugins/claude/skills/context-indexer-create/references/guides/note.md +0 -37
  229. package/plugins/claude/skills/context-indexer-create/references/guides/sessions.md +0 -50
  230. package/plugins/claude/skills/context-indexer-create/references/reference/indexer-provider-protocol.md +0 -854
  231. package/plugins/codex/skills/context-indexer-create/references/guides/code-indexer-skill-authoring.md +0 -180
  232. package/plugins/codex/skills/context-indexer-create/references/guides/indexer-manifest-example.md +0 -103
  233. package/plugins/codex/skills/context-indexer-create/references/guides/indexer-provider-and-customization.md +0 -471
  234. package/plugins/codex/skills/context-indexer-create/references/guides/markdown-indexer-skill-authoring.md +0 -136
  235. package/plugins/codex/skills/context-indexer-create/references/guides/note.md +0 -37
  236. package/plugins/codex/skills/context-indexer-create/references/guides/sessions.md +0 -50
  237. package/plugins/codex/skills/context-indexer-create/references/reference/indexer-provider-protocol.md +0 -854
  238. package/plugins/cursor/skills/context-indexer-create/references/guides/code-indexer-skill-authoring.md +0 -180
  239. package/plugins/cursor/skills/context-indexer-create/references/guides/indexer-manifest-example.md +0 -103
  240. package/plugins/cursor/skills/context-indexer-create/references/guides/indexer-provider-and-customization.md +0 -471
  241. package/plugins/cursor/skills/context-indexer-create/references/guides/markdown-indexer-skill-authoring.md +0 -136
  242. package/plugins/cursor/skills/context-indexer-create/references/guides/note.md +0 -37
  243. package/plugins/cursor/skills/context-indexer-create/references/guides/sessions.md +0 -50
  244. package/plugins/cursor/skills/context-indexer-create/references/reference/indexer-provider-protocol.md +0 -854
  245. package/plugins/skills/context-indexer-create/references/guides/code-indexer-skill-authoring.md +0 -180
  246. package/plugins/skills/context-indexer-create/references/guides/indexer-manifest-example.md +0 -103
  247. package/plugins/skills/context-indexer-create/references/guides/indexer-provider-and-customization.md +0 -471
  248. package/plugins/skills/context-indexer-create/references/guides/markdown-indexer-skill-authoring.md +0 -136
  249. package/plugins/skills/context-indexer-create/references/guides/note.md +0 -37
  250. package/plugins/skills/context-indexer-create/references/guides/sessions.md +0 -50
  251. package/plugins/skills/context-indexer-create/references/reference/indexer-provider-protocol.md +0 -854
  252. package/plugins/skills/context-markdown-indexer/tests/fixtures/migration-equivalence.json +0 -186
  253. package/providers/context/actions/advance-current-indexer-lifecycle.yaml +0 -6
  254. package/providers/context/actions/apply-indexer-project.yaml +0 -7
  255. package/providers/context/actions/authorize-current-indexer-provider-program.yaml +0 -6
  256. package/providers/context/actions/authorize-indexer-dependencies.yaml +0 -7
  257. package/providers/context/actions/authorize-indexer-program-execution.yaml +0 -7
  258. package/providers/context/actions/compile-indexer-candidates.yaml +0 -8
  259. package/providers/context/actions/configure-community-indexer-fallback.yaml +0 -6
  260. package/providers/context/actions/configure-indexer-providers.yaml +0 -6
  261. package/providers/context/actions/confirm-index-requirement-workset.yaml +0 -8
  262. package/providers/context/actions/confirm-subject-reidentification.yaml +0 -8
  263. package/providers/context/actions/discover-markdown-indexer-providers.yaml +0 -6
  264. package/providers/context/actions/finalize-current-indexer-provider-selection.yaml +0 -5
  265. package/providers/context/actions/inspect-indexer-dependencies.yaml +0 -7
  266. package/providers/context/actions/inspect-indexer-program-execution.yaml +0 -7
  267. package/providers/context/actions/inspect-indexer-project-proposal.yaml +0 -7
  268. package/providers/context/actions/inspect-markdown-provider-capture.yaml +0 -7
  269. package/providers/context/actions/maintain-evidence.yaml +0 -6
  270. package/providers/context/actions/materialize-indexer-instructions.yaml +0 -7
  271. package/providers/context/actions/materialize-indexer-workset-view.yaml +0 -7
  272. package/providers/context/actions/observe-indexer-project.yaml +0 -7
  273. package/providers/context/actions/prepare-indexer-customization-project.yaml +0 -7
  274. package/providers/context/actions/propose-indexer-customization.yaml +0 -7
  275. package/providers/context/actions/propose-overlay-question-amendment.yaml +0 -7
  276. package/providers/context/actions/rebind-indexer-selection-to-requirement.yaml +0 -7
  277. package/providers/context/actions/report-indexer-incremental-impact.yaml +0 -8
  278. package/providers/context/actions/resolve-current-indexer-provider.yaml +0 -6
  279. package/providers/context/actions/route-index-requirement-confirmation.yaml +0 -8
  280. package/providers/context/actions/route-indexer-provider-selection.yaml +0 -7
  281. package/providers/context/actions/run-indexer-agent-step.yaml +0 -7
  282. package/providers/context/actions/run-indexer-post-author-composer.yaml +0 -7
  283. package/providers/context/actions/validate-indexer-contract-overlays.yaml +0 -7
  284. package/providers/context/actions/validate-indexer-customization.yaml +0 -7
  285. package/providers/context/actions/validate-indexer-selection-proposal.yaml +0 -7
  286. package/providers/context/actions/validate-main-index-run.yaml +0 -7
  287. package/providers/context/actions/validate-markdown-provider-selection.yaml +0 -7
  288. package/providers/context/actions/validate-subject-key-schemas.yaml +0 -8
  289. package/providers/context/resources/dialogue/evidence-maintenance.md +0 -26
  290. package/providers/context/resources/procedures/evidence-maintenance.md +0 -20
  291. package/providers/context/resources/views/authorized-indexer-workset-view.yaml +0 -15
  292. package/providers/context/resources/views/resolved-indexer-instructions.yaml +0 -21
  293. package/providers/context/schemas/evidence-maintenance-input.schema.json +0 -30
  294. package/providers/context/schemas/indexer-agent-step-input.schema.json +0 -80
  295. package/providers/context/schemas/indexer-authorized-workset-view.schema.json +0 -65
  296. package/providers/context/schemas/indexer-candidate-compile-input.schema.json +0 -57
  297. package/providers/context/schemas/indexer-candidate-compile-output.schema.json +0 -38
  298. package/providers/context/schemas/indexer-contract-overlay-validation-input.schema.json +0 -48
  299. package/providers/context/schemas/indexer-contract-overlay-validation-result.schema.json +0 -63
  300. package/providers/context/schemas/indexer-customization-project-preparation-result.schema.json +0 -44
  301. package/providers/context/schemas/indexer-customization-proposal-draft.schema.json +0 -83
  302. package/providers/context/schemas/indexer-customization-validation-result.schema.json +0 -36
  303. package/providers/context/schemas/indexer-dependency-authorization-input.schema.json +0 -71
  304. package/providers/context/schemas/indexer-dependency-authorization-result.schema.json +0 -138
  305. package/providers/context/schemas/indexer-incremental-impact-input.schema.json +0 -31
  306. package/providers/context/schemas/indexer-incremental-impact-output.schema.json +0 -52
  307. package/providers/context/schemas/indexer-main-lifecycle-input.schema.json +0 -180
  308. package/providers/context/schemas/indexer-main-lifecycle-output.schema.json +0 -194
  309. package/providers/context/schemas/indexer-markdown-provider-capture-input.schema.json +0 -17
  310. package/providers/context/schemas/indexer-markdown-provider-capture-output.schema.json +0 -54
  311. package/providers/context/schemas/indexer-markdown-provider-validation-input.schema.json +0 -34
  312. package/providers/context/schemas/indexer-markdown-provider-validation-output.schema.json +0 -75
  313. package/providers/context/schemas/indexer-materialize-request.schema.json +0 -49
  314. package/providers/context/schemas/indexer-materialized-resource.schema.json +0 -64
  315. package/providers/context/schemas/indexer-overlay-question-amendment.schema.json +0 -13
  316. package/providers/context/schemas/indexer-overlay-question-proposal-input.schema.json +0 -89
  317. package/providers/context/schemas/indexer-overlay-question-rebind-input.schema.json +0 -35
  318. package/providers/context/schemas/indexer-overlay-question-rebind-result.schema.json +0 -25
  319. package/providers/context/schemas/indexer-program-execution-authorization-input.schema.json +0 -145
  320. package/providers/context/schemas/indexer-program-execution-authorization-result.schema.json +0 -60
  321. package/providers/context/schemas/indexer-project-action-result.schema.json +0 -19
  322. package/providers/context/schemas/indexer-project-gate-input.schema.json +0 -100
  323. package/providers/context/schemas/indexer-project-observation-input.schema.json +0 -16
  324. package/providers/context/schemas/indexer-project-observation-result.schema.json +0 -42
  325. package/providers/context/schemas/indexer-provider-route-input.schema.json +0 -55
  326. package/providers/context/schemas/indexer-provider-route-report.schema.json +0 -188
  327. package/providers/context/schemas/indexer-requirement-confirmation-input.schema.json +0 -27
  328. package/providers/context/schemas/indexer-requirement-confirmation-output.schema.json +0 -24
  329. package/providers/context/schemas/indexer-selection-proposal-input.schema.json +0 -12
  330. package/providers/context/schemas/indexer-selection-proposal-validation.schema.json +0 -23
  331. package/providers/context/schemas/indexer-subject-reidentification-input.schema.json +0 -37
  332. package/providers/context/schemas/indexer-subject-reidentification-output.schema.json +0 -31
  333. package/providers/context/schemas/indexer-workset-view-materialization-request.schema.json +0 -35
  334. package/providers/context/skills/authorize-current-indexer-provider-program/SKILL.md +0 -20
  335. package/providers/context/skills/configure-indexer-providers/SKILL.md +0 -137
  336. package/providers/context/skills/configure-indexer-providers/references/guides/code-indexer-skill-authoring.md +0 -180
  337. package/providers/context/skills/configure-indexer-providers/references/guides/indexer-provider-and-customization.md +0 -471
  338. package/providers/context/skills/configure-indexer-providers/references/guides/markdown-indexer-skill-authoring.md +0 -136
  339. package/providers/context/skills/configure-indexer-providers/references/guides/note.md +0 -37
  340. package/providers/context/skills/configure-indexer-providers/references/guides/sessions.md +0 -50
  341. package/providers/context/skills/configure-indexer-providers/references/reference/indexer-provider-protocol.md +0 -854
  342. package/providers/context/skills/prepare-indexer-customization-project/SKILL.md +0 -31
  343. package/providers/context/skills/propose-indexer-customization/SKILL.md +0 -40
  344. package/providers/context/skills/resolve-current-indexer-provider/SKILL.md +0 -20
  345. package/providers/context/skills/run-indexer-post-author-composer/SKILL.md +0 -122
@@ -1,854 +0,0 @@
1
- # Indexer Provider protocol
2
-
3
- Context defines one Provider manifest, `context-indexer.yaml`, with protocol
4
- `context.indexer.provider/v1`. Code, Markdown, Note and Sessions Providers use the same field
5
- tree; `domains`, profiles and declared operations describe their applicable
6
- inputs.
7
-
8
- This page documents the protocol surface currently exposed by `@c4a/context`.
9
- Use the current CLI Route for executable inputs, schemas and selected resources.
10
- A protocol validator exported by the SDK is not a separate production workflow.
11
-
12
- ## Articles supported by approved knowledge
13
-
14
- An article plan may declare `knowledge_dependencies`: stable `artifact_ref`,
15
- optional `section_refs` (empty means the approved article), and `required`.
16
- Use references supplied by Context; reader titles and output paths are not
17
- article identities. Each article keeps its existing primary subject and owned
18
- members. Referencing another article does not assign its members again.
19
-
20
- The current Partition/Author workflow delivers ready upstream articles before
21
- dependent required articles. An unavailable dependency remains visible in the
22
- structure preview; `request-adjustment` returns to planning. It cannot finish
23
- as an empty Author wave. Optional Composer output does not satisfy a required
24
- article plan.
25
-
26
- Review saves the approved fact payloads, evidence coordinates and versions with
27
- the approved Markdown transaction. These remain in `knowledge/structure.yaml`
28
- after close and temporary-cache cleanup. Author receives authorized supporting
29
- facts separately from approved interpretation. Current source captures, the
30
- Provider's accepted evidence kinds and the approved article version constrain
31
- that projection. A stored snapshot alone never expands source access.
32
-
33
- Previously approved dependencies can reuse their registered source reader even
34
- when that source has no owned Partition group in the current wave. Only the
35
- referenced authorized files enter the supporting projection. Missing or changed
36
- source files remain an upstream update task.
37
-
38
- An approved dependency change produces a verification warning for downstream
39
- articles. Use the existing `context revise` action on an affected article; its
40
- current route exposes `knowledge_input` with supporting facts and interpretations.
41
- Review accepts the refreshed supporting version even when the Agent confirms
42
- that the wording can stay the same. A plain edit with unavailable support does
43
- not clear the warning. `--regenerate` remains the existing program-block rebuild
44
- option, not a prerequisite for revising a prose synthesis.
45
-
46
- Writing style, chapter drift and ordinary Provider version differences remain
47
- guidance. Changed source/approval identities invalidate an in-flight supporting
48
- projection; they are not semantic content judgments.
49
-
50
- ## Current CLI Author batches
51
-
52
- Use the current Route's task keys and supplied scaffold. Within a CLI batch,
53
- `group_key` may be omitted: preview and completion inherit it from the selected
54
- current task. An explicitly different group is rejected. Standalone SDK semantic
55
- results still require `group_key`. Intent and eligible policy use the existing
56
- page-plan defaults; changing a page's purpose is not a metadata repair.
57
-
58
- The inventory reading joins exact member/fact identities to parser names, kinds
59
- and explicit `propsType` values. These are navigation references, not proof that
60
- a symbol is public or a member has been covered. Keep semantic dispositions and
61
- source evidence explicit.
62
-
63
- On a stale revision, the CLI exposes a current Route snapshot and current tasks,
64
- plus accepted identities available from the current main ledger and its Composers.
65
- Task keys are local to each Route. Compare stable workset/request identities,
66
- read the new Route and do not replay accepted work. Missing historical records
67
- are not evidence that old work is unaccepted.
68
-
69
- ## Resources and execution
70
-
71
- A Provider may contain a controlled program, profile-bound instructions,
72
- templates, an activation detector and an authoring inspector. Executable
73
- resources use only:
74
-
75
- ```yaml
76
- execution:
77
- runtime: node
78
- entry: scripts/index.mjs
79
- args: [--format=json]
80
- ```
81
-
82
- `entry` is a portable path inside the verified Bundle. `args` are literal
83
- arguments. A free-form command, shell expression, environment interpolation,
84
- absolute path or parent traversal is invalid.
85
-
86
- The CLI never launches an executable from a discovered Skill installation
87
- directory. A Host or the CLI first resolves an exact Provider envelope, verifies
88
- the complete file ledger, and copies it to a content-addressed runtime stage.
89
- The controlled launch then revalidates that stage and resolves the declared
90
- entry there with `shell: false` and an empty inherited environment.
91
-
92
- Allowlisted first-party and verified Bundle programs may enter the trusted
93
- path directly. Every other Provider program, and every project-local program
94
- even when it extends an allowlisted Provider, requires an exact
95
- `context.indexer.program-authorization/v1` receipt from the independent
96
- program-execution authority. The receipt binds the project, Provider
97
- fingerprint and manifest, program origin/path/content digest, structured
98
- execution, requested capabilities, fixed dependencies, source scope, limits
99
- and policy digest. A local program is restricted to
100
- `src/indexer/<indexer-id>/index.ts`; the CLI reads a regular non-symlink file
101
- from the workspace before producing its report.
102
-
103
- The controlled invocation rechecks the complete receipt and program identity.
104
- Changing local bytes, the Provider Bundle, entry or arguments, capabilities,
105
- dependencies, scope or limits invalidates the authorization. An ordinary
106
- managed authority cannot issue this receipt, and the receipt always records
107
- `sandboxed_program: false`: it authorizes trusted execution but does not claim
108
- malicious-code isolation.
109
-
110
- Optional external reads are declared separately under
111
- `provides.tool_sources[]`. Each declaration contains only a stable id, a
112
- versioned Host handler and request protocol, the fixed
113
- `context.indexer.tool-snapshot/v1` output protocol, a closed operation list and
114
- `optional: true`. It cannot contain an executable path or command. The
115
- declaration is copied into the Agent-visible Skill capability and the final
116
- Provider composition plan with its owning Provider layer; it does not grant
117
- execution authority. The Host validates and executes its own installed adapter,
118
- while Context validates the resulting tool snapshot and keeps the local parser
119
- baseline independent from optional tool availability.
120
-
121
- ## Two-stage selection validation
122
-
123
- `validateIndexerSelectionStatic` accepts only the proposed registry. It closes
124
- requirement ownership, read scope, profile composition, portable distribution,
125
- exact Provider identity/version/integrity and the data shape of stable config.
126
- Its output is a canonical list of Provider resolution requests. This phase does
127
- not resolve, read, stage or execute a Provider resource.
128
-
129
- After the resolver returns and the CLI creates a content-addressed stage,
130
- `validateIndexerSelectionFinal` consumes the exact static report. It rechecks
131
- the resolved envelope and actual staged file ledger, loads the sole Provider
132
- manifest, verifies profile/operation/composer/extension bindings, validates
133
- config against the Bundle's closed data-only schema, binds the project-local
134
- customization fingerprint and requires a policy digest for executable
135
- resources. Missing, duplicate, stale or extra inputs fail closed.
136
-
137
- Selection validation is not an upgrade gate on an instruction-only bundled
138
- Provider. On resume, the CLI resolves that Provider by Skill and portable
139
- distribution from the current installation, checks the required capabilities,
140
- and refreshes instruction delivery without comparing it to the registry's
141
- historical version/integrity. Compatible persisted tasks keep their original
142
- request/result identities. The current Route revision still prevents stale
143
- submissions. This does not change staged program execution authorization or
144
- allow results to be reused across changed source, config or result contracts.
145
-
146
- The final stable report excludes transport paths, delivery timestamps and
147
- runtime receipt digests. Those values remain in a separate runtime receipt
148
- projection, so rematerializing identical content does not make the selection
149
- stale. The workflow Route must use the static report as the hard predecessor of
150
- resolution; the protocol functions alone do not authorize Host materialization.
151
-
152
- The only default persistent selection authority is `src/indexers.yaml`.
153
- Distribution locators are portable identities such as `cli-bundled://`,
154
- `plugin://`, `workspace://`, `package://` or `marketplace://`; a discovered
155
- Skill installation path and a runtime transport/stage path never enter the
156
- registry or stable report. The workspace persistence audit rejects the legacy
157
- `package.json.context.codeIndex.extensions` field. Provider-only projects also
158
- cannot persist a `src/indexer/` directory; declared local customization is
159
- limited to the fixed project-relative resource set.
160
-
161
- Minimal local customization runs as a resumable subloop. An Agent draft must
162
- consume a final CLI capability-gap proof. The CLI validates and
163
- content-address stages the draft, then project preparation revalidates the
164
- target selection and exact staged Providers before creating a CAS-bound
165
- proposal. Project-local programs stop for independent execution authorization;
166
- dependency authorization creates a new locked successor proposal instead of a
167
- detached result. After the single transactional apply, the CLI records a
168
- durable apply observation, verifies every target digest, reruns finalized
169
- selection validation, and returns the applied registry for one final static
170
- selection audit.
171
-
172
- ## Skill capability and Provider composition
173
-
174
- Context normalizes every verified manifest to
175
- `context.indexer.skill-capability/v1`. This Agent-visible view contains the
176
- Skill's profiles, operations, accepted extension fragments, source roles,
177
- logical units, composers, program capabilities and supported customization
178
- steps. It is canonical and content-digested; it does not expose a discovered
179
- installation path or grant execution authority.
180
-
181
- Final selection builds one
182
- `context.indexer.provider-composition-plan/v1` for each Indexer owner. The plan
183
- binds every active profile to its exact Provider layer, keeps one primary
184
- authority for each enabled operation, admits only declared pre-authority
185
- fragments, merges identical source-role and logical-unit capabilities, and
186
- rejects conflicting logical-unit definitions. Provider instruction resources
187
- remain independently attributed instead of being concatenated implicitly,
188
- layer configs remain separately digested, and an exact project template
189
- override replaces only its matching template id/profile. Input array order is
190
- not authority: all projections use canonical identity sorting.
191
-
192
- The complete composition plans are part of the stable final selection report,
193
- so downstream workset and authoring steps consume a validated composition
194
- rather than rediscovering Provider precedence.
195
-
196
- ## Partition strategy authority
197
-
198
- A Provider may declare profile-bound partition strategies under
199
- `provides.partition_strategies[]` with a stable id and non-negative priority.
200
- The manifest does not provide its own authority digest. Context derives the
201
- implementation identity from the verified Bundle and manifest; a validated
202
- local customization uses its exact file digest, while a CLI builtin is bound to
203
- the current CLI release digest.
204
-
205
- `context.indexer.partition-strategy-resolution/v1` binds the Indexer and
206
- registry fingerprints, selected profiles, Provider integrity, optional local
207
- customization and every strategy authority. A local declaration with the same
208
- id replaces only that Provider strategy. All effective project strategies are
209
- ordered by declared priority and id before any CLI builtin. A CLI builtin
210
- cannot shadow a project strategy, and an undeclared profile or ambiguous
211
- per-profile priority fails validation. The order-sensitive strategy-set digest
212
- is copied into the partition workset, so reordering or changing any authority
213
- makes prior work stale.
214
-
215
- ## Source roles and Artifact policy
216
-
217
- A Provider may declare source-role and logical-unit identifiers, but the
218
- selected CLI profile contract owns Artifact kinds, metrics, thresholds and
219
- policy variants. Final selection rejects `quality_guidance.metric_ids`,
220
- `logical_units[].artifacts.recommended` kinds and
221
- `supported_policy_variants` that are not registered by the selected base
222
- profile. A namespaced extension inherits this check from its declared base
223
- profile. The strict manifest schema has no numeric limit or threshold field.
224
-
225
- Before authoring a logical unit, the CLI evaluates each selected policy
226
- variant's restricted eligibility selector over an allowlisted canonical-fact
227
- projection. The resulting
228
- `context.indexer.artifact-policy-eligibility/v1` binds the profile and operator
229
- contracts, canonical facts, Provider-supported variant set, eligible Artifact
230
- kinds and derived thresholds. `inflation-sensitive` maximums use the fixed CLI
231
- rule; the Provider cannot return a threshold or self-report a pass.
232
-
233
- An author Result declares one validated source role and, when it emits
234
- Artifacts, one `context.indexer.artifact-bundle/v1` for its logical unit. The
235
- Bundle chooses exactly one eligible variant and classifies each Artifact as
236
- required, discretionary or a semantic split. The CLI requires exact agreement
237
- between the Bundle and Result payload, registered required/discretionary kinds,
238
- known evidence, authorized reader questions and the derived discretionary
239
- fan-out limit. Semantic split parts retain `split_of`, the parent's kind and a
240
- non-overlapping stable boundary. An empty Result has no Bundle; a non-empty
241
- Result cannot omit it. There is no global hard limit on total valid logical
242
- units or physical Artifacts.
243
-
244
- Before author worksets can materialize Candidate content, Context requires a
245
- canonical `context.indexer.projected-artifact-plan/v1` and runs
246
- `context.indexer.projected-artifact-fan-out-audit/v1`. Each projection binds a
247
- stable projection key to an exact PartitionPlan group, Bundle digest, current
248
- CLI policy-eligibility digest and evidence justification. Missing or mismatched
249
- owner, Bundle variant or evidence increments the unassigned count; complete
250
- Bundles, expanded variants, semantic split parts and the single CLI
251
- `catalog-fallback` parent do not. Counts up to 100 continue, 101 through 300
252
- continue with a warning, and counts above 300 return the non-Gate
253
- `indexer-plan-revision-required` outcome before any author workset runs. That
254
- partial outcome reopens the owning semantic step; it does not create a profile
255
- revision ledger or an override route.
256
-
257
- Artifact content has three mechanically separate layers. `facts[]` contains
258
- canonical, source-bound values and never reader prose. A structured
259
- `deterministic-block` contains only a registered renderer and `fact_refs`; the
260
- CLI resolves those Facts and derives both Markdown and evidence, so a Provider
261
- cannot relabel arbitrary JSON or prose as a catalog. A `semantic-prose` block
262
- contains evidence-bound Markdown and cannot cite Facts as a way to increase
263
- deterministic coverage. The normalized rendered Section retains ordered
264
- `content_blocks` with the layer, Fact refs, evidence refs and per-block digest;
265
- its Section digest covers that ledger and the exact reader-visible Markdown.
266
-
267
- `ArtifactResult` also carries
268
- `context.indexer.capability-group-evidence/v1`. It repeats the complete member
269
- set bound by the author workset even when no capability group is selected. A
270
- non-empty capability group has a stable ref derived only from the logical unit
271
- and capability key, at least two explicit member-to-evidence bindings, and one
272
- or more actual Artifact Section evidence bindings. A member cannot belong to
273
- two capability groups. Every member evidence ref must be a current Result
274
- evidence binding and must be visible in one of the declared Sections. Unknown
275
- members or Sections, page-level evidence without Section consumption, and
276
- workset/member-set drift are rejected. This protocol does not assign projection
277
- dispositions to members outside capability groups.
278
-
279
- ## Full-path example identity
280
-
281
- Providers report normalized example observations through
282
- `context.indexer.example-inventory/v1`. The stable `example_ref` is derived
283
- only from the public target ref, scenario key and full path relative to the
284
- authorized source/module root. Paths use Unicode NFC and `/`; absolute paths
285
- and parent traversal are invalid. Source/module identity, content digest and
286
- evidence form a separate observation ref, so additional evidence for the same
287
- observation can merge without changing the example identity.
288
-
289
- Context recomputes `context.indexer.example-identity-audit/v1`. Equal basenames
290
- under different full paths are distinct examples, as are equal paths for
291
- different targets or scenarios. Multiple distinct source/content observations
292
- for the same complete example identity are a hard
293
- `example-identity-collision`; a Provider cannot override the audit result or
294
- forge an empty collision list. Candidate disposition and linkage are separate
295
- downstream contracts.
296
-
297
- ## SubjectKey schema authority
298
-
299
- Community profile identity rules have one authority: the top-level
300
- `subject_key_schemas` array in the CLI profile contract. A community Provider
301
- manifest cannot copy or replace that schema. A namespaced additional profile
302
- has the other allowed authority: the exact owner Provider's
303
- `composition.extensions[].subject_key_schema`. The extension declaration is
304
- required and may use only the CLI's closed namespace/local-key derivation
305
- operators, kind identifiers and normalization rules.
306
-
307
- Final selection resolves both forms to
308
- `context.indexer.resolved-subject-key-schema/v1`. The record binds the Indexer,
309
- profile, base-contract or Provider authority, schema digest and resolution
310
- digest. Its canonical set digest is part of the stable final selection report;
311
- transport paths and runtime receipts are not. Subject keys must match a kind in
312
- the resolved schema and satisfy its normalization before they can become a
313
- canonical NodeRef.
314
-
315
- An unchanged schema is equivalent. Adding a kind while preserving the existing
316
- namespace, normalization and local-key operators is compatible. Removing or
317
- changing an existing identity derivation is identity-breaking: the owning
318
- authority must advance its major version and the schema version must increase.
319
- When approved Nodes exist, Context requires a non-delegable
320
- `confirm-subject-reidentification` authorization bound to the exact old/new
321
- schema digests, approved catalog, complete deterministic mapping and report.
322
- Missing mappings, one old Node mapping to multiple Nodes, multiple old Nodes
323
- colliding on one new Node, stale authorization or digest drift blocks
324
- activation. With no approved Node, the human Gate is omitted but conformance
325
- and major-version checks still apply.
326
-
327
- ## Requirement change authority
328
-
329
- `context.indexer.requirement-change-report/v1` retains both complete
330
- requirements, their digests, the canonical comparator inputs, the recomputed
331
- comparison and its report digest. Equivalent and strengthening changes use
332
- `confirm-index-requirements` and may follow managed review authority.
333
- Contraction or incomparable replacement instead uses
334
- `confirm-index-requirement-contraction`; its confirmation is always human and
335
- non-delegable, and binds the exact old/new requirement, comparison and report
336
- digests. A self-digested caller classification is insufficient because Context
337
- recomputes the comparator before issuing or consuming the confirmation.
338
-
339
- Material-gap severity remains derived from the current requirement domain:
340
- `required` is blocking, `optional` is recommended and `out-of-scope` creates no
341
- gap. Severity is not written into worksets or the retained ledger, so a domain
342
- change must pass the requirement Gate instead of editing a stored severity.
343
-
344
- ## Provider discovery and composition Route
345
-
346
- `configure-indexer-providers` is a static Agent Action. It reports the exact
347
- CLI-bundled catalog together with other Indexer entry Skills already visible to
348
- the current Host, then returns a path-free
349
- `context.indexer.provider-route-input/v1`. The visible list remains
350
- conversation-only: the protocol carries names, readable versions and source
351
- types, never installation or cache paths, and the CLI does not scan for more
352
- Skills. When the Host exposes an exact Skill root, discovery may read only the
353
- Skill frontmatter and sibling `context-indexer.yaml`; the manifest version is
354
- authoritative and its `metadata.context-provider-version` copy must match.
355
- Conversational output groups the same Skill name and exact version into one
356
- item with all observed source types, while `visible_skills` retains distinct
357
- source observations because its `source_type` field is singular. Identical
358
- bundled and installed observations are not separate Providers and never create
359
- selection precedence; different exact versions remain separate identities.
360
-
361
- `route-indexer-provider-selection` recomputes required
362
- requirement/domain/source/module owner cells against the unchanged applied
363
- requirement set. Read-scope overlap is reported but remains legal. A closed
364
- selection may contain multiple fixed Skill identities and continues as one
365
- `multi-skill` composition to `validate-indexer-selection-proposal`. Duplicate
366
- primary owners instead return `indexer-provider-conflict` and cannot be
367
- resolved by YAML or discovery order.
368
-
369
- If a first pass leaves an owner cell unmatched, the Graph records `partial` and
370
- runs `configure-community-indexer-fallback`. The second pass is explicitly
371
- marked `community_fallback_attempted: true`; any remaining unowned required
372
- cell becomes `indexer-customization-required` with its exact owner cell,
373
- coverage capability and `context.indexer.capability-gap-proof/v1`. This is the
374
- only Provider-discovery outcome that authorizes the local-customization Route;
375
- the proof protocol remains a capability audit artifact rather than a second
376
- Graph outcome. Only `selection-validation-required` returns a selection
377
- proposal input. The Route writes no workspace or runtime state, and neither a
378
- visible-Skill claim nor the Route report authorizes Bundle materialization.
379
-
380
- ## Contract overlay validation
381
-
382
- `validate-indexer-contract-overlays` recomputes the complete data-only overlay
383
- against the exact CLI base and operator contracts. Invalid DSL, executable
384
- fields, identity redefinition, threshold weakening, digest drift or a partial
385
- Provider identity fails validation. The selected Provider Bundle integrity is
386
- an exact input, not a self-reported trust assertion.
387
-
388
- Successful validation emits
389
- `context.indexer.overlay-validation-receipt/v1`. The receipt binds the exact
390
- project, overlay, base contract, operator contract, Provider Bundle integrity
391
- and canonical conformance report. There is no signature, KMS, trust-bundle or
392
- overlay-authorization protocol. Changing any bound digest requires
393
- revalidation; a stale receipt cannot be reused.
394
-
395
- ## Question amendment back-edge
396
-
397
- A CLI base-contract question can be expanded and confirmed before Provider
398
- resolution. `context.indexer.base-question-amendment/v1` copies the complete
399
- canonical contract from the selected base profile, changes only the requirement
400
- question binding, and applies the confirmed snapshot with an expected-base CAS
401
- and durable single-file journal. A Skill question ref is guidance only; it
402
- cannot provide or alter the contract payload.
403
-
404
- An overlay-backed question follows a different sequence. Context first
405
- recomputes overlay DSL conformance and verifies the exact validation receipt.
406
- Only then may
407
- `context.indexer.overlay-question-amendment/v1` expand namespaced question and
408
- target-domain additions from that overlay. The target coverage domain must
409
- already be in scope and have one existing primary owner. The amendment is a
410
- pure strengthening and remains in runtime staging after confirmation; it is not
411
- written as a standalone requirement update.
412
-
413
- The executable sequence is
414
- `propose-overlay-question-amendment`,
415
- `confirm-overlay-question-amendment`, then
416
- `rebind-indexer-selection-to-requirement`. Proposal and rebind inputs carry the
417
- exact overlay validation input and result; Context recomputes and
418
- compares that pair instead of accepting a detached receipt. Confirmation emits
419
- the exact amendment decision and performs no project write.
420
-
421
- The rebind Action then proves that Indexer/provider
422
- identity, operations, scopes, profile composition, requirement bindings, owner
423
- closure and read authority are byte-identical. It revalidates overlay
424
- conformance,
425
- reuses the exact staged Bundles, and reruns both static and final selection
426
- against the target requirement digest. Provider and SubjectKey authority must
427
- remain unchanged. Final selection resolves every CLI-base question back to its
428
- exact selected profile contract and requires one current validation proof
429
- for every overlay question; forged bindings and duplicate, stale, or unused
430
- proofs fail before the final report is issued. The report binds the resulting
431
- question authority set digest. The resulting
432
- `context.indexer.overlay-question-registry-apply-proposal/v1` contains the full
433
- target `src/indexers.yaml` snapshot and binds the amendment, confirmation,
434
- overlay validation, rebound selection, SubjectKey schema set and finalized reports.
435
- The proposal goes through the same `stage-indexer-project-proposal` and
436
- `apply-indexer-project` Actions as ordinary registry/customization proposals.
437
- The latter dispatches this typed proposal to one expected-base CAS, project
438
- write lock and persistent journal, so the requirement binding and rebound
439
- registry are committed by one complete file replacement. Recovery observes
440
- only the old or new registry snapshot; it never reconstructs authority from a
441
- temporary Provider path.
442
-
443
- ## Controlled invocation
444
-
445
- Author result acceptance checks the actual task, source/module, subject and
446
- Provider layer. Provider integrity, bundle/config/customization fingerprints
447
- remain recorded metadata, not byte-equality gates between a resumed request and
448
- its result. Selected Facts are resolved by their supplied identity and source
449
- references; their current values are recorded without comparing a previous
450
- parser payload digest. Source-span line ranges may expand within the same file
451
- content. Structured declarations resolve actual file/item identities, not a
452
- previous inventory or signature fingerprint. Source file content checks,
453
- unknown-reference rejection and atomic write protection remain in force.
454
-
455
- These continuation rules do not relax executable program authorization or allow
456
- an Agent to select undeclared sources.
457
-
458
- `context.indexer.controlled-invocation/v1` binds:
459
-
460
- - the exact Indexer, Provider, version, Bundle integrity and stable Provider
461
- fingerprint;
462
- - the manifest-declared `runtime + entry + args`;
463
- - requested and granted Context SDK capabilities;
464
- - an exact fixed dependency set with package, version, lock integrity and
465
- resolved content digest;
466
- - one authorized source/module scope;
467
- - a stable trust-policy and authority digest;
468
- - timeout and stdin/stdout/stderr byte limits.
469
-
470
- The built-in Host capability is `sandboxed_program: false`. A first-party,
471
- verified or exact project-authorized program may use the `trusted-program` path,
472
- which is not an isolation claim. An untrusted program without a real sandbox is
473
- not executable.
474
-
475
- The program input is `context.indexer.run-request/v2` with the single
476
- `main-index` operation. Its output is `context.indexer.run-result/v1`, wrapped by
477
- `context.indexer.controlled-program-result/v1` to bind the exact invocation and
478
- payload digest. Context still validates the operation-specific Result and
479
- recomputes mechanical gates independently.
480
-
481
- ## Primary execution identity and workset reads
482
-
483
- Context derives `context.indexer.primary-registry-projection/v1` from the
484
- finalized registry. The projection contains the selected Indexer's requirement
485
- bindings, read scope, `main-index` operation, primary/additional profiles,
486
- primary or pre-authority Provider layers and customization mode. It excludes
487
- `profile.composers[]` and Provider layers used only after primary authoring.
488
- `context.indexer.primary-execution-projection/v1` separately binds the primary
489
- program, instructions, templates, config, CLI/profile contracts and only
490
- `primary | pre-authority` resources. Its resource subprojection produces
491
- `primary_resource_binding_digest`; a post-author resource cannot satisfy that
492
- schema.
493
-
494
- `context.indexer.main-workset/v2` digests its complete canonical payload. A
495
- workset set permits only one author workset for an Indexer, owner cohort and
496
- group key. `context.indexer.main-transport-batch/v2` may carry several complete
497
- worksets but intentionally has no batch identity, digest, page number or
498
- reader-facing name. Regrouping worksets for Host transport therefore cannot
499
- change an individual workset or Result identity.
500
-
501
- Each partition run request also carries one exact
502
- `partition_strategy_attempt`: its resolution order, strategy reference and
503
- digest, plus the previous attempt digest after a retry. The field participates
504
- in the execution request digest and is `null` for author work. Context accepts
505
- only a semantic partition. Ordinal, fixed-count and alphabetical axes are
506
- recorded in a content-addressed convergence chain and atomically requeue the
507
- same workset with the next authorized strategy. This path has no user Gate and
508
- does not consume profile-revision attempts; an exhausted strategy set routes
509
- to the CLI catalog fallback.
510
-
511
- Context projects every source-specific fact, dependency and verified Provider
512
- fragment authorized for one main workset into the single
513
- `context.indexer.authorized-workset-view/v1` resource. The Agent reads that
514
- managed resource and uses its file locators directly. It does not construct
515
- source-specific reads, semantic windows, cursors or receipt fields. Workset,
516
- View and execution-request identity bind the accepted Result; Host call grouping
517
- cannot manufacture a new logical unit such as `batch-1` or alter an Artifact
518
- identity.
519
-
520
- Post-author composition uses its own
521
- `context.indexer.post-author-run-ledger/v1`; it never reuses primary main-run
522
- progress. Each entry is keyed by composer ref and current workset digest and is
523
- `pending`, `running`, `accepted`, `failed` or `stale`. An accepted entry stores
524
- the complete validated Result, materialized fragments and invocation receipt,
525
- including a valid zero-fragment Result. Rebuilding a workset set reuses only an
526
- accepted entry whose workset, request, View, Result, receipt and fragment set
527
- all remain current. A `running` entry without that complete record returns to
528
- `pending` on recovery; a changed workset becomes `stale` without discarding
529
- unchanged accepted peers.
530
-
531
- `context.indexer.post-author-status/v1` exposes deterministic total, pending,
532
- accepted, failed and stale counts, sorted next refs and the accepted receipt-set
533
- digest. Zero effective composers yields `post_author_envelope.state =
534
- not-required` without creating a View or envelope and may reconcile. A nonzero
535
- set may reconcile only when every composer is accepted and the supplied
536
- `context.indexer.composed-result-envelope/v1` exactly matches the recomposed
537
- current envelope. Missing or mismatched envelope data is `stale`; partial,
538
- failed or stale worksets cannot reconcile.
539
-
540
- ## Parser coordinates and locks
541
-
542
- A runtime profile declares each parser as a
543
- `context.indexer.parser-requirement/v1`: an abstract capability, parser ABI and
544
- exact community package/export/version coordinate. The capability name is not
545
- an import alias and the presence of parser source in a Context or downstream source mirror
546
- does not prove that the capability is installed.
547
-
548
- The configured registry resolves that requirement to
549
- `context.indexer.parser-coordinate-mapping/v1`. A direct mapping preserves the
550
- community coordinate exactly. A wrapper may use another coordinate only while
551
- preserving the same ABI digest; it may re-export the ABI but cannot redefine
552
- parser facts. Installation then produces
553
- `context.indexer.parser-resolution-lock/v1`, which records the actual
554
- package/export/version, mapping digest, lock integrity, resolved content digest
555
- and ABI digest.
556
-
557
- Provider or local-customization imports must carry the exact capability and
558
- parser lock digest and must import the actual locked package/export/version.
559
- The locked dependency projection feeds controlled execution and stale
560
- identity. Community aliases, mirror paths and whether a sync copied parser
561
- source are not accepted as runtime evidence. Internal release smoke must load
562
- the configured actual export; that later release check does not change this
563
- protocol authority.
564
-
565
- ## Section collection mapping and layout
566
-
567
- Collection remains the closed package and query classification vocabulary. A
568
- Provider Result declares only each Section's `section_key`, owner Indexer,
569
- document kind, reader goal and Artifact kind. The selected CLI profile contract
570
- owns the versioned `layout_mappings`; exactly one mapping must match the
571
- profile, source role and complete Section projection. A Result containing a
572
- collection, output path or unknown top-level package namespace is invalid.
573
-
574
- Collection belongs to a physical Artifact. Every actual or material-gap
575
- Section in that Artifact must resolve to the same collection. A mixed source
576
- may route different Sections to different collections only by declaring
577
- separate Artifacts in its validated Bundle; the CLI does not silently split or
578
- merge reader pages to repair a Provider Result.
579
-
580
- The compile-internal resolver emits `context.indexer.layout-proposal/v1`. It
581
- binds the exact Artifact Result, profile contract, validated SubjectKey schema
582
- set and exact schema digest, Indexer and source. The resolver validates the
583
- SubjectKey against the selected schema normalization before deriving NodeRef;
584
- a caller-supplied digest is not accepted as schema authority. NodeRef plus the
585
- logical Artifact id/kind derives ArtifactRef. NodeRef, owner Indexer, Artifact
586
- kind and Section key derive a stable logical Section identity; its placement
587
- under one Artifact derives SectionRef. This lets a diff distinguish a moved
588
- Section from new content without allowing the same logical Section to have two
589
- primary placements. The ViewRef is an internal projection. Output paths are
590
- derived under `knowledge/<collection>/` and never accepted from a Provider.
591
-
592
- Template Artifacts enter layout only after validated rendering. Only rendered
593
- Sections exist; an omitted optional projection does not create an empty
594
- Section, while a retained material gap remains unresolved without
595
- reader-visible placeholder content. Artifact Bundle purpose and `split_of`
596
- lineage are retained in the proposal. A proposal set rejects duplicate Node
597
- owners, Artifact identities, logical Section identities, Section placements
598
- and output paths across Indexers, as well as missing, nested or kind-changing
599
- semantic-split parents.
600
-
601
- Before Candidate Review, Context builds
602
- `context.indexer.artifact-manifest/v1` from the current layout set and the
603
- actual physical Markdown set. The manifest stores paths, content digests,
604
- byte/body-line counts and exact logical-unit or registered-navigation ownership;
605
- it does not retain the Markdown body. A separate
606
- `context.indexer.physical-artifact-audit/v1` recomputes Bundle numerator and
607
- denominator, per-unit physical fan-out, semantic split count, and the complete
608
- missing/empty/orphan/unresolved-material sample set. Any such diagnostic is a
609
- non-overridable completeness failure.
610
-
611
- Generated navigation must use a content-addressed
612
- `context.indexer.navigation-artifact-plan/v1`. Nested navigation is allowed,
613
- but every navigation Artifact must reach a logical-unit Artifact; unknown
614
- children, cycles, path collisions and unregistered files fail. Reader bodies
615
- over 1500 lines produce a non-blocking advisory only. Total physical Artifact
616
- count has no global maximum.
617
-
618
- An initial layout does not create the protected `confirm-layout-change` Gate.
619
- The main lifecycle still reviews its semantic structure before Author in
620
- ordinary mode; new topics in an update receive that structure review too.
621
- A content-only increment reuses the existing Artifact identity and skips the
622
- protected layout-change Gate. Adding reader
623
- fan-out to an already approved Node, removing or renaming an Artifact,
624
- splitting/merging its declared lineage, moving a logical Section, or changing
625
- an approved collection/path is represented by a digest-bound layout change
626
- report and requires the human, non-delegable `confirm-layout-change` Gate.
627
- `context.indexer.layout-transition/v1` binds the current proposal set and base
628
- projections before exposing the conditional Gate. No parallel align Route can
629
- approve or rewrite that transition.
630
-
631
- ## Explicit Result-bound Candidate compile
632
-
633
- `compile-indexer-candidates` consumes the complete current set of accepted
634
- author Results from the durable main-run store. Its input repeats only the
635
- exact workset, execution-request, acceptance and Artifact Result digests; the
636
- CLI rejects a missing, extra, forged or stale Result reference before
637
- materialization. Callers cannot provide an alternate Result body, Provider
638
- contract or a second document-authoring payload.
639
-
640
- The compiler validates every accepted run envelope and acceptance record,
641
- then binds each Candidate to the same Indexer Result, source identity,
642
- Provider layer and integrity, Bundle digest, configuration fingerprint and
643
- optional customization fingerprint used by layout. The supplied layout
644
- proposal set and transition must bind the same Artifact Result set. Any
645
- destructive layout report additionally requires its exact non-delegable
646
- confirmation; unresolved material gaps stop compile.
647
-
648
- Structured Section blocks are materialized directly. Template-backed
649
- Artifacts use only an exact rendered Artifact bound to the same Result digest.
650
- The CLI derives physical paths from layout, builds the physical Artifact
651
- manifest, and requires the completeness audit to pass before returning the
652
- Candidate set. The durable current record lives under Context runtime state;
653
- it does not write approved knowledge. Review and apply remain the only route
654
- to approved Markdown.
655
-
656
- No generic fallback exists after Provider resolution. A minimal local
657
- customization may be proposed only after the explicit
658
- `indexer-customization-required` outcome and its capability-gap proof; compile
659
- itself never invents one.
660
-
661
- ## Material gaps and the single authoring path
662
-
663
- Reconciliation reports unresolved material gaps from the current accepted
664
- Results. Required gaps keep the current lifecycle blocked; optional gaps remain
665
- diagnostics in that report. Context does not create a second checkpoint, audit
666
- ledger, answer workset, or special close route for them.
667
-
668
- Newly captured Markdown, tool snapshots, or other authorized material re-enter
669
- the normal `main-index` operation. The affected Partition and Author worksets
670
- run again, reconciliation is recomputed, and the user reviews the resulting
671
- knowledge Candidate through the existing content Review. Review apply writes
672
- approved Markdown; close projects `knowledge/structure.yaml` and verifies it.
673
- Delivery retains accepted work while more pages remain, then cleans completed
674
- transient state. Durable `processed_scopes` advance only after the selected
675
- scope's required work and build complete, not after one page in that scope.
676
-
677
- ## Detector and inspector
678
-
679
- An activation detector consumes `context.indexer.activation-request/v1`. The
680
- request contains the exact declared required, supporting and negative signal
681
- set plus one `context.indexer.parser-fact-view/v1`. The view is built from
682
- validated Evidence Adapter Results and their process-local structured fact
683
- payload sidecars. It binds the authorized source/module scope, canonical file
684
- inventory, origin Result digests and every payload digest. Raw source or
685
- configuration text is not part of this input.
686
-
687
- Parser adapters expose a materialization helper that returns the wire-safe
688
- `context.indexer.evidence-adapter-result/v1` together with `fact_payloads`.
689
- Those payloads intentionally do not serialize inside the Result and cannot be
690
- recovered after a JSON round trip. The caller must construct the parser fact
691
- view while the sidecar is still present; missing, extra, stale or out-of-view
692
- payloads fail closed.
693
-
694
- `context.indexer.activation-result/v1` must close every signal as
695
- `present`, `absent` or `unknown`; a present signal requires evidence. Context,
696
- not the detector, derives `matched`, `not-matched` or `indeterminate`.
697
-
698
- An authoring inspector consumes `context.indexer.inspector-request/v1`, including
699
- the exact active Provider profiles and Registry variants, and returns
700
- `context.indexer.inspector-result/v1`. Its evidence payload is the shared
701
- `context.indexer.evidence-adapter-result/v1`; its `fact_payloads` carry only
702
- validated profile variants, source Fact refs, bounded template variables and a
703
- structured availability status. Context requires one payload for every
704
- enrichment fact, verifies each payload digest and source ref, rejects Registry
705
- variant drift, then adapts the values into the same internal Authorized Workset
706
- View projection source used by other inputs. Inspector files are always
707
- `enricher` plus `lightweight-evidence`; they cannot own baseline inventory or
708
- contribute a denominator. The Result must close the requested inventory and
709
- authorized source/module scope. No Inspector protocol or technical identifier
710
- is exposed as a separate Agent input. Detector and inspector entries run only from
711
- the reverified content-addressed stage through the same empty-environment,
712
- no-shell, bounded JSON subprocess runner. Timeout, stdin/stdout/stderr overflow,
713
- invalid UTF-8/JSON, undeclared evidence and scope expansion are typed failures;
714
- a successful execution returns a digest-bound receipt.
715
-
716
- ## Project-local customization
717
-
718
- A Provider-only project does not create `src/indexer/`. When the registry
719
- explicitly selects `extend` or `replace`, Context reads only
720
- `src/indexer/<indexer-id>/` and the fixed resources `index.ts`, `variables.ts`,
721
- `helpers.ts`, `instructions.md` and `templates/<id>.md`. Each file requires an
722
- exact `@context-indexer-origin` header. `replace` additionally requires a current
723
- capability-gap proof.
724
-
725
- Every customization view also carries a validated
726
- `context.indexer.customization-plan/v1`. The fixed escalation ladder is
727
- `provider-only`, `config`, `instructions-append`, `template-override`,
728
- `program-extend`, then `replace`. Selecting a step requires ordered evidence
729
- that every smaller step is insufficient. `replace` additionally requires three
730
- distinct failed extension-attempt digests and human confirmation; adding an
731
- external dependency also makes confirmation mandatory. The selected step must
732
- match the actual loaded files and the registry's `none | extend | replace`
733
- mode. A Provider-only workspace gets a deterministic `provider-only` plan and
734
- must not supply a local escalation plan. A non-empty registry config remains
735
- registry-only but requires an exact `config` plan with Provider-only closure
736
- evidence.
737
-
738
- Project changes are represented by
739
- `context.indexer.project-proposal/v1`. A proposal binds the unchanged
740
- requirement-set authority, complete target registry, actual changed files,
741
- fixed dependency intents, validation reports and expected-base digests. It is
742
- staged under runtime state before any source write. Applying it uses the project
743
- write lock and a persistent multi-file journal; recovery accepts only complete
744
- base or target file states and refuses unknown external drift.
745
-
746
- Dependency intents begin as `requires-authorization` and cannot make a proposal
747
- apply-ready. The separate `authorize-indexer-dependencies` Gate requires the
748
- `context.indexer-dependency-install` authority and binds the proposal, original
749
- intent-set digest, exact package versions, importers, lock integrity, resolved
750
- content digests and authority scope. Its CLI Action returns a digest-bound
751
- authorization receipt plus a new `locked` intent set; install scripts remain
752
- structurally `false`. A locked intent without its exact receipt, an unused
753
- receipt, a changed resolution or an ordinary managed authority fails closed.
754
- The Agent must use that locked set and the complete package/lock snapshots in a
755
- replacement staged proposal before `apply-indexer-project`; the apply journal
756
- never writes `node_modules`, which is reconstructed only from the accepted lock.
757
-
758
- ## Indexer template rendering
759
-
760
- Indexer authoring templates are not package-output Handlebars templates. Each
761
- Provider template is one manifest-declared Markdown file under that Provider's
762
- `templates/` tree. A project may replace only the same template id/profile at
763
- `src/indexer/<indexer-id>/templates/<id>.md`; all other templates continue to
764
- come from the verified, content-addressed Provider stage.
765
-
766
- The Markdown file begins with closed YAML frontmatter using
767
- `context.indexer.template/v1`. It declares the reader goal, applicable artifact
768
- policy variants, typed variables with an explicit `deterministic-fact` or
769
- `semantic-prose` content layer, registered deterministic blocks, required and
770
- optional Sections, question refs, evidence kinds/cardinality, deletion rules,
771
- page-boundary guidance, anonymous examples, anti-examples, forbidden output and
772
- a rendered byte budget. Every body Section uses exact markers:
773
-
774
- ```md
775
- <!-- context:indexer-section summary -->
776
- # {{variable:title}}
777
-
778
- {{variable:summary}}
779
- <!-- /context:indexer-section -->
780
- ```
781
-
782
- Only `{{variable:<id>}}` and `{{block:<id>}}` are accepted. Direct variables are
783
- semantic prose. A block source variable is a deterministic Fact projection,
784
- must bind canonical `fact_refs`, and must equal the CLI's normalized projection
785
- of those Facts. Blocks select one of
786
- the CLI-owned `bullet-list`, `key-value-table`, `json-code-block` or `public-contract-table` renderers;
787
- templates cannot register code or helpers. A block directive occupies its own
788
- template line so the renderer can retain an exact content-layer boundary. The
789
- contract and body must declare exactly the same Sections and placeholders.
790
-
791
- `ArtifactResult` binds every template variable to current evidence refs and
792
- binds every declared Section to `section_key`, owner Indexer, document kind,
793
- reader goal and Artifact kind. Rendering validates the Provider/customization
794
- fingerprints, template digest, current CLI-owned applicability conditions,
795
- variable types and expansion limits, per-variable evidence boundary and exact
796
- CLI-owned question target. An optional Section without data
797
- or sufficient evidence is absent from the rendered Candidate. A required
798
- Section in the same state becomes the already-declared material-question
799
- transition and makes `review_ready` false.
800
-
801
- Context validates template-program directives, declared variable types and
802
- expansion limits before rendering. Supplied variable values and Section prose
803
- are content, not template programs: JSX, braces, comments, TODOs, headings and
804
- example placeholders do not cause a content-validation failure. Missing or
805
- invalid structured input is distinct from an author's choice of words.
806
- Unfilled authoring placeholders can be mentioned during the existing Agent or
807
- user Review, but are not an additional CLI gate. The rendered
808
- Section content, ordered content-layer ledger and evidence receive stable
809
- digests. Deterministic blocks contribute catalog completeness but never
810
- semantic-prose density. Later `build` projects this approved body; it does not
811
- perform a first render or change its structure.
812
-
813
- An ArtifactResult may emit
814
- `context.indexer.structured-claim-set/v1`. Every claim binds a stable claim
815
- kind and subject to one real Artifact/Section owner and one or more evidence
816
- refs carried by that exact Section. The subject must be the current logical
817
- unit, one of its CLI-owned inventory members, or an authorized target-resolution
818
- identity. Missing owners, outside subjects, unknown evidence and evidence that
819
- is known globally but absent from the owner Section all fail Result validation.
820
-
821
- Main-run validation does not produce a prose-quality audit. Content usefulness,
822
- completeness and faithfulness belong to the existing Agent or user Review.
823
- Structured owner/source checks still run, but no keyword, punctuation, heading
824
- or sentence-pattern scan can reject an otherwise valid Result. Physical output
825
- checks distinguish a missing or blank body from an authored body; they do not
826
- decide whether headings, comments or short prose are sufficient knowledge.
827
-
828
- ### Groups narrowed by a scope decision
829
-
830
- The CLI may attach `scope_change.removed_member_ids` to a derived PartitionPlan
831
- group after excluding only part of its membership. This is runtime provenance,
832
- not an extra field Provider authors should invent in semantic Partition results.
833
- The remaining identity stays stable; the old page form/template is no longer a
834
- binding choice. Author receives the change in `page_plan.scope_change` and must
835
- reassess the residual sources, title and reader task. It can choose an allowed
836
- page form or an applicable non-publishing outcome. This metadata does not belong
837
- in knowledge frontmatter and is not proof that remaining material is useful.
838
-
839
- ## Incremental planning handoff
840
-
841
- A semantic Partition group may declare `ready_for_author: true` when the Agent
842
- has resolved its subject, primary ownership, reader task and shared dependencies.
843
- The CLI can then deliver an initial wave before all Partition tasks are accepted.
844
- This is an optional scheduling declaration, not a new evidence or approval gate.
845
- Absent/false groups wait; every inventory member still needs a final disposition.
846
- The original Partition ledger resumes after normal structure review, Author,
847
- Composer, content Review, close and successful build. Later material for the same
848
- subject reuses its page identity and approved prose. A wave finishing never means
849
- the remaining source scope is complete.
850
-
851
- Known code-symbol planning views provide member overviews with immutable full
852
- fact links and bounded captured-source access. Providers must inspect details
853
- when semantic boundaries are uncertain; unknown payload formats retain full
854
- reading. Author receives full selected facts and source material.