| Peer ring (3 long-lived) |
CoS, SA, Steward spawned and live; cognitive separation enforced by briefs. |
Build-queue step 5 — Operator action; D-decisions assume the ring is up. |
Three sessions live (CoS 644a98e7, SA ae40a761, Steward ecba0e5d) per plan.md. |
match |
| Role briefs on disk |
config.html names CHIEFOFSTAFF.md, SOLUTIONARCHITECT.md, STEWARD.md. |
plan.md L91 wrote COS.md, SA.md, STEWARD.md. |
All three briefs at consistent spelled-out filenames: CHIEFOFSTAFF.md, SOLUTIONARCHITECT.md, STEWARD.md. Workflow config + docs aligned (Unit I). Historic plan + hotspot reports preserve the original misspelling as evidence. |
resolved |
| Rotation ceremony |
workflow.html § lifecycle: 8 steps, archive-never-delete, rotator-spawns-successor. |
plan.md D-decisions reference rotation_log/agent_snapshots wiring (D4 / ISS-08/09). |
New generic rotate-role/SKILL.md (Unit A), workflow-agnostic, with Step 9b authored (detail-row-first ordering). Old rotate-clawpilot-role is now a deprecation shim pointing at it with workflow-name='loom'. |
resolved |
| Steward brief-path resolution |
workflow.html implies seamless handover. |
plan.md doesn't specify file names. |
Resolved via the haleon workflow.json role→file map (Unit A); STEWARD.md ceremony shrunk to call rotate-role (Unit B). No more file-not-found fall-through to ZOMBIE. |
resolved |
| ADO write-back drainer |
logging.html: lease-guarded drainer; CAS-guarded transitions via sp_update_ado_writeback; failed→queued retry capped at 5. |
D3 + ISS-03 (resolved): CAS state machine, MAX_ATTEMPTS=5, gate-by-default at pending_approval. |
Unit C rewrote sp_update_ado_writeback: CAS predicate added, failed→queued legal, MAX_ATTEMPTS=5 enforced in the SP, idempotent same-state, NULL-approved_by RAISE. New sp_reset_ado_writeback dead-letter rescue. Patch fix-c-ado-drainer.sql (sha256 a019d5e9…), Steward-applied. |
resolved |
| Cost circuit-breaker (ISS-10 "breaker live" green) |
logging.html: cost telemetry & ring-tick wired and verified. |
plan.md NEEDS-CHARLIE #6 — baseline $50/day ±20% → $60 ceiling; gate for live-enable. |
Unit D: sp_check_cost_breaker now runs sp_rollup_cost_day(p_day_start, 2) first (fixes the cold-read), plus a new sp_check_cost_breaker_rolling; ring-tick Job B wires both breakers (OR'd trip flags). Verified arming. Patch fix-d-cost-breaker.sql (sha256 a9bd1a0f…), Steward-applied. |
resolved |
| agent_runs audit spine |
logging.html + briefs: multi-writer, two-phase, gap-scan on (session_id, session_turn_seq), corrections as appends. |
D4 / ISS-06/15: required write per turn; Steward audits. |
Unit E: partial UNIQUE on (session_id, session_turn_seq), class CHECK, created_by_agent NOT NULL, sp_create_agent_run RAISEs 23502 on NULL keys, new v_open_agent_runs watchdog view + Steward open-run scan. Patch fix-e-agent-runs.sql (sha256 0fde1851…), Steward-applied. |
resolved |
| cost_telemetry rollup |
logging.html: idempotent whole-UTC-day grid, derived from agent_runs. |
ISS-07: sp_rollup_cost_telemetry aggregates by spawned_at; list-price rates accepted as permanent (NEEDS-CHARLIE #2 closed). |
Unit E HS-10: sp_rollup_cost_telemetry now excludes class IN ('audit','correction') and any row a correction points at, with a pg_advisory_xact_lock; cost_telemetry rebaselined (8 cells). Late-arriving completions covered by the HS-5 rolling-2-day rollup in ring-tick (with Unit D's late-arriving cost fold-in). |
resolved |
| DAB anonymous role |
config.html: every base table read-only, writes via *In shims (ISS-22, Option A). |
plan.md ISS-22: Option A applied to dab-config.json 30 May. |
All 6 base tables now read-only over anonymous (Unit H — Brief, MeetingPrep, PdSyncPrep, QuietWatchState, Signal, SteercoPrep flipped + 6 REVOKEs); writes flow solely through the validating *In shims; authenticated=* remains the dormant production posture. |
resolved |
| Softeria M365 MCP |
config.html: removed; native m365_* in use. |
plan.md ISS-21 (resolved): removed 30 May. |
m365-softeria block removed from m-mcp-servers.json; takes effect on next Clawpilot reload. |
match |
| ADO target (org / project) |
logging.html: env-config via azure_devops MCP; pointer = smccormick0886/Haleon-AIAQ. |
plan.md D8 / ISS-05: de-hardcoded; document as env-config. |
Skill no longer hardcodes; MCP currently points at shakedown repo. |
match |
| Scout agents (5 planned) |
plan-vs-reality.html: Signal Scout proven; other four briefs documented (this site) per Batch 7. |
plan.md Batch 7: Signal Scout proven Unit J; Backlog Sentinel / Pipeline Watcher / Reuse Scout / Intake Triage briefs built K3–K6. |
Signal Scout proven end-to-end (Unit J, 30 May 2026 — see prior row). Four K-scout briefs LIVE on disk: BACKLOG-SENTINEL.md (sha256 3f95b6ad…b8f2), PIPELINE-WATCHER.md (sha256 80d0ca69…b598), REUSE-SCOUT.md (sha256 95504fe2…9ec0), INTAKE-TRIAGE.md (sha256 4d9f939b…0db9bb). All four pending per-scout manual prove + Charlie's posture-flag flip (per-scout proven-flag DDL on scout_enable_flags is a deferred K-extension; today the flags are prose-reserved slots only). 1M validator round-2 PASS 30 May 13:35 BST. |
partial |
sp_create_signal idempotency (K1) |
logging.html / ring-tick: scouts enqueue via SP, never NULL, never 23505. |
plan.md Batch 7 Unit K1: ON CONFLICT wrap; signature byte-identical. |
LIVE — fix-k1-signal-onconflict.sql (sha256 f9f310d8…dc261c3c) Steward-applied 30 May 12:24 BST. SP now wraps ON CONFLICT (source, source_external_id) WHERE source_external_id IS NOT NULL DO NOTHING internally via INSERT-RETURNING-UNION-ALL-existing CTE — returns existing id silently on conflict, never NULL, never bubbles 23505. NULL-extid signals still insert unconditionally (partial-index predicate excludes them). Audit row e88a7ad8-23f2-41b7-8514-a6b6dad75ba1. |
resolved |
agent_runs_class_check canonical enum (K2-verify) |
logging.html + STEWARD.md § Audit model: 7-member class enum. |
plan.md Batch 7 Unit K2-verify: 'scout_sweep' member confirmed live; HS-10 rollup-exclusion unchanged. |
LIVE — members exactly {turn, rotation, snapshot, ado_drain, audit, correction, scout_sweep}. PATCH 2 of the prior wedged Fix-K substrate had already landed cleanly at 11:51 BST; K2-verify (`fix-k2-verify-scout-sweep-class.sql`, sha256 rev2 2280d7d3…1caf0) is read-only and confirms. STEWARD.md L51 canonical paragraph patched. Audit row c19459c6-46f3-445b-bcaf-b16aec9dd635. |
resolved |
| Recurring ring-tick schedule |
logging.html: staged, intentionally off pending three-greens posture call. |
plan.md NEEDS-CHARLIE #5 — live-enable gated on (a) breaker live (b) drain proven (c) Scout proven. |
Schedule OFF. All three greens earned in DB-substrate terms: (a) cost breaker arms structurally (Unit D — both per-UTC-day and rolling-24h read $0/tripped=false live, 30 May); (b) drain proven manually (Unit C, Batch 5); (c) Signal Scout proven manually end-to-end (Unit J, 30 May — lease + watermark + breaker + idempotent enqueue + audit). Post K1: scouts call sp_create_signal idempotently with no pre-check / catch-23505 boilerplate. The 3-greens DB gate (sp_check_scout_enabled, Unit C) still reads enabled=false because Charlie has not flipped the three ScoutEnableFlagsIn booleans yet — that flip + enabling the recurring timer remains Charlie's posture call. |
partial |
| Database write-shim |
config.html: 12 *In views, 14 sp_* functions, 15 enums, INSTEAD OF triggers. |
D5/D7 + ISS-18: shims for Adr + ComplianceState built; jsonb-as-text contract preserved. |
12 write-shaped views with INSERT triggers; INSTEAD OF UPDATE coverage on v_comms_draft_in / v_agent_run_in / v_brief_in (Unit H) and v_adr_in CAS-UPDATE (Unit G Div 1); v_signal_in carries explicit-deny UPDATE (signals append-only). |
resolved |
| MCP topology after schema change |
config.html: "one DAB shim + one dab.exe per session" — no global hot-reload. |
plan.md NEEDS-CHARLIE #1 — restart haleon-aiac-db MCP after Batch 7 substrate. |
haleon-aiac-db respawned 30 May 10:42 BST. dab-config.json = 52 entities — includes the 5 Batch-5 surfaces (AdoWritebackResetIn / ScoutEnableFlagsIn / ScoutEnabledCheckIn / CostBreakerRollingIn / OpenAgentRun) added by Unit F. Batch 7 added no new entities (K1 preserved sp_create_signal's signature byte-identically). MCP fully aligned. |
resolved |