You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: phase9-vre-feature-ledger.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -176,3 +176,4 @@ Companion files:
176
176
| 111 | 2026-04-29 | 5 | W5-CLAIM-EDGE-SCHEMA | T5.2 sub-task A.1: `phase9.claim-edge.v1` schema lands with six frozen relations (`supports`, `contradicts`, `supersedes`, `depends_on`, `evolved_into`, `related_to`), required `{schemaVersion, edgeId, fromId, toId, relation, createdAt}`, optional `{confidence, sourceR2EventId, objectiveId}`. Plugin `CLAIM-*` namespace per D2.1. Confidence optional-only-if-producer per D2.2. Self-loop guard split: schema deliberately accepts self-loops (CF1 fix); A.2 consumer rejects with `E_CLAIM_EDGE_SELF_LOOP`. File 14 schemas-and-fixtures-index gains `phase9.claim-edge.v1` row this same patch, avoiding a phantom schema. Mantras VERBATIM: "il mantra del ledger aggiornato ogni passaggio però deve rimanere" + "non si inizia phase 10 senza aver terminato phase 9". | `environment/schemas/phase9-claim-edge.schema.json`, `environment/tests/fixtures/phase9/claim-edge/valid-supports.json`, `environment/tests/fixtures/phase9/claim-edge/valid-contradicts.json`, `environment/tests/fixtures/phase9/claim-edge/valid-self-loop.json`, `environment/tests/fixtures/phase9/claim-edge/invalid-unknown-relation.json`, `environment/tests/fixtures/phase9/claim-edge/invalid-missing-from-id.json`, `environment/tests/fixtures/phase9/claim-edge/invalid-missing-to-id.json`, `environment/tests/schemas/phase9-claim-edge.schema.test.js`, `environment/tests/ci/validate-counts.js`, `package.json`, `../vibe-science/blueprints/private/phase9-vre-autonomous-research-loop/14-schemas-and-fixtures-index.md`, `../vibe-science/blueprints/private/phase9-vre-autonomous-research-loop/16-implementation-status-ledger.md`, `../vibe-science/blueprints/private/WIKI_VRE/log.md`, `../vibe-science/blueprints/private/WIKI_VRE/entities/phase9-claim-edge-schema.md`, `../vibe-science/blueprints/private/WIKI_VRE/concepts/typed-edge-substrate.md` | none | RED verified before implementation: `node --test environment/tests/schemas/phase9-claim-edge.schema.test.js` failed 8/8 with `ENOENT ... environment\\schemas\\phase9-claim-edge.schema.json`. GREEN: `node --test environment/tests/schemas/phase9-claim-edge.schema.test.js` (8/8 pass); `npm run test:phase9` (380 pass, 0 fail, 5 skipped); `npm run validate` (13/13 validators OK). Pending pre-commit review evidence: `/lint-wiki` umbrella and explicit ledger checks after wiki sync. | verified | anti-dup verified: 6 inverse-index registries, WIKI entity pages, and VRE codebase searched for `createClaimEdge`, `claim-edge`, `EDGE-`, `phase9.claim-edge`, and `edges.jsonl`; no existing implementation found. Two wiki mentions were forward-looking Phase 10 notes, not an existing surface. R2 inline OK: schema is additive, no existing schema modified, no consumer code added. Confounder harness: N/A, non-quantitative. tier-C: yes-with-page `concepts/typed-edge-substrate.md`. Honest residual: A.1 alone does not enable edge writes; A.2 store landing is required before any runtime can append typed edges. |
177
177
| 112 | 2026-04-29 | 5 | W5-CLAIM-EDGE-STORE | T5.2 sub-task A.2 lands the VRE-owned claim-edge store consumer. `environment/claims/edges.js` writes `.vibe-science-environment/claims/edges.jsonl` under the reviewed control-plane lock `claims-edges.jsonl`, validates `phase9.claim-edge.v1`, rejects self-loops with `E_CLAIM_EDGE_SELF_LOOP`, rejects unknown relations with `E_CLAIM_EDGE_RELATION_UNKNOWN`, defaults endpoint checks to fail-closed via `claimResolver`, returns duplicate identical payloads as `duplicate-no-op`, and fails conflicting tuple duplicates with the exact CL1 code `E_CLAIM_EDGE_DUPLICATE_CONFLICT`. The store is additive and has no downstream production emitter until D.1 seq 121. Mantras VERBATIM: "il mantra del ledger aggiornato ogni passaggio però deve rimanere" + "non si inizia phase 10 senza aver terminato phase 9". | `environment/claims/edges.js`, `environment/tests/control/claim-edges.test.js`, `environment/tests/ci/validate-counts.js`, `environment/tests/ci/phase9-write-sandbox-allowlist.json`, `environment/tests/ci/phase9-write-sandbox.js`, `environment/tests/ci/phase9-surface-index.js`, `environment/tests/ci/phase9-surface-index.test.js`, `phase9-vre-surface-index.json`, `package.json`, `../vibe-science/blueprints/private/phase9-vre-autonomous-research-loop/16-implementation-status-ledger.md`, `../vibe-science/blueprints/private/WIKI_VRE/log.md`, `../vibe-science/blueprints/private/WIKI_VRE/entities/claims-edges-js.md`, `../vibe-science/blueprints/private/WIKI_VRE/concepts/edge-store-idempotency.md` | none | RED verified before implementation: `node --test environment/tests/control/claim-edges.test.js` failed with `ERR_MODULE_NOT_FOUND` for `environment\\claims\\edges.js`. GREEN: `node --test environment/tests/control/claim-edges.test.js` (8/8 pass); targeted `node --test environment/tests/ci/phase9-write-sandbox.test.js environment/tests/ci/phase9-surface-index.test.js` (7/7 pass after `environment/claims/` became a reviewed write-sandbox prefix); `node environment/tests/ci/validate-counts.js` (OK); `npm run test:phase9` (388 pass, 0 fail, 5 skipped); `npm run validate` (13/13 validators OK); `/lint-wiki` umbrella 10/10 PASS. | verified | anti-dup verified: HAT 1 searched the 6 inverse-index registries plus VRE codebase for `createClaimEdge`, `readClaimEdges`, `environment/claims/`, `edges.jsonl`, and `claims-edges.jsonl`; no existing consumer/store existed. R2 inline OK: store is lock-protected, additive, schema-backed, and does not touch kernel or existing production call-sites. Confounder harness: N/A, non-quantitative. tier-C: yes-with-page `concepts/edge-store-idempotency.md`. Honest residual: A.2 still does not emit production edges; D.1 seq 121 wires reviewer-2 `REJECT + claimId + contradictedClaimId` verdicts into this store. |
178
178
| 113 | 2026-04-29 | 5 | W5-GOVERNANCE-BRIDGE | T5.3 sub-task B.0 (NEW per CF2) lands the VRE-to-plugin governance logger bridge. Plugin CLI `vibe-science/plugin/scripts/governance-log.js` reads stdin JSON, validates and writes through plugin-owned governance DB helpers, and emits `{ok,eventId,code}` with exit codes 0/1/2/3. VRE wrapper `environment/orchestrator/governance-logger.js` spawns `process.execPath` with the CLI path, defaults to a 5s timeout, resolves CLI path via `VIBE_SCIENCE_PLUGIN_CLI`, `VIBE_SCIENCE_PLUGIN_ROOT`, or sibling-repo fallback, and fails closed on timeout, nonzero exit, bad stdout, or missing CLI. Adds slash-form bridge source components to `KNOWN_GOVERNANCE_SOURCE_COMPONENTS`. Answers file 06 line 254-255 open question: plugin-owned CLI, not direct cross-repo DB write. Mantras VERBATIM: "il mantra del ledger aggiornato ogni passaggio però deve rimanere" + "non si inizia phase 10 senza aver terminato phase 9". | `../vibe-science/plugin/scripts/governance-log.js`, `../vibe-science/plugin/lib/phase9-governance-events.js`, `../vibe-science/tests/phase9-governance-log-cli.test.mjs`, `environment/orchestrator/governance-logger.js`, `environment/tests/orchestrator/governance-logger.test.js`, `environment/tests/ci/validate-counts.js`, `environment/tests/ci/phase9-write-sandbox-allowlist.json`, `phase9-vre-surface-index.json`, `environment/tests/ci/phase9-surface-index.js`, `environment/tests/ci/phase9-surface-index.test.js`, `../vibe-science/package.json`, `package.json`, `../vibe-science/blueprints/private/phase9-vre-autonomous-research-loop/16-implementation-status-ledger.md`, `../vibe-science/blueprints/private/WIKI_VRE/log.md`, `../vibe-science/blueprints/private/WIKI_VRE/entities/governance-log-cli-js.md`, `../vibe-science/blueprints/private/WIKI_VRE/entities/governance-logger-js.md`, `../vibe-science/blueprints/private/WIKI_VRE/concepts/cross-repo-governance-bridge.md` | none | RED verified before implementation per HAT 2 transcript: plugin test file failed 6/6 with CLI/vocabulary absent; VRE wrapper tests failed with missing `environment/orchestrator/governance-logger.js`. GREEN after HAT 3: `node --test tests/phase9-governance-log-cli.test.mjs` (6/6 pass); `node --test environment/tests/orchestrator/governance-logger.test.js` (5/5 pass); `npm run test:phase9` in `vibe-science` (36/36 pass); `npm run test:phase9` in `vibe-research-environment` (393 pass, 0 fail, 5 skipped); `npm run validate` in VRE (13 validators OK, including `check-phase9-ledger`); `npm test` in `vibe-science` (173 e2e + 342 phase8 + 36 phase9 pass); `/lint-wiki` umbrella 10/10 PASS after coverage, export inventories, registries, verified-at dashboard, and mirror sync. | verified | anti-dup verified via HAT 1 STOP: no existing VRE-to-plugin governance logger bridge; existing plugin validator and DB writer are reused. R2 inline accepted corrections baked in: existing subprocess pattern reuse, plugin `openAndInit` plus migrations, and six plugin-side tests including source-component vocabulary. Confounder harness: N/A, non-quantitative. tier-C: yes-with-page `concepts/cross-repo-governance-bridge.md`. Honest residual: B.0 alone does not emit production events; T5.5 must adopt this bridge at VRE-side governance call sites. |
179
+
| 114 | 2026-04-29 | 5 | W5-GOVERNANCE-CAPABILITY-LOGGING | T5.4 sub-task B.1 lands plugin-side handshake governance event emission. `plugin/scripts/handshake-inject.js` now writes `handshake_injected` for full handshake injection and `handshake_degraded` for missing/degraded fallback paths through `logPhase9GovernanceEvent` directly, not through the T5.3 bridge. REDIRECT closure: `session-start.js` and `prompt-submit.js` pass their already-open DB handles into the handshake helper, `prompt-submit.js` applies migrations before threading its fresh DB handle so Phase 9 governance columns exist, and the telemetry-owned DB close path is wrapped fail-soft so close failures cannot affect handshake injection. Telemetry is fail-soft: DB/migration/validator/write/close failures are caught and reported to stderr without changing the original handshake digest or degraded fallback flow. Event details are sanitized (`handshake_id`, `capabilities_count`, or enum `reason`) and do not include env secrets or raw sensitive paths. Mantras VERBATIM: "il mantra del ledger aggiornato ogni passaggio però deve rimanere" + "non si inizia phase 10 senza aver terminato phase 9". | `../vibe-science/plugin/scripts/handshake-inject.js`, `../vibe-science/plugin/scripts/session-start.js`, `../vibe-science/plugin/scripts/prompt-submit.js`, `../vibe-science/tests/phase9-handshake-injection.test.mjs`, `../vibe-science/blueprints/private/phase9-vre-autonomous-research-loop/16-implementation-status-ledger.md`, `../vibe-science/blueprints/private/WIKI_VRE/log.md`, `../vibe-science/blueprints/private/WIKI_VRE/entities/handshake-inject-js.md`, `../vibe-science/blueprints/private/WIKI_VRE/entities/prompt-submit-js.md`, `../vibe-science/blueprints/private/WIKI_VRE/entities/hook-prompt-submit.md`, `../vibe-science/blueprints/private/WIKI_VRE/entities/registry-exported-symbols.md`, `../vibe-science/blueprints/private/WIKI_VRE/entities/registry-protocol-invariants.md`, `../vibe-science/blueprints/private/WIKI_VRE/entities/registry-db-writers.md` | none | RED verified before implementation: `node --test tests/phase9-handshake-injection.test.mjs` failed only the two new emission assertions (`handshake_injected`, `handshake_degraded`), while the Phase 8 `claim_without_harness` regression already passed. REDIRECT RED verified: the same test file failed exactly two additional P1 regressions for missing existing-DB threading and non-fail-soft owned-DB close, then a second-pass RED failed exactly one `prompt-submit.js` DB-threading/order regression, and a third-pass RED failed exactly one fresh prompt-hook DB telemetry assertion with `0 !== 1` before migrations were applied. GREEN: `node --test tests/phase9-handshake-injection.test.mjs` (22/22 pass, including the three B.1 assertions plus four REDIRECT regressions); `npm run test:phase9` in `vibe-science` (43/43 pass); `npm test` in `vibe-science` (173 e2e + 342 phase8 + 43 phase9 pass); `/lint-wiki` umbrella 10/10 PASS; `node environment/tests/ci/check-phase9-ledger.js --changed-file=phase9-vre-feature-ledger.md` OK. | verified | anti-dup verified via HAT 1 STOP: no existing `handshake_injected` / `handshake_degraded` event emissions; existing `plugin/scripts/governance-log.js` from seq 113 is a generic bridge CLI, not a duplicate handshake call site. R2 inline accepted HAT 1; REDIRECT P1/P2s fixed surgically without touching `pre-tool-use.js` or the T5.1 event/source allowlists. Confounder harness: N/A, non-quantitative. tier-C: noop, event-emission wiring only; no new concept/synthesis page. Honest residual: B.2 seq 115 must handle nuclear-bash deny events and the pre-existing raw Phase 8 fork-event debt separately. |
0 commit comments