b6a5bb22026-07-02Register internal-line-viewer skill under vp-dw-commerce (standing spec for internal basic-auth line viewers; reference astek-landing :9944)
c799e8a2026-07-02cabinet: retire abramsego-orchestrator, fold Ultron orchestration into vp-abramsego (dtd 3/3 — honor 'fewer agents' principle the Contrarian flagged)
9781d452026-07-02cabinet: 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-02cabinet: register abramsego-orchestrator (Ultron) + web-extract + ollama-model-eval under vp-abramsego (from 7-post research fan-out)
d41633a2026-06-24Point fleet-lifecycle-steward at real registry path + DARK/ZOMBIE invariants
96d3e462026-06-24Add fleet-lifecycle-steward officer under vp-operations
3638f332026-06-23Rename wallco-agent director to wallpapersback-agent (wallco.ai retired; brand=Wallpaper's Back)
3d379732026-06-23Split WallpapersBack marketing out of DW Marketing: new wallpapersback-marketing director under vp-special-projects; fence vp-dw-marketing to DW-only
27e75ef2026-06-22Register commercial-quote skill for B2B Koroseal quote requests under vp-dw-commerce
75715aa2026-06-19cabinet: register dw-promo-banner director under vp-dw-marketing (+ 2026-06-19 consolidation_log)
6fb76952026-06-18enlarge gap/suggestion handles to 30px with hover/focus labels, make ghost officer node read as actionable, focus primary drawer action on open
372ea932026-06-18pyramid: add Gaps dotted-line overlay (stand up officers / adopt orphans)
7ac17612026-06-17Add 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-16cabinet: approve cross-officer skill pairs-well-with under vp-dw-commerce (from vp-dw-marketing) via pyramid
5eba3322026-06-16cabinet: approve cross-officer skill new-arrivals-rotator under vp-dw-commerce (from vp-dw-marketing) via pyramid
7894cf02026-06-16cabinet: approve cross-officer skill collection-creator under vp-dw-commerce (from vp-dw-marketing) via pyramid
3e211282026-06-16cabinet: approve cross-officer subagent analytics-agent under vp-research-content (from vp-operations) via pyramid
a2033302026-06-16cabinet: approve cross-officer subagent la-research-agent under vp-research-content (from vp-directories) via pyramid
c705aea2026-06-16cabinet: approve cross-officer subagent security-auditor under vp-compliance-policy (from vp-engineering) via pyramid
7656ca52026-06-16cabinet: approve cross-officer skill dw-legal-compliance under vp-compliance-policy (from vp-dw-commerce) via pyramid
5b3ec472026-06-16activity /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-16Activity 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-16Activity 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-16Activity 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
be0315f2026-06-16Activity viewer: draggable middle splitter to resize the two columns (clamped 260–720px, persisted to localStorage, double-click resets to 380px)
0dfcebe2026-06-16Activity viewer: side-by-side two columns — sticky Upcoming/scheduled lane (left) + Recent activity feed (right); stacks on narrow screens
5b4da1d2026-06-16Activity 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-16Add /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-16Build 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-16Pyramid: 💡 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-16Suggestion 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
d87e58a2026-06-16Pyramid: 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
29b288a2026-06-16Make 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
e0540bc2026-06-11Cabinet: 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-03gitignore: exclude *.bak per standing code-health rule
Commits with substantial prose (≥120 chars) — the rationale behind each move.
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).
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
16 files tracked. Click any to browse the source at HEAD.