harness-everything 0.33.0 → 0.35.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 (297) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +48 -0
  4. package/ci/fixtures/doc-lifecycle/prd-revisions/config.json +9 -0
  5. package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/config.json +20 -0
  6. package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/expected.json +12 -0
  7. package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/invalid-fork/docs/prd/graph/r001.md +20 -0
  8. package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/invalid-fork/docs/prd/graph/r002.md +26 -0
  9. package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/invalid-fork/docs/prd/graph/r003.md +26 -0
  10. package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/valid/docs/prd/graph/r001.md +20 -0
  11. package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/valid/docs/prd/graph/r002.md +26 -0
  12. package/ci/fixtures/doc-lifecycle/prd-revisions/ten-reqs/r001.body.md +39 -0
  13. package/ci/fixtures/doc-lifecycle/prd-revisions/ten-reqs/r002-dropped.body.md +35 -0
  14. package/ci/fixtures/doc-lifecycle/prd-revisions/ten-reqs/r002-incomplete.body.md +37 -0
  15. package/ci/fixtures/doc-lifecycle/prd-revisions/ten-reqs/r002-one-replaced.body.md +39 -0
  16. package/ci/fixtures/doc-lifecycle/prd-revisions/ten-reqs/r002-overlap.body.md +39 -0
  17. package/ci/fixtures/doc-lifecycle/scenarios/active-to-active/config.json +1 -0
  18. package/ci/fixtures/doc-lifecycle/scenarios/active-to-active/docs/adr/GRPH-001.md +8 -0
  19. package/ci/fixtures/doc-lifecycle/scenarios/active-to-active/docs/adr/GRPH-002.md +9 -0
  20. package/ci/fixtures/doc-lifecycle/scenarios/active-to-active/expected.json +1 -0
  21. package/ci/fixtures/doc-lifecycle/scenarios/active-to-active-mismatch/config.json +1 -0
  22. package/ci/fixtures/doc-lifecycle/scenarios/active-to-active-mismatch/docs/adr/GRPH-001.md +8 -0
  23. package/ci/fixtures/doc-lifecycle/scenarios/active-to-active-mismatch/docs/adr/GRPH-002.md +9 -0
  24. package/ci/fixtures/doc-lifecycle/scenarios/active-to-active-mismatch/expected.json +1 -0
  25. package/ci/fixtures/doc-lifecycle/scenarios/active-to-legacy/config.json +1 -0
  26. package/ci/fixtures/doc-lifecycle/scenarios/active-to-legacy/docs/adr/GRPH-010.md +9 -0
  27. package/ci/fixtures/doc-lifecycle/scenarios/active-to-legacy/docs/adr/legacy/GRPH-007.md +8 -0
  28. package/ci/fixtures/doc-lifecycle/scenarios/active-to-legacy/expected.json +1 -0
  29. package/ci/fixtures/doc-lifecycle/scenarios/alias-rename/config.json +1 -0
  30. package/ci/fixtures/doc-lifecycle/scenarios/alias-rename/docs/adr/GRAPH-007.md +9 -0
  31. package/ci/fixtures/doc-lifecycle/scenarios/alias-rename/docs/adr/legacy/GRPH-007.md +8 -0
  32. package/ci/fixtures/doc-lifecycle/scenarios/alias-rename/expected.json +1 -0
  33. package/ci/fixtures/doc-lifecycle/scenarios/duplicate-legacy/config.json +1 -0
  34. package/ci/fixtures/doc-lifecycle/scenarios/duplicate-legacy/docs/adr/legacy/v1/GRPH-007.md +8 -0
  35. package/ci/fixtures/doc-lifecycle/scenarios/duplicate-legacy/docs/adr/legacy/v2/GRPH-007.md +8 -0
  36. package/ci/fixtures/doc-lifecycle/scenarios/duplicate-legacy/expected.json +1 -0
  37. package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/config.json +1 -0
  38. package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/docs/adr/GRPH-003.md +9 -0
  39. package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/docs/adr/GRPH-004.md +9 -0
  40. package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/docs/adr/GRPH-005.md +9 -0
  41. package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/docs/adr/GRPH-006.md +9 -0
  42. package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/docs/adr/GRPH-007.md +9 -0
  43. package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/expected.json +1 -0
  44. package/ci/fixtures/doc-lifecycle/scenarios/pending-edge/config.json +1 -0
  45. package/ci/fixtures/doc-lifecycle/scenarios/pending-edge/docs/adr/GRPH-020.md +8 -0
  46. package/ci/fixtures/doc-lifecycle/scenarios/pending-edge/docs/adr/GRPH-021.md +9 -0
  47. package/ci/fixtures/doc-lifecycle/scenarios/pending-edge/expected.json +1 -0
  48. package/ci/fixtures/doc-lifecycle/scenarios/recorded-conflict/config.json +1 -0
  49. package/ci/fixtures/doc-lifecycle/scenarios/recorded-conflict/docs/adr/GRPH-003.md +8 -0
  50. package/ci/fixtures/doc-lifecycle/scenarios/recorded-conflict/docs/prd/graph.md +10 -0
  51. package/ci/fixtures/doc-lifecycle/scenarios/recorded-conflict/expected.json +1 -0
  52. package/ci/fixtures/doc-obligations/derive/acceptance-only/base/docs/prd/graph.md +22 -0
  53. package/ci/fixtures/doc-obligations/derive/acceptance-only/candidate/docs/prd/graph.md +22 -0
  54. package/ci/fixtures/doc-obligations/derive/alias-only/base/docs/prd/graph.md +24 -0
  55. package/ci/fixtures/doc-obligations/derive/alias-only/candidate/docs/prd/graph.md +24 -0
  56. package/ci/fixtures/doc-obligations/derive/assertion-no-revision/base/ci/mechanism-lint.test.js +2 -0
  57. package/ci/fixtures/doc-obligations/derive/assertion-no-revision/base/docs/prd/graph.md +20 -0
  58. package/ci/fixtures/doc-obligations/derive/assertion-no-revision/candidate/ci/mechanism-lint.test.js +2 -0
  59. package/ci/fixtures/doc-obligations/derive/assertion-no-revision/candidate/docs/prd/graph.md +20 -0
  60. package/ci/fixtures/doc-obligations/derive/assertion-no-revision-attested/base/ci/mechanism-lint.test.js +2 -0
  61. package/ci/fixtures/doc-obligations/derive/assertion-no-revision-attested/base/docs/prd/graph.md +20 -0
  62. package/ci/fixtures/doc-obligations/derive/assertion-no-revision-attested/candidate/ci/mechanism-lint.test.js +2 -0
  63. package/ci/fixtures/doc-obligations/derive/assertion-no-revision-attested/candidate/docs/prd/graph.md +20 -0
  64. package/ci/fixtures/doc-obligations/derive/assertion-no-revision-attested/inventory.json +7 -0
  65. package/ci/fixtures/doc-obligations/derive/attribution-impossible/base/ci/mechanism-open.test.js +3 -0
  66. package/ci/fixtures/doc-obligations/derive/attribution-impossible/candidate/ci/mechanism-open.test.js.fixture +2 -0
  67. package/ci/fixtures/doc-obligations/derive/clause-context-typo/base/docs/prd/graph.md +24 -0
  68. package/ci/fixtures/doc-obligations/derive/clause-context-typo/candidate/docs/prd/graph.md +24 -0
  69. package/ci/fixtures/doc-obligations/derive/code-only/base/src/lint.js +1 -0
  70. package/ci/fixtures/doc-obligations/derive/code-only/candidate/src/lint.js +1 -0
  71. package/ci/fixtures/doc-obligations/derive/comment-only-test/base/ci/mechanism-lint.test.js +2 -0
  72. package/ci/fixtures/doc-obligations/derive/comment-only-test/candidate/ci/mechanism-lint.test.js +2 -0
  73. package/ci/fixtures/doc-obligations/derive/computed-member-assert/base/ci/mechanism-c1.test.js +2 -0
  74. package/ci/fixtures/doc-obligations/derive/computed-member-assert/candidate/ci/mechanism-c1.test.js +2 -0
  75. package/ci/fixtures/doc-obligations/derive/computed-member-variable/base/ci/mechanism-c1.test.js +2 -0
  76. package/ci/fixtures/doc-obligations/derive/computed-member-variable/candidate/ci/mechanism-c1.test.js +2 -0
  77. package/ci/fixtures/doc-obligations/derive/config.json +11 -0
  78. package/ci/fixtures/doc-obligations/derive/decision-fence-backtick/base/docs/adr/GRPH-010.md +20 -0
  79. package/ci/fixtures/doc-obligations/derive/decision-fence-backtick/candidate/docs/adr/GRPH-010.md +20 -0
  80. package/ci/fixtures/doc-obligations/derive/decision-fence-tilde/base/docs/adr/GRPH-010.md +20 -0
  81. package/ci/fixtures/doc-obligations/derive/decision-fence-tilde/candidate/docs/adr/GRPH-010.md +20 -0
  82. package/ci/fixtures/doc-obligations/derive/deep-strict-equal/base/ci/mechanism-s1.test.js +2 -0
  83. package/ci/fixtures/doc-obligations/derive/deep-strict-equal/candidate/ci/mechanism-s1.test.js +2 -0
  84. package/ci/fixtures/doc-obligations/derive/deleted-adr/base/docs/adr/GRPH-008.md +14 -0
  85. package/ci/fixtures/doc-obligations/derive/deleted-prd/base/ci/mechanism-lint.test.js +2 -0
  86. package/ci/fixtures/doc-obligations/derive/deleted-prd/base/docs/prd/graph.md +20 -0
  87. package/ci/fixtures/doc-obligations/derive/deleted-prd/candidate/ci/mechanism-lint.test.js +2 -0
  88. package/ci/fixtures/doc-obligations/derive/derived-rename/base/docs/index.md +3 -0
  89. package/ci/fixtures/doc-obligations/derive/derived-rename/base/src/model/a.js +1 -0
  90. package/ci/fixtures/doc-obligations/derive/derived-rename/candidate/docs/index.md +3 -0
  91. package/ci/fixtures/doc-obligations/derive/derived-rename/candidate/src/model/b.js +1 -0
  92. package/ci/fixtures/doc-obligations/derive/derived-rename/config.json +7 -0
  93. package/ci/fixtures/doc-obligations/derive/derived-two-outputs/base/docs/index.md +3 -0
  94. package/ci/fixtures/doc-obligations/derive/derived-two-outputs/base/docs/model-summary.md +3 -0
  95. package/ci/fixtures/doc-obligations/derive/derived-two-outputs/base/src/model.js +1 -0
  96. package/ci/fixtures/doc-obligations/derive/derived-two-outputs/candidate/docs/index.md +3 -0
  97. package/ci/fixtures/doc-obligations/derive/derived-two-outputs/candidate/docs/model-summary.md +3 -0
  98. package/ci/fixtures/doc-obligations/derive/derived-two-outputs/candidate/src/model.js +1 -0
  99. package/ci/fixtures/doc-obligations/derive/derived-two-outputs/config.json +10 -0
  100. package/ci/fixtures/doc-obligations/derive/distinct-logical-prds/base/ci/mechanism-lint.test.js +2 -0
  101. package/ci/fixtures/doc-obligations/derive/distinct-logical-prds/base/docs/prd/graph-one/r001.md +19 -0
  102. package/ci/fixtures/doc-obligations/derive/distinct-logical-prds/base/docs/prd/graph-two/r001.md +19 -0
  103. package/ci/fixtures/doc-obligations/derive/distinct-logical-prds/candidate/ci/mechanism-lint.test.js +2 -0
  104. package/ci/fixtures/doc-obligations/derive/distinct-logical-prds/candidate/docs/prd/graph-one/r001.md +19 -0
  105. package/ci/fixtures/doc-obligations/derive/distinct-logical-prds/candidate/docs/prd/graph-two/r001.md +19 -0
  106. package/ci/fixtures/doc-obligations/derive/docs-only/base/docs/reference/guide.md +3 -0
  107. package/ci/fixtures/doc-obligations/derive/docs-only/candidate/docs/reference/guide.md +3 -0
  108. package/ci/fixtures/doc-obligations/derive/dup-req-id/base/ci/mechanism-lint.test.js +2 -0
  109. package/ci/fixtures/doc-obligations/derive/dup-req-id/base/docs/prd/graph-a.md +20 -0
  110. package/ci/fixtures/doc-obligations/derive/dup-req-id/base/docs/prd/graph-b.md +20 -0
  111. package/ci/fixtures/doc-obligations/derive/dup-req-id/candidate/ci/mechanism-lint.test.js +2 -0
  112. package/ci/fixtures/doc-obligations/derive/dup-req-id/candidate/docs/prd/graph-a.md +20 -0
  113. package/ci/fixtures/doc-obligations/derive/dup-req-id/candidate/docs/prd/graph-b.md +20 -0
  114. package/ci/fixtures/doc-obligations/derive/expect-computed-literal/base/ci/mechanism-e.test.js +2 -0
  115. package/ci/fixtures/doc-obligations/derive/expect-computed-literal/candidate/ci/mechanism-e.test.js +2 -0
  116. package/ci/fixtures/doc-obligations/derive/expect-computed-matcher/base/ci/mechanism-e.test.js +2 -0
  117. package/ci/fixtures/doc-obligations/derive/expect-computed-matcher/candidate/ci/mechanism-e.test.js +2 -0
  118. package/ci/fixtures/doc-obligations/derive/expect-not-to-equal/base/ci/mechanism-s1.test.js +2 -0
  119. package/ci/fixtures/doc-obligations/derive/expect-not-to-equal/candidate/ci/mechanism-s1.test.js +2 -0
  120. package/ci/fixtures/doc-obligations/derive/formatting-only-test/base/ci/mechanism-lint.test.js +2 -0
  121. package/ci/fixtures/doc-obligations/derive/formatting-only-test/candidate/ci/mechanism-lint.test.js +2 -0
  122. package/ci/fixtures/doc-obligations/derive/helper-delegated-test/base/docs/prd/graph.md +18 -0
  123. package/ci/fixtures/doc-obligations/derive/helper-delegated-test/candidate/ci/mechanism-helper.test.js +1 -0
  124. package/ci/fixtures/doc-obligations/derive/helper-delegated-test/candidate/docs/prd/graph.md +18 -0
  125. package/ci/fixtures/doc-obligations/derive/historical-only-req/base/ci/mechanism-lint.test.js +2 -0
  126. package/ci/fixtures/doc-obligations/derive/historical-only-req/base/docs/prd/graph/r001.md +25 -0
  127. package/ci/fixtures/doc-obligations/derive/historical-only-req/candidate/ci/mechanism-lint.test.js +2 -0
  128. package/ci/fixtures/doc-obligations/derive/historical-only-req/candidate/docs/prd/graph/r001.md +25 -0
  129. package/ci/fixtures/doc-obligations/derive/historical-only-req/candidate/docs/prd/graph/r002.md +23 -0
  130. package/ci/fixtures/doc-obligations/derive/in-place-current/base/ci/mechanism-inplace.test.js +2 -0
  131. package/ci/fixtures/doc-obligations/derive/in-place-current/base/docs/prd/graph/r001.md +20 -0
  132. package/ci/fixtures/doc-obligations/derive/in-place-current/base/docs/prd/graph/r002.md +26 -0
  133. package/ci/fixtures/doc-obligations/derive/in-place-current/candidate/ci/mechanism-inplace.test.js +2 -0
  134. package/ci/fixtures/doc-obligations/derive/in-place-current/candidate/docs/prd/graph/r001.md +20 -0
  135. package/ci/fixtures/doc-obligations/derive/in-place-current/candidate/docs/prd/graph/r002.md +28 -0
  136. package/ci/fixtures/doc-obligations/derive/in-place-historical/base/ci/mechanism-inplace.test.js +2 -0
  137. package/ci/fixtures/doc-obligations/derive/in-place-historical/base/docs/prd/graph/r001.md +20 -0
  138. package/ci/fixtures/doc-obligations/derive/in-place-historical/base/docs/prd/graph/r002.md +26 -0
  139. package/ci/fixtures/doc-obligations/derive/in-place-historical/candidate/ci/mechanism-inplace.test.js +2 -0
  140. package/ci/fixtures/doc-obligations/derive/in-place-historical/candidate/docs/prd/graph/r001.md +22 -0
  141. package/ci/fixtures/doc-obligations/derive/in-place-historical/candidate/docs/prd/graph/r002.md +26 -0
  142. package/ci/fixtures/doc-obligations/derive/invalid-clause/base/docs/prd/graph.md +24 -0
  143. package/ci/fixtures/doc-obligations/derive/invalid-clause/candidate/docs/prd/graph.md +24 -0
  144. package/ci/fixtures/doc-obligations/derive/legacy-untagged-fallback/base/ci/mechanism-legacy.test.js +6 -0
  145. package/ci/fixtures/doc-obligations/derive/legacy-untagged-fallback/candidate/ci/mechanism-legacy.test.js +6 -0
  146. package/ci/fixtures/doc-obligations/derive/literal-whitespace-assert/base/ci/mechanism-lint.test.js +2 -0
  147. package/ci/fixtures/doc-obligations/derive/literal-whitespace-assert/candidate/ci/mechanism-lint.test.js +2 -0
  148. package/ci/fixtures/doc-obligations/derive/malformed-citation-attribution/base/ci/mechanism-bad.test.js +6 -0
  149. package/ci/fixtures/doc-obligations/derive/malformed-citation-attribution/candidate/ci/mechanism-bad.test.js.fixture +6 -0
  150. package/ci/fixtures/doc-obligations/derive/malformed-prd/base/ci/mechanism-lint.test.js +2 -0
  151. package/ci/fixtures/doc-obligations/derive/malformed-prd/base/docs/prd/graph.md +20 -0
  152. package/ci/fixtures/doc-obligations/derive/malformed-prd/candidate/ci/mechanism-lint.test.js +2 -0
  153. package/ci/fixtures/doc-obligations/derive/malformed-prd/candidate/docs/prd/graph.md +11 -0
  154. package/ci/fixtures/doc-obligations/derive/missing-approval/base/docs/prd/graph.md +20 -0
  155. package/ci/fixtures/doc-obligations/derive/missing-approval/candidate/docs/prd/graph.md +20 -0
  156. package/ci/fixtures/doc-obligations/derive/mixed-attribution/base/ci/mechanism-mixed.test.js +6 -0
  157. package/ci/fixtures/doc-obligations/derive/mixed-attribution/base/docs/prd/graph.md +24 -0
  158. package/ci/fixtures/doc-obligations/derive/mixed-attribution/candidate/ci/mechanism-mixed.test.js.fixture +5 -0
  159. package/ci/fixtures/doc-obligations/derive/mixed-attribution/candidate/docs/prd/graph.md +24 -0
  160. package/ci/fixtures/doc-obligations/derive/mixed-docs-code/base/ci/mechanism-lint.test.js +2 -0
  161. package/ci/fixtures/doc-obligations/derive/mixed-docs-code/base/docs/reference/guide.md +3 -0
  162. package/ci/fixtures/doc-obligations/derive/mixed-docs-code/base/src/lint.js +1 -0
  163. package/ci/fixtures/doc-obligations/derive/mixed-docs-code/candidate/ci/mechanism-lint.test.js +2 -0
  164. package/ci/fixtures/doc-obligations/derive/mixed-docs-code/candidate/docs/reference/guide.md +3 -0
  165. package/ci/fixtures/doc-obligations/derive/mixed-docs-code/candidate/src/lint.js +1 -0
  166. package/ci/fixtures/doc-obligations/derive/multiline-comment-only/base/ci/mechanism-multi.test.js +5 -0
  167. package/ci/fixtures/doc-obligations/derive/multiline-comment-only/candidate/ci/mechanism-multi.test.js +5 -0
  168. package/ci/fixtures/doc-obligations/derive/multiline-expect/base/ci/mechanism-multi.test.js +6 -0
  169. package/ci/fixtures/doc-obligations/derive/multiline-expect/candidate/ci/mechanism-multi.test.js +6 -0
  170. package/ci/fixtures/doc-obligations/derive/multiline-formatting-only/base/ci/mechanism-multi.test.js +5 -0
  171. package/ci/fixtures/doc-obligations/derive/multiline-formatting-only/candidate/ci/mechanism-multi.test.js +5 -0
  172. package/ci/fixtures/doc-obligations/derive/multiline-numeric-prd/base/ci/mechanism-multi.test.js +5 -0
  173. package/ci/fixtures/doc-obligations/derive/multiline-numeric-prd/base/docs/prd/graph.md +18 -0
  174. package/ci/fixtures/doc-obligations/derive/multiline-numeric-prd/candidate/ci/mechanism-multi.test.js +5 -0
  175. package/ci/fixtures/doc-obligations/derive/multiline-numeric-prd/candidate/docs/prd/graph.md +18 -0
  176. package/ci/fixtures/doc-obligations/derive/multiline-strictequal/base/ci/mechanism-multi.test.js +5 -0
  177. package/ci/fixtures/doc-obligations/derive/multiline-strictequal/candidate/ci/mechanism-multi.test.js +5 -0
  178. package/ci/fixtures/doc-obligations/derive/new-prd/candidate/docs/prd/graph-new.md +20 -0
  179. package/ci/fixtures/doc-obligations/derive/new-reference/candidate/docs/reference/new-note.md +3 -0
  180. package/ci/fixtures/doc-obligations/derive/new-req-test/candidate/ci/mechanism-new.test.js +2 -0
  181. package/ci/fixtures/doc-obligations/derive/orphan-req-test/base/ci/mechanism-lint.test.js +2 -0
  182. package/ci/fixtures/doc-obligations/derive/orphan-req-test/base/docs/prd/graph.md +20 -0
  183. package/ci/fixtures/doc-obligations/derive/orphan-req-test/candidate/ci/mechanism-lint.test.js +2 -0
  184. package/ci/fixtures/doc-obligations/derive/orphan-req-test/candidate/docs/prd/graph.md +20 -0
  185. package/ci/fixtures/doc-obligations/derive/partial-revision/base/ci/mechanism-partial.test.js +5 -0
  186. package/ci/fixtures/doc-obligations/derive/partial-revision/base/docs/prd/graph/r001.md +24 -0
  187. package/ci/fixtures/doc-obligations/derive/partial-revision/candidate/ci/mechanism-partial.test.js +5 -0
  188. package/ci/fixtures/doc-obligations/derive/partial-revision/candidate/docs/prd/graph/r001.md +24 -0
  189. package/ci/fixtures/doc-obligations/derive/partial-revision/candidate/docs/prd/graph/r002.md +26 -0
  190. package/ci/fixtures/doc-obligations/derive/regex-literal-whitespace/base/ci/mechanism-lint.test.js +2 -0
  191. package/ci/fixtures/doc-obligations/derive/regex-literal-whitespace/candidate/ci/mechanism-lint.test.js +2 -0
  192. package/ci/fixtures/doc-obligations/derive/rename/base/docs/reference/old-guide.md +3 -0
  193. package/ci/fixtures/doc-obligations/derive/rename/candidate/docs/reference/guide.md +3 -0
  194. package/ci/fixtures/doc-obligations/derive/replacement-target/base/docs/prd/graph.md +24 -0
  195. package/ci/fixtures/doc-obligations/derive/replacement-target/candidate/docs/prd/graph.md +24 -0
  196. package/ci/fixtures/doc-obligations/derive/req-context-typo/base/docs/prd/graph.md +26 -0
  197. package/ci/fixtures/doc-obligations/derive/req-context-typo/candidate/docs/prd/graph.md +26 -0
  198. package/ci/fixtures/doc-obligations/derive/req-revision/base/ci/mechanism-lint.test.js +2 -0
  199. package/ci/fixtures/doc-obligations/derive/req-revision/base/docs/prd/graph/r001.md +20 -0
  200. package/ci/fixtures/doc-obligations/derive/req-revision/candidate/ci/mechanism-lint.test.js +2 -0
  201. package/ci/fixtures/doc-obligations/derive/req-revision/candidate/docs/prd/graph/r001.md +20 -0
  202. package/ci/fixtures/doc-obligations/derive/req-revision/candidate/docs/prd/graph/r002.md +28 -0
  203. package/ci/fixtures/doc-obligations/derive/req-revision-in-place/base/docs/prd/graph/r001.md +20 -0
  204. package/ci/fixtures/doc-obligations/derive/req-revision-in-place/candidate/docs/prd/graph/r001.md +22 -0
  205. package/ci/fixtures/doc-obligations/derive/retained-revision-chain/base/ci/mechanism-lint.test.js +2 -0
  206. package/ci/fixtures/doc-obligations/derive/retained-revision-chain/base/docs/prd/graph/r001.md +20 -0
  207. package/ci/fixtures/doc-obligations/derive/retained-revision-chain/base/docs/prd/graph/r002.md +26 -0
  208. package/ci/fixtures/doc-obligations/derive/retained-revision-chain/candidate/ci/mechanism-lint.test.js +2 -0
  209. package/ci/fixtures/doc-obligations/derive/retained-revision-chain/candidate/docs/prd/graph/r001.md +20 -0
  210. package/ci/fixtures/doc-obligations/derive/retained-revision-chain/candidate/docs/prd/graph/r002.md +26 -0
  211. package/ci/fixtures/doc-obligations/derive/string-literal-tag/base/ci/mechanism-str.test.js +2 -0
  212. package/ci/fixtures/doc-obligations/derive/string-literal-tag/candidate/ci/mechanism-str.test.js +2 -0
  213. package/ci/fixtures/doc-obligations/derive/tag-inside-test-call/base/ci/mechanism-inside.test.js +5 -0
  214. package/ci/fixtures/doc-obligations/derive/tag-inside-test-call/candidate/ci/mechanism-inside.test.js +5 -0
  215. package/ci/fixtures/doc-obligations/derive/tagged-test/base/ci/mechanism-lint.test.js +2 -0
  216. package/ci/fixtures/doc-obligations/derive/tagged-test/candidate/ci/mechanism-lint.test.js +2 -0
  217. package/ci/fixtures/doc-obligations/derive/tagged-test-prd/base/ci/mechanism-lint.test.js +2 -0
  218. package/ci/fixtures/doc-obligations/derive/tagged-test-prd/base/docs/prd/graph.md +20 -0
  219. package/ci/fixtures/doc-obligations/derive/tagged-test-prd/candidate/ci/mechanism-lint.test.js +2 -0
  220. package/ci/fixtures/doc-obligations/derive/tagged-test-prd/candidate/docs/prd/graph.md +20 -0
  221. package/ci/fixtures/doc-obligations/derive/template-literal-tag/base/ci/mechanism-tpl.test.js +4 -0
  222. package/ci/fixtures/doc-obligations/derive/template-literal-tag/base/docs/prd/graph.md +18 -0
  223. package/ci/fixtures/doc-obligations/derive/template-literal-tag/candidate/ci/mechanism-tpl.test.js +4 -0
  224. package/ci/fixtures/doc-obligations/derive/template-literal-tag/candidate/docs/prd/graph.md +18 -0
  225. package/ci/fixtures/doc-obligations/derive/template-literal-whitespace/base/ci/mechanism-lint.test.js +2 -0
  226. package/ci/fixtures/doc-obligations/derive/template-literal-whitespace/candidate/ci/mechanism-lint.test.js +2 -0
  227. package/ci/fixtures/doc-obligations/derive/title-only-rename/base/ci/mechanism-title.test.js +3 -0
  228. package/ci/fixtures/doc-obligations/derive/title-only-rename/candidate/ci/mechanism-title.test.js +3 -0
  229. package/ci/fixtures/doc-obligations/derive/title-only-unrelated-computed/base/ci/mechanism-u.test.js +4 -0
  230. package/ci/fixtures/doc-obligations/derive/title-only-unrelated-computed/candidate/ci/mechanism-u.test.js +4 -0
  231. package/ci/fixtures/doc-obligations/derive/top-level-no-file-tag/base/ci/mechanism-top.test.js +4 -0
  232. package/ci/fixtures/doc-obligations/derive/top-level-no-file-tag/candidate/ci/mechanism-top.test.js +4 -0
  233. package/ci/fixtures/doc-obligations/derive/trailing-comment-test/base/ci/mechanism-lint.test.js +2 -0
  234. package/ci/fixtures/doc-obligations/derive/trailing-comment-test/base/docs/prd/graph.md +20 -0
  235. package/ci/fixtures/doc-obligations/derive/trailing-comment-test/candidate/ci/mechanism-lint.test.js +2 -0
  236. package/ci/fixtures/doc-obligations/derive/trailing-comment-test/candidate/docs/prd/graph.md +20 -0
  237. package/ci/fixtures/doc-obligations/derive/two-tests-one-file/base/ci/mechanism-two.test.js +6 -0
  238. package/ci/fixtures/doc-obligations/derive/two-tests-one-file/base/docs/prd/graph.md +24 -0
  239. package/ci/fixtures/doc-obligations/derive/two-tests-one-file/candidate/ci/mechanism-two.test.js +6 -0
  240. package/ci/fixtures/doc-obligations/derive/two-tests-one-file/candidate/docs/prd/graph.md +24 -0
  241. package/ci/fixtures/doc-obligations/derive/typo-context/base/docs/adr/GRPH-007.md +14 -0
  242. package/ci/fixtures/doc-obligations/derive/typo-context/candidate/docs/adr/GRPH-007.md +14 -0
  243. package/ci/fixtures/doc-obligations/derive/typo-decision/base/docs/adr/GRPH-007.md +14 -0
  244. package/ci/fixtures/doc-obligations/derive/typo-decision/candidate/docs/adr/GRPH-007.md +14 -0
  245. package/ci/fixtures/doc-obligations/derive/unbalanced-statement/base/ci/mechanism-multi.test.js +5 -0
  246. package/ci/fixtures/doc-obligations/derive/unbalanced-statement/candidate/ci/mechanism-multi.test.js.fixture +4 -0
  247. package/ci/fixtures/doc-obligations/derive/unknown-adr/base/docs/adr/GRPH-009.md +14 -0
  248. package/ci/fixtures/doc-obligations/derive/unknown-adr/candidate/docs/adr/GRPH-009.md +12 -0
  249. package/ci/fixtures/doc-obligations/derive/unsupported-assertion-syntax/base/ci/mechanism-s1.test.js +2 -0
  250. package/ci/fixtures/doc-obligations/derive/unsupported-assertion-syntax/candidate/ci/mechanism-s1.test.js +2 -0
  251. package/ci/fixtures/doc-obligations/derive/whitespace-only-test/base/ci/mechanism-lint.test.js +2 -0
  252. package/ci/fixtures/doc-obligations/derive/whitespace-only-test/candidate/ci/mechanism-lint.test.js +2 -0
  253. package/ci/fixtures/doc-obligations/evidence/base/docs/adr/GRPH-007.md +15 -0
  254. package/ci/fixtures/doc-obligations/evidence/base/docs/prd/PRD-GRPH-001.md +25 -0
  255. package/ci/fixtures/doc-obligations/evidence/candidate/docs/adr/GRPH-007.md +15 -0
  256. package/ci/fixtures/doc-obligations/evidence/candidate/docs/prd/PRD-GRPH-001.md +25 -0
  257. package/ci/mechanism-2aw-project-docs-config.test.js +759 -0
  258. package/ci/mechanism-2ax-doc-lifecycle.test.js +1061 -0
  259. package/ci/mechanism-2ay-prd-revisions.test.js +2891 -0
  260. package/ci/mechanism-325-3a-cross.test.js +795 -0
  261. package/ci/mechanism-325-3a-doc-evidence.test.js +1172 -0
  262. package/ci/mechanism-325-3a-doc-obligations.test.js +742 -0
  263. package/ci/mechanism-pr334-haiku.test.js +298 -0
  264. package/ci/mechanism-pr334-luna.test.js +192 -0
  265. package/ci/mechanism-pr334-opencode.test.js +313 -0
  266. package/ci/mechanism-pr334-r2-boundary.test.js +239 -0
  267. package/ci/mechanism-pr334-r2-resolution.test.js +243 -0
  268. package/ci/mechanism-pr334-r2-scope.test.js +127 -0
  269. package/ci/mechanism-pr334-r3-boundary.test.js +356 -0
  270. package/ci/mechanism-pr334-r3-citations.test.js +205 -0
  271. package/ci/mechanism-pr334-r3-headings.test.js +268 -0
  272. package/docs/document-lifecycle.md +262 -0
  273. package/harness-everything/SKILL.md +1 -1
  274. package/harness-everything/scripts/doc-evidence.js +471 -0
  275. package/harness-everything/scripts/doc-lifecycle.js +2401 -0
  276. package/harness-everything/scripts/doc-obligations.js +1571 -0
  277. package/harness-everything/scripts/project-docs-resolver.js +764 -0
  278. package/multi-agent-workspace/SKILL.md +1 -1
  279. package/multi-agent-workspace/scripts/project-docs-resolver.js +437 -30
  280. package/opencode-plugin/plugin.json +1 -1
  281. package/package.json +1 -1
  282. package/plugins/harness-everything/.codex-plugin/plugin.json +1 -1
  283. package/plugins/harness-everything/plugin.json +1 -1
  284. package/plugins/harness-everything/skills/harness-everything/SKILL.md +1 -1
  285. package/plugins/harness-everything/skills/harness-everything/scripts/doc-evidence.js +471 -0
  286. package/plugins/harness-everything/skills/harness-everything/scripts/doc-lifecycle.js +2401 -0
  287. package/plugins/harness-everything/skills/harness-everything/scripts/doc-obligations.js +1571 -0
  288. package/plugins/harness-everything/skills/harness-everything/scripts/project-docs-resolver.js +764 -0
  289. package/plugins/harness-everything/skills/multi-agent-workspace/SKILL.md +1 -1
  290. package/plugins/harness-everything/skills/multi-agent-workspace/scripts/project-docs-resolver.js +437 -30
  291. package/plugins/harness-everything/skills/to-spec/SKILL.md +1 -1
  292. package/plugins/harness-everything/skills/to-spec/scripts/check-project-docs.js +168 -54
  293. package/plugins/harness-everything/skills/to-spec/scripts/project-docs-resolver.js +749 -96
  294. package/sbom.cdx.json +7 -7
  295. package/to-spec/SKILL.md +1 -1
  296. package/to-spec/scripts/check-project-docs.js +168 -54
  297. package/to-spec/scripts/project-docs-resolver.js +749 -96
@@ -0,0 +1,8 @@
1
+ ---
2
+ id: GRPH-020
3
+ role: adr
4
+ status: accepted
5
+ ---
6
+ # GRPH-020
7
+
8
+ Active decision; proposed successor does not require status change yet.
@@ -0,0 +1,9 @@
1
+ ---
2
+ id: GRPH-021
3
+ role: adr
4
+ status: proposed
5
+ supersedes: [GRPH-020]
6
+ ---
7
+ # GRPH-021
8
+
9
+ Proposed successor; edge is pending, not effective.
@@ -0,0 +1 @@
1
+ {"all":true,"diagnostics":[],"resolve":{"GRPH-020":"docs/adr/GRPH-020.md","GRPH-021":"docs/adr/GRPH-021.md"},"indexContains":["pending"]}
@@ -0,0 +1 @@
1
+ {"governed":[{"path":"docs/adr/**","role":"adr"},{"path":"docs/prd/**","role":"prd"}],"domains":["GRPH","GRAPH"],"legacy":["docs/adr/legacy/**"]}
@@ -0,0 +1,8 @@
1
+ ---
2
+ id: GRPH-003
3
+ role: adr
4
+ status: accepted
5
+ ---
6
+ # GRPH-003
7
+
8
+ Accepted decision that conflicts with the PRD requirement by owner record.
@@ -0,0 +1,10 @@
1
+ ---
2
+ role: prd
3
+ status: active
4
+ conflicts_with: [GRPH-003]
5
+ ---
6
+ # Graph PRD
7
+
8
+ ### REQ-GRPH-012: dedupe
9
+
10
+ The PRD requires dedupe behavior; the conflict with GRPH-003 is recorded, not detected from prose.
@@ -0,0 +1 @@
1
+ {"all":true,"diagnostics":[{"code":"prd-migration-required","severity":"warning","path":"docs/prd/graph.md"},{"code":"recorded-conflict","severity":"error","path":"docs/prd/graph.md"}],"resolve":{"GRPH-003":"docs/adr/GRPH-003.md","REQ-GRPH-012":"unresolved-ref"},"indexContains":["pre-D6.9 compatibility: migration required"]}
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:b25abca04f8d754127ca52e4832c346aedfc5c3fe1b844b0ea8b568f08bd29f6"
13
+ ---
14
+ # Graph
15
+
16
+ ### REQ-GRPH-001
17
+
18
+ The router records one topology per task.
19
+
20
+ #### Acceptance
21
+
22
+ - exactly one topology is recorded
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:842b30aa81c8fbe346e53a328708f163f90b9e0bba7ee080c08d918426b4977e"
13
+ ---
14
+ # Graph
15
+
16
+ ### REQ-GRPH-001
17
+
18
+ The router records one topology per task.
19
+
20
+ #### Acceptance
21
+
22
+ - one or more topologies are recorded
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:be987b0583efa406fc1d271a0cadee449a345e45f2e9a91e6707bbde06547ef2"
13
+ ---
14
+ # Graph
15
+
16
+ ## Context
17
+
18
+ The router is deterministic.
19
+
20
+ ### REQ-GRPH-020 (aliases: REQ-GRAPH-020): Export
21
+
22
+ The graph exports a stable index.
23
+
24
+ Acceptance: the index is byte-identical across runs.
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:d85bce39a521bd142110733356b88133a6c33036715d6d9248e2b3a7711591a9"
13
+ ---
14
+ # Graph
15
+
16
+ ## Context
17
+
18
+ The router is deterministic.
19
+
20
+ ### REQ-GRPH-020 (aliases: REQ-GRAPH-021): Export
21
+
22
+ The graph exports a stable index.
23
+
24
+ Acceptance: the index is byte-identical across runs.
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-001
2
+ assert.equal(run(), 1);
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:a103bf860ed9d2cf7100d93eb8f0e3c3bce322d47e0f9fd83914b5bcc264ef70"
13
+ ---
14
+ # Graph
15
+
16
+ ### REQ-GRPH-001
17
+
18
+ The router records one topology per task.
19
+
20
+ Acceptance: exactly one topology is recorded.
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-001
2
+ assert.equal(run(), 2);
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:a103bf860ed9d2cf7100d93eb8f0e3c3bce322d47e0f9fd83914b5bcc264ef70"
13
+ ---
14
+ # Graph
15
+
16
+ ### REQ-GRPH-001
17
+
18
+ The router records one topology per task.
19
+
20
+ Acceptance: exactly one topology is recorded.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:a103bf860ed9d2cf7100d93eb8f0e3c3bce322d47e0f9fd83914b5bcc264ef70"
13
+ ---
14
+ # Graph
15
+
16
+ ### REQ-GRPH-001
17
+
18
+ The router records one topology per task.
19
+
20
+ Acceptance: exactly one topology is recorded.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:a103bf860ed9d2cf7100d93eb8f0e3c3bce322d47e0f9fd83914b5bcc264ef70"
13
+ ---
14
+ # Graph
15
+
16
+ ### REQ-GRPH-001
17
+
18
+ The router records one topology per task.
19
+
20
+ Acceptance: exactly one topology is recorded.
@@ -0,0 +1,7 @@
1
+ {
2
+ "complete": true,
3
+ "waiverInventoryComplete": true,
4
+ "baseDigest": "ae509889693e7c586b2641654ff1fb4d1ec355c3735fb1839996a5e9a34a2c70",
5
+ "candidateDigest": "598c5319ac32def29c3c087cd286db9edaf632609aa5fefef854d3b8c9a46007",
6
+ "configDigest": "e1df4edbdeafb51eac88e1c4256ee2613b647055bbc2f3ed458bfe872d9a09a5"
7
+ }
@@ -0,0 +1,3 @@
1
+ test('REQ-GRPH-011 check', () => {
2
+ assert.equal(run(), 1);
3
+ });
@@ -0,0 +1,2 @@
1
+ test('REQ-GRPH-011 check', () => {
2
+ assert.equal(run(), 2);
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:631fcb9e83c127ab08bdb8fb1c1367dd1c5119c4a83b636484e0e397c0cfb679"
13
+ ---
14
+ # Graph
15
+
16
+ ## Context
17
+
18
+ The router is deterministic.
19
+
20
+ ### REQ-GRPH-020 (replaces: REQ-GRPH-012): Export
21
+
22
+ The graph exports a stable index.
23
+
24
+ Acceptance: the index is byte-identical across runs.
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:1bfd88602d309cd322b7502a2917d493fcc4252a91b1a7f24f45c220b4f6b367"
13
+ ---
14
+ # Graph
15
+
16
+ ## Context
17
+
18
+ The router is determinstic.
19
+
20
+ ### REQ-GRPH-020 (replaces: REQ-GRPH-012): Export
21
+
22
+ The graph exports a stable index.
23
+
24
+ Acceptance: the index is byte-identical across runs.
@@ -0,0 +1 @@
1
+ exports.run = () => 1;
@@ -0,0 +1 @@
1
+ exports.run = () => 2;
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-001: router check
2
+ assert.equal(run(), 1);
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-001: router check (reworded)
2
+ assert.equal(run(), 1);
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-011
2
+ assert['deepStrictEqual'](run(), 1);
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-011
2
+ assert['deepStrictEqual'](run(), 2);
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-011
2
+ assert[method](run(), 1);
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-011
2
+ assert[method](run(), 2);
@@ -0,0 +1,11 @@
1
+ {
2
+ "governed": [
3
+ { "path": "docs/prd/**", "role": "prd" },
4
+ { "path": "docs/adr/**", "role": "adr" },
5
+ { "path": "docs/reference/**", "role": "reference" }
6
+ ],
7
+ "domains": ["GRPH"],
8
+ "legacy": ["docs/adr/legacy/**"],
9
+ "derived": [{ "path": "docs/roadmap/index.md", "generator": "npm run docs:index" }],
10
+ "tickets": "tracker"
11
+ }
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: GRPH-010
3
+ role: adr
4
+ status: accepted
5
+ ---
6
+ # GRPH-010 Fenced examples
7
+
8
+ ## Context
9
+
10
+ Examples help readers.
11
+
12
+ ## Decision
13
+
14
+ Run lint first.
15
+
16
+ ```md
17
+ # Example
18
+ ```
19
+
20
+ Then check links.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: GRPH-010
3
+ role: adr
4
+ status: accepted
5
+ ---
6
+ # GRPH-010 Fenced examples
7
+
8
+ ## Context
9
+
10
+ Examples help readers.
11
+
12
+ ## Decision
13
+
14
+ Run lint first.
15
+
16
+ ```md
17
+ # Example
18
+ ```
19
+
20
+ Then check links and record evidence.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: GRPH-010
3
+ role: adr
4
+ status: accepted
5
+ ---
6
+ # GRPH-010 Fenced examples
7
+
8
+ ## Context
9
+
10
+ Examples help readers.
11
+
12
+ ## Decision
13
+
14
+ Run lint first.
15
+
16
+ ~~~md
17
+ # Example
18
+ ~~~
19
+
20
+ Then check links.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: GRPH-010
3
+ role: adr
4
+ status: accepted
5
+ ---
6
+ # GRPH-010 Fenced examples
7
+
8
+ ## Context
9
+
10
+ Examples help readers.
11
+
12
+ ## Decision
13
+
14
+ Run lint first.
15
+
16
+ ~~~md
17
+ # Example
18
+ ~~~
19
+
20
+ Then check links and record evidence.
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-011
2
+ assert.deepStrictEqual(run(), 1);
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-011
2
+ assert.deepStrictEqual(run(), 2);
@@ -0,0 +1,14 @@
1
+ ---
2
+ id: GRPH-008
3
+ role: adr
4
+ status: accepted
5
+ ---
6
+ # GRPH-008 Batch writes
7
+
8
+ ## Context
9
+
10
+ Writes arrive in bursts.
11
+
12
+ ## Decision
13
+
14
+ Batch writes per second.
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-001
2
+ assert.equal(run(), 1);
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:a103bf860ed9d2cf7100d93eb8f0e3c3bce322d47e0f9fd83914b5bcc264ef70"
13
+ ---
14
+ # Graph
15
+
16
+ ### REQ-GRPH-001
17
+
18
+ The router records one topology per task.
19
+
20
+ Acceptance: exactly one topology is recorded.
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-001
2
+ assert.equal(run(), 2);
@@ -0,0 +1,3 @@
1
+ # Index
2
+
3
+ Generated from the model.
@@ -0,0 +1,3 @@
1
+ # Index
2
+
3
+ Generated from the model.
@@ -0,0 +1,7 @@
1
+ {
2
+ "governed": [{ "path": "docs/reference/**", "role": "reference" }],
3
+ "domains": ["GRPH"],
4
+ "legacy": [],
5
+ "derived": [{ "path": "docs/index.md", "sources": ["src/model/**"], "generator": "npm run docs:index" }],
6
+ "tickets": "tracker"
7
+ }
@@ -0,0 +1,3 @@
1
+ # Index
2
+
3
+ Generated from the model.
@@ -0,0 +1,3 @@
1
+ # Summary
2
+
3
+ Generated from the model.
@@ -0,0 +1,3 @@
1
+ # Index
2
+
3
+ Generated from the model.
@@ -0,0 +1,3 @@
1
+ # Summary
2
+
3
+ Generated from the model.
@@ -0,0 +1,10 @@
1
+ {
2
+ "governed": [{ "path": "docs/reference/**", "role": "reference" }],
3
+ "domains": ["GRPH"],
4
+ "legacy": [],
5
+ "derived": [
6
+ { "path": "docs/index.md", "sources": ["src/model.js"], "generator": "npm run docs:index" },
7
+ { "path": "docs/model-summary.md", "sources": ["src/model.js"], "generator": "npm run docs:summary" }
8
+ ],
9
+ "tickets": "tracker"
10
+ }
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-011
2
+ assert.equal(run(), 1);
@@ -0,0 +1,19 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:918eb7f37004bb9527a46a8e827161629cdef3c45dae374154ff319847cfe7f9"
13
+ ---
14
+ ### REQ-GRPH-011: Stable requirement
15
+
16
+ The router keeps the stable behavior.
17
+
18
+ Acceptance: preserve the stable behavior.
19
+
@@ -0,0 +1,19 @@
1
+ ---
2
+ id: "PRD-GRPH-002"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-002"
11
+ role: "human"
12
+ content_digest: "sha256:3f3631612b1a9221eb4991f40e526ac7b60327c4995d0b411f6a749ff48041bf"
13
+ ---
14
+ ### REQ-GRPH-011: Stable requirement
15
+
16
+ The router keeps the stable behavior.
17
+
18
+ Acceptance: preserve the stable behavior.
19
+
@@ -0,0 +1,2 @@
1
+ // REQ-GRPH-011
2
+ assert.equal(run(), 2);
@@ -0,0 +1,19 @@
1
+ ---
2
+ id: "PRD-GRPH-001"
3
+ revision: 1
4
+ status: "effective"
5
+ drafted_by: "Alice Example"
6
+ effective_at: "2026-10-17T00:01:00Z"
7
+ approval:
8
+ by: "Bob Independent"
9
+ at: "2026-10-17T00:00:00Z"
10
+ ref: "https://approvals.example.invalid/PRD-GRPH-001"
11
+ role: "human"
12
+ content_digest: "sha256:918eb7f37004bb9527a46a8e827161629cdef3c45dae374154ff319847cfe7f9"
13
+ ---
14
+ ### REQ-GRPH-011: Stable requirement
15
+
16
+ The router keeps the stable behavior.
17
+
18
+ Acceptance: preserve the stable behavior.
19
+