@c4a/context-cli 0.6.19 → 0.7.0

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 (273) hide show
  1. package/README.md +67 -6
  2. package/README.zh-CN.md +42 -5
  3. package/cli.js +75051 -42154
  4. package/indexers/bundles/context-code-indexer/SKILL.md +20 -0
  5. package/indexers/bundles/context-code-indexer/context-indexer.yaml +230 -0
  6. package/indexers/bundles/context-code-indexer/references/composers/contracts-and-chains.md +23 -0
  7. package/indexers/bundles/context-code-indexer/references/composers/cross-module-chain.md +22 -0
  8. package/indexers/bundles/context-code-indexer/references/composers/development-and-delivery.md +22 -0
  9. package/indexers/bundles/context-code-indexer/references/composers/event-flow.md +21 -0
  10. package/indexers/bundles/context-code-indexer/references/composers/examples-and-documentation.md +22 -0
  11. package/indexers/bundles/context-code-indexer/references/composers/persistence-boundary.md +21 -0
  12. package/indexers/bundles/context-code-indexer/references/composers/protocol-boundary.md +22 -0
  13. package/indexers/bundles/context-code-indexer/references/composers/public-contract.md +23 -0
  14. package/indexers/bundles/context-code-indexer/references/indexer.md +49 -0
  15. package/indexers/bundles/context-code-indexer/references/metrics.md +201 -0
  16. package/indexers/bundles/context-code-indexer/templates/adapter-integration.md +119 -0
  17. package/indexers/bundles/context-code-indexer/templates/api-service.md +118 -0
  18. package/indexers/bundles/context-code-indexer/templates/background-runtime.md +109 -0
  19. package/indexers/bundles/context-code-indexer/templates/cli-tool.md +129 -0
  20. package/indexers/bundles/context-code-indexer/templates/component-library.md +99 -0
  21. package/indexers/bundles/context-code-indexer/templates/contract-source.md +73 -0
  22. package/indexers/bundles/context-code-indexer/templates/data-sync-reconciliation.md +77 -0
  23. package/indexers/bundles/context-code-indexer/templates/derived-generated-source.md +117 -0
  24. package/indexers/bundles/context-code-indexer/templates/domain-service.md +109 -0
  25. package/indexers/bundles/context-code-indexer/templates/event-consumer.md +62 -0
  26. package/indexers/bundles/context-code-indexer/templates/gateway-facade.md +89 -0
  27. package/indexers/bundles/context-code-indexer/templates/monorepo-container.md +124 -0
  28. package/indexers/bundles/context-code-indexer/templates/plugin-extension.md +52 -0
  29. package/indexers/bundles/context-code-indexer/templates/sdk-library.md +132 -0
  30. package/indexers/bundles/context-code-indexer/templates/storage-repository.md +56 -0
  31. package/indexers/bundles/context-code-indexer/templates/web-application.md +146 -0
  32. package/indexers/bundles/context-code-indexer/tests/fixtures/chapters.json +226 -0
  33. package/indexers/bundles/context-code-indexer/tests/fixtures/composers.json +82 -0
  34. package/indexers/bundles/context-code-indexer/tests/fixtures/profiles.json +210 -0
  35. package/indexers/bundles/context-code-indexer/tests/fixtures/scenarios.json +122 -0
  36. package/indexers/bundles/context-markdown-indexer/SKILL.md +20 -0
  37. package/indexers/bundles/context-markdown-indexer/context-indexer.yaml +147 -0
  38. package/indexers/bundles/context-markdown-indexer/references/classification.md +63 -0
  39. package/indexers/bundles/context-markdown-indexer/references/editorial-policy.md +106 -0
  40. package/indexers/bundles/context-markdown-indexer/references/indexer.md +23 -0
  41. package/indexers/bundles/context-markdown-indexer/references/semantic-planning.md +146 -0
  42. package/indexers/bundles/context-markdown-indexer/references/structure-and-artifacts.md +109 -0
  43. package/indexers/bundles/context-markdown-indexer/tests/fixtures/anonymous.json +31 -0
  44. package/indexers/bundles/context-markdown-indexer/tests/fixtures/editorial.json +309 -0
  45. package/indexers/bundles/context-markdown-indexer/tests/fixtures/migration-equivalence.json +186 -0
  46. package/indexers/bundles/context-markdown-indexer/tests/fixtures/profiles.json +171 -0
  47. package/indexers/bundles/context-markdown-indexer/tests/fixtures/routing.json +151 -0
  48. package/indexers/capability-manifest.json +40 -0
  49. package/indexers/contracts/hard-rule-conformance.json +2644 -0
  50. package/indexers/contracts/operator-contract.json +35 -0
  51. package/indexers/contracts/profile-contract.json +10162 -0
  52. package/indexers/release-manifest.json +208 -0
  53. package/package.json +5 -4
  54. package/plugins/README.md +17 -109
  55. package/plugins/README_CN.md +11 -89
  56. package/plugins/VERSION +1 -1
  57. package/plugins/claude/.claude-plugin/plugin.json +3 -11
  58. package/plugins/claude/CLAUDE.md +1 -1
  59. package/plugins/claude/README.md +1 -1
  60. package/plugins/claude/commands/context.md +76 -1
  61. package/plugins/codex/.codex-plugin/plugin.json +6 -17
  62. package/plugins/codex/AGENTS.md +1 -1
  63. package/plugins/codex/README.md +1 -1
  64. package/plugins/codex/skills/context/SKILL.md +77 -13
  65. package/plugins/cursor/.cursor-plugin/plugin.json +4 -17
  66. package/plugins/cursor/AGENTS.md +1 -1
  67. package/plugins/cursor/README.md +3 -2
  68. package/plugins/cursor/commands/c4a-context.md +76 -3
  69. package/plugins/skills/{c4a-context → context}/SKILL.md +78 -14
  70. package/plugins/skills/context-code-indexer/SKILL.md +20 -0
  71. package/plugins/skills/context-code-indexer/context-indexer.yaml +230 -0
  72. package/plugins/skills/context-code-indexer/references/composers/contracts-and-chains.md +23 -0
  73. package/plugins/skills/context-code-indexer/references/composers/cross-module-chain.md +22 -0
  74. package/plugins/skills/context-code-indexer/references/composers/development-and-delivery.md +22 -0
  75. package/plugins/skills/context-code-indexer/references/composers/event-flow.md +21 -0
  76. package/plugins/skills/context-code-indexer/references/composers/examples-and-documentation.md +22 -0
  77. package/plugins/skills/context-code-indexer/references/composers/persistence-boundary.md +21 -0
  78. package/plugins/skills/context-code-indexer/references/composers/protocol-boundary.md +22 -0
  79. package/plugins/skills/context-code-indexer/references/composers/public-contract.md +23 -0
  80. package/plugins/skills/context-code-indexer/references/indexer.md +49 -0
  81. package/plugins/skills/context-code-indexer/references/metrics.md +201 -0
  82. package/plugins/skills/context-code-indexer/templates/adapter-integration.md +119 -0
  83. package/plugins/skills/context-code-indexer/templates/api-service.md +118 -0
  84. package/plugins/skills/context-code-indexer/templates/background-runtime.md +109 -0
  85. package/plugins/skills/context-code-indexer/templates/cli-tool.md +129 -0
  86. package/plugins/skills/context-code-indexer/templates/component-library.md +99 -0
  87. package/plugins/skills/context-code-indexer/templates/contract-source.md +73 -0
  88. package/plugins/skills/context-code-indexer/templates/data-sync-reconciliation.md +77 -0
  89. package/plugins/skills/context-code-indexer/templates/derived-generated-source.md +117 -0
  90. package/plugins/skills/context-code-indexer/templates/domain-service.md +109 -0
  91. package/plugins/skills/context-code-indexer/templates/event-consumer.md +62 -0
  92. package/plugins/skills/context-code-indexer/templates/gateway-facade.md +89 -0
  93. package/plugins/skills/context-code-indexer/templates/monorepo-container.md +124 -0
  94. package/plugins/skills/context-code-indexer/templates/plugin-extension.md +52 -0
  95. package/plugins/skills/context-code-indexer/templates/sdk-library.md +132 -0
  96. package/plugins/skills/context-code-indexer/templates/storage-repository.md +56 -0
  97. package/plugins/skills/context-code-indexer/templates/web-application.md +146 -0
  98. package/plugins/skills/context-code-indexer/tests/fixtures/chapters.json +226 -0
  99. package/plugins/skills/context-code-indexer/tests/fixtures/composers.json +82 -0
  100. package/plugins/skills/context-code-indexer/tests/fixtures/profiles.json +210 -0
  101. package/plugins/skills/context-code-indexer/tests/fixtures/scenarios.json +122 -0
  102. package/plugins/skills/context-markdown-indexer/SKILL.md +20 -0
  103. package/plugins/skills/context-markdown-indexer/context-indexer.yaml +147 -0
  104. package/plugins/skills/context-markdown-indexer/references/classification.md +63 -0
  105. package/plugins/skills/context-markdown-indexer/references/editorial-policy.md +106 -0
  106. package/plugins/skills/context-markdown-indexer/references/indexer.md +23 -0
  107. package/plugins/skills/context-markdown-indexer/references/semantic-planning.md +146 -0
  108. package/plugins/skills/context-markdown-indexer/references/structure-and-artifacts.md +109 -0
  109. package/plugins/skills/context-markdown-indexer/tests/fixtures/anonymous.json +31 -0
  110. package/plugins/skills/context-markdown-indexer/tests/fixtures/editorial.json +309 -0
  111. package/plugins/skills/context-markdown-indexer/tests/fixtures/migration-equivalence.json +186 -0
  112. package/plugins/skills/context-markdown-indexer/tests/fixtures/profiles.json +171 -0
  113. package/plugins/skills/context-markdown-indexer/tests/fixtures/routing.json +151 -0
  114. package/providers/context/actions/accept-main-index-run.yaml +7 -0
  115. package/providers/context/actions/accept-material-answer-run.yaml +7 -0
  116. package/providers/context/actions/accept-post-author-composer-run.yaml +7 -0
  117. package/providers/context/actions/actualize-material-answer-bindings.yaml +8 -0
  118. package/providers/context/actions/apply-document-optimization-guidance.yaml +5 -0
  119. package/providers/context/actions/apply-indexer-project.yaml +7 -0
  120. package/providers/context/actions/audit-material-gap-state.yaml +8 -0
  121. package/providers/context/actions/audit-projected-artifact-fan-out.yaml +8 -0
  122. package/providers/context/actions/authorize-indexer-contract-overlay.yaml +7 -0
  123. package/providers/context/actions/authorize-indexer-dependencies.yaml +7 -0
  124. package/providers/context/actions/authorize-indexer-program-execution.yaml +7 -0
  125. package/providers/context/actions/build-main-index-author-worksets.yaml +7 -0
  126. package/providers/context/actions/build-main-index-catalog-fallback.yaml +7 -0
  127. package/providers/context/actions/build-main-index-partition-worksets.yaml +7 -0
  128. package/providers/context/actions/build-material-question-workset.yaml +7 -0
  129. package/providers/context/actions/build-post-author-composer-worksets.yaml +7 -0
  130. package/providers/context/actions/build-question-target-inventory.yaml +7 -0
  131. package/providers/context/actions/build-subject-catalog.yaml +7 -0
  132. package/providers/context/actions/build-target-resolution-views.yaml +7 -0
  133. package/providers/context/actions/checkpoint-material-answer-review.yaml +8 -0
  134. package/providers/context/actions/checkpoint-material-gaps.yaml +8 -0
  135. package/providers/context/actions/close-indexer-approved-knowledge.yaml +8 -0
  136. package/providers/context/actions/compile-indexer-candidates.yaml +8 -0
  137. package/providers/context/actions/compose-indexer-post-author-fragments.yaml +7 -0
  138. package/providers/context/actions/configure-community-indexer-fallback.yaml +6 -0
  139. package/providers/context/actions/configure-indexer-providers.yaml +6 -0
  140. package/providers/context/actions/confirm-index-requirement-workset.yaml +8 -0
  141. package/providers/context/actions/confirm-subject-reidentification.yaml +8 -0
  142. package/providers/context/actions/converge-main-index-partition-run.yaml +7 -0
  143. package/providers/context/actions/discover-markdown-indexer-providers.yaml +6 -0
  144. package/providers/context/actions/evaluate-material-gaps.yaml +8 -0
  145. package/providers/context/actions/fail-main-index-run.yaml +7 -0
  146. package/providers/context/actions/fail-material-answer-run.yaml +7 -0
  147. package/providers/context/actions/fail-post-author-composer-run.yaml +7 -0
  148. package/providers/context/actions/inspect-index-candidate-review-readiness.yaml +8 -0
  149. package/providers/context/actions/inspect-index-profile-failure.yaml +7 -0
  150. package/providers/context/actions/inspect-indexer-dependencies.yaml +7 -0
  151. package/providers/context/actions/inspect-indexer-program-execution.yaml +7 -0
  152. package/providers/context/actions/inspect-indexer-project-proposal.yaml +7 -0
  153. package/providers/context/actions/inspect-markdown-provider-capture.yaml +7 -0
  154. package/providers/context/actions/inspect-material-answer-review.yaml +8 -0
  155. package/providers/context/actions/materialize-indexer-instructions.yaml +7 -0
  156. package/providers/context/actions/observe-indexer-project.yaml +7 -0
  157. package/providers/context/actions/observe-main-index-run-ledger.yaml +7 -0
  158. package/providers/context/actions/observe-material-answer-runs.yaml +7 -0
  159. package/providers/context/actions/observe-post-author-composer-worksets.yaml +7 -0
  160. package/providers/context/actions/override-index-profile-audit.yaml +7 -0
  161. package/providers/context/actions/prepare-indexer-customization-project.yaml +7 -0
  162. package/providers/context/actions/prepare-main-index-run-ledger.yaml +7 -0
  163. package/providers/context/actions/prepare-material-answer-runs.yaml +7 -0
  164. package/providers/context/actions/propose-indexer-customization.yaml +7 -0
  165. package/providers/context/actions/propose-overlay-question-amendment.yaml +7 -0
  166. package/providers/context/actions/rebind-indexer-selection-to-requirement.yaml +7 -0
  167. package/providers/context/actions/reconcile-indexer-results.yaml +7 -0
  168. package/providers/context/actions/record-index-profile-revision.yaml +7 -0
  169. package/providers/context/actions/report-index-profile-failure.yaml +7 -0
  170. package/providers/context/actions/report-indexer-incremental-impact.yaml +8 -0
  171. package/providers/context/actions/resolve-effective-composers.yaml +7 -0
  172. package/providers/context/actions/review-material-answer-candidate.yaml +8 -0
  173. package/providers/context/actions/revise-index-output.yaml +7 -0
  174. package/providers/context/actions/route-index-requirement-confirmation.yaml +8 -0
  175. package/providers/context/actions/route-indexer-provider-selection.yaml +7 -0
  176. package/providers/context/actions/run-indexer-agent-step.yaml +7 -0
  177. package/providers/context/actions/run-indexer-post-author-composer.yaml +7 -0
  178. package/providers/context/actions/run-material-answer-indexers.yaml +7 -0
  179. package/providers/context/actions/start-main-index-run.yaml +7 -0
  180. package/providers/context/actions/start-material-answer-run.yaml +7 -0
  181. package/providers/context/actions/start-post-author-composer-run.yaml +7 -0
  182. package/providers/context/actions/validate-indexer-contract-overlays.yaml +7 -0
  183. package/providers/context/actions/validate-indexer-customization.yaml +7 -0
  184. package/providers/context/actions/validate-indexer-selection-proposal.yaml +7 -0
  185. package/providers/context/actions/validate-main-index-run.yaml +7 -0
  186. package/providers/context/actions/validate-markdown-provider-selection.yaml +7 -0
  187. package/providers/context/actions/validate-subject-key-schemas.yaml +8 -0
  188. package/providers/context/codes.yaml +70 -0
  189. package/providers/context/graphs/indexer.yaml +1068 -0
  190. package/providers/context/graphs/workspace.yaml +20 -1
  191. package/providers/context/manifest.json +1433 -121
  192. package/providers/context/provider.yaml +3 -2
  193. package/providers/context/resources/manuals/reference/code-extractors.md +2 -2
  194. package/providers/context/resources/manuals/reference/project-api.md +2 -2
  195. package/providers/context/resources/procedures/code-extraction.md +6 -2
  196. package/providers/context/resources/procedures/code-index-audit.md +36 -6
  197. package/providers/context/resources/procedures/document-optimization.md +23 -4
  198. package/providers/context/resources/semantic/code-index/templates/adapter.md +9 -0
  199. package/providers/context/resources/semantic/code-index/templates/contracts-and-chains.md +81 -0
  200. package/providers/context/resources/views/resolved-indexer-instructions.yaml +23 -0
  201. package/providers/context/schemas/document-optimization-decisions.schema.json +1 -1
  202. package/providers/context/schemas/indexer-agent-step-input.schema.json +30 -0
  203. package/providers/context/schemas/indexer-agent-step-result.schema.json +47 -0
  204. package/providers/context/schemas/indexer-candidate-compile-input.schema.json +57 -0
  205. package/providers/context/schemas/indexer-candidate-compile-output.schema.json +38 -0
  206. package/providers/context/schemas/indexer-candidate-review-readiness-input.schema.json +46 -0
  207. package/providers/context/schemas/indexer-candidate-review-readiness-output.schema.json +104 -0
  208. package/providers/context/schemas/indexer-contract-overlay-authorization-input.schema.json +32 -0
  209. package/providers/context/schemas/indexer-contract-overlay-authorization-result.schema.json +121 -0
  210. package/providers/context/schemas/indexer-contract-overlay-validation-input.schema.json +90 -0
  211. package/providers/context/schemas/indexer-contract-overlay-validation-result.schema.json +158 -0
  212. package/providers/context/schemas/indexer-customization-project-preparation-result.schema.json +44 -0
  213. package/providers/context/schemas/indexer-customization-proposal-draft.schema.json +83 -0
  214. package/providers/context/schemas/indexer-customization-validation-result.schema.json +36 -0
  215. package/providers/context/schemas/indexer-dependency-authorization-input.schema.json +71 -0
  216. package/providers/context/schemas/indexer-dependency-authorization-result.schema.json +138 -0
  217. package/providers/context/schemas/indexer-incremental-impact-input.schema.json +31 -0
  218. package/providers/context/schemas/indexer-incremental-impact-output.schema.json +52 -0
  219. package/providers/context/schemas/indexer-main-lifecycle-input.schema.json +187 -0
  220. package/providers/context/schemas/indexer-main-lifecycle-output.schema.json +180 -0
  221. package/providers/context/schemas/indexer-markdown-provider-capture-input.schema.json +17 -0
  222. package/providers/context/schemas/indexer-markdown-provider-capture-output.schema.json +54 -0
  223. package/providers/context/schemas/indexer-markdown-provider-validation-input.schema.json +34 -0
  224. package/providers/context/schemas/indexer-markdown-provider-validation-output.schema.json +75 -0
  225. package/providers/context/schemas/indexer-material-answer-lifecycle-input.schema.json +90 -0
  226. package/providers/context/schemas/indexer-material-answer-lifecycle-output.schema.json +80 -0
  227. package/providers/context/schemas/indexer-material-answer-review-inspection-input.schema.json +32 -0
  228. package/providers/context/schemas/indexer-material-answer-review-inspection-output.schema.json +32 -0
  229. package/providers/context/schemas/indexer-material-answer-review-resolution-input.schema.json +19 -0
  230. package/providers/context/schemas/indexer-material-answer-review-resolution-output.schema.json +87 -0
  231. package/providers/context/schemas/indexer-material-gap-lifecycle-input.schema.json +86 -0
  232. package/providers/context/schemas/indexer-material-gap-lifecycle-output.schema.json +19 -0
  233. package/providers/context/schemas/indexer-materialize-request.schema.json +53 -0
  234. package/providers/context/schemas/indexer-materialized-resource.schema.json +57 -0
  235. package/providers/context/schemas/indexer-overlay-question-amendment.schema.json +13 -0
  236. package/providers/context/schemas/indexer-overlay-question-proposal-input.schema.json +40 -0
  237. package/providers/context/schemas/indexer-overlay-question-rebind-input.schema.json +35 -0
  238. package/providers/context/schemas/indexer-overlay-question-rebind-result.schema.json +25 -0
  239. package/providers/context/schemas/indexer-post-author-fragment-request.schema.json +26 -0
  240. package/providers/context/schemas/indexer-post-author-fragment-result.schema.json +18 -0
  241. package/providers/context/schemas/indexer-post-author-lifecycle-input.schema.json +94 -0
  242. package/providers/context/schemas/indexer-post-author-lifecycle-output.schema.json +72 -0
  243. package/providers/context/schemas/indexer-profile-failure-inspection-input.schema.json +13 -0
  244. package/providers/context/schemas/indexer-profile-failure-inspection-result.schema.json +19 -0
  245. package/providers/context/schemas/indexer-profile-failure-report-input.schema.json +22 -0
  246. package/providers/context/schemas/indexer-profile-failure-report-result.schema.json +49 -0
  247. package/providers/context/schemas/indexer-profile-override-decision.schema.json +20 -0
  248. package/providers/context/schemas/indexer-profile-override-result.schema.json +49 -0
  249. package/providers/context/schemas/indexer-profile-revision-agent-input.schema.json +18 -0
  250. package/providers/context/schemas/indexer-profile-revision-record-input.schema.json +31 -0
  251. package/providers/context/schemas/indexer-profile-revision-record-result.schema.json +45 -0
  252. package/providers/context/schemas/indexer-program-execution-authorization-input.schema.json +145 -0
  253. package/providers/context/schemas/indexer-program-execution-authorization-result.schema.json +60 -0
  254. package/providers/context/schemas/indexer-project-action-result.schema.json +19 -0
  255. package/providers/context/schemas/indexer-project-gate-input.schema.json +100 -0
  256. package/providers/context/schemas/indexer-project-observation-input.schema.json +16 -0
  257. package/providers/context/schemas/indexer-project-observation-result.schema.json +42 -0
  258. package/providers/context/schemas/indexer-provider-route-input.schema.json +55 -0
  259. package/providers/context/schemas/indexer-provider-route-report.schema.json +188 -0
  260. package/providers/context/schemas/indexer-requirement-confirmation-input.schema.json +27 -0
  261. package/providers/context/schemas/indexer-requirement-confirmation-output.schema.json +24 -0
  262. package/providers/context/schemas/indexer-result-reconciliation-input.schema.json +59 -0
  263. package/providers/context/schemas/indexer-result-reconciliation-output.schema.json +43 -0
  264. package/providers/context/schemas/indexer-selection-proposal-input.schema.json +12 -0
  265. package/providers/context/schemas/indexer-selection-proposal-validation.schema.json +23 -0
  266. package/providers/context/schemas/indexer-subject-reidentification-input.schema.json +37 -0
  267. package/providers/context/schemas/indexer-subject-reidentification-output.schema.json +31 -0
  268. package/providers/context/skills/configure-indexer-providers/SKILL.md +58 -0
  269. package/providers/context/skills/prepare-indexer-customization-project/SKILL.md +31 -0
  270. package/providers/context/skills/propose-indexer-customization/SKILL.md +40 -0
  271. package/providers/context/skills/revise-index-output/SKILL.md +12 -0
  272. package/providers/context/skills/run-indexer-agent-step/SKILL.md +20 -0
  273. package/providers/context/skills/run-indexer-post-author-composer/SKILL.md +21 -0
@@ -0,0 +1,104 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "context.indexer.candidate-review-readiness-result/v1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "protocol",
8
+ "state",
9
+ "binding",
10
+ "precompile_audit_report_digest",
11
+ "postcompile_audit_report_digest",
12
+ "baseline_failed_check_ids",
13
+ "profile_state",
14
+ "profile_failed_metric_ids",
15
+ "profile_override_receipt_digest",
16
+ "profile_override_applied",
17
+ "audit_facts",
18
+ "review_binding_digest",
19
+ "graph_outcome",
20
+ "result_digest",
21
+ "reason_code"
22
+ ],
23
+ "properties": {
24
+ "protocol": { "const": "context.indexer.candidate-review-readiness-result/v1" },
25
+ "state": { "enum": ["ready", "baseline-blocked", "profile-blocked"] },
26
+ "binding": {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": [
30
+ "requirement_set_digest",
31
+ "registry_digest",
32
+ "inventory_digest",
33
+ "layout_digest",
34
+ "candidate_set_digest",
35
+ "effective_revision_digest"
36
+ ],
37
+ "properties": {
38
+ "requirement_set_digest": { "$ref": "#/$defs/digest" },
39
+ "registry_digest": { "$ref": "#/$defs/digest" },
40
+ "inventory_digest": { "$ref": "#/$defs/digest" },
41
+ "layout_digest": { "$ref": "#/$defs/digest" },
42
+ "candidate_set_digest": { "$ref": "#/$defs/digest" },
43
+ "effective_revision_digest": { "$ref": "#/$defs/digest" }
44
+ }
45
+ },
46
+ "precompile_audit_report_digest": { "$ref": "#/$defs/digest" },
47
+ "postcompile_audit_report_digest": { "$ref": "#/$defs/digest" },
48
+ "baseline_failed_check_ids": {
49
+ "type": "array",
50
+ "uniqueItems": true,
51
+ "items": { "type": "string", "minLength": 1 }
52
+ },
53
+ "profile_state": {
54
+ "enum": ["not-applicable", "passed", "revision-required", "human-guidance-required"]
55
+ },
56
+ "profile_failed_metric_ids": {
57
+ "type": "array",
58
+ "uniqueItems": true,
59
+ "items": { "type": "string", "minLength": 1 }
60
+ },
61
+ "profile_override_receipt_digest": {
62
+ "oneOf": [{ "$ref": "#/$defs/digest" }, { "type": "null" }]
63
+ },
64
+ "profile_override_applied": { "type": "boolean" },
65
+ "audit_facts": { "$ref": "#/$defs/auditFacts" },
66
+ "review_binding_digest": { "$ref": "#/$defs/digest" },
67
+ "graph_outcome": { "enum": ["completed", "failed", "blocked"] },
68
+ "result_digest": { "$ref": "#/$defs/digest" },
69
+ "reason_code": {
70
+ "enum": [
71
+ "index-review-required",
72
+ "index-baseline-audit-failed",
73
+ "index-profile-revision-required",
74
+ "index-profile-human-guidance-required"
75
+ ]
76
+ }
77
+ },
78
+ "$defs": {
79
+ "digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
80
+ "auditFacts": {
81
+ "type": "object",
82
+ "additionalProperties": false,
83
+ "required": ["protocol", "audit", "facts_digest"],
84
+ "properties": {
85
+ "protocol": { "const": "context.indexer.audit-facts/v1" },
86
+ "audit": {
87
+ "type": "object",
88
+ "additionalProperties": false,
89
+ "required": ["baseline_clear", "profile_state", "problem_lineage_id", "profile_attempt_count", "profile_report_digest", "profile_override_eligible", "profile_override_receipt_digest"],
90
+ "properties": {
91
+ "baseline_clear": { "type": "boolean" },
92
+ "profile_state": { "enum": ["not-applicable", "passed", "revision-required", "human-guidance-required"] },
93
+ "problem_lineage_id": { "oneOf": [{ "$ref": "#/$defs/digest" }, { "type": "null" }] },
94
+ "profile_attempt_count": { "type": "integer", "minimum": 0, "maximum": 3 },
95
+ "profile_report_digest": { "oneOf": [{ "$ref": "#/$defs/digest" }, { "type": "null" }] },
96
+ "profile_override_eligible": { "type": "boolean" },
97
+ "profile_override_receipt_digest": { "oneOf": [{ "$ref": "#/$defs/digest" }, { "type": "null" }] }
98
+ }
99
+ },
100
+ "facts_digest": { "$ref": "#/$defs/digest" }
101
+ }
102
+ }
103
+ }
104
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "context.indexer.contract-overlay-authorization-input/v1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "protocol",
8
+ "validation_input",
9
+ "expected_conformance_report_digest",
10
+ "authority_ref",
11
+ "authority_scope_digest",
12
+ "input_digest"
13
+ ],
14
+ "properties": {
15
+ "protocol": { "const": "context.indexer.contract-overlay-authorization-input/v1" },
16
+ "validation_input": {
17
+ "type": "object",
18
+ "required": ["protocol", "input_digest"],
19
+ "properties": {
20
+ "protocol": { "const": "context.indexer.contract-overlay-validation-input/v1" },
21
+ "input_digest": { "$ref": "#/$defs/digest" }
22
+ }
23
+ },
24
+ "expected_conformance_report_digest": { "$ref": "#/$defs/digest" },
25
+ "authority_ref": { "type": "string", "minLength": 1 },
26
+ "authority_scope_digest": { "$ref": "#/$defs/digest" },
27
+ "input_digest": { "$ref": "#/$defs/digest" }
28
+ },
29
+ "$defs": {
30
+ "digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
31
+ }
32
+ }
@@ -0,0 +1,121 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "context.indexer.contract-overlay-authorization-result/v1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "protocol",
8
+ "trusted_validation_input",
9
+ "validation",
10
+ "project_authorization",
11
+ "result_digest"
12
+ ],
13
+ "properties": {
14
+ "protocol": { "const": "context.indexer.contract-overlay-authorization-result/v1" },
15
+ "trusted_validation_input": {
16
+ "type": "object",
17
+ "required": ["protocol", "project_authorization", "input_digest"],
18
+ "properties": {
19
+ "protocol": { "const": "context.indexer.contract-overlay-validation-input/v1" },
20
+ "project_authorization": { "type": "object" },
21
+ "input_digest": { "$ref": "#/$defs/digest" }
22
+ }
23
+ },
24
+ "validation": {
25
+ "type": "object",
26
+ "required": [
27
+ "protocol",
28
+ "outcome",
29
+ "graph_outcome",
30
+ "validation_input_digest",
31
+ "trust_receipt",
32
+ "result_digest"
33
+ ],
34
+ "properties": {
35
+ "protocol": { "const": "context.indexer.contract-overlay-validation-result/v1" },
36
+ "outcome": { "const": "trusted" },
37
+ "graph_outcome": { "const": "completed" },
38
+ "validation_input_digest": { "$ref": "#/$defs/digest" },
39
+ "trust_receipt": {
40
+ "type": "object",
41
+ "additionalProperties": false,
42
+ "required": [
43
+ "protocol",
44
+ "trust_class",
45
+ "project_ref",
46
+ "overlay_digest",
47
+ "attestation_digest",
48
+ "base_contract_digest",
49
+ "provider_integrity",
50
+ "operator_contract_digest",
51
+ "conformance_report_digest",
52
+ "trust_adapter",
53
+ "trust_adapter_version",
54
+ "trust_management_authority_digest",
55
+ "trust_policy_digest",
56
+ "authorization_receipt_digest",
57
+ "receipt_digest"
58
+ ],
59
+ "properties": {
60
+ "protocol": { "const": "context.indexer.overlay-trust-receipt/v1" },
61
+ "trust_class": { "const": "project-authorized-exact-digest" },
62
+ "project_ref": { "type": "string", "minLength": 1 },
63
+ "overlay_digest": { "$ref": "#/$defs/digest" },
64
+ "attestation_digest": { "$ref": "#/$defs/nullableDigest" },
65
+ "base_contract_digest": { "$ref": "#/$defs/digest" },
66
+ "provider_integrity": { "$ref": "#/$defs/digest" },
67
+ "operator_contract_digest": { "$ref": "#/$defs/digest" },
68
+ "conformance_report_digest": { "$ref": "#/$defs/digest" },
69
+ "trust_adapter": { "type": "null" },
70
+ "trust_adapter_version": { "type": "null" },
71
+ "trust_management_authority_digest": { "type": "null" },
72
+ "trust_policy_digest": { "type": "null" },
73
+ "authorization_receipt_digest": { "$ref": "#/$defs/digest" },
74
+ "receipt_digest": { "$ref": "#/$defs/digest" }
75
+ }
76
+ },
77
+ "result_digest": { "$ref": "#/$defs/digest" }
78
+ }
79
+ },
80
+ "project_authorization": {
81
+ "type": "object",
82
+ "additionalProperties": false,
83
+ "required": [
84
+ "protocol",
85
+ "project_ref",
86
+ "overlay_digest",
87
+ "attestation_digest",
88
+ "base_contract_digest",
89
+ "provider_integrity",
90
+ "operator_contract_digest",
91
+ "conformance_report_digest",
92
+ "authority_ref",
93
+ "authority_scope_digest",
94
+ "authorization_receipt_digest"
95
+ ],
96
+ "properties": {
97
+ "protocol": { "const": "context.indexer.overlay-project-authorization/v1" },
98
+ "project_ref": { "type": "string", "minLength": 1 },
99
+ "overlay_digest": { "$ref": "#/$defs/digest" },
100
+ "attestation_digest": { "$ref": "#/$defs/nullableDigest" },
101
+ "base_contract_digest": { "$ref": "#/$defs/digest" },
102
+ "provider_integrity": { "$ref": "#/$defs/digest" },
103
+ "operator_contract_digest": { "$ref": "#/$defs/digest" },
104
+ "conformance_report_digest": { "$ref": "#/$defs/digest" },
105
+ "authority_ref": { "const": "context.indexer-contract-overlay" },
106
+ "authority_scope_digest": { "$ref": "#/$defs/digest" },
107
+ "authorization_receipt_digest": { "$ref": "#/$defs/digest" }
108
+ }
109
+ },
110
+ "result_digest": { "$ref": "#/$defs/digest" }
111
+ },
112
+ "$defs": {
113
+ "digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
114
+ "nullableDigest": {
115
+ "oneOf": [
116
+ { "type": "null" },
117
+ { "$ref": "#/$defs/digest" }
118
+ ]
119
+ }
120
+ }
121
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "context.indexer.contract-overlay-validation-input/v1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "protocol",
8
+ "project_ref",
9
+ "overlay",
10
+ "base_contract",
11
+ "operator_contract",
12
+ "provider_integrity",
13
+ "attestation",
14
+ "trust_bundle_envelope",
15
+ "project_authorization",
16
+ "input_digest"
17
+ ],
18
+ "properties": {
19
+ "protocol": { "const": "context.indexer.contract-overlay-validation-input/v1" },
20
+ "project_ref": { "type": "string", "minLength": 1 },
21
+ "overlay": {
22
+ "type": "object",
23
+ "required": ["protocol", "overlay_digest"],
24
+ "properties": {
25
+ "protocol": { "const": "context.indexer.contract-overlay/v1" },
26
+ "overlay_digest": { "$ref": "#/$defs/digest" }
27
+ }
28
+ },
29
+ "base_contract": {
30
+ "type": "object",
31
+ "required": ["protocol", "contract_digest"],
32
+ "properties": {
33
+ "protocol": { "const": "context.indexer.profile-contract/v1" },
34
+ "contract_digest": { "$ref": "#/$defs/digest" }
35
+ }
36
+ },
37
+ "operator_contract": {
38
+ "type": "object",
39
+ "required": ["protocol", "contract_digest"],
40
+ "properties": {
41
+ "protocol": { "const": "context.indexer.operator-contract/v1" },
42
+ "contract_digest": { "$ref": "#/$defs/digest" }
43
+ }
44
+ },
45
+ "provider_integrity": { "$ref": "#/$defs/digest" },
46
+ "attestation": {
47
+ "oneOf": [
48
+ { "type": "null" },
49
+ {
50
+ "type": "object",
51
+ "required": ["protocol", "attestation_digest"],
52
+ "properties": {
53
+ "protocol": { "const": "context.indexer.overlay-attestation/v1" },
54
+ "attestation_digest": { "$ref": "#/$defs/digest" }
55
+ }
56
+ }
57
+ ]
58
+ },
59
+ "trust_bundle_envelope": {
60
+ "oneOf": [
61
+ { "type": "null" },
62
+ {
63
+ "type": "object",
64
+ "required": ["protocol", "bundle"],
65
+ "properties": {
66
+ "protocol": { "const": "context.indexer.overlay-trust-bundle-envelope/v1" },
67
+ "bundle": { "type": "object" }
68
+ }
69
+ }
70
+ ]
71
+ },
72
+ "project_authorization": {
73
+ "oneOf": [
74
+ { "type": "null" },
75
+ {
76
+ "type": "object",
77
+ "required": ["protocol", "authorization_receipt_digest"],
78
+ "properties": {
79
+ "protocol": { "const": "context.indexer.overlay-project-authorization/v1" },
80
+ "authorization_receipt_digest": { "$ref": "#/$defs/digest" }
81
+ }
82
+ }
83
+ ]
84
+ },
85
+ "input_digest": { "$ref": "#/$defs/digest" }
86
+ },
87
+ "$defs": {
88
+ "digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
89
+ }
90
+ }
@@ -0,0 +1,158 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "context.indexer.contract-overlay-validation-result/v1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "protocol",
8
+ "outcome",
9
+ "graph_outcome",
10
+ "validation_input_digest",
11
+ "project_ref",
12
+ "overlay",
13
+ "effective_profile",
14
+ "conformance_report",
15
+ "trust_receipt",
16
+ "authorization_request",
17
+ "result_digest"
18
+ ],
19
+ "properties": {
20
+ "protocol": { "const": "context.indexer.contract-overlay-validation-result/v1" },
21
+ "outcome": { "enum": ["trusted", "authorization-required"] },
22
+ "graph_outcome": { "enum": ["completed", "waiting-user"] },
23
+ "validation_input_digest": { "$ref": "#/$defs/digest" },
24
+ "project_ref": { "type": "string", "minLength": 1 },
25
+ "overlay": { "type": "object" },
26
+ "effective_profile": { "type": "object" },
27
+ "conformance_report": {
28
+ "type": "object",
29
+ "required": ["protocol", "report_digest"],
30
+ "properties": {
31
+ "protocol": { "const": "context.indexer.overlay-conformance-report/v1" },
32
+ "report_digest": { "$ref": "#/$defs/digest" }
33
+ }
34
+ },
35
+ "trust_receipt": {
36
+ "oneOf": [
37
+ { "type": "null" },
38
+ {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": [
42
+ "protocol",
43
+ "trust_class",
44
+ "project_ref",
45
+ "overlay_digest",
46
+ "attestation_digest",
47
+ "base_contract_digest",
48
+ "provider_integrity",
49
+ "operator_contract_digest",
50
+ "conformance_report_digest",
51
+ "trust_adapter",
52
+ "trust_adapter_version",
53
+ "trust_management_authority_digest",
54
+ "trust_policy_digest",
55
+ "authorization_receipt_digest",
56
+ "receipt_digest"
57
+ ],
58
+ "properties": {
59
+ "protocol": { "const": "context.indexer.overlay-trust-receipt/v1" },
60
+ "trust_class": {
61
+ "enum": ["enterprise-signed", "project-authorized-exact-digest"]
62
+ },
63
+ "project_ref": { "type": ["string", "null"] },
64
+ "overlay_digest": { "$ref": "#/$defs/digest" },
65
+ "attestation_digest": { "$ref": "#/$defs/nullableDigest" },
66
+ "base_contract_digest": { "$ref": "#/$defs/digest" },
67
+ "provider_integrity": { "$ref": "#/$defs/digest" },
68
+ "operator_contract_digest": { "$ref": "#/$defs/digest" },
69
+ "conformance_report_digest": { "$ref": "#/$defs/digest" },
70
+ "trust_adapter": { "type": ["string", "null"], "minLength": 1 },
71
+ "trust_adapter_version": {
72
+ "oneOf": [
73
+ { "type": "null" },
74
+ { "type": "string", "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$" }
75
+ ]
76
+ },
77
+ "trust_management_authority_digest": { "$ref": "#/$defs/nullableDigest" },
78
+ "trust_policy_digest": { "$ref": "#/$defs/nullableDigest" },
79
+ "authorization_receipt_digest": { "$ref": "#/$defs/nullableDigest" },
80
+ "receipt_digest": { "$ref": "#/$defs/digest" }
81
+ },
82
+ "allOf": [
83
+ {
84
+ "if": { "properties": { "trust_class": { "const": "enterprise-signed" } } },
85
+ "then": {
86
+ "properties": {
87
+ "project_ref": { "type": "null" },
88
+ "attestation_digest": { "$ref": "#/$defs/digest" },
89
+ "trust_adapter": { "type": "string", "minLength": 1 },
90
+ "trust_adapter_version": { "type": "string" },
91
+ "trust_management_authority_digest": { "$ref": "#/$defs/digest" },
92
+ "trust_policy_digest": { "$ref": "#/$defs/digest" },
93
+ "authorization_receipt_digest": { "type": "null" }
94
+ }
95
+ }
96
+ },
97
+ {
98
+ "if": { "properties": { "trust_class": { "const": "project-authorized-exact-digest" } } },
99
+ "then": {
100
+ "properties": {
101
+ "project_ref": { "type": "string", "minLength": 1 },
102
+ "trust_adapter": { "type": "null" },
103
+ "trust_adapter_version": { "type": "null" },
104
+ "trust_management_authority_digest": { "type": "null" },
105
+ "trust_policy_digest": { "type": "null" },
106
+ "authorization_receipt_digest": { "$ref": "#/$defs/digest" }
107
+ }
108
+ }
109
+ }
110
+ ]
111
+ }
112
+ ]
113
+ },
114
+ "authorization_request": {
115
+ "oneOf": [
116
+ { "type": "null" },
117
+ {
118
+ "type": "object",
119
+ "additionalProperties": false,
120
+ "required": [
121
+ "protocol",
122
+ "project_ref",
123
+ "overlay_digest",
124
+ "attestation_digest",
125
+ "base_contract_digest",
126
+ "provider_integrity",
127
+ "operator_contract_digest",
128
+ "conformance_report_digest",
129
+ "request_digest"
130
+ ],
131
+ "properties": {
132
+ "protocol": {
133
+ "const": "context.indexer.contract-overlay-authorization-request/v1"
134
+ },
135
+ "project_ref": { "type": "string", "minLength": 1 },
136
+ "overlay_digest": { "$ref": "#/$defs/digest" },
137
+ "attestation_digest": { "$ref": "#/$defs/nullableDigest" },
138
+ "base_contract_digest": { "$ref": "#/$defs/digest" },
139
+ "provider_integrity": { "$ref": "#/$defs/digest" },
140
+ "operator_contract_digest": { "$ref": "#/$defs/digest" },
141
+ "conformance_report_digest": { "$ref": "#/$defs/digest" },
142
+ "request_digest": { "$ref": "#/$defs/digest" }
143
+ }
144
+ }
145
+ ]
146
+ },
147
+ "result_digest": { "$ref": "#/$defs/digest" }
148
+ },
149
+ "$defs": {
150
+ "digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
151
+ "nullableDigest": {
152
+ "oneOf": [
153
+ { "type": "null" },
154
+ { "$ref": "#/$defs/digest" }
155
+ ]
156
+ }
157
+ }
158
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "context.indexer.customization-project-preparation-result/v1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["protocol", "outcome", "validation_digest", "result_digest"],
7
+ "properties": {
8
+ "protocol": { "const": "context.indexer.customization-project-preparation-result/v1" },
9
+ "outcome": {
10
+ "enum": ["program-authorization-required", "project-confirmation-required"]
11
+ },
12
+ "validation_digest": { "$ref": "#/$defs/digest" },
13
+ "authorization_report": { "type": "object" },
14
+ "proposal": { "type": "object" },
15
+ "stage_receipt": { "type": "object" },
16
+ "staging_validation": { "type": "object" },
17
+ "result_digest": { "$ref": "#/$defs/digest" }
18
+ },
19
+ "allOf": [
20
+ {
21
+ "if": { "properties": { "outcome": { "const": "program-authorization-required" } } },
22
+ "then": {
23
+ "required": ["authorization_report"],
24
+ "not": {
25
+ "anyOf": [
26
+ { "required": ["proposal"] },
27
+ { "required": ["stage_receipt"] },
28
+ { "required": ["staging_validation"] }
29
+ ]
30
+ }
31
+ }
32
+ },
33
+ {
34
+ "if": { "properties": { "outcome": { "const": "project-confirmation-required" } } },
35
+ "then": {
36
+ "required": ["proposal", "stage_receipt", "staging_validation"],
37
+ "not": { "required": ["authorization_report"] }
38
+ }
39
+ }
40
+ ],
41
+ "$defs": {
42
+ "digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
43
+ }
44
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "context.indexer.customization-proposal-draft/v1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "protocol",
8
+ "capability_gap",
9
+ "capability_gap_digest",
10
+ "indexer_id",
11
+ "mode",
12
+ "selected_step",
13
+ "rejected_smaller_steps",
14
+ "gap_summary",
15
+ "affected_scope_refs",
16
+ "files",
17
+ "dependency_intents"
18
+ ],
19
+ "properties": {
20
+ "protocol": { "const": "context.indexer.customization-proposal-draft/v1" },
21
+ "capability_gap": {
22
+ "type": "object",
23
+ "additionalProperties": false,
24
+ "required": ["route_input", "route_report"],
25
+ "properties": {
26
+ "route_input": { "type": "object" },
27
+ "route_report": { "type": "object" }
28
+ }
29
+ },
30
+ "capability_gap_digest": { "$ref": "#/$defs/digest" },
31
+ "indexer_id": { "$ref": "#/$defs/id" },
32
+ "mode": { "const": "extend" },
33
+ "selected_step": {
34
+ "enum": ["instructions-append", "template-override", "program-extend"]
35
+ },
36
+ "rejected_smaller_steps": {
37
+ "type": "array",
38
+ "minItems": 2,
39
+ "items": {
40
+ "type": "object",
41
+ "additionalProperties": false,
42
+ "required": ["step", "disposition", "reason_code", "evidence_digest"],
43
+ "properties": {
44
+ "step": { "enum": ["provider-only", "config", "instructions-append", "template-override"] },
45
+ "disposition": { "enum": ["unsupported", "insufficient"] },
46
+ "reason_code": { "$ref": "#/$defs/id" },
47
+ "evidence_digest": { "$ref": "#/$defs/digest" }
48
+ }
49
+ }
50
+ },
51
+ "gap_summary": { "type": "string", "minLength": 1 },
52
+ "affected_scope_refs": {
53
+ "type": "array",
54
+ "minItems": 1,
55
+ "uniqueItems": true,
56
+ "items": { "type": "string", "minLength": 1 }
57
+ },
58
+ "files": {
59
+ "type": "array",
60
+ "minItems": 1,
61
+ "items": {
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "required": ["path", "content"],
65
+ "properties": {
66
+ "path": {
67
+ "type": "string",
68
+ "pattern": "^src/indexer/[a-z0-9][a-z0-9._/-]*/(?:instructions\\.md|templates/[a-z0-9][a-z0-9._/-]*\\.md|(?:index|variables|helpers)\\.ts)$"
69
+ },
70
+ "content": { "type": "string", "minLength": 1, "maxLength": 4194304 }
71
+ }
72
+ }
73
+ },
74
+ "dependency_intents": {
75
+ "type": "array",
76
+ "maxItems": 0
77
+ }
78
+ },
79
+ "$defs": {
80
+ "id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._/-]*$" },
81
+ "digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
82
+ }
83
+ }