harness-everything 0.32.0 → 0.34.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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +2 -1
- package/CHANGELOG.md +33 -0
- package/README.md +3 -2
- package/ci/fixtures/doc-lifecycle/prd-revisions/config.json +9 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/config.json +20 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/expected.json +12 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/invalid-fork/docs/prd/graph/r001.md +20 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/invalid-fork/docs/prd/graph/r002.md +26 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/invalid-fork/docs/prd/graph/r003.md +26 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/valid/docs/prd/graph/r001.md +20 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/packaged/valid/docs/prd/graph/r002.md +26 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/ten-reqs/r001.body.md +39 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/ten-reqs/r002-dropped.body.md +35 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/ten-reqs/r002-incomplete.body.md +37 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/ten-reqs/r002-one-replaced.body.md +39 -0
- package/ci/fixtures/doc-lifecycle/prd-revisions/ten-reqs/r002-overlap.body.md +39 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-active/config.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-active/docs/adr/GRPH-001.md +8 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-active/docs/adr/GRPH-002.md +9 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-active/expected.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-active-mismatch/config.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-active-mismatch/docs/adr/GRPH-001.md +8 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-active-mismatch/docs/adr/GRPH-002.md +9 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-active-mismatch/expected.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-legacy/config.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-legacy/docs/adr/GRPH-010.md +9 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-legacy/docs/adr/legacy/GRPH-007.md +8 -0
- package/ci/fixtures/doc-lifecycle/scenarios/active-to-legacy/expected.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/alias-rename/config.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/alias-rename/docs/adr/GRAPH-007.md +9 -0
- package/ci/fixtures/doc-lifecycle/scenarios/alias-rename/docs/adr/legacy/GRPH-007.md +8 -0
- package/ci/fixtures/doc-lifecycle/scenarios/alias-rename/expected.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/duplicate-legacy/config.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/duplicate-legacy/docs/adr/legacy/v1/GRPH-007.md +8 -0
- package/ci/fixtures/doc-lifecycle/scenarios/duplicate-legacy/docs/adr/legacy/v2/GRPH-007.md +8 -0
- package/ci/fixtures/doc-lifecycle/scenarios/duplicate-legacy/expected.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/config.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/docs/adr/GRPH-003.md +9 -0
- package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/docs/adr/GRPH-004.md +9 -0
- package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/docs/adr/GRPH-005.md +9 -0
- package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/docs/adr/GRPH-006.md +9 -0
- package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/docs/adr/GRPH-007.md +9 -0
- package/ci/fixtures/doc-lifecycle/scenarios/invalid-refs/expected.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/pending-edge/config.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/pending-edge/docs/adr/GRPH-020.md +8 -0
- package/ci/fixtures/doc-lifecycle/scenarios/pending-edge/docs/adr/GRPH-021.md +9 -0
- package/ci/fixtures/doc-lifecycle/scenarios/pending-edge/expected.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/recorded-conflict/config.json +1 -0
- package/ci/fixtures/doc-lifecycle/scenarios/recorded-conflict/docs/adr/GRPH-003.md +8 -0
- package/ci/fixtures/doc-lifecycle/scenarios/recorded-conflict/docs/prd/graph.md +10 -0
- package/ci/fixtures/doc-lifecycle/scenarios/recorded-conflict/expected.json +1 -0
- package/ci/mechanism-2aw-project-docs-config.test.js +759 -0
- package/ci/mechanism-2ax-doc-lifecycle.test.js +1061 -0
- package/ci/mechanism-2ay-prd-revisions.test.js +2891 -0
- package/ci/mechanism-2az-step-type-registry.test.js +86 -0
- package/ci/openai-plugin-package.test.js +1 -1
- package/ci/release-consistency-check.js +26 -9
- package/ci/release-consistency-check.test.js +30 -0
- package/ci/router-workflow-plan.test.js +36 -0
- package/code-review/SKILL.md +41 -0
- package/code-review/references/review-playbook.md +40 -0
- package/code-review/templates/finding.template.md +33 -0
- package/docs/document-lifecycle.md +206 -0
- package/docs/openai-plugin.md +1 -1
- package/docs/workflows/code-review.md +58 -0
- package/evals/code-review/eval.yaml +26 -0
- package/evals/code-review/tasks/negative-grill-me.yaml +16 -0
- package/evals/code-review/tasks/negative-security-review.yaml +16 -0
- package/evals/code-review/tasks/negative-tdd.yaml +16 -0
- package/evals/code-review/tasks/negative-verification-loop.yaml +16 -0
- package/evals/code-review/tasks/positive-pr-review.yaml +16 -0
- package/evals/code-review/tasks/positive-revised-head-rereview.yaml +16 -0
- package/harness-everything/SKILL.md +1 -1
- package/harness-everything/references/skill-registry.md +1 -0
- package/harness-everything/scripts/doc-lifecycle.js +2401 -0
- package/harness-everything/scripts/project-docs-resolver.js +764 -0
- package/harness-everything/scripts/routing-keywords.json +7 -0
- package/hooks/scripts/lib/binding-resolver.js +1 -0
- package/multi-agent-workspace/SKILL.md +1 -1
- package/multi-agent-workspace/scripts/project-docs-resolver.js +437 -30
- package/opencode-plugin/plugin.json +1 -1
- package/package.json +2 -2
- package/plugins/harness-everything/.codex-plugin/plugin.json +1 -1
- package/plugins/harness-everything/hooks/scripts/lib/binding-resolver.js +1 -0
- package/plugins/harness-everything/plugin.json +1 -1
- package/plugins/harness-everything/skills/code-review/SKILL.md +41 -0
- package/plugins/harness-everything/skills/code-review/references/review-playbook.md +40 -0
- package/plugins/harness-everything/skills/code-review/templates/finding.template.md +33 -0
- package/plugins/harness-everything/skills/harness-everything/SKILL.md +1 -1
- package/plugins/harness-everything/skills/harness-everything/references/skill-registry.md +1 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/doc-lifecycle.js +2401 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/project-docs-resolver.js +764 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/routing-keywords.json +7 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/SKILL.md +1 -1
- package/plugins/harness-everything/skills/multi-agent-workspace/scripts/project-docs-resolver.js +437 -30
- package/plugins/harness-everything/skills/to-spec/SKILL.md +1 -1
- package/plugins/harness-everything/skills/to-spec/scripts/check-project-docs.js +168 -54
- package/plugins/harness-everything/skills/to-spec/scripts/project-docs-resolver.js +749 -96
- package/sbom.cdx.json +7 -7
- package/to-spec/SKILL.md +1 -1
- package/to-spec/scripts/check-project-docs.js +168 -54
- package/to-spec/scripts/project-docs-resolver.js +749 -96
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"name": "harness-everything",
|
|
11
11
|
"source": "./",
|
|
12
12
|
"description": "Harness OS: an orchestrated agent operating system — tier routing, circuit breaker guardrails, verification gates, WAL session memory, and self-evolving workspace rules.",
|
|
13
|
-
"version": "0.
|
|
13
|
+
"version": "0.34.0",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Miya Daniel"
|
|
16
16
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "harness-everything",
|
|
3
3
|
"description": "Harness OS: an orchestrated agent operating system — tier routing, circuit breaker guardrails, verification gates, WAL session memory, and self-evolving workspace rules.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.34.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Miya Daniel"
|
|
7
7
|
},
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
],
|
|
24
24
|
"skills": [
|
|
25
25
|
"./multi-agent-workspace",
|
|
26
|
+
"./code-review",
|
|
26
27
|
"./environment-detection",
|
|
27
28
|
"./eval-harness",
|
|
28
29
|
"./fable-discipline",
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.34.0](https://github.com/dyphn1/Harness-everything/compare/v0.33.0...v0.34.0) (2026-10-17)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **doc-lifecycle:** add repeatable --changed-path for comma-containing filenames ([d807f16](https://github.com/dyphn1/Harness-everything/commit/d807f16553e67090435b21a001bd17169015c539))
|
|
10
|
+
* **doc-lifecycle:** lint governed docs and build a deterministic index ([5cf3f38](https://github.com/dyphn1/Harness-everything/commit/5cf3f387ef9e19001db12469178e8bb05e3bd7b7)), closes [#325](https://github.com/dyphn1/Harness-everything/issues/325) [#325](https://github.com/dyphn1/Harness-everything/issues/325)
|
|
11
|
+
* **doc-lifecycle:** validate contract-style immutable prd revisions ([730f076](https://github.com/dyphn1/Harness-everything/commit/730f0767c84681fcc41b4bdca55d603cbbb30121)), closes [rN#REQ](https://github.com/dyphn1/rN/issues/REQ) [#325](https://github.com/dyphn1/Harness-everything/issues/325)
|
|
12
|
+
* **project-docs:** load host-neutral project-docs.json with validated selection ([0be0d7b](https://github.com/dyphn1/Harness-everything/commit/0be0d7b001e185b8fff427f6219d0dc20f3a8b6d)), closes [#325](https://github.com/dyphn1/Harness-everything/issues/325)
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* **doc-lifecycle:** apply per-source prd authority and freeze approved revisions ([1647253](https://github.com/dyphn1/Harness-everything/commit/1647253b9984cde2d121d2b01ba24281af4afbee))
|
|
17
|
+
* **doc-lifecycle:** bind activation path, keep historical retirement and scope reads ([1c7f9ef](https://github.com/dyphn1/Harness-everything/commit/1c7f9efbad7cd7128a263ce560ce6a60daaf9dc9)), closes [#325](https://github.com/dyphn1/Harness-everything/issues/325)
|
|
18
|
+
* **doc-lifecycle:** derive index authority from the validated effective prefix ([b7be1e7](https://github.com/dyphn1/Harness-everything/commit/b7be1e79311428dab01544263208d804c4ab9937))
|
|
19
|
+
* **doc-lifecycle:** enforce d6.9 on added or changed prds ([b2404aa](https://github.com/dyphn1/Harness-everything/commit/b2404aacbd219a9e3d7540d8daff78f8b7c1e0a5)), closes [#325](https://github.com/dyphn1/Harness-everything/issues/325)
|
|
20
|
+
* **doc-lifecycle:** freeze legacy frontmatter against a trusted base ([faa3ef3](https://github.com/dyphn1/Harness-everything/commit/faa3ef300d6a917e3b52841518b229708a5b5c58))
|
|
21
|
+
* **doc-lifecycle:** harden cli inputs and offline authority found by code-review dogfood ([4d30f54](https://github.com/dyphn1/Harness-everything/commit/4d30f54a9ca17bf99aed0ad04b17b0e27ba1b40a)), closes [#329](https://github.com/dyphn1/Harness-everything/issues/329) [PRD#REQ](https://github.com/dyphn1/PRD/issues/REQ)
|
|
22
|
+
* **doc-lifecycle:** keep --changed-path outer whitespace through normalization ([f8afa0d](https://github.com/dyphn1/Harness-everything/commit/f8afa0d170c73c95cfb741c818a4baf1b42c6e24))
|
|
23
|
+
* **doc-lifecycle:** ship config validator with harness-everything; keep new prd governance strict ([e54660d](https://github.com/dyphn1/Harness-everything/commit/e54660da05ac704a429d1137ef567b2949ec5df2))
|
|
24
|
+
* **project-docs:** reject config globs with empty path segments ([d9445f5](https://github.com/dyphn1/Harness-everything/commit/d9445f5013471c2bcd11410c16a1b3d529d4f072))
|
|
25
|
+
* **project-docs:** reject whitespace init values and non-canonical globs ([bf4e20f](https://github.com/dyphn1/Harness-everything/commit/bf4e20fd507a596e9d77b6808f60f12f2474413f)), closes [#325](https://github.com/dyphn1/Harness-everything/issues/325)
|
|
26
|
+
* **project-docs:** stop inferring selected config and init the project file ([34bbfee](https://github.com/dyphn1/Harness-everything/commit/34bbfeed2ba79b96c84e3f7d87a603b2c5c65f8e)), closes [#325](https://github.com/dyphn1/Harness-everything/issues/325)
|
|
27
|
+
|
|
28
|
+
## [0.33.0](https://github.com/dyphn1/Harness-everything/compare/v0.32.0...v0.33.0) (2026-10-17)
|
|
29
|
+
|
|
30
|
+
### Features
|
|
31
|
+
|
|
32
|
+
* **code-review:** add evidence-tiered independent review skill ([#329](https://github.com/dyphn1/Harness-everything/issues/329)) ([2acb220](https://github.com/dyphn1/Harness-everything/commit/2acb22098a5fc360306b0ed34fa3ddcf21592fea))
|
|
33
|
+
|
|
34
|
+
### Bug Fixes
|
|
35
|
+
|
|
36
|
+
* **code-review:** register the code-review binding so review steps can load it ([acb766a](https://github.com/dyphn1/Harness-everything/commit/acb766aea36361262f3536db36069265aa66d871))
|
|
37
|
+
|
|
5
38
|
## [0.32.0](https://github.com/dyphn1/Harness-everything/compare/v0.31.3...v0.32.0) (2026-10-17)
|
|
6
39
|
|
|
7
40
|
### Features
|
package/README.md
CHANGED
|
@@ -184,7 +184,7 @@ The authoritative current matrix is [docs/platform-capabilities.md](docs/platfor
|
|
|
184
184
|
| **Claude Code** | Native lifecycle hooks (`PreToolUse`, `PostToolUse`, `SessionStart`, `UserPromptSubmit`, `Stop`) | `.claude/settings.json`, `.claude/skills/`, `.claude/agents/` | Semantic workflow contracts are reminder-observed; Rule-of-3 reflection and explicit permission boundaries may block |
|
|
185
185
|
| **OpenCode** | Native plugin module ([`opencode-plugin/index.mjs`](opencode-plugin/index.mjs), install as `harness-enforcement.js`) | `.opencode/plugins/` | **Partial live-host evidence** — project-scope `.js` loading and edit/verification state on OpenCode 1.18.31 (macOS); current workflow/verification behavior is reminder-oriented, with only the third-failure reflection boundary blocking edits |
|
|
186
186
|
| **Codex — general installer path** | Skills + `AGENTS.md` instructions | `AGENTS.md` + repo-scoped `.agents/skills/` | **Instruction/advisory delivery only**; semantic MUST/SHOULD/MAY still applies, without a hard-enforcement claim |
|
|
187
|
-
| **Codex / local OpenAI plugin** | `.codex-plugin` package with session, prompt, supported-tool, subagent, and stop hooks plus
|
|
187
|
+
| **Codex / local OpenAI plugin** | `.codex-plugin` package with session, prompt, supported-tool, subagent, and stop hooks plus 27 canonical skills | `.agents/plugins/marketplace.json` → `plugins/harness-everything/` | **Mechanism-tested local contract observation plus explicit permission/Rule-of-3 boundaries** for the packaged mappings; live host loading remains unverified |
|
|
188
188
|
| **Public OpenAI Skills-only plugin** | Public Skills-only bundle | Generated submission ZIP from `plugins/harness-everything/skills/` | **Skill/workflow behavior only**; no local `.codex-plugin` lifecycle hooks in the public artifact |
|
|
189
189
|
| **Cursor** | Native Project Rules + project skills | `.cursorrules` + `.cursor/skills/` | Advisory only |
|
|
190
190
|
| **GitHub Copilot agent surfaces** | Agent Skills + repository custom instructions | `.github/copilot-instructions.md` + `.github/skills/` | Agent Skills path is documented; no live Harness session or plugin install is verified |
|
|
@@ -229,7 +229,7 @@ This repo uses a flat layout (waza/agentskills.io convention). The table below m
|
|
|
229
229
|
| `.agents/plugins` | **Distribution** | OpenAI/Codex repository marketplace metadata |
|
|
230
230
|
| `plugins/harness-everything` | **Distribution** | Local OpenAI/Codex plugin package plus canonical skill copies |
|
|
231
231
|
| `submission/openai` | **Distribution / Review** | Public OpenAI Skills-only listing/test inputs |
|
|
232
|
-
| `evals` | **Routing Evals** |
|
|
232
|
+
| `evals` | **Routing Evals** | 27 trigger/routing eval suites (waza format) |
|
|
233
233
|
| `eval-framework` | **Quality Gates** | Negative-control fixtures for consistency/collision gates (not a skill) |
|
|
234
234
|
| `contract-integrity` | **Quality Gates** | ADR→spec→ticket→test→implementation trace audit (Phase 1; not a directly routed skill) |
|
|
235
235
|
| `telemetry` | **Quality Gates** | Local JSONL operational evidence layer with report/benchmark scripts (not a skill) |
|
|
@@ -238,6 +238,7 @@ This repo uses a flat layout (waza/agentskills.io convention). The table below m
|
|
|
238
238
|
| `docs` | **Documentation** | Philosophy, architecture, routing, reflection, platform capabilities, generated repository contract, audit |
|
|
239
239
|
| `references` | **Documentation** | Shared checklists (security, performance, definition-of-done) |
|
|
240
240
|
| `multi-agent-workspace` | **Skill (Tier 3)** | Scaffold a verified multi-agent workspace and select bounded specialists from an external catalog without vendoring the full roster |
|
|
241
|
+
| `code-review` | **Skill (Tier 2)** | Independent, evidence-tiered PR/diff code review (read-only by default) |
|
|
241
242
|
| `environment-detection` | **Foundation** | Preflight: detect OS, shell, package manager |
|
|
242
243
|
| `eval-harness` | **Skill (Tier 2)** | Evaluate agent outputs against rubrics |
|
|
243
244
|
| `fable-discipline` | **Skill (Tier 3)** | Fable execution guardrails when Fable is selected |
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"valid": {
|
|
3
|
+
"r001ArtifactDigest": "sha256:305358d3ff29f45969b99562eec9bca2da12f35020decee5a3a667a16fd412f6",
|
|
4
|
+
"r001ApprovalDigest": "sha256:f0715961ec620f963304941851b86493f1c58c009329aaff485ef796011dd4b3",
|
|
5
|
+
"r002ArtifactDigest": "sha256:d54cb5153daa0336ec919d100eb6c98bf1962cae9d9a248e9101187f155c6e0f",
|
|
6
|
+
"r002ApprovalDigest": "sha256:f0ad5b331c847bd91a3dffd3bfb653ec631c201c592fb599c5c4777e3cb01606"
|
|
7
|
+
},
|
|
8
|
+
"invalidFork": {
|
|
9
|
+
"r003ArtifactDigest": "sha256:7d3b98b1c0984f868136f875febee399864d7273cef958564da63052cd7f825c",
|
|
10
|
+
"r003ApprovalDigest": "sha256:aee28699550b78cf0e0ea43aba4aa938886b759f229b5a50a117dca26d5168cf"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -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:f0715961ec620f963304941851b86493f1c58c009329aaff485ef796011dd4b3"
|
|
13
|
+
---
|
|
14
|
+
### REQ-GRPH-010 (aliases: REQ-GRPH-100): Initial requirement
|
|
15
|
+
|
|
16
|
+
Acceptance: resolve the original alias.
|
|
17
|
+
|
|
18
|
+
### REQ-GRPH-011: Stable requirement
|
|
19
|
+
|
|
20
|
+
Acceptance: preserve the stable behavior.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "PRD-GRPH-001"
|
|
3
|
+
revision: 2
|
|
4
|
+
status: "effective"
|
|
5
|
+
drafted_by: "Alice Example"
|
|
6
|
+
previous_revision: 1
|
|
7
|
+
previous_digest: "sha256:305358d3ff29f45969b99562eec9bca2da12f35020decee5a3a667a16fd412f6"
|
|
8
|
+
effective_at: "2026-10-17T00:02:00Z"
|
|
9
|
+
approval:
|
|
10
|
+
by: "Bob Independent"
|
|
11
|
+
at: "2026-10-17T00:00:00Z"
|
|
12
|
+
ref: "https://approvals.example.invalid/PRD-GRPH-001"
|
|
13
|
+
role: "human"
|
|
14
|
+
content_digest: "sha256:f0ad5b331c847bd91a3dffd3bfb653ec631c201c592fb599c5c4777e3cb01606"
|
|
15
|
+
---
|
|
16
|
+
### REQ-GRPH-010 (aliases: REQ-GRPH-100, REQ-GRPH-101): Initial requirement
|
|
17
|
+
|
|
18
|
+
Acceptance: resolve the original alias.
|
|
19
|
+
|
|
20
|
+
### REQ-GRPH-011: Stable requirement
|
|
21
|
+
|
|
22
|
+
Acceptance: preserve the stable behavior.
|
|
23
|
+
|
|
24
|
+
### REQ-GRPH-012: Added requirement
|
|
25
|
+
|
|
26
|
+
Acceptance: include the new behavior.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "PRD-GRPH-001"
|
|
3
|
+
revision: 3
|
|
4
|
+
status: "effective"
|
|
5
|
+
drafted_by: "Alice Example"
|
|
6
|
+
previous_revision: 1
|
|
7
|
+
previous_digest: "sha256:305358d3ff29f45969b99562eec9bca2da12f35020decee5a3a667a16fd412f6"
|
|
8
|
+
effective_at: "2026-10-17T00:03:00Z"
|
|
9
|
+
approval:
|
|
10
|
+
by: "Bob Independent"
|
|
11
|
+
at: "2026-10-17T00:00:00Z"
|
|
12
|
+
ref: "https://approvals.example.invalid/PRD-GRPH-001"
|
|
13
|
+
role: "human"
|
|
14
|
+
content_digest: "sha256:aee28699550b78cf0e0ea43aba4aa938886b759f229b5a50a117dca26d5168cf"
|
|
15
|
+
---
|
|
16
|
+
### REQ-GRPH-010 (aliases: REQ-GRPH-100, REQ-GRPH-102): Initial requirement
|
|
17
|
+
|
|
18
|
+
Acceptance: resolve the original alias.
|
|
19
|
+
|
|
20
|
+
### REQ-GRPH-011: Stable requirement
|
|
21
|
+
|
|
22
|
+
Acceptance: preserve the stable behavior.
|
|
23
|
+
|
|
24
|
+
### REQ-GRPH-013: Fork-only requirement
|
|
25
|
+
|
|
26
|
+
Acceptance: expose the competing effective branch.
|
|
@@ -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:f0715961ec620f963304941851b86493f1c58c009329aaff485ef796011dd4b3"
|
|
13
|
+
---
|
|
14
|
+
### REQ-GRPH-010 (aliases: REQ-GRPH-100): Initial requirement
|
|
15
|
+
|
|
16
|
+
Acceptance: resolve the original alias.
|
|
17
|
+
|
|
18
|
+
### REQ-GRPH-011: Stable requirement
|
|
19
|
+
|
|
20
|
+
Acceptance: preserve the stable behavior.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "PRD-GRPH-001"
|
|
3
|
+
revision: 2
|
|
4
|
+
status: "effective"
|
|
5
|
+
drafted_by: "Alice Example"
|
|
6
|
+
previous_revision: 1
|
|
7
|
+
previous_digest: "sha256:305358d3ff29f45969b99562eec9bca2da12f35020decee5a3a667a16fd412f6"
|
|
8
|
+
effective_at: "2026-10-17T00:02:00Z"
|
|
9
|
+
approval:
|
|
10
|
+
by: "Bob Independent"
|
|
11
|
+
at: "2026-10-17T00:00:00Z"
|
|
12
|
+
ref: "https://approvals.example.invalid/PRD-GRPH-001"
|
|
13
|
+
role: "human"
|
|
14
|
+
content_digest: "sha256:f0ad5b331c847bd91a3dffd3bfb653ec631c201c592fb599c5c4777e3cb01606"
|
|
15
|
+
---
|
|
16
|
+
### REQ-GRPH-010 (aliases: REQ-GRPH-100, REQ-GRPH-101): Initial requirement
|
|
17
|
+
|
|
18
|
+
Acceptance: resolve the original alias.
|
|
19
|
+
|
|
20
|
+
### REQ-GRPH-011: Stable requirement
|
|
21
|
+
|
|
22
|
+
Acceptance: preserve the stable behavior.
|
|
23
|
+
|
|
24
|
+
### REQ-GRPH-012: Added requirement
|
|
25
|
+
|
|
26
|
+
Acceptance: include the new behavior.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
### REQ-GRPH-010: Draw vertices
|
|
2
|
+
|
|
3
|
+
Acceptance: every declared vertex is drawn.
|
|
4
|
+
|
|
5
|
+
### REQ-GRPH-011: Draw edges
|
|
6
|
+
|
|
7
|
+
Acceptance: every declared edge is drawn.
|
|
8
|
+
|
|
9
|
+
### REQ-GRPH-012: Preserve direction
|
|
10
|
+
|
|
11
|
+
Acceptance: directed edges retain their direction.
|
|
12
|
+
|
|
13
|
+
### REQ-GRPH-013: Support labels
|
|
14
|
+
|
|
15
|
+
Acceptance: labels remain readable.
|
|
16
|
+
|
|
17
|
+
### REQ-GRPH-014: Support grouping
|
|
18
|
+
|
|
19
|
+
Acceptance: groups remain visually distinct.
|
|
20
|
+
|
|
21
|
+
### REQ-GRPH-015: Support selection
|
|
22
|
+
|
|
23
|
+
Acceptance: selected items are exposed to callers.
|
|
24
|
+
|
|
25
|
+
### REQ-GRPH-016: Support keyboard access
|
|
26
|
+
|
|
27
|
+
Acceptance: every action is keyboard reachable.
|
|
28
|
+
|
|
29
|
+
### REQ-GRPH-017: Preserve layout
|
|
30
|
+
|
|
31
|
+
Acceptance: saved layouts can be restored.
|
|
32
|
+
|
|
33
|
+
### REQ-GRPH-018: Export the graph
|
|
34
|
+
|
|
35
|
+
Acceptance: exports include the complete graph.
|
|
36
|
+
|
|
37
|
+
### REQ-GRPH-019: Report export errors
|
|
38
|
+
|
|
39
|
+
Acceptance: failures include an actionable error.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
### REQ-GRPH-010: Draw vertices
|
|
2
|
+
|
|
3
|
+
Acceptance: every declared vertex is drawn.
|
|
4
|
+
|
|
5
|
+
### REQ-GRPH-011: Draw edges
|
|
6
|
+
|
|
7
|
+
Acceptance: every declared edge is drawn.
|
|
8
|
+
|
|
9
|
+
### REQ-GRPH-012: Preserve direction
|
|
10
|
+
|
|
11
|
+
Acceptance: directed edges retain their direction.
|
|
12
|
+
|
|
13
|
+
### REQ-GRPH-013: Support labels
|
|
14
|
+
|
|
15
|
+
Acceptance: labels remain readable.
|
|
16
|
+
|
|
17
|
+
### REQ-GRPH-014: Support grouping
|
|
18
|
+
|
|
19
|
+
Acceptance: groups remain visually distinct.
|
|
20
|
+
|
|
21
|
+
### REQ-GRPH-015: Support selection
|
|
22
|
+
|
|
23
|
+
Acceptance: selected items are exposed to callers.
|
|
24
|
+
|
|
25
|
+
### REQ-GRPH-016: Support keyboard access
|
|
26
|
+
|
|
27
|
+
Acceptance: every action is keyboard reachable.
|
|
28
|
+
|
|
29
|
+
### REQ-GRPH-017: Preserve layout
|
|
30
|
+
|
|
31
|
+
Acceptance: saved layouts can be restored.
|
|
32
|
+
|
|
33
|
+
### REQ-GRPH-018: Export the graph
|
|
34
|
+
|
|
35
|
+
Acceptance: exports include the complete graph.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
### REQ-GRPH-010: Draw vertices
|
|
2
|
+
|
|
3
|
+
Acceptance: every declared vertex is drawn.
|
|
4
|
+
|
|
5
|
+
### REQ-GRPH-011: Draw edges
|
|
6
|
+
|
|
7
|
+
Acceptance: every declared edge is drawn.
|
|
8
|
+
|
|
9
|
+
### REQ-GRPH-012: Preserve direction
|
|
10
|
+
|
|
11
|
+
Acceptance: directed edges retain their direction.
|
|
12
|
+
|
|
13
|
+
### REQ-GRPH-013: Support labels
|
|
14
|
+
|
|
15
|
+
Acceptance: labels remain readable.
|
|
16
|
+
|
|
17
|
+
### REQ-GRPH-014: Support grouping
|
|
18
|
+
|
|
19
|
+
Acceptance: groups remain visually distinct.
|
|
20
|
+
|
|
21
|
+
### REQ-GRPH-015: Support selection
|
|
22
|
+
|
|
23
|
+
Acceptance: selected items are exposed to callers.
|
|
24
|
+
|
|
25
|
+
### REQ-GRPH-016: Support keyboard access
|
|
26
|
+
|
|
27
|
+
Acceptance: every action is keyboard reachable.
|
|
28
|
+
|
|
29
|
+
### REQ-GRPH-017: Preserve layout
|
|
30
|
+
|
|
31
|
+
Acceptance: saved layouts can be restored.
|
|
32
|
+
|
|
33
|
+
### REQ-GRPH-018: Export the graph
|
|
34
|
+
|
|
35
|
+
### REQ-GRPH-020 (replaces: REQ-GRPH-019; aliases: REQ-GRAPH-020): Report export errors
|
|
36
|
+
|
|
37
|
+
Acceptance: failures include a recovery action and error identifier.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
### REQ-GRPH-010: Draw vertices
|
|
2
|
+
|
|
3
|
+
Acceptance: every declared vertex is drawn.
|
|
4
|
+
|
|
5
|
+
### REQ-GRPH-011: Draw edges
|
|
6
|
+
|
|
7
|
+
Acceptance: every declared edge is drawn.
|
|
8
|
+
|
|
9
|
+
### REQ-GRPH-012: Preserve direction
|
|
10
|
+
|
|
11
|
+
Acceptance: directed edges retain their direction.
|
|
12
|
+
|
|
13
|
+
### REQ-GRPH-013: Support labels
|
|
14
|
+
|
|
15
|
+
Acceptance: labels remain readable.
|
|
16
|
+
|
|
17
|
+
### REQ-GRPH-014: Support grouping
|
|
18
|
+
|
|
19
|
+
Acceptance: groups remain visually distinct.
|
|
20
|
+
|
|
21
|
+
### REQ-GRPH-015: Support selection
|
|
22
|
+
|
|
23
|
+
Acceptance: selected items are exposed to callers.
|
|
24
|
+
|
|
25
|
+
### REQ-GRPH-016: Support keyboard access
|
|
26
|
+
|
|
27
|
+
Acceptance: every action is keyboard reachable.
|
|
28
|
+
|
|
29
|
+
### REQ-GRPH-017: Preserve layout
|
|
30
|
+
|
|
31
|
+
Acceptance: saved layouts can be restored.
|
|
32
|
+
|
|
33
|
+
### REQ-GRPH-018: Export the graph
|
|
34
|
+
|
|
35
|
+
Acceptance: exports include the complete graph.
|
|
36
|
+
|
|
37
|
+
### REQ-GRPH-020 (replaces: REQ-GRPH-019; aliases: REQ-GRAPH-020): Report export errors
|
|
38
|
+
|
|
39
|
+
Acceptance: failures include a recovery action and error identifier.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
### REQ-GRPH-010: Draw vertices
|
|
2
|
+
|
|
3
|
+
Acceptance: every declared vertex is drawn.
|
|
4
|
+
|
|
5
|
+
### REQ-GRPH-011: Draw edges
|
|
6
|
+
|
|
7
|
+
Acceptance: every declared edge is drawn.
|
|
8
|
+
|
|
9
|
+
### REQ-GRPH-012: Preserve direction
|
|
10
|
+
|
|
11
|
+
Acceptance: directed edges retain their direction.
|
|
12
|
+
|
|
13
|
+
### REQ-GRPH-013: Support labels
|
|
14
|
+
|
|
15
|
+
Acceptance: labels remain readable.
|
|
16
|
+
|
|
17
|
+
### REQ-GRPH-014: Support grouping
|
|
18
|
+
|
|
19
|
+
Acceptance: groups remain visually distinct.
|
|
20
|
+
|
|
21
|
+
### REQ-GRPH-015: Support selection
|
|
22
|
+
|
|
23
|
+
Acceptance: selected items are exposed to callers.
|
|
24
|
+
|
|
25
|
+
### REQ-GRPH-016: Support keyboard access
|
|
26
|
+
|
|
27
|
+
Acceptance: every action is keyboard reachable.
|
|
28
|
+
|
|
29
|
+
### REQ-GRPH-017: Preserve layout
|
|
30
|
+
|
|
31
|
+
Acceptance: saved layouts can be restored.
|
|
32
|
+
|
|
33
|
+
### REQ-GRPH-018: Export the graph
|
|
34
|
+
|
|
35
|
+
Acceptance: exports include the complete graph.
|
|
36
|
+
|
|
37
|
+
### REQ-GRPH-020 (replaces: REQ-GRPH-019; aliases: REQ-GRPH-019): Report export errors
|
|
38
|
+
|
|
39
|
+
Acceptance: aliases cannot conceal replaced REQ identities.
|
|
@@ -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 @@
|
|
|
1
|
+
{"all":true,"diagnostics":[],"resolve":{"GRPH-001":"docs/adr/GRPH-001.md","GRPH-002":"docs/adr/GRPH-002.md"},"indexContains":[]}
|
|
@@ -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 @@
|
|
|
1
|
+
{"all":true,"diagnostics":[{"code":"supersede-status-mismatch","severity":"error","path":"docs/adr/GRPH-002.md"}],"resolve":{"GRPH-001":"docs/adr/GRPH-001.md","GRPH-002":"docs/adr/GRPH-002.md"},"indexContains":[]}
|
|
@@ -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 @@
|
|
|
1
|
+
{"all":true,"diagnostics":[],"resolve":{"GRPH-010":"docs/adr/GRPH-010.md","legacy:GRPH-007":"docs/adr/legacy/GRPH-007.md"},"indexContains":["superseded (projected)"]}
|
|
@@ -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 @@
|
|
|
1
|
+
{"all":true,"diagnostics":[],"resolve":{"GRPH-007":"docs/adr/GRAPH-007.md","GRAPH-007":"docs/adr/GRAPH-007.md","legacy:GRPH-007":"docs/adr/legacy/GRPH-007.md"},"indexContains":[]}
|
|
@@ -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 @@
|
|
|
1
|
+
{"all":true,"diagnostics":[],"resolve":{"legacy:GRPH-007":"ambiguous-legacy-ref","legacy:GRPH-007@docs/adr/legacy/v2/GRPH-007.md":"docs/adr/legacy/v2/GRPH-007.md","legacy:GRPH-007@docs/adr/legacy/v3/GRPH-007.md":"unresolved-ref","legacy:GRPH-007@../x.md":"invalid-ref"},"indexContains":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"governed":[{"path":"docs/adr/**","role":"adr"},{"path":"docs/prd/**","role":"prd"}],"domains":["GRPH","GRAPH"],"legacy":["docs/adr/legacy/**"]}
|