* feat(verify-phase): honest verifier — abstain (insufficient_spec) on non-inferable backstop truths (#1154) Carry the edge-probe's existing `backstop` (non-inferable) tier through the plan-phase projection as a structured flat-scalar marker instead of a prose parenthetical, and make verify-phase abstain -> human_needed (never silent-pass) on a backstop truth it cannot confirm with explicit evidence. Truth-axis mirror of #644's prohibition judgment-tier (ADR-550 D4). Engine (deterministic, CI-tested per ADR-550 D5 — never the LLM verdict): - src/probe-core.cts: truthStatement/truthVerification normalizers, projectTruths (conservative serializer), dispositionForUnverifiableTruth (backstop+no-evidence -> unverified/flagged/insufficient_spec; backstop+evidence -> green; inferable -> green, the over-abstention guard). - src/roadmap.cts: coerceTruthToString now reads `statement` first so an object-form backstop truth is surfaced, not dropped (Hyrum backward-compat for truth-readers). Workflow/agent/docs: plan-phase emits the structured marker (flat scalar, ADR-550 #1278); verify-phase + gsd-verifier add the abstain arm; new references/honest-verifier.md; FEATURES/COMMANDS document insufficient_spec; ADR-550 amended (truth-axis D4 mirror). Decisions adopted (trek-e review): insufficient_spec feeds existing human_needed with a distinguishable reason (no new VERIFIER_STATUS); changeset Changed; round-trip parity test; abstain-on-unconfirmed-backstop regression test red-first. Implementation notes (deviations from the issue's proposed file list, verified live): - frontmatter.cts needs no change — its flat parser already round-trips object-form truths. - verify.cts needs no change — it grades artifacts/key_links structurally; truths are LLM-graded at the workflow layer, so consumption lives there + the deterministic helper. - No CJS<->SDK hand-sync — the SDK seam was retired (ADR-0174); src/*.cts is sole source. Regenerated artifacts: golden-install-parity fixtures, INVENTORY-MANIFEST, size baselines. * chore(#1154): add changeset (Changed) for honest verifier User-facing changelog fragment for #1738. Typed `Changed` (not `Added`) per trek-e review condition 3 — the verify behavior shifts for backstop-bearing specs (a confident silent `passed` becomes `human_needed`), which is user-visible even though the schema marker is additive. * docs(#1154): score-formula also excludes abstained insufficient_spec truths (review nit-1) trek-e review nit: the verify-phase score sentence said PRESENT_BEHAVIOR_UNVERIFIED truths were "the only ones excluded" from verified_truths. Post-#1154 an abstained `insufficient_spec` backstop truth is also excluded (it is not ✓ VERIFIED and routes to human_needed). Behavior was already correct; this tightens the wording. Regenerated golden-install-parity fixtures + workflow-size baseline for the touched verify-phase.md. (Nit-2 — a dedicated insufficient_spec_items frontmatter list — is intentionally not taken: the current design is ADR-550-D4-conformant, the abstain cause rides as a distinguishable report reason, and adding it would exceed the approved scope.) --------- Co-authored-by: Tom Boucher <trekkie@nomorestars.com>
This commit is contained in:
@@ -32,5 +32,5 @@
|
||||
"gsd-ui-checker.md": 11088,
|
||||
"gsd-ui-researcher.md": 19332,
|
||||
"gsd-user-profiler.md": 8516,
|
||||
"gsd-verifier.md": 48859
|
||||
"gsd-verifier.md": 49124
|
||||
}
|
||||
|
||||
@@ -133,6 +133,34 @@ Plans:
|
||||
assert.ok(roadmap.includes(sharedTruth), 'shared truth listed');
|
||||
});
|
||||
|
||||
test('#1154: surfaces a cross-cutting backstop (object-form) truth by its statement, not dropped', () => {
|
||||
// An object-form backstop truth `{ statement, verification: backstop }` (the #1154 non-inferable
|
||||
// marker on must_haves.truths) shared across 2 plans must be coerced by its `statement` — the
|
||||
// Hyrum backward-compat guard: a truth-reader must tolerate the new object form, never drop it.
|
||||
const backstopTruth = 'statement: Adjacent touching intervals merge\n verification: backstop';
|
||||
tmpDir = makePlanProject({
|
||||
'.planning/ROADMAP.md': `# Roadmap
|
||||
|
||||
### Phase 1: Foundation
|
||||
**Goal:** Set up project
|
||||
**Plans:** 2 plans
|
||||
|
||||
Plans:
|
||||
- [ ] 01-01-PLAN.md — Set up DB
|
||||
- [ ] 01-02-PLAN.md — Build API
|
||||
`,
|
||||
'.planning/phases/01-foundation/01-01-PLAN.md': PLAN_TEMPLATE(1, [backstopTruth, 'DB schema is correct']),
|
||||
'.planning/phases/01-foundation/01-02-PLAN.md': PLAN_TEMPLATE(2, [backstopTruth, 'API returns 200']),
|
||||
});
|
||||
|
||||
const result = runGsdTools('roadmap annotate-dependencies 1', tmpDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
const out = JSON.parse(result.output);
|
||||
assert.strictEqual(out.cross_cutting_constraints, 1, 'the shared backstop truth is surfaced, not dropped');
|
||||
const roadmap = fs.readFileSync(path.join(tmpDir, '.planning', 'ROADMAP.md'), 'utf-8');
|
||||
assert.ok(roadmap.includes('Adjacent touching intervals merge'), 'surfaced by its statement text, not [object Object]');
|
||||
});
|
||||
|
||||
test('does not surface constraints that appear in only one plan', () => {
|
||||
tmpDir = makePlanProject({
|
||||
'.planning/ROADMAP.md': `# Roadmap
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "dbbe694a26265473",
|
||||
"agents/gsd-ui-researcher.md": "8c7e91c85e7099f5",
|
||||
"agents/gsd-user-profiler.md": "25d65f6458454764",
|
||||
"agents/gsd-verifier.md": "2a64590bb09e21e6",
|
||||
"agents/gsd-verifier.md": "5902e27c7091f4b1",
|
||||
"gsd-core/CHANGELOG.md": "e141e3fb369ff712",
|
||||
"gsd-core/VERSION": "562368b20a64be95",
|
||||
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
|
||||
@@ -86,6 +86,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "9e6076a137f9e156",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "a31a4bf42d82d5e9",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -263,7 +264,7 @@
|
||||
"gsd-core/workflows/note.md": "3ce09c0aa0a20599",
|
||||
"gsd-core/workflows/pause-work.md": "3196d681d4dd8c71",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "94b193dfc9ca3681",
|
||||
"gsd-core/workflows/plan-phase.md": "d99fb8159a2db1a9",
|
||||
"gsd-core/workflows/plan-phase.md": "fde84f67730f7131",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "b1623082557cdca5",
|
||||
"gsd-core/workflows/plant-seed.md": "1fb45cd49f66f572",
|
||||
"gsd-core/workflows/pr-branch.md": "c8fd9fa250cb39fd",
|
||||
@@ -297,7 +298,7 @@
|
||||
"gsd-core/workflows/undo.md": "6ab639d1fc7e0721",
|
||||
"gsd-core/workflows/update.md": "dc93f366e2156e37",
|
||||
"gsd-core/workflows/validate-phase.md": "5bac28c71d21c740",
|
||||
"gsd-core/workflows/verify-phase.md": "1c6a2e1128966675",
|
||||
"gsd-core/workflows/verify-phase.md": "e7059c04c816e62d",
|
||||
"gsd-core/workflows/verify-work.md": "dd7f78f947b86976",
|
||||
"hooks/gsd-check-update-worker.js": "668c24ea284ff623",
|
||||
"hooks/gsd-check-update.js": "7e42f76b2bcdd764",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "4cf947a98db6410e",
|
||||
"agents/gsd-ui-researcher.md": "3f8646572e9c3ec1",
|
||||
"agents/gsd-user-profiler.md": "622220df0654b6bf",
|
||||
"agents/gsd-verifier.md": "b1108277a4e858e3",
|
||||
"agents/gsd-verifier.md": "4046b8d4ca23e342",
|
||||
"commands/gsd-add-tests.md": "3608d0cf4b515103",
|
||||
"commands/gsd-ai-integration-phase.md": "70843d4904743f7e",
|
||||
"commands/gsd-audit-fix.md": "1b805946362c4f19",
|
||||
@@ -155,6 +155,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "77bf9dff38b2c9d4",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -332,7 +333,7 @@
|
||||
"gsd-core/workflows/note.md": "5a99eb396c744619",
|
||||
"gsd-core/workflows/pause-work.md": "7bcbdf27ba957c8b",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "02fee851c82e3b25",
|
||||
"gsd-core/workflows/plan-phase.md": "fe6b786141eab878",
|
||||
"gsd-core/workflows/plan-phase.md": "5e3c949ca65cd672",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "10007f8382864bcd",
|
||||
"gsd-core/workflows/plant-seed.md": "7b795d7a1b4c9f06",
|
||||
"gsd-core/workflows/pr-branch.md": "f2a35833fe784a53",
|
||||
@@ -366,7 +367,7 @@
|
||||
"gsd-core/workflows/undo.md": "96d2775f008b3a85",
|
||||
"gsd-core/workflows/update.md": "231e7c305b40c417",
|
||||
"gsd-core/workflows/validate-phase.md": "50f37b705b6e44fb",
|
||||
"gsd-core/workflows/verify-phase.md": "968d569ea4ef377f",
|
||||
"gsd-core/workflows/verify-phase.md": "7579af6cd757f644",
|
||||
"gsd-core/workflows/verify-work.md": "6f9c666386cb6d7e",
|
||||
"hooks/gsd-check-update-worker.js": "e42be7414a05e99d",
|
||||
"hooks/gsd-check-update.js": "b3333951b2091807",
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"agents/gsd-ui-checker.md": "dd06843892f6b0c8",
|
||||
"agents/gsd-ui-researcher.md": "85d7d6cc36388435",
|
||||
"agents/gsd-user-profiler.md": "003276f85792cfda",
|
||||
"agents/gsd-verifier.md": "0a0c618959bb00d2",
|
||||
"agents/gsd-verifier.md": "76bcf41aa9fd9b53",
|
||||
"gsd-core/CHANGELOG.md": "e141e3fb369ff712",
|
||||
"gsd-core/VERSION": "562368b20a64be95",
|
||||
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
|
||||
@@ -85,6 +85,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "5c70ef3203b7c9ce",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -262,7 +263,7 @@
|
||||
"gsd-core/workflows/note.md": "42b66686b2c102cb",
|
||||
"gsd-core/workflows/pause-work.md": "0be71264eafd16dc",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "1976bf2001969719",
|
||||
"gsd-core/workflows/plan-phase.md": "bce0904c3d3b7d59",
|
||||
"gsd-core/workflows/plan-phase.md": "b0373c2198f4acf7",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "414df04b7ddff73c",
|
||||
"gsd-core/workflows/plant-seed.md": "936a848f1d6c409e",
|
||||
"gsd-core/workflows/pr-branch.md": "c8827e8a15426bf5",
|
||||
@@ -296,7 +297,7 @@
|
||||
"gsd-core/workflows/undo.md": "791e0bf96d9a057f",
|
||||
"gsd-core/workflows/update.md": "0b389258dcc09332",
|
||||
"gsd-core/workflows/validate-phase.md": "2aa540f2c2479501",
|
||||
"gsd-core/workflows/verify-phase.md": "452968b6becb18a1",
|
||||
"gsd-core/workflows/verify-phase.md": "15a999f82868ad29",
|
||||
"gsd-core/workflows/verify-work.md": "d2e8f5d5f2b8f050",
|
||||
"hooks/gsd-check-update-worker.js": "f0c2b5b7169642ba",
|
||||
"hooks/gsd-check-update.js": "a0e4882e66670e4d",
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"agents/gsd-ui-checker.md": "35a6b14813aa03ff",
|
||||
"agents/gsd-ui-researcher.md": "878c7d0e82fa861a",
|
||||
"agents/gsd-user-profiler.md": "622220df0654b6bf",
|
||||
"agents/gsd-verifier.md": "64cc793b5f0110bc",
|
||||
"agents/gsd-verifier.md": "0a437cf3ed90693f",
|
||||
"gsd-core/CHANGELOG.md": "e141e3fb369ff712",
|
||||
"gsd-core/VERSION": "562368b20a64be95",
|
||||
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
|
||||
@@ -89,6 +89,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "f5403e1470e46e69",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -266,7 +267,7 @@
|
||||
"gsd-core/workflows/note.md": "5a99eb396c744619",
|
||||
"gsd-core/workflows/pause-work.md": "9c1acf8c30a244fd",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "95ca791b0867fe2d",
|
||||
"gsd-core/workflows/plan-phase.md": "2716d6636e37ce6a",
|
||||
"gsd-core/workflows/plan-phase.md": "ab9ed0b5acfe7d8a",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "2cdba6216184aac4",
|
||||
"gsd-core/workflows/plant-seed.md": "d0d63f83ae7c939b",
|
||||
"gsd-core/workflows/pr-branch.md": "15ccec6bd303ea46",
|
||||
@@ -300,7 +301,7 @@
|
||||
"gsd-core/workflows/undo.md": "96d2775f008b3a85",
|
||||
"gsd-core/workflows/update.md": "9cad8a8f4baff922",
|
||||
"gsd-core/workflows/validate-phase.md": "54687a0f2a562fc4",
|
||||
"gsd-core/workflows/verify-phase.md": "68a74f247fdce962",
|
||||
"gsd-core/workflows/verify-phase.md": "5caca0023bc88a9a",
|
||||
"gsd-core/workflows/verify-work.md": "6f482d32e0c8d49a",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
"scripts/changeset/cli.cjs": "68f92a344b199271",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "68ee3eb209c9f0d6",
|
||||
"agents/gsd-ui-researcher.md": "507ed07fc9ba7d33",
|
||||
"agents/gsd-user-profiler.md": "622220df0654b6bf",
|
||||
"agents/gsd-verifier.md": "b62b7966b4aafd5b",
|
||||
"agents/gsd-verifier.md": "b3983159ba46fcbf",
|
||||
"commands/gsd-add-tests.md": "aa65032141557fb7",
|
||||
"commands/gsd-ai-integration-phase.md": "373053d7cd887aa9",
|
||||
"commands/gsd-audit-fix.md": "c21ef925131fade7",
|
||||
@@ -155,6 +155,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "77bf9dff38b2c9d4",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -332,7 +333,7 @@
|
||||
"gsd-core/workflows/note.md": "5a99eb396c744619",
|
||||
"gsd-core/workflows/pause-work.md": "7bcbdf27ba957c8b",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "02fee851c82e3b25",
|
||||
"gsd-core/workflows/plan-phase.md": "3b30ccd918b5f703",
|
||||
"gsd-core/workflows/plan-phase.md": "58d02dbdb533603a",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "10007f8382864bcd",
|
||||
"gsd-core/workflows/plant-seed.md": "7b795d7a1b4c9f06",
|
||||
"gsd-core/workflows/pr-branch.md": "f2a35833fe784a53",
|
||||
@@ -366,7 +367,7 @@
|
||||
"gsd-core/workflows/undo.md": "96d2775f008b3a85",
|
||||
"gsd-core/workflows/update.md": "6a593863d1b0a287",
|
||||
"gsd-core/workflows/validate-phase.md": "50f37b705b6e44fb",
|
||||
"gsd-core/workflows/verify-phase.md": "968d569ea4ef377f",
|
||||
"gsd-core/workflows/verify-phase.md": "7579af6cd757f644",
|
||||
"gsd-core/workflows/verify-work.md": "6f9c666386cb6d7e",
|
||||
"hooks/gsd-check-update-worker.js": "084c3f7109bb4d29",
|
||||
"hooks/gsd-check-update.js": "23074675b7c31a47",
|
||||
|
||||
@@ -67,8 +67,8 @@
|
||||
"agents/gsd-ui-researcher.toml": "ffe2ca0b232df3df",
|
||||
"agents/gsd-user-profiler.md": "1bf5033c929181c1",
|
||||
"agents/gsd-user-profiler.toml": "b9c244bb8fbf8140",
|
||||
"agents/gsd-verifier.md": "994e2a4f22bc3c8b",
|
||||
"agents/gsd-verifier.toml": "9743a551e04bc0a3",
|
||||
"agents/gsd-verifier.md": "3471118de7e985c7",
|
||||
"agents/gsd-verifier.toml": "68f4dcc6c0311e00",
|
||||
"config.toml": "a34316b9ac61a620",
|
||||
"gsd-core/CHANGELOG.md": "e141e3fb369ff712",
|
||||
"gsd-core/VERSION": "562368b20a64be95",
|
||||
@@ -121,6 +121,7 @@
|
||||
"gsd-core/references/gates.md": "11fd2bdf27df57a5",
|
||||
"gsd-core/references/git-integration.md": "94715b69448bb818",
|
||||
"gsd-core/references/git-planning-commit.md": "5aad099c51135a0f",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -298,7 +299,7 @@
|
||||
"gsd-core/workflows/note.md": "664da466ab989f9d",
|
||||
"gsd-core/workflows/pause-work.md": "3c2ee96295959527",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "8ee841bcc7adc836",
|
||||
"gsd-core/workflows/plan-phase.md": "4bef5b532a009f9b",
|
||||
"gsd-core/workflows/plan-phase.md": "f9a1846e30603d38",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "f27818025e279aa4",
|
||||
"gsd-core/workflows/plant-seed.md": "bfa729ff2ad3441a",
|
||||
"gsd-core/workflows/pr-branch.md": "3b13915429c0e8d9",
|
||||
@@ -332,7 +333,7 @@
|
||||
"gsd-core/workflows/undo.md": "5ff7d63b0a2f46d5",
|
||||
"gsd-core/workflows/update.md": "4166fd3e3ca72a7b",
|
||||
"gsd-core/workflows/validate-phase.md": "4e94708c9ca15d70",
|
||||
"gsd-core/workflows/verify-phase.md": "b81bd1c061c9e6d3",
|
||||
"gsd-core/workflows/verify-phase.md": "59bb0b12ebb47f5e",
|
||||
"gsd-core/workflows/verify-work.md": "92fb4e876d75ded5",
|
||||
"hooks/gsd-check-update.js": "79c846cd8dd54caa",
|
||||
"hooks/gsd-context-monitor.js": "caa8614524452835",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.agent.md": "4e46f787d6420062",
|
||||
"agents/gsd-ui-researcher.agent.md": "9dd2acff7b24230e",
|
||||
"agents/gsd-user-profiler.agent.md": "ae16a248e18dd42b",
|
||||
"agents/gsd-verifier.agent.md": "ebd2c921c24e2d9b",
|
||||
"agents/gsd-verifier.agent.md": "6fe2c4f008ebfa22",
|
||||
"copilot-instructions.md": "1fb04111759f1645",
|
||||
"gsd-core/CHANGELOG.md": "e141e3fb369ff712",
|
||||
"gsd-core/VERSION": "562368b20a64be95",
|
||||
@@ -87,6 +87,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "657a93c539c16cab",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "08b1e82f59c18078",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -264,7 +265,7 @@
|
||||
"gsd-core/workflows/note.md": "4a5ee74cf2fc1f54",
|
||||
"gsd-core/workflows/pause-work.md": "324e04e675dc7f7f",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "c0eb896eb42e22d4",
|
||||
"gsd-core/workflows/plan-phase.md": "50042ca359933c51",
|
||||
"gsd-core/workflows/plan-phase.md": "16ff6a162cbd4c01",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "c238b5858ceb4e57",
|
||||
"gsd-core/workflows/plant-seed.md": "56451bdf104983b3",
|
||||
"gsd-core/workflows/pr-branch.md": "a080aed95785cf32",
|
||||
@@ -298,7 +299,7 @@
|
||||
"gsd-core/workflows/undo.md": "ba1ef7aa80bef6bd",
|
||||
"gsd-core/workflows/update.md": "712ab18a9b7c14f5",
|
||||
"gsd-core/workflows/validate-phase.md": "f923eac9442b6053",
|
||||
"gsd-core/workflows/verify-phase.md": "543845af6f701518",
|
||||
"gsd-core/workflows/verify-phase.md": "eea9b642393b6b90",
|
||||
"gsd-core/workflows/verify-work.md": "e253fb8e33c68fa4",
|
||||
"hooks/gsd-session.json": "0a462834f2a28fee",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "66b380ffcdfec7b5",
|
||||
"agents/gsd-ui-researcher.md": "fe237aa42ccd9ad2",
|
||||
"agents/gsd-user-profiler.md": "622220df0654b6bf",
|
||||
"agents/gsd-verifier.md": "5ec35372f0a58d48",
|
||||
"agents/gsd-verifier.md": "7bacf6ef32186213",
|
||||
"commands/gsd-add-tests.md": "1f89b16ab2cca426",
|
||||
"commands/gsd-ai-integration-phase.md": "3ccac39673ffb92c",
|
||||
"commands/gsd-audit-fix.md": "d88502ffa2151cec",
|
||||
@@ -155,6 +155,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "9840f521ad6612b5",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -332,7 +333,7 @@
|
||||
"gsd-core/workflows/note.md": "1c1e466c764e3deb",
|
||||
"gsd-core/workflows/pause-work.md": "0be71264eafd16dc",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "1976bf2001969719",
|
||||
"gsd-core/workflows/plan-phase.md": "8975739befb097bc",
|
||||
"gsd-core/workflows/plan-phase.md": "1f40b9c15ebef2ff",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "783c5171101b26b9",
|
||||
"gsd-core/workflows/plant-seed.md": "b28224f37faa9b95",
|
||||
"gsd-core/workflows/pr-branch.md": "1f77535b6b156ad9",
|
||||
@@ -366,7 +367,7 @@
|
||||
"gsd-core/workflows/undo.md": "18dec684fb1076f9",
|
||||
"gsd-core/workflows/update.md": "a27dcfd2814bf2b1",
|
||||
"gsd-core/workflows/validate-phase.md": "f513c28c01a44cb7",
|
||||
"gsd-core/workflows/verify-phase.md": "452968b6becb18a1",
|
||||
"gsd-core/workflows/verify-phase.md": "15a999f82868ad29",
|
||||
"gsd-core/workflows/verify-work.md": "24d323b667d15d01",
|
||||
"hooks/gsd-cursor-post-tool.js": "019d503aee8b4a3f",
|
||||
"hooks/gsd-cursor-session-start.js": "c6e04ed597ea7020",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "cb122369806c5467",
|
||||
"agents/gsd-ui-researcher.md": "e1422e3b0f142f74",
|
||||
"agents/gsd-user-profiler.md": "d6cb5430d841cea6",
|
||||
"agents/gsd-verifier.md": "6f3d8f7d56b72475",
|
||||
"agents/gsd-verifier.md": "e52203ef59021e9c",
|
||||
"commands/gsd/add-tests.toml": "297ba4d4c285fd99",
|
||||
"commands/gsd/ai-integration-phase.toml": "411ba33b9a7d9e78",
|
||||
"commands/gsd/audit-fix.toml": "f4a198a455f668a9",
|
||||
@@ -155,6 +155,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "77bf9dff38b2c9d4",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -332,7 +333,7 @@
|
||||
"gsd-core/workflows/note.md": "95199087905ba3e6",
|
||||
"gsd-core/workflows/pause-work.md": "7bcbdf27ba957c8b",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "02fee851c82e3b25",
|
||||
"gsd-core/workflows/plan-phase.md": "b2904cffb7ff0127",
|
||||
"gsd-core/workflows/plan-phase.md": "81c6ef4292e5f9bf",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "57c284df29121220",
|
||||
"gsd-core/workflows/plant-seed.md": "339890021123e017",
|
||||
"gsd-core/workflows/pr-branch.md": "f2a35833fe784a53",
|
||||
@@ -366,7 +367,7 @@
|
||||
"gsd-core/workflows/undo.md": "993bb0a31edca7f8",
|
||||
"gsd-core/workflows/update.md": "51c3af33474bdc24",
|
||||
"gsd-core/workflows/validate-phase.md": "2d998cb78c918d08",
|
||||
"gsd-core/workflows/verify-phase.md": "968d569ea4ef377f",
|
||||
"gsd-core/workflows/verify-phase.md": "7579af6cd757f644",
|
||||
"gsd-core/workflows/verify-work.md": "1265e07f2c74a218",
|
||||
"hooks/gsd-check-update-worker.js": "7a3eba8c1c166dd2",
|
||||
"hooks/gsd-check-update.js": "c1c78326299f6eae",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "32b2605c7254f959",
|
||||
"agents/gsd-ui-researcher.md": "87cf9eebc37c4a37",
|
||||
"agents/gsd-user-profiler.md": "ca3bf75581f211a0",
|
||||
"agents/gsd-verifier.md": "4decc9b596090ca6",
|
||||
"agents/gsd-verifier.md": "c1d1448bf31039ec",
|
||||
"gsd-core/CHANGELOG.md": "e141e3fb369ff712",
|
||||
"gsd-core/VERSION": "562368b20a64be95",
|
||||
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
|
||||
@@ -86,6 +86,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "12d23fcbaa7fcf06",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -263,7 +264,7 @@
|
||||
"gsd-core/workflows/note.md": "42b66686b2c102cb",
|
||||
"gsd-core/workflows/pause-work.md": "2c3abcaa1fa6d2e2",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "419744c1191354af",
|
||||
"gsd-core/workflows/plan-phase.md": "7d6cbb6730d852d2",
|
||||
"gsd-core/workflows/plan-phase.md": "ad2d30c92b495bcb",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "8ebcd05fcd5a0d15",
|
||||
"gsd-core/workflows/plant-seed.md": "76379e2aeb18d53b",
|
||||
"gsd-core/workflows/pr-branch.md": "79f4d93e31af9c49",
|
||||
@@ -297,7 +298,7 @@
|
||||
"gsd-core/workflows/undo.md": "791e0bf96d9a057f",
|
||||
"gsd-core/workflows/update.md": "472d4905fc8c5ce5",
|
||||
"gsd-core/workflows/validate-phase.md": "067acd7aeed52c5b",
|
||||
"gsd-core/workflows/verify-phase.md": "fecef63dcecc4104",
|
||||
"gsd-core/workflows/verify-phase.md": "4e1d99795e8e9413",
|
||||
"gsd-core/workflows/verify-work.md": "aa0b4d000b15dbf1",
|
||||
"hooks/gsd-check-update-worker.js": "80865e926e22623e",
|
||||
"hooks/gsd-check-update.js": "57433c9f9b224e3e",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "2a6c5551e354414b",
|
||||
"agents/gsd-ui-researcher.md": "384af56f90784422",
|
||||
"agents/gsd-user-profiler.md": "b8cb09319c517701",
|
||||
"agents/gsd-verifier.md": "b16febf0774e2db7",
|
||||
"agents/gsd-verifier.md": "0cd3672d8ad81dd0",
|
||||
"command/gsd-add-tests.md": "c314f9a6be312bfa",
|
||||
"command/gsd-ai-integration-phase.md": "bbab86a540e00db5",
|
||||
"command/gsd-audit-fix.md": "4106e9dce9b71585",
|
||||
@@ -155,6 +155,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "fbdf814a3af9c051",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -332,7 +333,7 @@
|
||||
"gsd-core/workflows/note.md": "f8c2842a2217f776",
|
||||
"gsd-core/workflows/pause-work.md": "8b81699a46ca8e9b",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "1976bf2001969719",
|
||||
"gsd-core/workflows/plan-phase.md": "2d8eda8f283735d2",
|
||||
"gsd-core/workflows/plan-phase.md": "38d57cf05c12ab50",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "88e294a5cc616e90",
|
||||
"gsd-core/workflows/plant-seed.md": "249d3c6b4d474106",
|
||||
"gsd-core/workflows/pr-branch.md": "c8827e8a15426bf5",
|
||||
@@ -366,7 +367,7 @@
|
||||
"gsd-core/workflows/undo.md": "7cd2153f8b15e30d",
|
||||
"gsd-core/workflows/update.md": "5d0a2356dadf2017",
|
||||
"gsd-core/workflows/validate-phase.md": "7915e3a261f7c9c9",
|
||||
"gsd-core/workflows/verify-phase.md": "452968b6becb18a1",
|
||||
"gsd-core/workflows/verify-phase.md": "15a999f82868ad29",
|
||||
"gsd-core/workflows/verify-work.md": "7cb5144cc74986e7",
|
||||
"hooks/gsd-check-update-worker.js": "8c48db40d2d74193",
|
||||
"hooks/gsd-check-update.js": "1c863b30953b47c8",
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
"agents/subagents/gsd-ui-researcher.yaml": "15e215874bc2c37d",
|
||||
"agents/subagents/gsd-user-profiler.md": "c16f94e09e433394",
|
||||
"agents/subagents/gsd-user-profiler.yaml": "645826a29d079159",
|
||||
"agents/subagents/gsd-verifier.md": "3345b59f7a3b8de3",
|
||||
"agents/subagents/gsd-verifier.md": "1536f3fa5a2d4419",
|
||||
"agents/subagents/gsd-verifier.yaml": "2d2bd6b37626f382",
|
||||
"gsd-core/CHANGELOG.md": "e141e3fb369ff712",
|
||||
"gsd-core/VERSION": "562368b20a64be95",
|
||||
@@ -122,6 +122,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "77bf9dff38b2c9d4",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -299,7 +300,7 @@
|
||||
"gsd-core/workflows/note.md": "5a99eb396c744619",
|
||||
"gsd-core/workflows/pause-work.md": "7bcbdf27ba957c8b",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "02fee851c82e3b25",
|
||||
"gsd-core/workflows/plan-phase.md": "f210c67e41f89f4a",
|
||||
"gsd-core/workflows/plan-phase.md": "f40fb8f961a35925",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "10007f8382864bcd",
|
||||
"gsd-core/workflows/plant-seed.md": "7b795d7a1b4c9f06",
|
||||
"gsd-core/workflows/pr-branch.md": "f2a35833fe784a53",
|
||||
@@ -333,7 +334,7 @@
|
||||
"gsd-core/workflows/undo.md": "96d2775f008b3a85",
|
||||
"gsd-core/workflows/update.md": "6369691790864147",
|
||||
"gsd-core/workflows/validate-phase.md": "50f37b705b6e44fb",
|
||||
"gsd-core/workflows/verify-phase.md": "968d569ea4ef377f",
|
||||
"gsd-core/workflows/verify-phase.md": "7579af6cd757f644",
|
||||
"gsd-core/workflows/verify-work.md": "6f9c666386cb6d7e",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
"scripts/changeset/cli.cjs": "68f92a344b199271",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "b98b00e586610657",
|
||||
"agents/gsd-ui-researcher.md": "7ff5c528bef6af09",
|
||||
"agents/gsd-user-profiler.md": "d825b4c0a6431f8b",
|
||||
"agents/gsd-verifier.md": "1e0ff1d8d15a48ab",
|
||||
"agents/gsd-verifier.md": "47816fa1ba8a9b8b",
|
||||
"command/gsd-add-tests.md": "b9cd93ed01945f75",
|
||||
"command/gsd-ai-integration-phase.md": "9d4bc4dcce7f1ee0",
|
||||
"command/gsd-audit-fix.md": "5615403843d5e491",
|
||||
@@ -155,6 +155,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "fbdf814a3af9c051",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "b67482409f896a10",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -332,7 +333,7 @@
|
||||
"gsd-core/workflows/note.md": "0d1374f2a2257858",
|
||||
"gsd-core/workflows/pause-work.md": "c9f0b8826845dda7",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "5ec459734bf7570c",
|
||||
"gsd-core/workflows/plan-phase.md": "1aea2bd181a782cf",
|
||||
"gsd-core/workflows/plan-phase.md": "6db3e766b7703874",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "4f884d793d72d3fd",
|
||||
"gsd-core/workflows/plant-seed.md": "507e886d0f70d84c",
|
||||
"gsd-core/workflows/pr-branch.md": "3abaa18246facdc3",
|
||||
@@ -366,7 +367,7 @@
|
||||
"gsd-core/workflows/undo.md": "0bba5e7f6196c894",
|
||||
"gsd-core/workflows/update.md": "af51041a3172c523",
|
||||
"gsd-core/workflows/validate-phase.md": "0fc5991f6d7c6c39",
|
||||
"gsd-core/workflows/verify-phase.md": "d8999a0a1cd7b6de",
|
||||
"gsd-core/workflows/verify-phase.md": "13a1a43395b5e47b",
|
||||
"gsd-core/workflows/verify-work.md": "52f6011634cff599",
|
||||
"hooks/gsd-check-update-worker.js": "5882dbd41918c863",
|
||||
"hooks/gsd-check-update.js": "5fb0027b7b76986c",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "7a383f6a3fbba34b",
|
||||
"agents/gsd-ui-researcher.md": "67596ca5ee2f4547",
|
||||
"agents/gsd-user-profiler.md": "ca3bf75581f211a0",
|
||||
"agents/gsd-verifier.md": "82b7967e24c2065b",
|
||||
"agents/gsd-verifier.md": "4bc6c8e197ee56e0",
|
||||
"gsd-core/CHANGELOG.md": "e141e3fb369ff712",
|
||||
"gsd-core/VERSION": "562368b20a64be95",
|
||||
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
|
||||
@@ -86,6 +86,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "bd249d9024c39c0d",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -263,7 +264,7 @@
|
||||
"gsd-core/workflows/note.md": "42b66686b2c102cb",
|
||||
"gsd-core/workflows/pause-work.md": "54f1c0a9e79e2c59",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "1b820f4e70acce86",
|
||||
"gsd-core/workflows/plan-phase.md": "fcc0bfeadf4aa5c4",
|
||||
"gsd-core/workflows/plan-phase.md": "140b9f4360646c96",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "b809588bff4f48b5",
|
||||
"gsd-core/workflows/plant-seed.md": "e3949fcbcf5d375f",
|
||||
"gsd-core/workflows/pr-branch.md": "95850381230787ed",
|
||||
@@ -297,7 +298,7 @@
|
||||
"gsd-core/workflows/undo.md": "791e0bf96d9a057f",
|
||||
"gsd-core/workflows/update.md": "baae1a977fbeba49",
|
||||
"gsd-core/workflows/validate-phase.md": "0e153ccb3bdb9dda",
|
||||
"gsd-core/workflows/verify-phase.md": "33a17f66c8291096",
|
||||
"gsd-core/workflows/verify-phase.md": "0ef74d5b7f7646f6",
|
||||
"gsd-core/workflows/verify-work.md": "8a4157d179fce9c4",
|
||||
"hooks/gsd-check-update-worker.js": "74edb6f6b1010c85",
|
||||
"hooks/gsd-check-update.js": "81962511d619d038",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "843c1deeaa1cb5e7",
|
||||
"agents/gsd-ui-researcher.md": "e09f0f7034eaa366",
|
||||
"agents/gsd-user-profiler.md": "622220df0654b6bf",
|
||||
"agents/gsd-verifier.md": "1e8a6492303366a0",
|
||||
"agents/gsd-verifier.md": "3065cc4cf897078d",
|
||||
"gsd-core/CHANGELOG.md": "e141e3fb369ff712",
|
||||
"gsd-core/VERSION": "562368b20a64be95",
|
||||
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
|
||||
@@ -86,6 +86,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "1bd40c3f94d712b1",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -263,7 +264,7 @@
|
||||
"gsd-core/workflows/note.md": "acc9130fb1e94f0b",
|
||||
"gsd-core/workflows/pause-work.md": "09a6b8980f7b771a",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "022822b3b6971b75",
|
||||
"gsd-core/workflows/plan-phase.md": "c3e494c63f5c04c5",
|
||||
"gsd-core/workflows/plan-phase.md": "9781d27e30242ed8",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "8fb889570c17db15",
|
||||
"gsd-core/workflows/plant-seed.md": "dc911406ada4d188",
|
||||
"gsd-core/workflows/pr-branch.md": "e939128047e02395",
|
||||
@@ -297,7 +298,7 @@
|
||||
"gsd-core/workflows/undo.md": "59b8baa54efc4110",
|
||||
"gsd-core/workflows/update.md": "e259898f86ae7133",
|
||||
"gsd-core/workflows/validate-phase.md": "70d102b4d5113dd4",
|
||||
"gsd-core/workflows/verify-phase.md": "ba797ce64e593a10",
|
||||
"gsd-core/workflows/verify-phase.md": "67eefbd1f6417281",
|
||||
"gsd-core/workflows/verify-work.md": "1e2a10168f8fdc2b",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
"scripts/changeset/cli.cjs": "68f92a344b199271",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"agents/gsd-ui-checker.md": "bd8e9be4c75dcdcf",
|
||||
"agents/gsd-ui-researcher.md": "f04d24e6459bd23d",
|
||||
"agents/gsd-user-profiler.md": "622220df0654b6bf",
|
||||
"agents/gsd-verifier.md": "88eac9841f52dd8c",
|
||||
"agents/gsd-verifier.md": "e6353ed8a4baaa32",
|
||||
"gsd-core/CHANGELOG.md": "e141e3fb369ff712",
|
||||
"gsd-core/VERSION": "562368b20a64be95",
|
||||
"gsd-core/bin/check-latest-version.cjs": "e4a224058c8f4d74",
|
||||
@@ -86,6 +86,7 @@
|
||||
"gsd-core/references/gates.md": "7dc9fd3a3d6217c6",
|
||||
"gsd-core/references/git-integration.md": "6ec36ea6b868655f",
|
||||
"gsd-core/references/git-planning-commit.md": "f897a15ebfc3f5a7",
|
||||
"gsd-core/references/honest-verifier.md": "8815c9fc18c35719",
|
||||
"gsd-core/references/ios-scaffold.md": "5ef0cb7e0fac891f",
|
||||
"gsd-core/references/loop-hook-dispatch.md": "32e5dfb4dba76987",
|
||||
"gsd-core/references/mandatory-initial-read.md": "fe59abce693717cf",
|
||||
@@ -263,7 +264,7 @@
|
||||
"gsd-core/workflows/note.md": "1c1e466c764e3deb",
|
||||
"gsd-core/workflows/pause-work.md": "5ce6a137bd9fc0f8",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "19911e87fd4185f2",
|
||||
"gsd-core/workflows/plan-phase.md": "98210e414d5d9e0b",
|
||||
"gsd-core/workflows/plan-phase.md": "55ddbe990fcaa74f",
|
||||
"gsd-core/workflows/plan-review-convergence.md": "7e01c19b7b9a2aad",
|
||||
"gsd-core/workflows/plant-seed.md": "9d36ecd08093a494",
|
||||
"gsd-core/workflows/pr-branch.md": "cc28ab5cd9db16b9",
|
||||
@@ -297,7 +298,7 @@
|
||||
"gsd-core/workflows/undo.md": "18dec684fb1076f9",
|
||||
"gsd-core/workflows/update.md": "cbf978622ad0f577",
|
||||
"gsd-core/workflows/validate-phase.md": "a36cf2c688c261ac",
|
||||
"gsd-core/workflows/verify-phase.md": "6adfc47bee438b5d",
|
||||
"gsd-core/workflows/verify-phase.md": "8a89a915dad5960b",
|
||||
"gsd-core/workflows/verify-work.md": "7586bdeeeb9ecba6",
|
||||
"scripts/changeset/README.md": "86ff89331dfd94b2",
|
||||
"scripts/changeset/cli.cjs": "68f92a344b199271",
|
||||
|
||||
@@ -513,3 +513,111 @@ describe('probe-core: projectProhibitions descriptor projection (CHK-02)', () =>
|
||||
assert.ok(!('check_rule' in projected[0]), 'descriptor-less item gains no check_rule');
|
||||
});
|
||||
});
|
||||
|
||||
// ─── Honest verifier (#1154): truth-axis abstention — the verify-time MIRROR of #644's
|
||||
// prohibition judgment-tier (ADR-550 D4), applied to the edge `backstop` truth tier (D7a).
|
||||
// Per ADR-550 D5 the deterministic, CI-testable surface is the disposition helper + the
|
||||
// projection ROUND-TRIP — NEVER the LLM verdict (a test asserting the model's judgment is
|
||||
// vacuous and rejected). The abstain-on-unconfirmed-backstop case is the REGRESSION
|
||||
// (trek-e review condition 5) that must fail RED on `next` before the fix.
|
||||
const FM_SCRIPT = path.join(__dirname, '..', 'gsd-core', 'bin', 'lib', 'frontmatter.cjs');
|
||||
const fm = require(FM_SCRIPT);
|
||||
|
||||
// Serialize projected truths into a plan-frontmatter `must_haves.truths` block exactly as
|
||||
// plan-phase emits it — a backstop truth as a flat-scalar object (ADR-550 #1278: flat scalars,
|
||||
// NEVER a nested object), a plain inferable truth as a bare string.
|
||||
function renderTruthsBlock(projected) {
|
||||
const lines = ['---', 'must_haves:', ' truths:'];
|
||||
for (const t of projected) {
|
||||
if (typeof t === 'string') {
|
||||
lines.push(` - ${t}`);
|
||||
} else {
|
||||
lines.push(` - statement: ${t.statement}`);
|
||||
if (t.verification) lines.push(` verification: ${t.verification}`);
|
||||
}
|
||||
}
|
||||
lines.push('---');
|
||||
return lines.join('\n');
|
||||
}
|
||||
|
||||
describe('probe-core: truthStatement / truthVerification normalizers (#1154, Hyrum backward-compat)', () => {
|
||||
test('truthStatement extracts text from a plain-string truth and an object-form truth identically', () => {
|
||||
assert.equal(pc.truthStatement('Overlapping intervals are merged'), 'Overlapping intervals are merged');
|
||||
assert.equal(
|
||||
pc.truthStatement({ statement: 'Adjacent intervals merge', verification: 'backstop' }),
|
||||
'Adjacent intervals merge',
|
||||
);
|
||||
});
|
||||
|
||||
test('truthVerification returns the tier for an object-form truth and null for a plain string (no spurious tier)', () => {
|
||||
assert.equal(pc.truthVerification({ statement: 'Adjacent intervals merge', verification: 'backstop' }), 'backstop');
|
||||
assert.equal(pc.truthVerification('Overlapping intervals are merged'), null);
|
||||
assert.equal(pc.truthVerification({ statement: 'x', verification: 'explicit' }), 'explicit');
|
||||
});
|
||||
});
|
||||
|
||||
describe('probe-core: dispositionForUnverifiableTruth (#1154, ADR-550 D4 truth-axis mirror)', () => {
|
||||
test('abstain-on-unconfirmed-backstop (condition 5, REGRESSION): a backstop truth with no explicit evidence disposes insufficient_spec/unverified/flagged — never green', () => {
|
||||
const d = pc.dispositionForUnverifiableTruth(
|
||||
{ statement: 'Adjacent/touching intervals [1,2],[2,3] merge', verification: 'backstop' },
|
||||
{ evidence: [] },
|
||||
);
|
||||
assert.equal(d.status, 'unverified', 'a backstop truth with no explicit evidence is unverified');
|
||||
assert.equal(d.flagged, true, 'and flagged — never a silent pass (ADR-550 D4)');
|
||||
assert.equal(d.tier, 'backstop', 'the backstop tier is echoed unchanged');
|
||||
assert.equal(
|
||||
d.reason,
|
||||
'insufficient_spec',
|
||||
'carries the distinguishable insufficient_spec reason code so human_needed is not conflated with ordinary manual-UAT',
|
||||
);
|
||||
});
|
||||
|
||||
test('pass-on-wired-backstop: a backstop truth WITH explicit evidence (a wired held-out/property test) disposes green — abstention is for the unconfirmable only', () => {
|
||||
const d = pc.dispositionForUnverifiableTruth(
|
||||
{ statement: 'Adjacent/touching intervals [1,2],[2,3] merge', verification: 'backstop' },
|
||||
{ evidence: [{ test: 'tests/intervals.property.test.cjs', passed: true }] },
|
||||
);
|
||||
assert.equal(d.status, 'green');
|
||||
assert.equal(d.flagged, false);
|
||||
assert.equal(d.tier, 'backstop');
|
||||
});
|
||||
|
||||
test('over-abstention guard (AC#3): a plain inferable truth is NEVER routed to abstention', () => {
|
||||
const d = pc.dispositionForUnverifiableTruth('Overlapping intervals are merged', { evidence: [] });
|
||||
assert.equal(d.status, 'green', 'a plain inferable truth is graded normally, never abstained');
|
||||
assert.equal(d.flagged, false);
|
||||
});
|
||||
|
||||
test('over-abstention guard (AC#3): an explicit-tier truth NEVER abstains even with no evidence (only backstop triggers it)', () => {
|
||||
const d = pc.dispositionForUnverifiableTruth({ statement: 'Symbol X is wired', verification: 'explicit' }, { evidence: [] });
|
||||
assert.equal(d.status, 'green', 'an explicit (inferable) truth never abstains');
|
||||
assert.equal(d.flagged, false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('probe-core: projectTruths (#1154, conservative serializer — Postel) + round-trip parity (condition 4, ADR-550 D5b)', () => {
|
||||
test('projectTruths emits the flat-scalar backstop marker and collapses inferable truths to plain strings', () => {
|
||||
const projected = pc.projectTruths([
|
||||
{ statement: 'Adjacent intervals merge', verification: 'backstop' },
|
||||
'Overlapping intervals are merged',
|
||||
{ statement: 'Symbol X is wired', verification: 'explicit' },
|
||||
]);
|
||||
assert.deepEqual(projected, [
|
||||
{ statement: 'Adjacent intervals merge', verification: 'backstop' },
|
||||
'Overlapping intervals are merged',
|
||||
'Symbol X is wired',
|
||||
], 'only a backstop truth carries a structured marker; explicit/inferable truths stay bare strings (no spurious markers)');
|
||||
});
|
||||
|
||||
test('round-trip parity (SPEC backstop edge → must_haves.truths marker → read-back): the marker survives as a structured field, plain truths byte-identically', () => {
|
||||
const projected = pc.projectTruths([
|
||||
{ statement: 'Adjacent intervals merge', verification: 'backstop' },
|
||||
'Overlapping intervals are merged',
|
||||
]);
|
||||
const parsed = fm.parseMustHavesBlock(renderTruthsBlock(projected), 'truths');
|
||||
assert.equal(pc.truthVerification(parsed[0]), 'backstop', 'the backstop marker survives the round-trip as a structured field, not prose (#1110 fragility avoided)');
|
||||
assert.equal(pc.truthStatement(parsed[0]), 'Adjacent intervals merge');
|
||||
assert.equal(pc.truthStatement(parsed[1]), 'Overlapping intervals are merged');
|
||||
assert.equal(pc.truthVerification(parsed[1]), null, 'a plain truth round-trips with no marker (Hyrum byte-identity backward-compat)');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
"note.md": 6563,
|
||||
"pause-work.md": 14397,
|
||||
"plan-milestone-gaps.md": 11765,
|
||||
"plan-phase.md": 93973,
|
||||
"plan-phase.md": 94459,
|
||||
"plan-review-convergence.md": 23468,
|
||||
"plant-seed.md": 11741,
|
||||
"pr-branch.md": 15919,
|
||||
@@ -86,6 +86,6 @@
|
||||
"undo.md": 10431,
|
||||
"update.md": 21053,
|
||||
"validate-phase.md": 10745,
|
||||
"verify-phase.md": 38228,
|
||||
"verify-phase.md": 40728,
|
||||
"verify-work.md": 35212
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user