Build verification — FLOW-CAPTURE-LIVE-KN-b round 1
Verdict: pass
Frozen spec: ~/scooling/docs/FLOW-CAPTURE-LIVE-FREEZE.md (frozen: true, review_stamp pass, digest sha256:f0ca2edd…)
Diff scope: Knowtation feat/flow-capture-live — gateway capture proxies, bridge capture routes, hosted capture proposal helper, async propose/dismiss, PROPOSAL-LIFECYCLE Wave 2 note, seven-tier test/flow-capture-live-kn-b.test.mjs
Reviewer posture: independent verifier (thinking-high); not redesign
Evidence
| type | sha256 | ref | notes |
|---|---|---|---|
| test_output | eea48141de910dddc4fe1fa8034ca58aa46a2135332f878a43e42298292c1846 |
node --test test/flow-capture-live-kn-b.test.mjs |
13/13 pass (7 suites) |
| test_file | 8ef28cc4e4614ecadbfadb898cb56a4fbb99d0b0c52d1bda393fe0a191a49838 |
test/flow-capture-live-kn-b.test.mjs |
Seven-tier source |
Checklist
| # | Check | Evidence |
|---|---|---|
| V1 | Frozen deliverables exist | Gateway proxies in hub/gateway/server.mjs; hub/bridge/flow-capture-routes.mjs + registerBridgeFlowCaptureRoutes; lib/flow/flow-capture-hosted-proposal.mjs; PROPOSAL-LIFECYCLE Wave 2 note; seven-tier test file |
| V2 | APIs match freeze | POST observe, GET candidates, POST propose/dismiss → bridge; T5 refuse-all for promote/merge/dismiss; no matchesScoolingFlowCaptureFingerprint |
| V3 | Seven-tier matrix | unit/integration/e2e/stress/data-integrity/performance/security — 13/13 |
| V4 | No scope creep | No Scooling product code; no capture env ON; no T5 admit; run stays unproxied |
| V5 | No silent deletion | Authoring proxies retained; capture added beside them |
| V6 | Governance truthful after this pass | ROADMAP/HANDOVER updated in closing commit with DONE + NEXT = FLOW-CAPTURE-LIVEb |
| V7 | No secrets / unsafe defaults | Envs default off; security tier asserts no env hard-on; no secrets in envelopes |
| V8 | Claims match evidence | Tests green with digests above; freeze §FCL.3 KN-b + FCL-C3 + FCL-C10 satisfied |
Findings
None.
Honest summary
Wave 2 Knowtation KN-b ships gateway→bridge capture proxies (observe / list / propose / dismiss) and bridge handlers that call the existing capture facade (writes/detection still default OFF). Propose/dismiss await async createProposal so hosted canister create works; createCaptureProposalOnCanister embeds source/capture_meta in frontmatter without E1 admission. T5 stays refuse-all for all flow_capture kinds even when session-bound author==approver. PROPOSAL-LIFECYCLE documents Wave 2 option B. No capture posture/env flip; no Scooling product changes.