@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,68 @@
1
+ # frontend-direction-decision — direction-id
2
+
3
+ ## Decision
4
+
5
+ | Field | Value |
6
+ | --- | --- |
7
+ | Direction id | `direction-id` |
8
+ | Target | `/route/or/target-id` |
9
+ | Intent | `modify` |
10
+ | Change level | `reconstruct` |
11
+ | Owner ceiling | `surface-and-nested-layouts` |
12
+ | Classification | `dominant` |
13
+ | Selection policy | `automatic` |
14
+ | Selected candidate | `candidate-id` |
15
+
16
+ ## Observed
17
+
18
+ | Item | Evidence |
19
+ | --- | --- |
20
+ | what the target does today | `app/route/page.tsx:1-40@0f1e2d3` |
21
+
22
+ ## UI contract
23
+
24
+ | Element | Kind | Responsibility |
25
+ | --- | --- | --- |
26
+ | `region-id` | region | what this region answers for the actor |
27
+ | choose a plan | action | what the actor does and how the surface answers |
28
+ | pending | state | what the surface says while the action settles |
29
+ | narrow | responsive | what the layout does below the breakpoint |
30
+
31
+ ## Coverage
32
+
33
+ | Concern | Enumerated |
34
+ | --- | --- |
35
+ | Actions | every action with its pointer route, keyboard route and settled pending paths |
36
+ | Regions | every region with one idiom and one published composition |
37
+ | States | every meaning with its own carrier |
38
+ | Responsive | every branch with one owner |
39
+
40
+ ## References
41
+
42
+ | Source | URL | Limitation |
43
+ | --- | --- | --- |
44
+ | what the reference showed | https://example.com/pattern | what it does not settle; no rows when the person supplied references or the change level is refine |
45
+
46
+ ## Images
47
+
48
+ | Slot | Why | Claim | File |
49
+ | --- | --- | --- | --- |
50
+ | hero | the region reads empty without a subject | the one claim of the promise the image encodes | `response/artifacts/images/hero.png` |
51
+
52
+ ## Falsification
53
+
54
+ | Attack | Candidate | Verdict | Evidence |
55
+ | --- | --- | --- | --- |
56
+ | content stress | `candidate-id` | holds | the widest plan name still fits the decision bar |
57
+
58
+ ## Why not the others
59
+
60
+ | Candidate | Rejected because |
61
+ | --- | --- |
62
+ | `other-candidate-id` | which attack it failed; no rows when one candidate was formed |
63
+
64
+ ## Fallbacks taken
65
+
66
+ | Code | Action |
67
+ | --- | --- |
68
+ | `CODE` | what the fallback did; no rows when none was taken |
@@ -0,0 +1,11 @@
1
+ {
2
+ "kind": "frontend-presentation-resolution",
3
+ "title": "^# frontend-presentation-resolution — [a-z0-9][a-z0-9-]*$",
4
+ "sections": [
5
+ { "heading": "^## Owner map$", "table": "| Node | Property | Owner | Rule |", "minRows": 1, "cell": { "Node": "^`[^`]+`$", "Owner": "^(app|grammar)$", "Rule": "^`[A-Z][A-Z0-9-]*-[0-9]+`$" } },
6
+ { "heading": "^## Rules chosen$", "table": "| Node | Rule | Class | Condition |", "minRows": 1, "cell": { "Node": "^`[^`]+`$", "Rule": "^`[A-Z][A-Z0-9-]*-[0-9]+`$", "Class": "^`[^`]+`$", "Condition": "\\S" } },
7
+ { "heading": "^## Removed$", "table": "| Node | Class | Because |", "cell": { "Node": "^`[^`]+`$", "Because": "^(reimplements an owned relationship|overrides Grammar anatomy|off the closed scale)$" } },
8
+ { "heading": "^## Gaps$", "table": "| Node | Property | Missing path |", "cell": { "Node": "^`[^`]+`$", "Missing path": "\\S" } },
9
+ { "heading": "^## Fallbacks taken$", "table": "| Code | Action |", "cell": { "Code": "^`[A-Z][A-Z0-9_]+`$" } }
10
+ ]
11
+ }
@@ -0,0 +1,32 @@
1
+ # frontend-presentation-resolution — target-id
2
+
3
+ ## Owner map
4
+
5
+ | Node | Property | Owner | Rule |
6
+ | --- | --- | --- | --- |
7
+ | `body>main>div[0]` | gap | app | `GAP-5` |
8
+ | `body>main>div[0]>section` | padding | grammar | `PADDING-4` |
9
+
10
+ ## Rules chosen
11
+
12
+ | Node | Rule | Class | Condition |
13
+ | --- | --- | --- | --- |
14
+ | `body>main>div[0]` | `GAP-5` | `gap-6` | the published case the observed condition matched |
15
+
16
+ ## Removed
17
+
18
+ | Node | Class | Because |
19
+ | --- | --- | --- |
20
+ | `body>main>div[0]>section` | `p-4` | reimplements an owned relationship |
21
+
22
+ ## Gaps
23
+
24
+ | Node | Property | Missing path |
25
+ | --- | --- | --- |
26
+ | `body>aside` | gap | Common exposes no public path for the compact identity pair; no rows when none was found |
27
+
28
+ ## Fallbacks taken
29
+
30
+ | Code | Action |
31
+ | --- | --- |
32
+ | `CODE` | what the fallback did; no rows when none was taken |
@@ -0,0 +1,10 @@
1
+ {
2
+ "kind": "frontend-source-application",
3
+ "title": "^# frontend-source-application — [a-z0-9][a-z0-9-]*$",
4
+ "sections": [
5
+ { "heading": "^## Binding$", "table": "| Field | Value |", "rows": ["Target", "Mode", "Branch", "Base", "Commit"], "cell": { "Value": "\\S" } },
6
+ { "heading": "^## Projection$", "table": "| Path | Change | Classes | Claims | Why |", "minRows": 1, "cell": { "Path": "^`[^`]+`$", "Change": "^(created|modified|deleted|unchanged)$", "Why": "\\S" } },
7
+ { "heading": "^## Rejections$", "table": "| Path | Value | Because |", "cell": { "Path": "^`[^`]+`$", "Because": "^(outside the declared write set|outside the owner root|absent from the resolution inventory|the committed tree is not the resolved tree)$" } },
8
+ { "heading": "^## Fallbacks taken$", "table": "| Code | Action |", "cell": { "Code": "^`[A-Z][A-Z0-9_]+`$" } }
9
+ ]
10
+ }
@@ -0,0 +1,30 @@
1
+ # frontend-source-application — target-id
2
+
3
+ ## Binding
4
+
5
+ | Field | Value |
6
+ | --- | --- |
7
+ | Target | `target-id` |
8
+ | Mode | `apply` |
9
+ | Branch | `session/s-2026-09-03-1` |
10
+ | Base | `0f1e2d3c4b5a69788796a5b4c3d2e1f009182736` |
11
+ | Commit | `9a8b7c6d5e4f30211203344556677889900aabbc` |
12
+
13
+ ## Projection
14
+
15
+ | Path | Change | Classes | Claims | Why |
16
+ | --- | --- | --- | --- | --- |
17
+ | `app/target/page.tsx` | modified | `gap-6` | `GAP-5` | the region stack takes the resolved gap |
18
+ | `app/target/canvas.tsx` | created | — | — | an application-owned leaf carrying its contract, never its logic |
19
+
20
+ ## Rejections
21
+
22
+ | Path | Value | Because |
23
+ | --- | --- | --- |
24
+ | `app/shell/layout.tsx` | `gap-8` | outside the declared write set |
25
+
26
+ ## Fallbacks taken
27
+
28
+ | Code | Action |
29
+ | --- | --- |
30
+ | `CODE` | what the fallback did; no rows when none was taken |
@@ -0,0 +1,52 @@
1
+ {
2
+ "kind": "frontend-surface-audit",
3
+ "title": "^# frontend-surface-audit — [a-z0-9][a-z0-9-]*$",
4
+ "sections": [
5
+ {
6
+ "heading": "^## Matrix$",
7
+ "table": "| Matrix | Viewport | Scheme | State | Screenshot |",
8
+ "minRows": 1,
9
+ "cell": {
10
+ "Matrix": "^`[a-z0-9][a-z0-9-]*`$",
11
+ "Viewport": "^[0-9]{3,4}x[0-9]{3,4}$",
12
+ "Scheme": "^(light|dark)$",
13
+ "Screenshot": "^`response/artifacts/[A-Za-z0-9_.-]+[.]png`$"
14
+ }
15
+ },
16
+ {
17
+ "heading": "^## Verdicts by owner$",
18
+ "table": "| Matrix | Owner | Node | Rule | Measured | Verdict |",
19
+ "minRows": 1,
20
+ "cell": {
21
+ "Owner": "^(app|grammar)$",
22
+ "Node": "^`[^`]+`$",
23
+ "Rule": "^`[A-Z][A-Z0-9-]*-[0-9]+`$",
24
+ "Verdict": "^(pass|fail)$",
25
+ "Matrix": "^`[a-z0-9][a-z0-9-]*`$"
26
+ }
27
+ },
28
+ {
29
+ "heading": "^## Regressions$",
30
+ "table": "| Matrix | Node | Rule | Measured | Routes to |",
31
+ "cell": {
32
+ "Node": "^`[^`]+`$",
33
+ "Routes to": "^(resolve|grammar-gap)$",
34
+ "Matrix": "^`[a-z0-9][a-z0-9-]*`$"
35
+ }
36
+ },
37
+ {
38
+ "heading": "^## Grammar gaps$",
39
+ "table": "| Component | Rule | What the family lacks |",
40
+ "cell": {
41
+ "What the family lacks": "\\S"
42
+ }
43
+ },
44
+ {
45
+ "heading": "^## Fallbacks taken$",
46
+ "table": "| Code | Action |",
47
+ "cell": {
48
+ "Code": "^`[A-Z][A-Z0-9_]+`$"
49
+ }
50
+ }
51
+ ]
52
+ }
@@ -0,0 +1,32 @@
1
+ # frontend-surface-audit — target-id
2
+
3
+ ## Matrix
4
+
5
+ | Matrix | Viewport | Scheme | State | Screenshot |
6
+ | --- | --- | --- | --- | --- |
7
+ | `wide-light-loaded` | 1440x900 | light | loaded | `response/artifacts/wide-light-loaded.png` |
8
+
9
+ ## Verdicts by owner
10
+
11
+ | Matrix | Owner | Node | Rule | Measured | Verdict |
12
+ | --- | --- | --- | --- | --- | --- |
13
+ | `wide-light-loaded` | app | `body>main` | `GAP-5` | 1.5rem | pass |
14
+ | `wide-light-loaded` | grammar | `body>main>section` | `PADDING-4` | 1rem | pass |
15
+
16
+ ## Regressions
17
+
18
+ | Matrix | Node | Rule | Measured | Routes to |
19
+ | --- | --- | --- | --- | --- |
20
+ | `narrow-light-loaded` | `body>main` | `GAP-5` | 1rem | resolve |
21
+
22
+ ## Grammar gaps
23
+
24
+ | Component | Rule | What the family lacks |
25
+ | --- | --- | --- |
26
+ | `SurfaceCard` | `PADDING-4` | the component renders its own inset one step low; no rows when the family holds |
27
+
28
+ ## Fallbacks taken
29
+
30
+ | Code | Action |
31
+ | --- | --- |
32
+ | `CODE` | what the fallback did; no rows when none was taken |
@@ -0,0 +1,64 @@
1
+ {
2
+ "$id": "kind:gate-result",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": [
6
+ "gate",
7
+ "required",
8
+ "sourceHead",
9
+ "sessionBranch",
10
+ "predecessorCommit",
11
+ "observedAt",
12
+ "commandRef",
13
+ "configRef",
14
+ "status",
15
+ "exitCode",
16
+ "evidenceRef",
17
+ "classification",
18
+ "sonarScope",
19
+ "debt",
20
+ "statement"
21
+ ],
22
+ "properties": {
23
+ "gate": { "$ref": "#/$defs/gate" },
24
+ "required": { "type": "boolean" },
25
+ "sourceHead": { "$ref": "#/$defs/gitHead" },
26
+ "sessionBranch": { "type": "string", "pattern": "^session/[A-Za-z0-9._-]+$" },
27
+ "predecessorCommit": { "$ref": "#/$defs/gitHead" },
28
+ "observedAt": { "type": "string", "format": "date-time" },
29
+ "commandRef": { "type": "string", "minLength": 1 },
30
+ "configRef": { "type": "string", "minLength": 1 },
31
+ "status": { "enum": ["pass", "fail", "external-blocker", "skipped-not-requested"] },
32
+ "exitCode": { "oneOf": [{ "type": "integer" }, { "type": "null" }] },
33
+ "evidenceRef": { "oneOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] },
34
+ "classification": {
35
+ "oneOf": [
36
+ { "enum": ["in-boundary", "boundary-drift", "flaky", "external-blocker"] },
37
+ { "type": "null" }
38
+ ]
39
+ },
40
+ "sonarScope": { "oneOf": [{ "enum": ["new-code", "overall"] }, { "type": "null" }] },
41
+ "debt": {
42
+ "oneOf": [
43
+ { "type": "null" },
44
+ {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "required": ["debtId", "approvalRef", "ownerRef", "expiresAt", "statement"],
48
+ "properties": {
49
+ "debtId": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
50
+ "approvalRef": { "type": "string", "minLength": 1 },
51
+ "ownerRef": { "type": "string", "minLength": 1 },
52
+ "expiresAt": { "type": "string", "format": "date-time" },
53
+ "statement": { "type": "string", "minLength": 1 }
54
+ }
55
+ }
56
+ ]
57
+ },
58
+ "statement": { "type": "string", "minLength": 1 }
59
+ },
60
+ "$defs": {
61
+ "gate": { "enum": ["format", "lint", "typecheck", "build", "unit-coverage", "integration", "e2e", "sonar"] },
62
+ "gitHead": { "type": "string", "pattern": "^[0-9a-f]{40}$" }
63
+ }
64
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "kind": "git-publication",
3
+ "title": "^# git-publication — [a-z][a-z0-9.-]*$",
4
+ "sections": [
5
+ {
6
+ "heading": "^## Binding$",
7
+ "table": "| Field | Value |",
8
+ "rows": [
9
+ "Operator",
10
+ "Step",
11
+ "Project",
12
+ "Boundary",
13
+ "Approval",
14
+ "Route receipt",
15
+ "Worktree branches",
16
+ "Mutation branch",
17
+ "Frozen head"
18
+ ],
19
+ "cell": {
20
+ "Value": "\\S"
21
+ }
22
+ },
23
+ {
24
+ "heading": "^## Publication$",
25
+ "table": "| Field | Value |",
26
+ "rows": [
27
+ "Remote",
28
+ "Ref",
29
+ "Mode",
30
+ "Forced",
31
+ "Session branch",
32
+ "Target branch",
33
+ "Merge",
34
+ "Verified commit",
35
+ "Cleanup"
36
+ ],
37
+ "cell": {
38
+ "Value": "\\S"
39
+ }
40
+ },
41
+ {
42
+ "heading": "^## Published heads$",
43
+ "table": "| Checkout | Branch | Head | Previous remote head | Commits |",
44
+ "minRows": 1,
45
+ "cell": {
46
+ "Head": "^`[0-9a-f]{40}`$",
47
+ "Commits": "^[1-9][0-9]*$"
48
+ }
49
+ },
50
+ {
51
+ "heading": "^## Hooks$",
52
+ "table": "| Hook | Reference | Outcome |",
53
+ "minRows": 1,
54
+ "cell": {
55
+ "Hook": "^`(pre-commit|commit-msg|pre-push)`$",
56
+ "Outcome": "^(passed|failed)$"
57
+ }
58
+ },
59
+ {
60
+ "heading": "^## Continuation tag$",
61
+ "table": "| Field | Value |",
62
+ "rows": [
63
+ "Tag",
64
+ "Ref",
65
+ "Head"
66
+ ],
67
+ "cell": {
68
+ "Value": "\\S"
69
+ }
70
+ },
71
+ {
72
+ "heading": "^## Findings$",
73
+ "table": "| Code | Subject | Statement |",
74
+ "minRows": 1,
75
+ "cell": {
76
+ "Code": "^`(HOOK_ENFORCED|BOUNDARY_CLEAN|REMOTE_FAST_FORWARDED|REMOTE_REF_CREATED|CONTINUATION_TAG_PUBLISHED)`$",
77
+ "Subject": "\\S",
78
+ "Statement": "\\S"
79
+ }
80
+ }
81
+ ]
82
+ }
@@ -0,0 +1,61 @@
1
+ # git-publication — api.core
2
+
3
+ One paragraph: which boundary was published, from which heads, onto which ref, and under which
4
+ hooks. Written by `git.publish` as `response/response.md`. It proves that exactly these heads reached
5
+ exactly this ref; it carries no verdict about the change itself.
6
+
7
+ ## Binding
8
+
9
+ | Field | Value |
10
+ | --- | --- |
11
+ | Operator | `git.publish` |
12
+ | Step | `step-1/parallel-1` |
13
+ | Project | `starci-academy` |
14
+ | Boundary | `api.core` |
15
+ | Approval | `@worktrees/businesses/features/api-core/model.json#approval` |
16
+ | Route receipt | `step-1/parallel-1/response/response.md` |
17
+ | Worktree branches | forbidden |
18
+ | Mutation branch | `mtp` |
19
+ | Frozen head | `1111111111111111111111111111111111111111` |
20
+
21
+ ## Publication
22
+
23
+ | Field | Value |
24
+ | --- | --- |
25
+ | Remote | origin |
26
+ | Ref | `refs/heads/mtp` |
27
+ | Mode | fast-forward-only |
28
+ | Forced | no |
29
+ | Session branch | `session/s-2026-01-10` |
30
+ | Target branch | `mtp` |
31
+ | Merge | fast-forward |
32
+ | Verified commit | `1111111111111111111111111111111111111111` |
33
+ | Cleanup | worktree and session branch removed |
34
+
35
+ ## Published heads
36
+
37
+ | Checkout | Branch | Head | Previous remote head | Commits |
38
+ | --- | --- | --- | --- | --- |
39
+ | `@workspaces/be` | `mtp` | `1111111111111111111111111111111111111111` | `2222222222222222222222222222222222222222` | 4 |
40
+
41
+ ## Hooks
42
+
43
+ | Hook | Reference | Outcome |
44
+ | --- | --- | --- |
45
+ | `pre-push` | `.husky/pre-push` | passed |
46
+
47
+ ## Continuation tag
48
+
49
+ | Field | Value |
50
+ | --- | --- |
51
+ | Tag | — |
52
+ | Ref | — |
53
+ | Head | — |
54
+
55
+ ## Findings
56
+
57
+ | Code | Subject | Statement |
58
+ | --- | --- | --- |
59
+ | `HOOK_ENFORCED` | `pre-push` | the hook ran and was not bypassed |
60
+ | `BOUNDARY_CLEAN` | `api.core` | nothing dirty lay outside the published boundary |
61
+ | `REMOTE_FAST_FORWARDED` | `@workspaces/be` | the ref advanced from the remote head it carried |
@@ -0,0 +1,9 @@
1
+ {
2
+ "kind": "independent-critique",
3
+ "title": "^# independent-critique — [a-z0-9][a-z0-9-]*$",
4
+ "sections": [
5
+ { "heading": "^## Execution$", "table": "| Field | Value |", "rows": ["Reviewer execution", "Inherited turns", "Given"], "cell": { "Value": "\\S" } },
6
+ { "heading": "^## Attacks$", "table": "| Adverse path | Attack | Resolution | Verdict |", "exactRows": 8, "rows": ["partial-failure", "retry-idempotency", "concurrency", "stale-state", "deletion", "recovery", "dependency-outage", "rollback"], "cell": { "Attack": "\\S", "Resolution": "\\S", "Verdict": "^(holds|fails)$" } },
7
+ { "heading": "^## Verdict$", "table": "| Field | Value |", "rows": ["Selection"], "cell": { "Value": "^(keep|return)$" } }
8
+ ]
9
+ }
@@ -0,0 +1,28 @@
1
+ # independent-critique — decision-id
2
+
3
+ ## Execution
4
+
5
+ | Field | Value |
6
+ | --- | --- |
7
+ | Reviewer execution | the fresh execution's own reference, never the author's |
8
+ | Inherited turns | none |
9
+ | Given | `response/data/stack-model.json` and the claims it makes; no rationale |
10
+
11
+ ## Attacks
12
+
13
+ | Adverse path | Attack | Resolution | Verdict |
14
+ | --- | --- | --- | --- |
15
+ | partial-failure | what breaks when one side completes | how the selected design survives it | holds |
16
+ | retry-idempotency | what a repeated call does | how the design makes it idempotent | holds |
17
+ | concurrency | what two writers do at once | how ownership serialises them | holds |
18
+ | stale-state | what a reader sees after a change | how staleness is bounded | holds |
19
+ | deletion | what deleting the owner's data leaves behind | how readers cope | holds |
20
+ | recovery | what restoring from backup loses | what the restore path proves | holds |
21
+ | dependency-outage | what an unavailable dependency does | how the boundary degrades | holds |
22
+ | rollback | what undoing the migration costs | the rollback step and its proof | holds |
23
+
24
+ ## Verdict
25
+
26
+ | Field | Value |
27
+ | --- | --- |
28
+ | Selection | keep |
@@ -0,0 +1,35 @@
1
+ {
2
+ "$id": "kind:inventory",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": ["treeFingerprint", "classNames", "ruleIds", "gaps"],
6
+ "properties": {
7
+ "treeFingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
8
+ "classNames": {
9
+ "type": "array",
10
+ "maxItems": 512,
11
+ "uniqueItems": true,
12
+ "items": { "type": "string", "minLength": 1, "pattern": "^[A-Za-z0-9_:./>\\[\\]-]+$" }
13
+ },
14
+ "ruleIds": {
15
+ "type": "array",
16
+ "maxItems": 256,
17
+ "uniqueItems": true,
18
+ "items": { "type": "string", "pattern": "^[A-Z][A-Z0-9-]*-[0-9]+$" }
19
+ },
20
+ "gaps": {
21
+ "type": "array",
22
+ "maxItems": 128,
23
+ "items": {
24
+ "type": "object",
25
+ "additionalProperties": false,
26
+ "required": ["nodePath", "property", "missingPath"],
27
+ "properties": {
28
+ "nodePath": { "type": "string", "minLength": 1 },
29
+ "property": { "type": "string", "minLength": 1 },
30
+ "missingPath": { "type": "string", "minLength": 1 }
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "$id": "kind:model",
3
+ "title": "The one published head of one feature: the promise, its lineage, and the fingerprints the head is frozen behind.",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "featureId",
8
+ "mode",
9
+ "headRef",
10
+ "headFingerprint",
11
+ "state",
12
+ "promise",
13
+ "lineage",
14
+ "claimsFingerprint",
15
+ "coverageFingerprint",
16
+ "reconciliation"
17
+ ],
18
+ "properties": {
19
+ "featureId": { "$ref": "#/$defs/identifier" },
20
+ "mode": { "enum": ["model", "reconcile"] },
21
+ "headRef": { "type": "string", "minLength": 1, "maxLength": 1024 },
22
+ "headFingerprint": { "$ref": "#/$defs/fingerprint" },
23
+ "state": { "$ref": "#/$defs/authorityState" },
24
+ "promise": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "required": ["statement", "actorStatement", "eligibilityStatement"],
28
+ "properties": {
29
+ "statement": { "type": "string", "minLength": 1, "maxLength": 4096 },
30
+ "actorStatement": { "type": "string", "minLength": 1, "maxLength": 4096 },
31
+ "eligibilityStatement": { "type": "string", "minLength": 1, "maxLength": 4096 }
32
+ }
33
+ },
34
+ "lineage": {
35
+ "type": "object",
36
+ "additionalProperties": false,
37
+ "required": ["previousHeadRef", "previousState", "transition"],
38
+ "properties": {
39
+ "previousHeadRef": {
40
+ "oneOf": [{ "type": "string", "minLength": 1, "maxLength": 1024 }, { "type": "null" }]
41
+ },
42
+ "previousState": {
43
+ "oneOf": [{ "$ref": "#/$defs/authorityState" }, { "type": "null" }]
44
+ },
45
+ "transition": {
46
+ "enum": [
47
+ "absent->pending",
48
+ "pending->in-progress",
49
+ "pending->rejected",
50
+ "in-progress->implemented",
51
+ "in-progress->rejected",
52
+ "implemented->in-progress",
53
+ "implemented->rejected",
54
+ "rejected->pending"
55
+ ]
56
+ }
57
+ }
58
+ },
59
+ "claimsFingerprint": { "$ref": "#/$defs/fingerprint" },
60
+ "coverageFingerprint": {
61
+ "oneOf": [{ "$ref": "#/$defs/fingerprint" }, { "type": "null" }]
62
+ },
63
+ "reconciliation": {
64
+ "oneOf": [{ "$ref": "#/$defs/reconciliation" }, { "type": "null" }]
65
+ }
66
+ },
67
+ "$defs": {
68
+ "identifier": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
69
+ "fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
70
+ "authorityState": { "enum": ["pending", "in-progress", "implemented", "rejected"] },
71
+ "reconciliation": {
72
+ "type": "object",
73
+ "additionalProperties": false,
74
+ "required": ["deliveredEvidenceRefs", "discrepancies"],
75
+ "properties": {
76
+ "deliveredEvidenceRefs": {
77
+ "type": "array",
78
+ "minItems": 1,
79
+ "maxItems": 256,
80
+ "uniqueItems": true,
81
+ "items": { "type": "string", "minLength": 1, "maxLength": 1024 }
82
+ },
83
+ "discrepancies": {
84
+ "type": "array",
85
+ "maxItems": 128,
86
+ "items": {
87
+ "type": "object",
88
+ "additionalProperties": false,
89
+ "required": ["dimension", "statement"],
90
+ "properties": {
91
+ "dimension": { "$ref": "#/$defs/identifier" },
92
+ "statement": { "type": "string", "minLength": 1, "maxLength": 4096 }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }