| Counted completion | Estimated completion (PRS §6.4) | Critical-chain depth (PRS §6.3.2) | Provenance |
|---|---|---|---|
| 6/14 tasks complete (COUNTED) | INSUFFICIENT DATA n=2<10 | 3 | seed 7825660667501812084 from sha256(compass row|version|remaining task ids|n)[:16] · CONCURRENCY_SLOTS=1 (unstated -> 1 (PRS §10.1)) · ITERATIONS=10000 (PRS §10.1) |
| C1 Deliverable | Text | C7 Estimated completion | Chain depth | C8 State (re-derived) | C9 State (claimed) | C10 Exclusions |
|---|---|---|---|---|---|---|
| D1 | D1: Gap register — the 17 identified gaps between /asom and ABBI-SESSION-OPERATING-MODEL, each tracked to CLOSED. Per the Architect's acceptance test no gap may be dispositioned as filed or out of scope; the register is the scoreboard the objective is measured on and it must read 17/17 closed. | 1/1 tasks complete (COUNTED) | 0 | incomplete | open | 1 rows excluded: not re-derivable |
| D2 | D2: A3 root-cause report — /problem-solving run over the 78 /asom-triggered INAPPROPRIATE_BEHAVIOR records of 2026-08-09..08-14, with a fact-verified 5-Whys that PASSES the fivewhys generator, a therefore-test that lands on the problem statement, and both a short-term and a long-term countermeasure. Rendered as A3 HTML. | 1/1 tasks complete (COUNTED) | 0 | incomplete | open | 3 rows excluded: not re-derivable |
| D3 | D3: THE PROGRESS REPORTING STANDARD — canonical document defining the per-deliverable table columns, progress-bar semantics, the ETA formula and its inputs, the objective-complete report format, where the artifact lives, its update trigger, what fails closed when it is absent, AND the binding rule that every rendered state is re-derived from the deployed artifact and never from a status field. Closes gaps 2, 3, 4, 12. | 1/1 tasks complete (COUNTED) | 0 | incomplete | open | 1 rows excluded: not re-derivable |
| D4 | D4: Task-state timestamps — plan.tasks gains started_at and completed_at, and whatever writes a task status stamps the transition. Verified by observing a real task transition stamp and then elapsed rendering non-empty. Closes gap 3. | 0/1 tasks complete (COUNTED) | 1 | incomplete | open | 2 rows excluded: not re-derivable |
| D5 | D5: The deployed per-project progress tracker — the existing live renderer generalised off its five hardcoded constants, rendering all seven canon clause-14 columns plus proportional progress bars and a real ETA, deployed at a per-project address. Verified by opening the URL for THIS project and watching this session's own deliverables advance, with the negative case (stale or absent page) run first and shown to fail, and by confirming a task shown complete is re-derived from its artifact rather than its status row. Closes gaps 1, 3, 12. | 1/3 tasks complete (COUNTED) | 2 | incomplete | open | 1 rows excluded: not re-derivable |
| D6 | D6: /asom rebuilt WITH A SCRIPT and gap-complete — publishes/refreshes the tracker as its Step 5 action; adds gate rows for blocking-bug->/fix-repair->continue, dispatch-an-agent-never-self-execute, plan-approved?, audits-before-gate-(e), root-cause-before-fix, and §4 admissibility on gate (e); adds recurrence escalation so a second record for the same clause in one session does not resolve identically to the first; and Step 5 is verified rather than asserted. Closes gaps 1, 5, 6, 7, 8, 9, 13, 14, 16, 17. | 0/3 tasks complete (COUNTED) | 2 | incomplete | open | 3 rows excluded: not re-derivable |
| D7 | D7: The cadence and compaction hook pair — forced objective/deliverable review at each task completion and on both sides of a compaction, and the corrective_behaviour from each IB ARMED into the mistake-intervention registry instead of being left at 'filed'. Closes gaps 10, 11, 15. | 1/3 tasks complete (COUNTED) | 2 | incomplete | open | 2 rows excluded: not re-derivable |
| ALL | UNRESOLVED REF: ALL — no such id in deliverables_verbatim | 1/1 tasks complete (COUNTED) | 0 | incomplete | NOT MEASURED | 5 rows excluded: not re-derivable |
| C1 DELIVERABLE | C2 TASK | C3 EXECUTION TYPE | C4 DEPENDS ON | C5 MODEL EXECUTING | C6 TIME ELAPSED | C7 ESTIMATED COMPLETION | C8 STATE (RE-DERIVED) | C9 STATE (CLAIMED) | C10 EVIDENCE |
|---|---|---|---|---|---|---|---|---|---|
| D1 | T1.1 Author ASOM-GAP-REGISTER.md as MACHINE-READABLE data (D7's registry reads it): per gap - canon clause VERBATIM, the /asom text or its absence verbatim, the defect in one sentence, the closing artifact, the NEGATIVE-direction test that would catch it still open, plus CAPA fields (owner, probe_cmd, expected, baseline_rate, monitoring_window) defined UP FRONT per DR1 | concurrent | none | claude-opus-5 (deliverable-build-agent) | NOT STARTED | INSUFFICIENT DATA n=0<5 planned 35m (plan declaration, PRS §2.1.2) | complete RECONCILE | pending | /Users/abbiadmin/.abbi/abbi-infrastructure/v200/docs/ASOM-GAP-REGISTER.json 93042B sha256:c47bf2c823803822 |
| D1 | T1.2 Independently verify every closure claim against the DEPLOYED ARTIFACT, never the task status; flip each gap to CLOSED only on its own negative-direction evidence. Panel REFUTED the objection that this duplicates T1.1 - authoring and independently verifying are different acts | dependent | T6.3, T7.4, T5.4, T4.2, T8.5 | claude-opus-5 (verification-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 40m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| C1 DELIVERABLE | C2 TASK | C3 EXECUTION TYPE | C4 DEPENDS ON | C5 MODEL EXECUTING | C6 TIME ELAPSED | C7 ESTIMATED COMPLETION | C8 STATE (RE-DERIVED) | C9 STATE (CLAIMED) | C10 EVIDENCE |
|---|---|---|---|---|---|---|---|---|---|
| D2 | T2.1 Toyota 8-step over the 78 /asom IB rows: problem statement, fact-verified 5-Whys with an INVESTIGATE->FACT pair per Why, root cause passing the 3 tests. IN FLIGHT | concurrent | none | claude-opus-5 (bug-problem-solving-agent) | NOT STARTED | INSUFFICIENT DATA n=0<5 planned 40m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | in_progress | no predicate declared at plan time (PRS §2.2.2a) |
| D2 | T2.2 five_whys_generator.py must return PASS; therefore-test read-back must land on the problem statement. Record the verdict verbatim | dependent | T2.1 | deterministic script | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 10m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| D2 | T2.3 Render the A3 via a3_generator.py and confirm it is self-contained (no external src/href) | dependent | T2.2 | deterministic script | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 10m (plan declaration, PRS §2.1.2) | complete RECONCILE | pending | /Users/abbiadmin/abbi-a3-reports/a3-20260814-asom-noncompliance.html 42186B sha256:91cb084bcedc5bac |
| D2 | T2.4 AMEND the A3 root cause to the PANEL'S finding: all 6 models unanimously rejected 'prose with no mechanism' as the ROOT and named it a SYMPTOM - the real root is NO SEPARATION OF DUTY, because the model that violates the rule is also the model that would run the enforcement script and author its own passing grade | dependent | T2.3 | claude-opus-5 (bug-problem-solving-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 25m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| C1 DELIVERABLE | C2 TASK | C3 EXECUTION TYPE | C4 DEPENDS ON | C5 MODEL EXECUTING | C6 TIME ELAPSED | C7 ESTIMATED COMPLETION | C8 STATE (RE-DERIVED) | C9 STATE (CLAIMED) | C10 EVIDENCE |
|---|---|---|---|---|---|---|---|---|---|
| D3 | T3.1 Author ABBI-PROGRESS-REPORTING-STANDARD.md. Every rule CITED to prior art, not asserted: Jenkins renders the literal 'Estimated Remaining Time: N/A' + an indeterminate bar with no history; GitLab shows elapsed only and its ETA is still an open request; Buildkite shows a placeholder for not-started steps; Airflow REPLACED SLA with Deadline Alerts computed from average previous runtime; Argo Rollouts has progressDeadlineSeconds + ProgressDeadlineExceeded and explicitly does not estimate while paused; Material/Carbon mandate indeterminate-when-unknown; MDN recommends native <progress> over role=progressbar. CORE CLAUSE: no rendered number may exist that is not traceable to a timestamp or a resampled distribution, and an unknown renders as an explicit unknown token plus an indeterminate bar - never a fabricated time | concurrent | none | claude-opus-5 (deliverable-build-agent) | NOT STARTED | INSUFFICIENT DATA n=0<5 planned 40m (plan declaration, PRS §2.1.2) | complete RECONCILE | pending | /Users/abbiadmin/.abbi/abbi-infrastructure/v200/docs/ABBI-PROGRESS-REPORTING-STANDARD.md 50066B sha256:a265122735829530 |
| D3 | T3.2 Adversarial completeness review on a non-Claude model: does the standard leave any of gaps 2/3/4/12 satisfiable without doing the work? | dependent | T3.1 | deepseek_reason | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 15m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| C1 DELIVERABLE | C2 TASK | C3 EXECUTION TYPE | C4 DEPENDS ON | C5 MODEL EXECUTING | C6 TIME ELAPSED | C7 ESTIMATED COMPLETION | C8 STATE (RE-DERIVED) | C9 STATE (CLAIMED) | C10 EVIDENCE |
|---|---|---|---|---|---|---|---|---|---|
| D4 | T4.1 REDESIGNED BY THE CONFLICT SCAN (C2). Do NOT mutate plan.tasks in place - verify_compass recomputes sha_obj(stored_plan) against the stored plan_sha256, so an in-place stamp yields 'PLAN HASH MISMATCH' which is textually INDISTINGUISHABLE FROM TAMPER and renders on 5 registered hook events. Instead stamp into a NEW top-level details key task_state {task_id: {started_at, completed_at, task_type, attempt}} OUTSIDE the three hashed fields, exactly mirroring how touch() already stores review_log, behind the SAME compare-and-swap UPDATE ... WHERE id=? AND details=?. Zero digest impact, zero reader breakage. Derive duration, never store it | dependent | T0.1 | claude-opus-5 (bug-fix-devpolicy-autobuild-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 45m (plan declaration, PRS §2.1.2) | incomplete | pending | /Users/abbiadmin/.claude/hooks/compass.py 71231B sha256:c17a9ed18c99f15a |
| D4 | T4.2 NEGATIVE FIRST: a task with no timestamps must render an explicit unknown token, never 0m - show the naive path failing before trusting the fix. THEN drive a real status transition and observe the stamp. THEN re-run compass.py verify and confirm plan_sha256 and compass_sha256 are BYTE-UNCHANGED | dependent | T4.1 | claude-opus-5 (verification-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 25m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| D4 | T4.3 Regression over EVERY compass reader the conflict scan named: compass.py norm_plan/verify_compass/recompute_deliverables_digest/render/touch, refresh_progress_site.py, save-continue-snapshot.py, deliverable-ledger-write.py (it WRITES a SESSION_COMPASS row and must be updated in lockstep), compass-inject.py, compass-carry-diff.py, save-continue-restart.sh pin_successor_compass, assert-pin-timeliness.py | dependent | T4.1 | claude-opus-5 (quality-check-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 30m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| C1 DELIVERABLE | C2 TASK | C3 EXECUTION TYPE | C4 DEPENDS ON | C5 MODEL EXECUTING | C6 TIME ELAPSED | C7 ESTIMATED COMPLETION | C8 STATE (RE-DERIVED) | C9 STATE (CLAIMED) | C10 EVIDENCE |
|---|---|---|---|---|---|---|---|---|---|
| D5 | T5.1 Generalise refresh_progress_site.py off its 5 hardcoded constants (PROJECT_CODE, PROJECT_NAME, PROJ, HOST, DIST) to a project parameter resolved from the active-project file, and remove the :67 hard-fail 'refusing to render a foreign objective' guard's dependence on a single project. Add: the elapsed column (canon's missing 7th), native <progress> bars ALWAYS paired with the same figure as text, an overrun flag against a per-task-type median deadline gated on n>=5, and a Monte Carlo P50-P85 band gated on a stated minimum sample - rendering 'insufficient data' plus an indeterminate bar below it. Forecasting is stdlib only: graphlib.TopologicalSorter for critical-chain depth, statistics, random.choices. PANEL RETAINED THIS TASK - three models called it unnecessary and all three WITHDREW on the measured fact that the renderer is hardcoded to a different live production project | dependent | T3.1, T4.1 | claude-opus-5 (deliverable-build-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 60m (plan declaration, PRS §2.1.2) | incomplete | pending | /Users/abbiadmin/.abbi/scripts/refresh_progress_site.py 69710B sha256:3cc9faec886a9e1a |
| D5 | T5.2 Provision a NEW Cloudflare Pages project + CNAME at mgc-v200-abbiadmin-abbi160.abbi-ai.com - the UNANIMOUS 6-of-6 panel decision. Do NOT reuse abbi003008.abbi-ai.com: it is already bound as a custom domain to the live v200-webapp-boot-protocol-progress project, a second project claiming it is rejected by Cloudflare, and re-pointing the CNAME breaks a live site. Use cf_get_pages_project as the existence probe - cf_list_pages_projects is broken (the gateway sends per_page=100 which the Pages endpoint rejects) (GATED) | dependent | T5.1 | claude-opus-5 + cf MCP | 0s (MEASURED) | INSUFFICIENT DATA n=2<5 planned 25m (plan declaration, PRS §2.1.2) | complete RECONCILE | pending | https://mgc-v200-abbiadmin-abbi160.abbi-ai.com/ HTTP 200 50775B |
| D5 | T5.3 Add a per-project refresher LaunchAgent and PRESERVE com.abbi.v200-sjob-boot-protocol-progress-refresh-r74260eb intact and loaded (7l.vi). Do not parameterise via plist env - the existing job passes only HOME and PATH. Do NOT add any plist before T5.1 lands, or every project renders ABBI.003.008 into one Pages project (C8) | dependent | T5.1 | claude-opus-5 | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 25m (plan declaration, PRS §2.1.2) | incomplete | pending | /Users/abbiadmin/Library/LaunchAgents/com.abbi.v200-sjob-progress-refresh-r83b3075.plist absent |
| D5 | T5.4 NEGATIVE FIRST: confirm the served-vs-fresh staleness oracle FAILS on a deliberately stale page before any PASS is admitted. Then open the live URL and confirm this session's D1-D7 render with bars, elapsed and either a real band or an explicit unknown. Then re-derive one task shown complete from its DEPLOYED ARTIFACT rather than its status row | dependent | T5.2, T5.3 | claude-opus-5 (verification-agent) | 57s (MEASURED) | INSUFFICIENT DATA n=2<5 planned 35m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| C1 DELIVERABLE | C2 TASK | C3 EXECUTION TYPE | C4 DEPENDS ON | C5 MODEL EXECUTING | C6 TIME ELAPSED | C7 ESTIMATED COMPLETION | C8 STATE (RE-DERIVED) | C9 STATE (CLAIMED) | C10 EVIDENCE |
|---|---|---|---|---|---|---|---|---|---|
| D6 | T6.1 Author asom.py as a thin DETERMINISTIC adjudicator, placed at ~/.claude/skills/asom/references/asom.py so it matches an existing watched_paths pattern - a bare asom/asom.py matches NEITHER */SKILL.md NOR */references/* and would silently never reach Gitea (C3). It reads the six gate rows AS DATA, reads patterns from guard-patterns.yaml, writes the IB row itself instead of asking the model to, and REUSES autonomy-enforcer.py's existing block accounting (LOOP_REPEAT_LIMIT=3, LOOP_WINDOW_SECONDS=120, SOFT_CAP/HARD_CAP, breach records) rather than reimplementing a ladder | dependent | T5.1 | claude-opus-5 (bug-fix-devpolicy-autobuild-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 60m (plan declaration, PRS §2.1.2) | incomplete | pending | /Users/abbiadmin/.claude/skills/asom/references/asom.py absent |
| D6 | T6.2 New gate rows: blocking-bug->/fix-repair->continue (clause 17 has NO row today), dispatch-an-agent-never-self-execute (7g - and fix Step 5's 'resume the in-flight work' which literally instructs ABBI to do the work itself), plan-approved? (clause 8), audits-before-gate-(e) (clause 15), root-cause-before-fix (Law 14), and section-4 admissibility on gate (e) | dependent | T6.1 | claude-opus-5 | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 35m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| D6 | T6.3 Recurrence escalation ladder, keyed on pattern_id in a DURABLE store with BOTH a per-session and a LIFETIME count - if it is keyed per session, 13-in-a-session resets to 1 tomorrow and the ladder never climbs. Rungs per DR1: 1 = record + inject correction, do not block (PSA audit/warn); 2 = BLOCK via exit 2, the warn->enforce flip, for the rest of the session; 3 = block AND require a STRUCTURAL artefact to release, verified by the hook - an IB row id that actually exists, a compass re-read hash - never promise-shaped text; 4+ = backoff plus flap suppression by message hash inside a window; soft cap = escalate the class and stay DENIED until the countermeasure row is ARMED, never fail open. Then exercise each row against a case it MUST reject and show the rejection | dependent | T6.2 | claude-opus-5 (quality-check-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 40m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| D6 | T6.4 Adversarial verification on a NON-CLAUDE model: try to talk asom.py into resolving a genuine STOP as EXECUTE, and an EXECUTE as a stop. PANEL RETAINED - Grok's objection that this maps to no deliverable was REFUTED with evidence: it is D6's adversarial test, mutates nothing, and Claude is never its own adversary | dependent | T6.3 | grok_chat | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 25m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| D6 | T6.5 NET-NEW, MANDATED BY UNANIMOUS PANEL CONSENSUS. An OUT-OF-BAND watchdog that is NOT the acting model, which hard-stops or pauses a session after N EXECUTE-resolutions with no matching genuine STOP. This exists because all six models rejected the scripted-asom fix as insufficient: without it, the model that violates the rule is also the model running the enforcement script. Co-locate as code with D6 (shared/scripts), not as new infra surface | dependent | T6.3 | claude-opus-5 (bug-fix-devpolicy-autobuild-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 50m (plan declaration, PRS §2.1.2) | incomplete | pending | /Users/abbiadmin/.abbi/scripts/asom-watchdog.py absent |
| D6 | T6.6 NET-NEW, MANDATED BY UNANIMOUS PANEL CONSENSUS. Closure and gate-pass status - the 17 gap flips and every asom.py Step-5 success - written to an APPEND-ONLY, NON-MODEL-WRITABLE ledger. The acting model must never be the sole author of its own passing grade. This is the reference-monitor property DR1 identified: tamper-resistant, and not authored by the governed party | dependent | T6.5 | claude-opus-5 | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 45m (plan declaration, PRS §2.1.2) | incomplete | pending | /Users/abbiadmin/.abbi/scripts/governance-receipt-ledger.py absent |
| C1 DELIVERABLE | C2 TASK | C3 EXECUTION TYPE | C4 DEPENDS ON | C5 MODEL EXECUTING | C6 TIME ELAPSED | C7 ESTIMATED COMPLETION | C8 STATE (RE-DERIVED) | C9 STATE (CLAIMED) | C10 EVIDENCE |
|---|---|---|---|---|---|---|---|---|---|
| D7 | T7.1 REUSE FIRST, and the residual is smaller than assumed. compass-inject.py is ALREADY registered on PreCompact, SessionStart[compact], UserPromptSubmit and PostToolUse[Task|Agent|TodoWrite]. But PostToolUse CANNOT BLOCK - per the hooks reference only PreToolUse, Stop, SubagentStop, UserPromptSubmit, PreCompact, TaskCompleted and PostToolBatch can deny via exit 2 - so today's cadence check is a LOG, not a gate. Prove by execution which of gaps 10 and 11 is already closed, then move the cadence assertion to a BLOCKING event and extend the matcher, which currently misses any task completed via Write/Edit/Bash | concurrent | T0.1 | claude-opus-5 (bug-fix-devpolicy-autobuild-agent) | NOT STARTED | INSUFFICIENT DATA n=0<5 planned 40m (plan declaration, PRS §2.1.2) | incomplete | pending | /Users/abbiadmin/.claude/settings.json 14778B sha256:ed2169139b8950c2 |
| D7 | T7.2 C7 CORRECTION: the compaction pair is NOT new. pre-compact-checkpoint.py and post-compact-restore.sh already exist in canonical, save-continue-precompact.py is already registered on PreCompact, and post-compact-restore.sh exists but is UNREGISTERED with no PostCompact registration at all. So gap 11's residual is a REGISTRATION gap. Establish whether post-compact-restore.sh is superseded by compass-inject on SessionStart[compact] or genuinely needs registering - do not author a duplicate | concurrent | T0.1 | claude-opus-5 | NOT STARTED | INSUFFICIENT DATA n=0<5 planned 25m (plan declaration, PRS §2.1.2) | complete RECONCILE | pending | /Users/abbiadmin/.claude/hooks/post-compact-restore.sh 2565B sha256:afaa59c377053f75 |
| D7 | T7.3 The countermeasure registry, and ARMED is NOT A COLUMN YOU SET - it is the RESULT of running probe_cmd today. Row carries probe_cmd, expected, baseline_rate, monitoring_window, last_verified_at, lifetime_count. Probe chain per DR1, and only the third and fourth assertions count: (1) the hook path is in the LIVE settings.json under the right event; (2) the file and its interpreter exist - these hooks run under ~/.claude/hooks/venv/bin/python3 so a missing venv silently disarms every one of them; (3) NEGATIVE test - feed a synthetic VIOLATING payload and require exit 2 or permissionDecision deny; (4) POSITIVE control - feed a compliant payload and require exit 0, so a hook that blocks everything is not scored as working. A row whose probe has not run inside N days reverts to UNARMED automatically. Check Hive Mind FIRST for the 41 existing countermeasure rows - if they exist this is a migration plus a probe layer, not a new store | dependent | T7.1, T1.1 | claude-opus-5 (mistake-intervention-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 50m (plan declaration, PRS §2.1.2) | incomplete | pending | /Users/abbiadmin/.abbi/scripts/ib-countermeasure-reconciler.py absent |
| D7 | T7.4 EXTENDED BY PANEL CONSENSUS: assert ENFORCEMENT, not detection. Four models objected that observing and logging is not enforcing, and gaps 10, 11 and 15 are only closed when the mechanism BLOCKS, PAUSES or HARD-STOPS. NEGATIVE FIRST: show the cadence check does NOT fire for the uncovered tool class before the fix; then observe a real task completion and a real compaction boundary each FORCE the re-read; then confirm an armed countermeasure actually INTERCEPTS | dependent | T7.3, T7.2 | claude-opus-5 (verification-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 40m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| D7 | T7.5 settings.json hook registration (GATED, CRITICAL tier). Contested: session d0b19dfe ('change gate') overlaps on this exact file. Re-read immediately before writing and land it as a short critical section. NOTE: settings.json has ZERO UNGATED_CHANGE rows in 14 days, so the declarative 2+-ungated-changes instability rule does NOT trip | dependent | T7.4 | claude-opus-5 | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 20m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| C1 DELIVERABLE | C2 TASK | C3 EXECUTION TYPE | C4 DEPENDS ON | C5 MODEL EXECUTING | C6 TIME ELAPSED | C7 ESTIMATED COMPLETION | C8 STATE (RE-DERIVED) | C9 STATE (CLAIMED) | C10 EVIDENCE |
|---|---|---|---|---|---|---|---|---|---|
| ALL | T0.1 Preserve every original byte-intact into ~/.abbi/baselines/20260814-asom-gap-closure with a sha256 manifest, and record git HEAD. GATED - the first attempt was denied by the change gate. The untracked refresh_progress_site.py is the one item git cannot restore, so this is the ONLY reversion path for it | concurrent | none | claude-opus-5 | NOT STARTED | INSUFFICIENT DATA n=0<5 planned 15m (plan declaration, PRS §2.1.2) | complete RECONCILE | pending | /Users/abbiadmin/.abbi/baselines/20260814-asom-gap-closure/PRESERVE-MANIFEST.sha256 1639B sha256:cbe4c06ad7e1c587 |
| ALL | T8.1 /test-panel 5 roles green including the non-Claude adversarial verifier. semgrep IS present at /opt/homebrew/bin/semgrep - the devpolicy doc claiming it is absent is wrong and the Phase-2 security gate CAN run | dependent | T6.6, T7.5, T5.4, T4.3 | quality-check-agent + non-Claude verifier | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 45m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| ALL | T8.5 NET-NEW, MANDATED BY UNANIMOUS PANEL CONSENSUS: FAULT INJECTION of the enforcement mechanism itself. Deliberately commit a violation and prove INTERCEPTION - a block or a pause - distinct from and beyond the negative-first unknown-not-zero test. Panel failure-mode #3 requires this run as a RECURRING health check, not a one-time build-time proof, because the renderer and DNS survive a revert that removes the actual gate, leaving a dashboard showing progress while enforcement is silently gone | dependent | T7.4, T6.5 | claude-opus-5 (quality-check-agent) | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 40m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| ALL | T8.2 Realm integrity sweep - every container, gateway, LaunchAgent, hook and skill still functions (7l.viii). Do NOT restart gitea-autocommit (PID 1006) or fs-watcher (PID 22756) | dependent | T8.1, T8.5 | realm-integrity-sweep-agent | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 35m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| ALL | T8.3 AMENDED BY PANEL FAILURE-MODE #1: do NOT hold one commit to the end. Commit INCREMENTALLY per stable deliverable, each pathspec-scoped, and TAG the enforcement commit so a bulk revert is visibly detectable. The watcher has previously bulk-reverted 12 of 14 in-flight edits, and the shared working copy already carries 4 modified files from other sessions - a bare commit would sweep up cli-v7/src/index.ts and two other skills' SKILL.md. Verify every landed edit from git HEAD, never the working tree | dependent | T8.2 | claude-opus-5 | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 30m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| ALL | T8.4 /completion-gate over all 7 deliverables AND the gap scoreboard. The Architect's acceptance test is ALL GAPS CLOSED, so a PASS with any gap open is NOT completion of this objective. The gate must also DENY while any countermeasure row is FILED-but-not-ARMED | dependent | T1.2, T8.3 | completion-gate oracle | NOT STARTED | INSUFFICIENT DATA n=2<5 planned 30m (plan declaration, PRS §2.1.2) | NOT RE-DERIVABLE | pending | no predicate declared at plan time (PRS §2.2.2a) |
| Wave | Name | Gate |
|---|---|---|
| 0 | Baseline + gate | originals preserved byte-intact with a sha manifest; batch CGR authorized |
| 1 | Evidence + standard | fivewhys PASS; standard authored citing DR1 prior art |
| 2 | Data layer | a real transition stamps task_state; compass digests UNCHANGED; every reader still verifies |
| 3 | Tracker | live URL shows this session's D1-D7; stale page detected FIRST |
| 4 | Enforcement + separation of duty | fault injection proves INTERCEPTION, not logging; watchdog hard-stops; ledger is not model-writable |
| 5 | Close | gap register reads CLOSED for every gap with per-gap negative-direction evidence; /completion-gate PASS |