Agent Cabinet
Search the build
-
c7d10362026-09-25 auto-data-snapshot: 2026-09-25T01:04:41 (1 data files) — front-page-audit/proof/requery-ABC-2026-09-25T07-19-12-871Z.json -
ae0b12d2026-09-25 auto-data-snapshot: 2026-09-25T00:34:03 (3 data files) — front-page-audit/proof/pilot-activation-2026-09-25T07-02-36-236Z.json front-page-audit/proof/pilot-activation-2026-09-25T07-09-21-243Z.json front-page-audit/proof/pilot-activation-2026-09-25T07-15-04-827Z.json -
faab65a2026-09-25 auto-data-snapshot: 2026-09-25T00:03:17 (3 data files) — front-page-audit/proof/requery-ABC-2026-09-25T06-34-39-255Z.json front-page-audit/proof/requery-AC-2026-09-25T06-54-46-927Z.json front-page-audit/proof/requery-AC-2026-09-25T06-58-57-402Z.json -
840b8262026-09-24 auto-data-snapshot: 2026-09-24T23:32:41 (2 data files) — front-page-audit/proof/requery-ABC-2026-09-25T06-18-57-161Z.json front-page-audit/proof/requery-AC-2026-09-25T06-17-09-104Z.json -
715ce582026-09-23 auto-data-snapshot: 2026-09-23T15:21:10 (1 data files) — front-page-audit/proof/live-canary-delta-webkit.json -
5b74e922026-09-23 proof(prove-activation): kill every spawned server on any throw/interrupt so the next run can't test a stale one -
56486bd2026-09-23 proof(live-ux-canary): gate marker against the bundle hash computed at startup, not a literal -
65c67772026-09-23 proof(front-page): harden ux-primitives activation gate + dedupe -
f4b80792026-09-23 auto-data-snapshot: 2026-09-23T13:13:50 (1 data files) — showroom-audit/runs/2026-09-23T20-12-52Z-TK-11860-all-others-showroom-enum.jsonl -
acece162026-09-23 auto-data-snapshot: 2026-09-23T12:42:16 (1 data files) — front-page-audit/proof/live-canary-delta-chromium.json -
424746b2026-09-23 auto-data-snapshot: 2026-09-23T12:09:58 (3 data files) — front-page-audit/proof/live-canary-2026-09-23-chromium.json front-page-audit/proof/pilot-activation-2026-09-23T18-55-09-823Z.json front-page-audit/proof/pilot-activation-2026-09-23T19-08-42-765Z.json -
e13482b2026-09-23 auto-data-snapshot: 2026-09-23T07:25:20 (1 data files) — front-page-audit/proof/pilot-activation-2026-09-23T14-13-04-393Z.json -
31ca1cf2026-09-22 auto-data-snapshot: 2026-09-22T17:15:32 (1 data files) — front-page-audit/proof/pilot-activation-GREEN-1800s.json -
bca6c2b2026-09-22 auto-data-snapshot: 2026-09-22T16:42:26 (2 data files) — front-page-audit/proof/pilot-activation-GREEN-v1.1.1.json front-page-audit/proof/pilot-activation-RED-oldbundle.json -
1e85c632026-09-22 Fix code review findings: security + proof-validity issues -
46b9a822026-09-22 auto-data-snapshot: 2026-09-22T16:09:18 (1 data files) — front-page-audit/proof/pilot-activation-2026-09-22T23-01-53-753Z.json -
169f7142026-09-22 auto-data-snapshot: 2026-09-22T15:36:13 (3 data files) — front-page-audit/proof/pilot-negctl-2026-09-22T22-07-37-004Z.json front-page-audit/proof/pilot-negctl-2026-09-22T22-12-13-608Z.json front-page-audit/proof/pilot-negctl-2026-09-22T22-15-31-527Z.json -
0d419322026-09-22 auto-data-snapshot: 2026-09-22T14:27:31 (1 data files) — front-page-audit/proof/pilot-proof-2026-09-22T21-10-42-273Z.json -
86cfdef2026-09-22 cabinet: flatten vp-consulting into consulting-agent (TK-12015) -
f6eb9512026-09-22 auto-data-snapshot: 2026-09-22T12:15:47 (1 data files) — cabinet.yaml -
2a3106a2026-09-22 cabinet: fold prompt-engineer into ai-engineer (TK-12015) -
a61854e2026-09-20 cabinet: ungate both — merge dw-linkedin into linkedin-agent; keep consulting trio -
b47bb5a2026-09-20 cabinet: chief-of-staff consolidation — merge 5 dev-pack pairs, wire 17 orphans, log it -
7cf676b2026-09-20 auto-data-snapshot: 2026-09-20T11:06:41 (1 data files) — cabinet.yaml -
3c749782026-09-11 Add terminal wait supervisor agent -
644063b2026-09-08 showroom audit: TK-11307 MDC baseline (Google channel + main-store browse grid leaks) -
e2154a72026-09-03 showroom-line-steward: TK-11186 read-only verification run (PASS) -
806fb7e2026-09-03 auto-data-snapshot: 2026-09-03T11:49:57 (2 data files) — showroom-audit/runs/2026-09-03T18-53-18Z.jsonl showroom-audit/runs/2026-09-03T18:49:08Z.jsonl -
10c871d2026-09-03 showroom-line-steward: first baseline canary pass (PJ) — FAIL, Google feed leak now active (131 PJ) -
a06046b2026-09-03 cabinet: register showroom-line-steward under vp-dw-commerce -
39b87c22026-08-28 auto-data-snapshot: 2026-08-28T08:24:14 (1 data files) — cabinet.yaml -
b017d702026-08-28 repair cabinet agent routing -
a43101a2026-08-28 fold Claude-only skills into four Codex agents -
6e2d2722026-08-26 auto-data-snapshot: 2026-08-26T12:08:58 (6 data files) — front-page-audit/screens/crcp/verify-live/header-1280.png front-page-audit/screens/crcp/verify-live/header-390.png front-page-audit/screens/crcp/verify-live/list-1000.png front-page-audit/screens/crcp/verify-live/list-1280.png front-page-audit/screens/crcp/verify-live/list-390.png -
9e339112026-08-26 auto-data-snapshot: 2026-08-26T11:30:17 (12 data files) — front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/grid-1000.png front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/grid-1280.png front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/grid-390.png front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/list-1000.png front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/list-1280.png -
1d906902026-08-26 auto-data-snapshot: 2026-08-26T10:15:42 (25 data files) — front-page-audit/runs/20260826T171525Z.jsonl front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/full-1000.png front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/full-1280.png front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/full-390.png front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/pill-1000.png -
f387fdc2026-08-05 Register app-store-agent as vp-engineering director (5-gate submission-readiness graph) -
c58af7f2026-07-23 cabinet: click any node → inline expandable modal (description, tools, source, open/run) -
80589342026-07-22 cabinet.aa vhost: IP-bind :80 too (agentabrams default_server outranks wildcard) -
a8f270e2026-07-22 Add cabinet.agentabrams.com nginx vhost draft (gated go-live) -
9ba0bd62026-07-17 Add Officer Consulting (vp-consulting) to the cabinet -
6b0673e2026-07-07 auto-save: 2026-07-07T08:56:34 (1 files) — package-lock.json -
aea1f3a2026-07-07 Add vp-cncp (CNCP Officer) — cross-cutting flow officer that orchestrates all officers, clears approvals/tasks/parking-lot via CNCP -
5c4f5862026-07-03 chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew) -
b6a5bb22026-07-02 Register internal-line-viewer skill under vp-dw-commerce (standing spec for internal basic-auth line viewers; reference astek-landing :9944) -
c799e8a2026-07-02 cabinet: retire abramsego-orchestrator, fold Ultron orchestration into vp-abramsego (dtd 3/3 — honor 'fewer agents' principle the Contrarian flagged) -
9781d452026-07-02 cabinet: register design-trend-scout under vp-abramsego — standing market-research strategist (scout top-sellers → gap-check WPB → brief originals for the licensing engine) -
4d4a7ee2026-07-02 cabinet: register abramsego-orchestrator (Ultron) + web-extract + ollama-model-eval under vp-abramsego (from 7-post research fan-out) -
15384132026-07-01 cabinet: add vp-abramsego officer + abramsego-agent steward + design-research/golive skills (AbramsEgo was unowned; Steve-directed monetization build-out) -
d41633a2026-06-24 Point fleet-lifecycle-steward at real registry path + DARK/ZOMBIE invariants -
96d3e462026-06-24 Add fleet-lifecycle-steward officer under vp-operations -
3638f332026-06-23 Rename wallco-agent director to wallpapersback-agent (wallco.ai retired; brand=Wallpaper's Back) -
3d379732026-06-23 Split WallpapersBack marketing out of DW Marketing: new wallpapersback-marketing director under vp-special-projects; fence vp-dw-marketing to DW-only -
27e75ef2026-06-22 Register commercial-quote skill for B2B Koroseal quote requests under vp-dw-commerce -
625bc692026-06-22 auto-save: 2026-06-22T12:05:49 (1 files) — cabinet.yaml -
d367a442026-06-22 auto-save: 2026-06-22T08:34:43 (1 files) — front-page-audit/runs/drift-followup-20260622T0830Z.jsonl -
14c21b12026-06-21 auto-save: 2026-06-21T19:01:26 (1 files) — front-page-audit/runs/drift-20260622T015513Z.jsonl -
75715aa2026-06-19 cabinet: register dw-promo-banner director under vp-dw-marketing (+ 2026-06-19 consolidation_log) -
6fb76952026-06-18 enlarge gap/suggestion handles to 30px with hover/focus labels, make ghost officer node read as actionable, focus primary drawer action on open -
183cbbf2026-06-18 calmer overlay defaults (Shared+Suggested off) with localStorage persistence + UI smoke harness -
6f9f1ff2026-06-18 redirect /pyramid.html and /pyramid/ to canonical /pyramid (301) -
281dc4a2026-06-18 pyramid: fix P0 UI/UX (a11y + drawer focus + double-write guard) -
372ea932026-06-18 pyramid: add Gaps dotted-line overlay (stand up officers / adopt orphans) -
7ac17612026-06-17 Add dw-yolo-loop skill to cabinet (vp-operations) + pyramid: codifies the DTD-decider + officer-signoff autonomous catalog-health loop as a reusable skill/command -
566f3c92026-06-16 cabinet: approve cross-officer skill pairs-well-with under vp-dw-commerce (from vp-dw-marketing) via pyramid -
5eba3322026-06-16 cabinet: approve cross-officer skill new-arrivals-rotator under vp-dw-commerce (from vp-dw-marketing) via pyramid -
7894cf02026-06-16 cabinet: approve cross-officer skill collection-creator under vp-dw-commerce (from vp-dw-marketing) via pyramid -
3e211282026-06-16 cabinet: approve cross-officer subagent analytics-agent under vp-research-content (from vp-operations) via pyramid -
a2033302026-06-16 cabinet: approve cross-officer subagent la-research-agent under vp-research-content (from vp-directories) via pyramid -
c705aea2026-06-16 cabinet: approve cross-officer subagent security-auditor under vp-compliance-policy (from vp-engineering) via pyramid -
7656ca52026-06-16 cabinet: approve cross-officer skill dw-legal-compliance under vp-compliance-policy (from vp-dw-commerce) via pyramid -
5b3ec472026-06-16 activity /api/schedule: read real launchd state (loaded+disabled+lastExit), flag jobs that won't fire (disabled/unloaded) + nonzero-exit — stops the stdout-age false-stale crying wolf in both directions -
d1701132026-06-16 Activity viewer: FIX day-grouping used UTC date while times render local → evening-PT events grouped under wrong/duplicate day headers; dayKey now uses local date (verified 0 mismatches, unique headers). Plus: export filtered view to CSV (respects search+type+date filters; timestamp/local/type/verdict/title/detail/ref columns, RFC-escaped) -
c18a8e82026-06-16 Activity viewer: date-range filter — from/to date pickers + Today/7d/30d/All presets scope the feed by timestamp; composes with search + type chips; 'in range' count + active-preset highlight -
c791b732026-06-16 Activity viewer: live search box — filters the feed AND scheduled/continuous jobs by title/detail/type/label/cadence; chip counts track the query; clear button + 'no matches' state; persists across auto-refresh -
97271942026-06-16 Activity viewer: click any process/event for details — detail drawer + /api/job (plist schedule, launchctl status, command, log tail), /api/commit (git show), /api/canary (full verdict); jobs, continuous chips, commits, canaries, wins/cost/ticks all drillable; injection-guarded -
be0315f2026-06-16 Activity viewer: draggable middle splitter to resize the two columns (clamped 260–720px, persisted to localStorage, double-click resets to 380px) -
0dfcebe2026-06-16 Activity viewer: side-by-side two columns — sticky Upcoming/scheduled lane (left) + Recent activity feed (right); stacks on narrow screens -
5b4da1d2026-06-16 Activity viewer: add Upcoming/scheduled lane — /api/schedule parses 64 launchd plists (plutil→json), computes next fire for calendar jobs (daily/weekly/monthly/one-time) + lists continuous interval jobs; page shows countdown + absolute time + cadence, auto-refresh -
101c9bc2026-06-16 Add /activity viewer — live date/time timeline aggregating git commits, canary runs, watch ticks, CNCP wins, and paid API calls; /api/activity endpoint (epoch-sorted, mtime-dated ticks); type filter chips + 30s auto-refresh; linked from pyramid toolbar -
9634ba22026-06-16 Build out both proposals LIVE: 🩺 Health Overlay (reads 6 DW canary latest.json, maps verdicts→officers, tints nodes + status dots) + 💸 Cost Heatmap (reads cost-ledger.jsonl, app→officer spend, ranks top spenders, node badges); /api/health + /api/cost; clear-overlay control -
52c593f2026-06-16 Pyramid: 💡 Ideas modals — 5 upgrade ideas as modals (Task Router live, Consolidation Advisor live, Org Export live JSON/MD; Health Overlay + Cost Heatmap as proposals); /api/queue-idea posts to CNCP parking-lot -
e46f9752026-06-16 Suggestion lines truly clickable: amber ◆ handle at each line midpoint (z-index above nodes, real hit-test verified) + fatter 16px line hit-band; toggles with Suggested layer -
2f295b32026-06-16 Approve auto-commits cabinet.yaml (path-limited, local, Steve+Claude co-author); commit hash surfaced in toast -
d87e58a2026-06-16 Pyramid: clickable suggestion lines — click a dotted arrow to see the relationship + Approve (writes into cabinet.yaml under target VP, idempotent/git-reversible) / Remove / Reset; state persisted server-side; per-row controls in the analysis list too -
eb43caf2026-06-16 Pyramid: cross-officer lines — 18 'shared now' (computed from cabinet duplicates) + 12 curated 'suggested moves' arrows, toggleable + analysis list drawer -
29b288a2026-06-16 Make pyramid nodes runnable + openable: /api/source|open|run endpoints + click-drawer (source view, Run in new claude session, Open in editor); 39 scrapers individually runnable; injection-guarded -
655d59b2026-06-16 Add cabinet pyramid visual: President→Officers→Agents→Skills→Workflows with connector lines + 24h timeline -
70ad0c82026-06-12 cabinet: add vp-dw-marketing (DW Marketing Officer) + 7 per-platform social agents (IG/TikTok/LinkedIn/FB/Pinterest/YouTube/X) -
e0540bc2026-06-11 Cabinet: add plain-English owns descriptions for 5 plugin/MCP skills (dw-agent-builder, claude-api, simplify, review, prism) — no on-disk SKILL.md, so cabinet is their description home -
805da5e2026-06-03 gitignore: exclude *.bak per standing code-health rule -
1c958312026-05-19 snapshot — gitify backup 2026-05-19 -
b59c2092026-05-18 server: wrap /cabinet.yaml route in try/catch so a read error returns 500 instead of crashing -
6fbc7d52026-05-18 server: drop dead 'cabinet' param from renderGame (function re-reads file itself) -
d1350b12026-05-13 cabinet: register aichat (Big Red) under vp-dw-commerce -
9a92eb72026-05-13 snapshot: 1 file(s) changed, +1 new -
00a0d8a2026-05-07 tighten .gitignore: add missing standing-rule patterns (dist/ build/ .next/) -
eca07f12026-05-06 Game Mode: /game route — 6 dept HQs + 134 cards w/ avatars, stats, synergies -
157848f2026-05-06 Viewer: switch from Mermaid mindmap to flowchart TD with class styling -
73d84212026-05-06 Cabinet: restore plugin-loaded skills (claude-api, simplify, review, prism, gamify) + add claude-control-center -
1f972c52026-05-06 Cabinet drift: remove orphan dw-site-build subagent ref + prism skill ref -
95784df2026-05-06 Cabinet drift fix: reclassify subagents, add 9 orphans, remove 4 phantoms -
34a04722026-05-06 Initial Cabinet scaffold: agent-architect + 6 VPs + Mermaid viewer on :9766
Authors
- Steve80
- auto-commit-fleet21
- steve1
- agent-architect1
Agents used
- vp-dw-commerce8
- prompt-engineer3
- vp-engineering3
- vp-operations3
- ai-engineer2
- vp-research-content2
- vp-compliance-policy2
- vp-directories1
- security-auditor1
Skills used
- /proof25
- /screens14
- /crcp14
- /claude8
- /code8
- /pilot-activation-2026-09-7
- /requery-6
- /runs6
- /verify-live5
- /after5
- /pilot-activation-3
- /pilot-negctl-2026-09-3
- /pyramid3
- /list-10002
- /list-12802
- /schedule2
- /type2
- /detail2
- /cost2
- /scheduled2
- /activity2
- /live-canary-delta-webkit1
- /interrupt1
- /static1
- /context1
- /page1
- /finally1
- /live-canary-delta-chromium1
- /live-canary-2026-09-23-chromium1
- /probe1
Creative ideas + design notes
5b74e92 · 2026-09-23 · proof(prove-activation): kill every spawned server on any throw/interrupt so the next run can't test a stale one
Register each spawned server/static handle in a module-level list and add a cleanup() wired to process exit and SIGINT (exit 130); move the browser launch/context/page setup inside run()'s try with a finally that always closes the browser, so a per-engine launch failure is caught instead of aborting the process and orphaning a bound port. Refuse to start when a pilot port is already in use rather than silently attaching to an orphan. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UzbjT22E2Q7Q64Wy8xMeH5
56486bd · 2026-09-23 · proof(live-ux-canary): gate marker against the bundle hash computed at startup, not a literal
Compute the expected marker the way redeploy-ux-delta.sh does (sha256[:12] of the canonical bundle) so a routine rebuild no longer reds the whole fleet, while a site left on a stale bundle is still caught. Unreadable bundle -> markerCanonical false with a surfaced reason, never a silent pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UzbjT22E2Q7Q64Wy8xMeH5
65c6777 · 2026-09-23 · proof(front-page): harden ux-primitives activation gate + dedupe
Addresses the 5 review findings on the pending front-page-audit/proof change set: - Fold SITE env filter into prove-activation.mjs and drop the byte-identical prove-activation-one.mjs — one gate, no silent drift between two copies. - Tear the site server down in try/finally (+ boot-error catch) so a slow boot or a mid-loop throw no longer orphans a node server / leaves a stuck port. - slowRun: bounded waitForFunction for real product children instead of the fixed delay+2s clock the deferred bundle could outrun (kills the false-FAIL). - Page errors: baseline-subtract against the bundle-absent runs + BUNDLE_RX filter, so a site's own uncaught exception can't red the gate as a "bundle" failure; also record slowRun page errors in presentPageErr. - live-ux-canary: expect marker via UX_MARKER (mirrors deploy $CANON) or a well-formed v<semver>#<hash> shape, not a pinned content hash that would red the whole fleet on the next healthy rebuild. Smoke-tested: SITE=flockedwallpaper -> 1/1 all-engine PASS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AWMadYahw5wRTf7KcwBLr1
1e85c63 · 2026-09-22 · Fix code review findings: security + proof-validity issues
1. Hardcoded CRCP session cookie: read SID from process.env instead (serve-fb.cjs, serve-probe.cjs, serve-real.cjs:1-2) 2. All-interfaces bind (.listen(0) with no host): add '127.0.0.1' to all four repro/proof servers (serve-fb/probe/real/repro.cjs/.js) 3. Path traversal in serve-repro.js: add containment guard (resolved.startsWith(dir) check before fs.readFile) 4. prove-negctl.mjs false-green on flocked static pilot: mock /api/products so flocked renders actual product grid data when bundle absent All findings verified against actual code; fixes applied and tested.
86cfdef · 2026-09-22 · cabinet: flatten vp-consulting into consulting-agent (TK-12015)
DECISION (Steve, 2026-09-22): remove the single-steward vp-consulting officer layer; consulting-agent is now the single owner of the Consulting business and reports directly to Steve. Supersedes the 2026-09-20 KEEP-three-layers ruling. vp-abramsego and all other officers untouched. Reference-safety (Cody: repoint callers BEFORE archiving the officer): cabinet.yaml branch re-rooted at consulting-agent (dropped the redundant consulting-agent director); consulting-agent.md absorbed the officer triggers + APPROVE/REVISE/BLOCK posture + HARD RAILS; consulting/SKILL.md + ticketmaster/SKILL.md ownership/routing lines repointed; a2a-lab card + evals repointed; vp-consulting.md archived to ~/.claude/agents/_archived/. server.js + pyramid.html are data-driven from this YAML. Zero dangling vp-consulting node on the :9766 org-chart. The cabinet.yaml content landed via auto-data-snapshot f6eb951; this commit is the semantic record with attribution trailers. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_38a23781-1663-4f8e-807d-e37d704feaad
2a3106a · 2026-09-22 · cabinet: fold prompt-engineer into ai-engineer (TK-12015)
Absorb prompt-optimization scope into ai-engineer and remove the deleted prompt-engineer agent from every live router surface: the vp-engineering director list (cabinet.yaml), the RELATED-agents map incl. the dangling 'prompt-engineer' key (server.js), and the pyramid viz node list (pyramid.html). No dangling director remains on the :9766 org-chart. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D2KFGQK7p7ahEzug7HBMZF
a61854e · 2026-09-20 · cabinet: ungate both — merge dw-linkedin into linkedin-agent; keep consulting trio
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E1LJQ2s1FW7mBAJtLCZ5Un
b47bb5a · 2026-09-20 · cabinet: chief-of-staff consolidation — merge 5 dev-pack pairs, wire 17 orphans, log it
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E1LJQ2s1FW7mBAJtLCZ5Un
a06046b · 2026-09-03 · cabinet: register showroom-line-steward under vp-dw-commerce
Enforces the showroom-only vendor rule (addressable but not discoverable, codified 2026-09-03): keeps showroom lines off all push/browse surfaces + the Google feed while keeping direct URL/search reachable; keys off showroom-vendors.json; read-only audits + leak canary run free, all enforcement edits gate to pending-approval. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BgCcr9t5zNGdb43pS4f1ks
96d3e46 · 2026-06-24 · Add fleet-lifecycle-steward officer under vp-operations
Owns 'no DW agent sleeps silently; stale ones retire only with Steve sign-off'. Reconciles live fleet vs the centralized service-registry contract (DTD verdict A). Job 1 keep-alive = autonomous resurrect; Job 2 retirement = auto-flag to pending-approval (gated).
281dc4a · 2026-06-18 · pyramid: fix P0 UI/UX (a11y + drawer focus + double-write guard)
Codex UI/UX review P0s: 1. Drawer focus management — focus the primary action on open, restore focus to the trigger on close, trap Tab inside the drawer (central MutationObserver on #drawer, so every opener inherits it). 2. Keyboard-accessible nodes — every clickable div ([data-kind]/[data-gap]) gets tabindex+role=button+aria-label via makeAccessible(), and Enter/Space activates them (mirrors the click handlers). Visible :focus-visible rings on all interactive surfaces. 3. Double-write guard — decideGap()/decide() disable both drawer buttons and show Approving…/Dismissing… while the cabinet.yaml write is in flight; re-render (or close) re-enables. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
372ea93 · 2026-06-18 · pyramid: add Gaps dotted-line overlay (stand up officers / adopt orphans)
Surfaces the org-structure gaps as red dotted lines on the cabinet pyramid, reusing the approve→write-to-cabinet.yaml mechanism from cross-officer suggestions. new-vp gaps (vp-security, vp-special-projects) render as ghost officer columns hanging off the President; adopt-orphan gaps render as dashed chips under their target officer. Clicking a line/+ handle opens a drawer; Approve inserts the VP block or director into cabinet.yaml and auto-commits. Commits are serialized in-process (a click never races another click for the git index) and retried with backoff against external committers' index.lock, so an approval never silently leaves an uncommitted change. /api/gaps + /api/gap, GAPS arrays mirrored server/client, gap-state file gitignored. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
File tree
- .gitignore
- activity.html
- cabinet.yaml
- deploy/cabinet.agentabrams.com.nginx
- ecosystem.config.cjs
- front-page-audit/proof/live-canary-2026-09-23-chromium.json
- front-page-audit/proof/live-canary-delta-chromium.json
- front-page-audit/proof/live-canary-delta-webkit.json
- front-page-audit/proof/live-ux-canary.mjs
- front-page-audit/proof/pilot-activation-2026-09-22T23-01-53-753Z.json
- front-page-audit/proof/pilot-activation-2026-09-22T23-09-25-598Z.json
- front-page-audit/proof/pilot-activation-2026-09-23T14-13-04-393Z.json
- front-page-audit/proof/pilot-activation-2026-09-23T18-55-09-823Z.json
- front-page-audit/proof/pilot-activation-2026-09-23T19-08-42-765Z.json
- front-page-audit/proof/pilot-activation-2026-09-25T07-02-36-236Z.json
- front-page-audit/proof/pilot-activation-2026-09-25T07-09-21-243Z.json
- front-page-audit/proof/pilot-activation-2026-09-25T07-15-04-827Z.json
- front-page-audit/proof/pilot-activation-GREEN-1800s.json
- front-page-audit/proof/pilot-activation-GREEN-v1.1.1.json
- front-page-audit/proof/pilot-activation-RED-oldbundle.json
- front-page-audit/proof/pilot-negctl-2026-09-22T22-07-37-004Z.json
- front-page-audit/proof/pilot-negctl-2026-09-22T22-12-13-608Z.json
- front-page-audit/proof/pilot-negctl-2026-09-22T22-15-31-527Z.json
- front-page-audit/proof/pilot-proof-2026-09-22T21-10-42-273Z.json
- front-page-audit/proof/prove-activation.mjs
- front-page-audit/proof/prove-negctl.mjs
- front-page-audit/proof/requery-ABC-2026-09-25T06-18-57-161Z.json
- front-page-audit/proof/requery-ABC-2026-09-25T06-34-39-255Z.json
- front-page-audit/proof/requery-ABC-2026-09-25T07-19-12-871Z.json
- front-page-audit/proof/requery-AC-2026-09-25T06-17-09-104Z.json
- front-page-audit/proof/requery-AC-2026-09-25T06-54-46-927Z.json
- front-page-audit/proof/requery-AC-2026-09-25T06-58-57-402Z.json
- front-page-audit/runs/2026-05-26T221720Z.tsv
- front-page-audit/runs/2026-06-01T20-33-41Z.jsonl
- front-page-audit/runs/2026-06-01T22:56:28Z.jsonl
- front-page-audit/runs/2026-06-12T06-06-52Z.jsonl
- front-page-audit/runs/20260826T171525Z.jsonl
- front-page-audit/runs/drift-20260622T015513Z.jsonl
- front-page-audit/runs/drift-followup-20260622T0830Z.jsonl
- front-page-audit/screens/corkwallcovering/2026-09-22T21-10-42-273Z/desktop-1280x800.png
- front-page-audit/screens/corkwallcovering/2026-09-22T21-10-42-273Z/mobile-390x844.png
- front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/full-1000.png
- front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/full-1280.png
- front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/full-390.png
- front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/pill-1000.png
- front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/pill-1280.png
- front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/pill-390.png
- front-page-audit/screens/crcp/2026-08-26T17-19-33-013Z/verify.json
- front-page-audit/screens/crcp/2026-08-26T17-19-57-610Z-grid/full-1000.png
- front-page-audit/screens/crcp/2026-08-26T17-19-57-610Z-grid/full-1280.png
- front-page-audit/screens/crcp/2026-08-26T17-19-57-610Z-grid/full-390.png
- front-page-audit/screens/crcp/2026-08-26T17-19-57-610Z-grid/pill-1000.png
- front-page-audit/screens/crcp/2026-08-26T17-19-57-610Z-grid/pill-1280.png
- front-page-audit/screens/crcp/2026-08-26T17-19-57-610Z-grid/pill-390.png
- front-page-audit/screens/crcp/2026-08-26T17-19-57-610Z-grid/verify.json
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/grid-1000.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/grid-1280.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/grid-390.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/list-1000.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/list-1280.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/after/list-390.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/before/grid-1000.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/before/grid-1280.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/before/grid-390.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/before/list-1000.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/before/list-1280.png
- front-page-audit/screens/crcp/2026-08-26T18-12-34Z/before/list-390.png
- front-page-audit/screens/crcp/after/desktop-1000.png
- front-page-audit/screens/crcp/after/desktop-1280.png
- front-page-audit/screens/crcp/after/mobile-390.png
- front-page-audit/screens/crcp/before-live/desktop-1000.png
- front-page-audit/screens/crcp/before-live/desktop-1280.png
- front-page-audit/screens/crcp/before-live/mobile-390.png
- front-page-audit/screens/crcp/repro/before/before-desktop-1000-20260826T165907Z.png
- front-page-audit/screens/crcp/repro/before/before-desktop-1280-20260826T165907Z.png
- front-page-audit/screens/crcp/repro/before/before-mobile-390-20260826T165907Z.png
- front-page-audit/screens/crcp/repro/corner-nav.js
- front-page-audit/screens/crcp/repro/crcp-theme.css
- front-page-audit/screens/crcp/repro/real-index-fallback.html
- front-page-audit/screens/crcp/repro/real-index-probe.html
- front-page-audit/screens/crcp/repro/real-index.html
- front-page-audit/screens/crcp/repro/real-index.html.probe
- front-page-audit/screens/crcp/repro/repro.html
- front-page-audit/screens/crcp/repro/serve-fb.cjs
- front-page-audit/screens/crcp/repro/serve-probe.cjs
- front-page-audit/screens/crcp/repro/serve-real.cjs
- front-page-audit/screens/crcp/repro/serve-repro.js
- front-page-audit/screens/crcp/verify-live/header-1280.png
- front-page-audit/screens/crcp/verify-live/header-390.png
- front-page-audit/screens/crcp/verify-live/list-1000.png
- front-page-audit/screens/crcp/verify-live/list-1280.png
- front-page-audit/screens/crcp/verify-live/list-390.png
- front-page-audit/screens/crcp/verify-live/probe.json
- front-page-audit/screens/flockedwallpaper/2026-09-22T21-13-05-738Z/desktop-1280x800.png
- front-page-audit/screens/flockedwallpaper/2026-09-22T21-13-05-738Z/mobile-390x844.png
- front-page-audit/screens/jutewallpaper/2026-09-22T21-10-42-273Z/desktop-1280x800.png
- front-page-audit/screens/jutewallpaper/2026-09-22T21-10-42-273Z/mobile-390x844.png
- front-page-audit/screens/linenwallpaper/2026-09-22T21-10-42-273Z/desktop-1280x800.png
- front-page-audit/screens/linenwallpaper/2026-09-22T21-10-42-273Z/mobile-390x844.png
- front-page-audit/screens/linenwallpaper/2026-09-22T21-13-05-738Z/desktop-1280x800.png
- front-page-audit/screens/linenwallpaper/2026-09-22T21-13-05-738Z/mobile-390x844.png
- front-page-audit/screens/silkwallpaper/2026-09-22T21-10-42-273Z/desktop-1280x800.png
- front-page-audit/screens/silkwallpaper/2026-09-22T21-10-42-273Z/mobile-390x844.png
- front-page-audit/screens/silkwallpaper/2026-09-22T21-13-05-738Z/desktop-1280x800.png
- front-page-audit/screens/silkwallpaper/2026-09-22T21-13-05-738Z/mobile-390x844.png
- package-lock.json
- pyramid.html
- scripts/check-pyramid-syntax.js
- scripts/smoke-pyramid-ui.py
- server.js
- showroom-audit/runs/2026-09-03T18-18-32Z.jsonl
- showroom-audit/runs/2026-09-03T18-53-18Z.jsonl
- showroom-audit/runs/2026-09-03T18:49:08Z.jsonl
- showroom-audit/runs/2026-09-03T19-56-42Z-TK-11186-verify.jsonl
- showroom-audit/runs/2026-09-08T22-12-34Z-TK-11307-mdc-baseline.jsonl
- showroom-audit/runs/2026-09-23T20-12-52Z-TK-11860-all-others-showroom-enum.jsonl