@starci/skills 1.1.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 (321) hide show
  1. package/INDEX.md +74 -0
  2. package/INDEX.vi.md +75 -0
  3. package/README.md +44 -0
  4. package/README.vi.md +43 -0
  5. package/SKILL.md +135 -0
  6. package/SKILL.vi.md +128 -0
  7. package/alias/INDEX.md +104 -0
  8. package/alias/INDEX.vi.md +104 -0
  9. package/alias/alias.json +297 -0
  10. package/bin/starci-skills.mjs +219 -0
  11. package/knowledge/INDEX.md +22 -0
  12. package/knowledge/INDEX.vi.md +22 -0
  13. package/knowledge/grammars/starci/DNA.md +146 -0
  14. package/knowledge/grammars/starci/DNA.vi.md +146 -0
  15. package/knowledge/grammars/starci/INDEX.md +25 -0
  16. package/knowledge/grammars/starci/INDEX.vi.md +25 -0
  17. package/knowledge/grammars/starci/family.md +50 -0
  18. package/knowledge/grammars/starci/family.vi.md +50 -0
  19. package/knowledge/grammars/starci/idioms.md +120 -0
  20. package/knowledge/grammars/starci/idioms.vi.md +121 -0
  21. package/knowledge/grammars/starci/playbook.md +36 -0
  22. package/knowledge/grammars/starci/playbook.vi.md +35 -0
  23. package/knowledge/patterns/be/INDEX.md +29 -0
  24. package/knowledge/patterns/be/INDEX.vi.md +29 -0
  25. package/knowledge/patterns/be/comment.md +80 -0
  26. package/knowledge/patterns/be/comment.vi.md +80 -0
  27. package/knowledge/patterns/be/error.md +86 -0
  28. package/knowledge/patterns/be/error.vi.md +86 -0
  29. package/knowledge/patterns/be/folder.md +87 -0
  30. package/knowledge/patterns/be/folder.vi.md +86 -0
  31. package/knowledge/patterns/be/function.md +80 -0
  32. package/knowledge/patterns/be/function.vi.md +80 -0
  33. package/knowledge/patterns/be/imports.md +79 -0
  34. package/knowledge/patterns/be/imports.vi.md +79 -0
  35. package/knowledge/patterns/be/naming.md +87 -0
  36. package/knowledge/patterns/be/naming.vi.md +87 -0
  37. package/knowledge/patterns/be/test.md +79 -0
  38. package/knowledge/patterns/be/test.vi.md +79 -0
  39. package/knowledge/patterns/be/typing.md +73 -0
  40. package/knowledge/patterns/be/typing.vi.md +73 -0
  41. package/knowledge/patterns/fe/INDEX.md +29 -0
  42. package/knowledge/patterns/fe/INDEX.vi.md +29 -0
  43. package/knowledge/patterns/fe/comment.md +70 -0
  44. package/knowledge/patterns/fe/comment.vi.md +70 -0
  45. package/knowledge/patterns/fe/error.md +61 -0
  46. package/knowledge/patterns/fe/error.vi.md +61 -0
  47. package/knowledge/patterns/fe/folder.md +98 -0
  48. package/knowledge/patterns/fe/folder.vi.md +95 -0
  49. package/knowledge/patterns/fe/function.md +70 -0
  50. package/knowledge/patterns/fe/function.vi.md +70 -0
  51. package/knowledge/patterns/fe/imports.md +87 -0
  52. package/knowledge/patterns/fe/imports.vi.md +87 -0
  53. package/knowledge/patterns/fe/naming.md +77 -0
  54. package/knowledge/patterns/fe/naming.vi.md +77 -0
  55. package/knowledge/patterns/fe/test.md +73 -0
  56. package/knowledge/patterns/fe/test.vi.md +73 -0
  57. package/knowledge/patterns/fe/typing.md +67 -0
  58. package/knowledge/patterns/fe/typing.vi.md +67 -0
  59. package/knowledge/ui/INDEX.md +101 -0
  60. package/knowledge/ui/INDEX.vi.md +101 -0
  61. package/knowledge/ui/composition/INDEX.md +60 -0
  62. package/knowledge/ui/composition/INDEX.vi.md +63 -0
  63. package/knowledge/ui/composition/accent.md +73 -0
  64. package/knowledge/ui/composition/accent.vi.md +74 -0
  65. package/knowledge/ui/composition/action.md +55 -0
  66. package/knowledge/ui/composition/action.vi.md +56 -0
  67. package/knowledge/ui/composition/coverage.md +37 -0
  68. package/knowledge/ui/composition/coverage.vi.md +37 -0
  69. package/knowledge/ui/composition/cta.md +79 -0
  70. package/knowledge/ui/composition/cta.vi.md +79 -0
  71. package/knowledge/ui/composition/feedback.md +55 -0
  72. package/knowledge/ui/composition/feedback.vi.md +56 -0
  73. package/knowledge/ui/composition/hierarchy.md +83 -0
  74. package/knowledge/ui/composition/hierarchy.vi.md +82 -0
  75. package/knowledge/ui/composition/layout.md +91 -0
  76. package/knowledge/ui/composition/layout.vi.md +93 -0
  77. package/knowledge/ui/composition/responsive.md +67 -0
  78. package/knowledge/ui/composition/responsive.vi.md +67 -0
  79. package/knowledge/ui/composition/state.md +105 -0
  80. package/knowledge/ui/composition/state.vi.md +106 -0
  81. package/knowledge/ui/presentation/INDEX.md +94 -0
  82. package/knowledge/ui/presentation/INDEX.vi.md +69 -0
  83. package/knowledge/ui/presentation/boundary.md +170 -0
  84. package/knowledge/ui/presentation/boundary.vi.md +169 -0
  85. package/knowledge/ui/presentation/font.md +155 -0
  86. package/knowledge/ui/presentation/font.vi.md +156 -0
  87. package/knowledge/ui/presentation/gap.md +181 -0
  88. package/knowledge/ui/presentation/gap.vi.md +181 -0
  89. package/knowledge/ui/presentation/margin.md +168 -0
  90. package/knowledge/ui/presentation/margin.vi.md +171 -0
  91. package/knowledge/ui/presentation/measure.md +174 -0
  92. package/knowledge/ui/presentation/measure.vi.md +178 -0
  93. package/knowledge/ui/presentation/overflow.md +142 -0
  94. package/knowledge/ui/presentation/overflow.vi.md +142 -0
  95. package/knowledge/ui/presentation/padding.md +293 -0
  96. package/knowledge/ui/presentation/padding.vi.md +292 -0
  97. package/knowledge/ui/presentation/surface.md +166 -0
  98. package/knowledge/ui/presentation/surface.vi.md +166 -0
  99. package/knowledge/ui/presentation/text-flow.md +123 -0
  100. package/knowledge/ui/presentation/text-flow.vi.md +123 -0
  101. package/knowledge/ui/presentation/tone.md +114 -0
  102. package/knowledge/ui/presentation/tone.vi.md +113 -0
  103. package/knowledge/ui/proof/INDEX.md +55 -0
  104. package/knowledge/ui/proof/INDEX.vi.md +55 -0
  105. package/knowledge/ui/proof/accessibility.md +67 -0
  106. package/knowledge/ui/proof/accessibility.vi.md +68 -0
  107. package/knowledge/ui/proof/contrast.md +58 -0
  108. package/knowledge/ui/proof/contrast.vi.md +57 -0
  109. package/knowledge/ui/proof/focus.md +76 -0
  110. package/knowledge/ui/proof/focus.vi.md +76 -0
  111. package/knowledge/ui/proof/motion.md +63 -0
  112. package/knowledge/ui/proof/motion.vi.md +64 -0
  113. package/knowledge/ui/proof/render-truth.md +63 -0
  114. package/knowledge/ui/proof/render-truth.vi.md +63 -0
  115. package/operators/INDEX.md +199 -0
  116. package/operators/INDEX.vi.md +199 -0
  117. package/operators/architecture-decide/errors.json +115 -0
  118. package/operators/architecture-decide/operator.json +20 -0
  119. package/operators/architecture-decide/operator.md +133 -0
  120. package/operators/architecture-decide/operator.vi.md +130 -0
  121. package/operators/architecture-decide/self-test.mjs +221 -0
  122. package/operators/architecture-decide/validate.mjs +112 -0
  123. package/operators/backend-source-apply/errors.json +66 -0
  124. package/operators/backend-source-apply/operator.json +20 -0
  125. package/operators/backend-source-apply/operator.md +189 -0
  126. package/operators/backend-source-apply/operator.vi.md +185 -0
  127. package/operators/backend-source-apply/self-test.mjs +257 -0
  128. package/operators/backend-source-apply/validate.mjs +240 -0
  129. package/operators/business-decide/errors.json +78 -0
  130. package/operators/business-decide/operator.json +20 -0
  131. package/operators/business-decide/operator.md +176 -0
  132. package/operators/business-decide/operator.vi.md +174 -0
  133. package/operators/business-decide/self-test.mjs +225 -0
  134. package/operators/business-decide/validate.mjs +277 -0
  135. package/operators/content-generate/errors.json +106 -0
  136. package/operators/content-generate/operator.json +21 -0
  137. package/operators/content-generate/operator.md +155 -0
  138. package/operators/content-generate/operator.vi.md +155 -0
  139. package/operators/content-generate/self-test.mjs +288 -0
  140. package/operators/content-generate/validate.mjs +196 -0
  141. package/operators/errors.json +178 -0
  142. package/operators/frontend-direction-decide/errors.json +135 -0
  143. package/operators/frontend-direction-decide/operator.json +21 -0
  144. package/operators/frontend-direction-decide/operator.md +167 -0
  145. package/operators/frontend-direction-decide/operator.vi.md +167 -0
  146. package/operators/frontend-direction-decide/self-test.mjs +226 -0
  147. package/operators/frontend-direction-decide/validate.mjs +146 -0
  148. package/operators/frontend-presentation-resolve/errors.json +42 -0
  149. package/operators/frontend-presentation-resolve/operator.json +19 -0
  150. package/operators/frontend-presentation-resolve/operator.md +142 -0
  151. package/operators/frontend-presentation-resolve/operator.vi.md +140 -0
  152. package/operators/frontend-presentation-resolve/self-test.mjs +163 -0
  153. package/operators/frontend-presentation-resolve/validate.mjs +143 -0
  154. package/operators/frontend-source-apply/errors.json +30 -0
  155. package/operators/frontend-source-apply/operator.json +20 -0
  156. package/operators/frontend-source-apply/operator.md +127 -0
  157. package/operators/frontend-source-apply/operator.vi.md +126 -0
  158. package/operators/frontend-source-apply/self-test.mjs +214 -0
  159. package/operators/frontend-source-apply/validate.mjs +133 -0
  160. package/operators/frontend-surface-audit/errors.json +5 -0
  161. package/operators/frontend-surface-audit/operator.json +22 -0
  162. package/operators/frontend-surface-audit/operator.md +121 -0
  163. package/operators/frontend-surface-audit/operator.vi.md +121 -0
  164. package/operators/frontend-surface-audit/self-test.mjs +185 -0
  165. package/operators/frontend-surface-audit/validate.mjs +127 -0
  166. package/operators/git-publish/errors.json +54 -0
  167. package/operators/git-publish/operator.json +20 -0
  168. package/operators/git-publish/operator.md +180 -0
  169. package/operators/git-publish/operator.vi.md +178 -0
  170. package/operators/git-publish/self-test.mjs +177 -0
  171. package/operators/git-publish/validate.mjs +106 -0
  172. package/operators/platform-operate/errors.json +90 -0
  173. package/operators/platform-operate/operator.json +22 -0
  174. package/operators/platform-operate/operator.md +162 -0
  175. package/operators/platform-operate/operator.vi.md +160 -0
  176. package/operators/platform-operate/self-test.mjs +202 -0
  177. package/operators/platform-operate/validate.mjs +193 -0
  178. package/operators/quality-verify/errors.json +54 -0
  179. package/operators/quality-verify/operator.json +20 -0
  180. package/operators/quality-verify/operator.md +185 -0
  181. package/operators/quality-verify/operator.vi.md +177 -0
  182. package/operators/quality-verify/self-test.mjs +210 -0
  183. package/operators/quality-verify/validate.mjs +197 -0
  184. package/operators/release-deploy/errors.json +158 -0
  185. package/operators/release-deploy/operator.json +23 -0
  186. package/operators/release-deploy/operator.md +183 -0
  187. package/operators/release-deploy/operator.vi.md +181 -0
  188. package/operators/release-deploy/self-test.mjs +235 -0
  189. package/operators/release-deploy/validate.mjs +129 -0
  190. package/operators/uat-verify/errors.json +78 -0
  191. package/operators/uat-verify/operator.json +25 -0
  192. package/operators/uat-verify/operator.md +162 -0
  193. package/operators/uat-verify/operator.vi.md +161 -0
  194. package/operators/uat-verify/self-test.mjs +270 -0
  195. package/operators/uat-verify/validate.mjs +202 -0
  196. package/operators/workspace-bind/errors.json +90 -0
  197. package/operators/workspace-bind/operator.json +21 -0
  198. package/operators/workspace-bind/operator.md +148 -0
  199. package/operators/workspace-bind/operator.vi.md +148 -0
  200. package/operators/workspace-bind/self-test.mjs +205 -0
  201. package/operators/workspace-bind/validate.mjs +152 -0
  202. package/package.json +50 -0
  203. package/readiness/initialization/workspaces/commit-policy.json +91 -0
  204. package/readiness/initialization/workspaces/config.schema.json +35 -0
  205. package/readiness/initialization/workspaces/device-state.schema.json +54 -0
  206. package/readiness/initialization/workspaces/local-route.schema.json +206 -0
  207. package/readiness/initialization/workspaces/portable-route.schema.json +200 -0
  208. package/resources/INDEX.md +96 -0
  209. package/resources/INDEX.vi.md +99 -0
  210. package/resources/agents/profiles/claude.json +131 -0
  211. package/resources/agents/profiles/openai.json +131 -0
  212. package/resources/orchestrator.json +71 -0
  213. package/resources/tools.json +85 -0
  214. package/routing.json +272 -0
  215. package/scripts/alias-registry.mjs +31 -0
  216. package/scripts/device-state.mjs +497 -0
  217. package/scripts/device-state.spec.mjs +18 -0
  218. package/scripts/errors-registry.mjs +68 -0
  219. package/scripts/generate-alias-doc.mjs +66 -0
  220. package/scripts/generate-grammar-dna.mjs +387 -0
  221. package/scripts/generate-operators-index.mjs +95 -0
  222. package/scripts/generate-presentation-owned.mjs +681 -0
  223. package/scripts/install-cli.spec.mjs +74 -0
  224. package/scripts/json-schema.mjs +94 -0
  225. package/scripts/operator-md.mjs +96 -0
  226. package/scripts/run-operator-self-tests.mjs +36 -0
  227. package/scripts/validate-alias.mjs +165 -0
  228. package/scripts/validate-defaults.mjs +72 -0
  229. package/scripts/validate-knowledge-citations.mjs +90 -0
  230. package/scripts/validate-operator.mjs +125 -0
  231. package/scripts/validate-request.mjs +80 -0
  232. package/scripts/validate-resources.mjs +117 -0
  233. package/scripts/validate-response.mjs +141 -0
  234. package/scripts/validate-routing.mjs +91 -0
  235. package/scripts/validate-step.mjs +50 -0
  236. package/scripts/validate-templates.mjs +226 -0
  237. package/scripts/validate-templates.spec.mjs +144 -0
  238. package/scripts/validate-workflows.mjs +106 -0
  239. package/scripts/workspace-portable.mjs +389 -0
  240. package/scripts/workspace-portable.spec.mjs +246 -0
  241. package/templates/README.md +47 -0
  242. package/templates/README.vi.md +45 -0
  243. package/templates/changes.example.md +27 -0
  244. package/templates/grammars.template.md +34 -0
  245. package/templates/kinds/architecture-decision.contract.json +14 -0
  246. package/templates/kinds/architecture-decision.skeleton.md +52 -0
  247. package/templates/kinds/backend-source-application.contract.json +10 -0
  248. package/templates/kinds/backend-source-application.skeleton.md +34 -0
  249. package/templates/kinds/business-promise-authority.contract.json +13 -0
  250. package/templates/kinds/business-promise-authority.skeleton.md +67 -0
  251. package/templates/kinds/capture.schema.json +33 -0
  252. package/templates/kinds/changes.contract.json +10 -0
  253. package/templates/kinds/changes.skeleton.md +26 -0
  254. package/templates/kinds/checks.schema.json +44 -0
  255. package/templates/kinds/claims.schema.json +165 -0
  256. package/templates/kinds/conformance.schema.json +15 -0
  257. package/templates/kinds/content-brief.contract.json +12 -0
  258. package/templates/kinds/content-brief.skeleton.md +45 -0
  259. package/templates/kinds/content-generation-receipt.contract.json +11 -0
  260. package/templates/kinds/content-generation-receipt.skeleton.md +40 -0
  261. package/templates/kinds/content-review.contract.json +11 -0
  262. package/templates/kinds/content-review.skeleton.md +45 -0
  263. package/templates/kinds/contract.schema.json +28 -0
  264. package/templates/kinds/coverage-matrix.schema.json +86 -0
  265. package/templates/kinds/coverage.schema.json +62 -0
  266. package/templates/kinds/current-state.schema.json +40 -0
  267. package/templates/kinds/delta.schema.json +95 -0
  268. package/templates/kinds/e2e.schema.json +63 -0
  269. package/templates/kinds/frontend-direction-decision.contract.json +93 -0
  270. package/templates/kinds/frontend-direction-decision.skeleton.md +68 -0
  271. package/templates/kinds/frontend-presentation-resolution.contract.json +11 -0
  272. package/templates/kinds/frontend-presentation-resolution.skeleton.md +32 -0
  273. package/templates/kinds/frontend-source-application.contract.json +10 -0
  274. package/templates/kinds/frontend-source-application.skeleton.md +30 -0
  275. package/templates/kinds/frontend-surface-audit.contract.json +52 -0
  276. package/templates/kinds/frontend-surface-audit.skeleton.md +32 -0
  277. package/templates/kinds/gate-result.schema.json +64 -0
  278. package/templates/kinds/git-publication.contract.json +82 -0
  279. package/templates/kinds/git-publication.skeleton.md +61 -0
  280. package/templates/kinds/independent-critique.contract.json +9 -0
  281. package/templates/kinds/independent-critique.skeleton.md +28 -0
  282. package/templates/kinds/inventory.schema.json +35 -0
  283. package/templates/kinds/model.schema.json +99 -0
  284. package/templates/kinds/mutations.schema.json +65 -0
  285. package/templates/kinds/platform-operation-receipt.contract.json +76 -0
  286. package/templates/kinds/platform-operation-receipt.skeleton.md +54 -0
  287. package/templates/kinds/probes.schema.json +130 -0
  288. package/templates/kinds/proof.schema.json +17 -0
  289. package/templates/kinds/quality-verification.contract.json +87 -0
  290. package/templates/kinds/quality-verification.skeleton.md +58 -0
  291. package/templates/kinds/release-deployment.contract.json +85 -0
  292. package/templates/kinds/release-deployment.skeleton.md +67 -0
  293. package/templates/kinds/route.schema.json +293 -0
  294. package/templates/kinds/stack-model.schema.json +90 -0
  295. package/templates/kinds/uat-capture.schema.json +35 -0
  296. package/templates/kinds/uat-flow-verification.contract.json +11 -0
  297. package/templates/kinds/uat-flow-verification.skeleton.md +47 -0
  298. package/templates/kinds/uat-snapshot.schema.json +96 -0
  299. package/templates/kinds/uat-verdicts.schema.json +41 -0
  300. package/templates/kinds/ui-coverage.schema.json +77 -0
  301. package/templates/kinds/verdicts.schema.json +39 -0
  302. package/templates/kinds/workspace-route-binding.contract.json +12 -0
  303. package/templates/kinds/workspace-route-binding.skeleton.md +60 -0
  304. package/templates/kinds/writes.schema.json +37 -0
  305. package/templates/operator.template.md +73 -0
  306. package/templates/patterns.template.md +31 -0
  307. package/templates/step/request.schema.json +42 -0
  308. package/templates/step/response.schema.json +144 -0
  309. package/templates/ui-composition.template.md +36 -0
  310. package/templates/ui-presentation.template.md +57 -0
  311. package/templates/ui-proof.template.md +34 -0
  312. package/workflows/README.md +37 -0
  313. package/workflows/README.vi.md +37 -0
  314. package/workflows/backend-feature.json +59 -0
  315. package/workflows/content-unit.json +19 -0
  316. package/workflows/frontend-new-surface.json +81 -0
  317. package/workflows/frontend-reconstruct.json +67 -0
  318. package/workflows/frontend-refine.json +67 -0
  319. package/workflows/frontend-with-uat.json +78 -0
  320. package/workflows/full-feature.json +104 -0
  321. package/workflows/release.json +29 -0
@@ -0,0 +1,65 @@
1
+ {
2
+ "$id": "kind:mutations",
3
+ "title": "Every mutation one source-writing step made or planned, the contract it filled, and the single commit that carries them on the session branch; under mode dry the commit is null and the record is a plan.",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["mode", "contractFingerprint", "base", "branch", "commit", "operations", "changes"],
7
+ "properties": {
8
+ "mode": { "enum": ["apply", "dry"] },
9
+ "contractFingerprint": { "$ref": "#/$defs/hash" },
10
+ "base": { "$ref": "#/$defs/gitHead" },
11
+ "branch": { "type": "string", "pattern": "^session/[A-Za-z0-9._-]+$" },
12
+ "commit": { "$ref": "#/$defs/nullableGitHead" },
13
+ "operations": {
14
+ "type": "array",
15
+ "minItems": 1,
16
+ "maxItems": 64,
17
+ "items": { "$ref": "#/$defs/operation" }
18
+ },
19
+ "changes": {
20
+ "type": "array",
21
+ "minItems": 1,
22
+ "maxItems": 256,
23
+ "items": { "$ref": "#/$defs/change" }
24
+ }
25
+ },
26
+ "$defs": {
27
+ "hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
28
+ "nullableHash": { "oneOf": [{ "$ref": "#/$defs/hash" }, { "type": "null" }] },
29
+ "gitHead": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
30
+ "nullableGitHead": { "oneOf": [{ "$ref": "#/$defs/gitHead" }, { "type": "null" }] },
31
+ "identifier": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
32
+ "facet": { "enum": ["transport", "writer", "store", "transaction", "idempotency", "migration", "exception-identity", "authorization", "concurrency"] },
33
+ "proofKind": { "enum": ["unit", "integration", "migration-replay", "conformance-read", "runtime-probe"] },
34
+ "operation": {
35
+ "type": "object",
36
+ "additionalProperties": false,
37
+ "required": ["operationId", "name", "transport", "writerRef", "storeRefs", "transactionBoundary", "idempotencyKind", "migrationRefs", "authorityDecisionIds", "facets", "proofKinds"],
38
+ "properties": {
39
+ "operationId": { "$ref": "#/$defs/identifier" },
40
+ "name": { "type": "string", "minLength": 1, "maxLength": 256 },
41
+ "transport": { "enum": ["graphql-mutation", "graphql-query", "rest", "worker", "cron", "event-consumer"] },
42
+ "writerRef": { "type": "string", "minLength": 1, "maxLength": 1024 },
43
+ "storeRefs": { "type": "array", "maxItems": 64, "items": { "type": "string", "minLength": 1 } },
44
+ "transactionBoundary": { "enum": ["single-transaction", "per-item", "read-only", "none"] },
45
+ "idempotencyKind": { "enum": ["none", "natural-key", "request-token", "event-id"] },
46
+ "migrationRefs": { "type": "array", "maxItems": 64, "items": { "type": "string", "minLength": 1 } },
47
+ "authorityDecisionIds": { "type": "array", "minItems": 1, "maxItems": 64, "items": { "type": "string", "pattern": "^BA-[0-9]+$" } },
48
+ "facets": { "type": "array", "minItems": 1, "maxItems": 16, "items": { "$ref": "#/$defs/facet" } },
49
+ "proofKinds": { "type": "array", "minItems": 1, "maxItems": 16, "items": { "$ref": "#/$defs/proofKind" } }
50
+ }
51
+ },
52
+ "change": {
53
+ "type": "object",
54
+ "additionalProperties": false,
55
+ "required": ["path", "change", "operationId", "beforeHash", "afterHash"],
56
+ "properties": {
57
+ "path": { "type": "string", "minLength": 1, "maxLength": 1024 },
58
+ "change": { "enum": ["added", "modified", "deleted"] },
59
+ "operationId": { "$ref": "#/$defs/identifier" },
60
+ "beforeHash": { "$ref": "#/$defs/nullableHash" },
61
+ "afterHash": { "$ref": "#/$defs/nullableHash" }
62
+ }
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "kind": "platform-operation-receipt",
3
+ "title": "^# platform-operation-receipt — (observability|sonar|tunnel) [A-Za-z0-9._/-]+$",
4
+ "sections": [
5
+ {
6
+ "heading": "^## Binding$",
7
+ "table": "| Field | Value |",
8
+ "rows": [
9
+ "Operator",
10
+ "Step",
11
+ "Project",
12
+ "Service",
13
+ "Service kind",
14
+ "Owner",
15
+ "Approval",
16
+ "Desired state",
17
+ "Inventory fingerprint"
18
+ ],
19
+ "cell": {
20
+ "Value": "\\S"
21
+ }
22
+ },
23
+ {
24
+ "heading": "^## Convergence$",
25
+ "table": "| Field | Value |",
26
+ "exactRows": 1,
27
+ "rows": [
28
+ "Convergence"
29
+ ],
30
+ "cell": {
31
+ "Value": "^(converged|already-converged)$"
32
+ }
33
+ },
34
+ {
35
+ "heading": "^## Inventoried resources$",
36
+ "table": "| Resource | Kind | Revision | Owner |",
37
+ "minRows": 1,
38
+ "cell": {
39
+ "Kind": "^(observability|sonar|tunnel)$",
40
+ "Revision": "\\S"
41
+ }
42
+ },
43
+ {
44
+ "heading": "^## Port holders$",
45
+ "table": "| Port | Holder | Evidence |",
46
+ "cell": {
47
+ "Port": "^[0-9]{1,5}$"
48
+ }
49
+ },
50
+ {
51
+ "heading": "^## Mutations$",
52
+ "table": "| Effect | Resource | Before | After |",
53
+ "cell": {
54
+ "Effect": "^`(update-config|restart-service|upsert-dashboard|update-remote-write|create-project|assign-profile|assign-gate|enforce-setting|create-tunnel|update-tunnel-route|upsert-proxied-dns)`$"
55
+ }
56
+ },
57
+ {
58
+ "heading": "^## Checks$",
59
+ "table": "| Check | Resource | Status | Evidence |",
60
+ "minRows": 1,
61
+ "cell": {
62
+ "Status": "^(passed|failed)$",
63
+ "Evidence": "\\S"
64
+ }
65
+ },
66
+ {
67
+ "heading": "^## Findings$",
68
+ "table": "| Code | Resource | Port | Holder | Statement |",
69
+ "minRows": 1,
70
+ "cell": {
71
+ "Code": "^`(SHARED_SERVICE_INVENTORIED|PORT_COORDINATION_REQUIRED|ALREADY_CONVERGED|PARTIAL_MUTATION|PRODUCT_DEPLOYMENT_DECLINED)`$",
72
+ "Statement": "\\S"
73
+ }
74
+ }
75
+ ]
76
+ }
@@ -0,0 +1,54 @@
1
+ # platform-operation-receipt — observability prometheus/shared
2
+
3
+ One paragraph: which shared service was inventoried, which approved delta was applied, and which
4
+ proof set was proved. Written by `platform.operate` as `response/response.md`. It proves the shared
5
+ service reached the approved state; it proves nothing about any product.
6
+
7
+ ## Binding
8
+
9
+ | Field | Value |
10
+ | --- | --- |
11
+ | Operator | `platform.operate` |
12
+ | Step | `step-1/parallel-1` |
13
+ | Project | `starci-academy` |
14
+ | Service | `prometheus/shared` |
15
+ | Service kind | observability |
16
+ | Owner | `platform-team` |
17
+ | Approval | `@worktrees/debts/be.md#metrics-approval` |
18
+ | Desired state | `sha256:0000000000000000000000000000000000000000000000000000000000000000` |
19
+ | Inventory fingerprint | `sha256:1111111111111111111111111111111111111111111111111111111111111111` |
20
+
21
+ ## Convergence
22
+
23
+ | Field | Value |
24
+ | --- | --- |
25
+ | Convergence | already-converged |
26
+
27
+ ## Inventoried resources
28
+
29
+ | Resource | Kind | Revision | Owner |
30
+ | --- | --- | --- | --- |
31
+ | `prometheus/shared` | observability | r-14 | `platform-team` |
32
+
33
+ ## Port holders
34
+
35
+ | Port | Holder | Evidence |
36
+ | --- | --- | --- |
37
+
38
+ ## Mutations
39
+
40
+ | Effect | Resource | Before | After |
41
+ | --- | --- | --- | --- |
42
+
43
+ ## Checks
44
+
45
+ | Check | Resource | Status | Evidence |
46
+ | --- | --- | --- | --- |
47
+ | `service-health` | `prometheus/shared` | passed | `logs/health.txt` |
48
+
49
+ ## Findings
50
+
51
+ | Code | Resource | Port | Holder | Statement |
52
+ | --- | --- | --- | --- | --- |
53
+ | `SHARED_SERVICE_INVENTORIED` | `prometheus/shared` | — | — | the service was inventoried before anything changed |
54
+ | `ALREADY_CONVERGED` | `prometheus/shared` | — | — | the service already matched the approved plan |
@@ -0,0 +1,130 @@
1
+ {
2
+ "$id": "kind:probes",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": [
6
+ "deadlineSeconds",
7
+ "elapsedSeconds",
8
+ "backoffSeconds",
9
+ "observations",
10
+ "finalCondition"
11
+ ],
12
+ "properties": {
13
+ "deadlineSeconds": {
14
+ "type": "integer",
15
+ "minimum": 1
16
+ },
17
+ "elapsedSeconds": {
18
+ "type": "integer",
19
+ "minimum": 0
20
+ },
21
+ "backoffSeconds": {
22
+ "type": "integer",
23
+ "minimum": 1
24
+ },
25
+ "observations": {
26
+ "type": "array",
27
+ "minItems": 1,
28
+ "maxItems": 256,
29
+ "items": {
30
+ "type": "object",
31
+ "additionalProperties": false,
32
+ "required": [
33
+ "observedAt",
34
+ "condition",
35
+ "activeReleaseIds",
36
+ "activeDigest",
37
+ "availableTargets",
38
+ "probeResults"
39
+ ],
40
+ "properties": {
41
+ "observedAt": {
42
+ "type": "string",
43
+ "format": "date-time"
44
+ },
45
+ "condition": {
46
+ "enum": [
47
+ "progressing",
48
+ "failing",
49
+ "steady"
50
+ ]
51
+ },
52
+ "activeReleaseIds": {
53
+ "type": "array",
54
+ "minItems": 1,
55
+ "maxItems": 8,
56
+ "uniqueItems": true,
57
+ "items": {
58
+ "type": "string",
59
+ "pattern": "^release:[A-Za-z0-9._-]+$"
60
+ }
61
+ },
62
+ "activeDigest": {
63
+ "oneOf": [
64
+ {
65
+ "type": "string",
66
+ "pattern": "^sha256:[0-9a-f]{64}$"
67
+ },
68
+ {
69
+ "type": "null"
70
+ }
71
+ ]
72
+ },
73
+ "availableTargets": {
74
+ "type": "integer",
75
+ "minimum": 0
76
+ },
77
+ "probeResults": {
78
+ "type": "array",
79
+ "items": {
80
+ "type": "object",
81
+ "additionalProperties": false,
82
+ "required": [
83
+ "probeId",
84
+ "status",
85
+ "observedStatus",
86
+ "observedAt"
87
+ ],
88
+ "properties": {
89
+ "probeId": {
90
+ "type": "string",
91
+ "pattern": "^[a-z0-9][a-z0-9-]*$"
92
+ },
93
+ "status": {
94
+ "enum": [
95
+ "pass",
96
+ "fail"
97
+ ]
98
+ },
99
+ "observedStatus": {
100
+ "oneOf": [
101
+ {
102
+ "type": "integer",
103
+ "minimum": 100,
104
+ "maximum": 599
105
+ },
106
+ {
107
+ "type": "null"
108
+ }
109
+ ]
110
+ },
111
+ "observedAt": {
112
+ "type": "string",
113
+ "format": "date-time"
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
119
+ }
120
+ },
121
+ "finalCondition": {
122
+ "enum": [
123
+ "progressing",
124
+ "failing",
125
+ "steady",
126
+ "deadline-exceeded"
127
+ ]
128
+ }
129
+ }
130
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$id": "kind:proof",
3
+ "title": "One declared proof of one operation, with the command that was run and what came back; the file is named <operationId>.<proofKind>.json.",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["operationId", "proofKind", "commandRef", "exitCode", "result", "output", "statement", "contractFingerprint"],
7
+ "properties": {
8
+ "operationId": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
9
+ "proofKind": { "enum": ["unit", "integration", "migration-replay", "conformance-read", "runtime-probe"] },
10
+ "commandRef": { "type": "string", "minLength": 1, "maxLength": 1024 },
11
+ "exitCode": { "type": "integer", "minimum": 0, "maximum": 255 },
12
+ "result": { "enum": ["passed", "failed"] },
13
+ "output": { "type": "string", "minLength": 1, "maxLength": 8192 },
14
+ "statement": { "type": "string", "minLength": 1, "maxLength": 4096 },
15
+ "contractFingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
16
+ }
17
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "kind": "quality-verification",
3
+ "title": "^# quality-verification — [0-9a-f]{40}$",
4
+ "sections": [
5
+ {
6
+ "heading": "^## Binding$",
7
+ "table": "| Field | Value |",
8
+ "rows": [
9
+ "Operator",
10
+ "Step",
11
+ "Checkout",
12
+ "Head",
13
+ "Session branch",
14
+ "Predecessors"
15
+ ],
16
+ "cell": {
17
+ "Value": "\\S"
18
+ }
19
+ },
20
+ {
21
+ "heading": "^## Gate plan$",
22
+ "table": "| Gate | Required | Command | Configuration |",
23
+ "minRows": 1,
24
+ "cell": {
25
+ "Gate": "^`(format|lint|typecheck|build|unit-coverage|integration|e2e|sonar)`$",
26
+ "Required": "^(yes|no)$"
27
+ }
28
+ },
29
+ {
30
+ "heading": "^## Results$",
31
+ "table": "| Gate | Status | Exit code | Evidence | Classification | Statement |",
32
+ "minRows": 1,
33
+ "cell": {
34
+ "Gate": "^`(format|lint|typecheck|build|unit-coverage|integration|e2e|sonar)`$",
35
+ "Status": "^(pass|fail|external-blocker|skipped-not-requested)$",
36
+ "Classification": "^(in-boundary|boundary-drift|flaky|external-blocker|—)$",
37
+ "Statement": "\\S"
38
+ }
39
+ },
40
+ {
41
+ "heading": "^## Coverage$",
42
+ "table": "| Metric | Measured | Threshold | Verdict |",
43
+ "cell": {
44
+ "Metric": "^(statements|lines|functions|branches)$",
45
+ "Verdict": "^(at-or-above|below)$"
46
+ }
47
+ },
48
+ {
49
+ "heading": "^## Sonar$",
50
+ "table": "| Field | Value |",
51
+ "rows": [
52
+ "Scope",
53
+ "Finding"
54
+ ],
55
+ "cell": {
56
+ "Value": "\\S"
57
+ }
58
+ },
59
+ {
60
+ "heading": "^## Debts$",
61
+ "table": "| Debt | Gate | Approval | Owner | Expires | Statement |",
62
+ "cell": {
63
+ "Gate": "^`(format|lint|typecheck|build|unit-coverage|integration|e2e|sonar)`$"
64
+ }
65
+ },
66
+ {
67
+ "heading": "^## Findings$",
68
+ "table": "| Code | Gate | Statement |",
69
+ "minRows": 1,
70
+ "cell": {
71
+ "Code": "^`(PREDECESSOR_CONSUMED|SONAR_NEW_CODE_ONLY|E2E_NOT_REQUESTED|COVERAGE_BELOW_THRESHOLD|FLAKY_CONFIRMED|DEBT_DECLARED)`$",
72
+ "Statement": "\\S"
73
+ }
74
+ },
75
+ {
76
+ "heading": "^## Verdict$",
77
+ "table": "| Field | Value |",
78
+ "exactRows": 1,
79
+ "rows": [
80
+ "Verdict"
81
+ ],
82
+ "cell": {
83
+ "Value": "^`(pass|fail)`$"
84
+ }
85
+ }
86
+ ]
87
+ }
@@ -0,0 +1,58 @@
1
+ # quality-verification — 1111111111111111111111111111111111111111
2
+
3
+ One paragraph: which delivery was verified, on which head, and what the verdict rests on. Written by
4
+ `quality.verify` as `response/response.md`. A red verdict is a complete invocation; only an inability
5
+ to reach any verdict at all is a stop.
6
+
7
+ ## Binding
8
+
9
+ | Field | Value |
10
+ | --- | --- |
11
+ | Operator | `quality.verify` |
12
+ | Step | `step-1/parallel-1` |
13
+ | Checkout | `@workspaces/be` |
14
+ | Head | `1111111111111111111111111111111111111111` |
15
+ | Session branch | `session/s-1` |
16
+ | Predecessors | `step-1/parallel-1/response/response.md`, `step-1/parallel-1/response/changes.md` |
17
+
18
+ ## Gate plan
19
+
20
+ | Gate | Required | Command | Configuration |
21
+ | --- | --- | --- | --- |
22
+ | `lint` | yes | `package.json#scripts.lint` | `eslint.config.mjs` |
23
+
24
+ ## Results
25
+
26
+ | Gate | Status | Exit code | Evidence | Classification | Statement |
27
+ | --- | --- | --- | --- | --- | --- |
28
+ | `lint` | pass | 0 | `gates/lint.log` | — | zero errors and zero warnings |
29
+
30
+ ## Coverage
31
+
32
+ | Metric | Measured | Threshold | Verdict |
33
+ | --- | --- | --- | --- |
34
+ | branches | 81.4 | 80 | at-or-above |
35
+
36
+ ## Sonar
37
+
38
+ | Field | Value |
39
+ | --- | --- |
40
+ | Scope | new-code |
41
+ | Finding | — |
42
+
43
+ ## Debts
44
+
45
+ | Debt | Gate | Approval | Owner | Expires | Statement |
46
+ | --- | --- | --- | --- | --- | --- |
47
+
48
+ ## Findings
49
+
50
+ | Code | Gate | Statement |
51
+ | --- | --- | --- |
52
+ | `PREDECESSOR_CONSUMED` | — | the producer receipt was consumed unchanged at the frozen head |
53
+
54
+ ## Verdict
55
+
56
+ | Field | Value |
57
+ | --- | --- |
58
+ | Verdict | `pass` |
@@ -0,0 +1,85 @@
1
+ {
2
+ "kind": "release-deployment",
3
+ "title": "^# release-deployment — release:[A-Za-z0-9._-]+$",
4
+ "sections": [
5
+ {
6
+ "heading": "^## Binding$",
7
+ "table": "| Field | Value |",
8
+ "rows": [
9
+ "Operator",
10
+ "Step",
11
+ "Project",
12
+ "Release",
13
+ "Artifact",
14
+ "Digest",
15
+ "Target",
16
+ "Environment",
17
+ "Replaced release",
18
+ "Approval",
19
+ "Manifest",
20
+ "Steady deadline",
21
+ "Rollback identity"
22
+ ],
23
+ "cell": {
24
+ "Value": "\\S"
25
+ }
26
+ },
27
+ {
28
+ "heading": "^## Outcome$",
29
+ "table": "| Field | Value |",
30
+ "exactRows": 2,
31
+ "rows": [
32
+ "Outcome",
33
+ "Branch"
34
+ ],
35
+ "cell": {
36
+ "Value": "^(deployed|rolled-back|none|recover|rollback)$"
37
+ }
38
+ },
39
+ {
40
+ "heading": "^## Steps$",
41
+ "table": "| Step | State | Revision before | Revision after | Statement |",
42
+ "minRows": 1,
43
+ "cell": {
44
+ "Step": "^`(authorize|manifest-validate|plan|execution-root-init|credential-resolve|host-prepare|artifact-build|artifact-publish|migrate|domain-reconcile|rollout|monitor|recover|rollback|proof)`$",
45
+ "State": "^(applied|no-op|skipped|failed)$",
46
+ "Statement": "\\S"
47
+ }
48
+ },
49
+ {
50
+ "heading": "^## Monitoring$",
51
+ "table": "| Field | Value |",
52
+ "rows": [
53
+ "Deadline",
54
+ "Elapsed",
55
+ "Backoff",
56
+ "Final condition"
57
+ ],
58
+ "cell": {
59
+ "Value": "\\S"
60
+ }
61
+ },
62
+ {
63
+ "heading": "^## Steady state$",
64
+ "table": "| Metric | Value |",
65
+ "cell": {
66
+ "Value": "\\S"
67
+ }
68
+ },
69
+ {
70
+ "heading": "^## Findings$",
71
+ "table": "| Code | Step | Statement |",
72
+ "cell": {
73
+ "Code": "^`(IDEMPOTENT_NO_OP|PROBE_TRANSIENT|TARGET_UNAVAILABLE|SUPERSEDED_TARGET_ACTIVE|FOREIGN_RELEASE_OBSERVED|APPROVED_ACTION_REPEATED)`$",
74
+ "Statement": "\\S"
75
+ }
76
+ },
77
+ {
78
+ "heading": "^## Fallbacks taken$",
79
+ "table": "| Code | Action |",
80
+ "cell": {
81
+ "Code": "^`[A-Z][A-Z0-9_]+`$"
82
+ }
83
+ }
84
+ ]
85
+ }
@@ -0,0 +1,67 @@
1
+ # release-deployment — release:2026.01.10-1
2
+
3
+ One paragraph: which immutable release reached which target, under which authorization, and what the
4
+ steady state rests on. Written by `release.deploy` as `response/response.md`. A rolled-back run is a
5
+ terminal outcome of its own and never reads as delivery of the release it rejected.
6
+
7
+ ## Binding
8
+
9
+ | Field | Value |
10
+ | --- | --- |
11
+ | Operator | `release.deploy` |
12
+ | Step | `step-1/parallel-1` |
13
+ | Project | `starci-academy` |
14
+ | Release | `release:2026.01.10-1` |
15
+ | Artifact | `@remote/ghcr/starci/academy-api` |
16
+ | Digest | `sha256:1111111111111111111111111111111111111111111111111111111111111111` |
17
+ | Target | `production/api` |
18
+ | Environment | production |
19
+ | Replaced release | `release:2026.01.03-2` |
20
+ | Approval | `@worktrees/businesses/features/release/model.json#deploy-grant` |
21
+ | Manifest | `.stacks/production/api.manifest.json` |
22
+ | Steady deadline | 600 |
23
+ | Rollback identity | `release:2026.01.03-2` |
24
+
25
+ ## Outcome
26
+
27
+ | Field | Value |
28
+ | --- | --- |
29
+ | Outcome | deployed |
30
+ | Branch | none |
31
+
32
+ ## Steps
33
+
34
+ | Step | State | Revision before | Revision after | Statement |
35
+ | --- | --- | --- | --- | --- |
36
+ | `authorize` | applied | — | — | the declared grant covers this project, environment and target |
37
+ | `rollout` | applied | 4 | 5 | the target moved to the immutable digest |
38
+ | `monitor` | applied | — | — | the window was observed to its end |
39
+
40
+ ## Monitoring
41
+
42
+ | Field | Value |
43
+ | --- | --- |
44
+ | Deadline | 600 |
45
+ | Elapsed | 420 |
46
+ | Backoff | 30 |
47
+ | Final condition | steady |
48
+
49
+ ## Steady state
50
+
51
+ | Metric | Value |
52
+ | --- | --- |
53
+ | Active digest | `sha256:1111111111111111111111111111111111111111111111111111111111111111` |
54
+ | Available targets | 1 of 1 |
55
+ | Superseded active | 0 |
56
+ | Window elapsed | 300 |
57
+
58
+ ## Findings
59
+
60
+ | Code | Step | Statement |
61
+ | --- | --- | --- |
62
+ | `IDEMPOTENT_NO_OP` | `host-prepare` | the host already matched the declaration |
63
+
64
+ ## Fallbacks taken
65
+
66
+ | Code | Action |
67
+ | --- | --- |