8.3 KiB
PDF Triage Audit โ 2026-04-20 (M-33..48 status close-out)
Scope: Verify each item in PDF-E2E-ISSUES-2026-04-17.md against current code as
of bf18e16 (head of main). The 2026-04-19 plan estimated M-33..48 at ~5 d
"audit first, many likely shipped in S2/S3/S4." This audit confirms that
estimate was conservative โ most items have shipped under M-XX commit numbers
since S2.
Method
For each P-item still marked ๐ deferred or ๐ก partial in the source PDF doc:
git log --since="2026-04-17"for commits referencing the area- Grep current source files for the relevant component/handler
- Cross-reference recent session handoffs (S2 / S3 / S4 / S1)
- Classify: โ shipped / ๐ก needs verification / ๐ still open / ๐ด blocked
Findings โ full P-item disposition
| # | Item (one-liner) | Prior | Audit verdict | Evidence |
|---|---|---|---|---|
| P1 | Opens as General Purpose โ should be Researcher | ๐ก | ๐ก wired, needs LIVE test | OnboardingWizard.tsx:134 maps template โ persona; handleFinish:275 saves persona: selectedPersona; useWindowManager.ts:230 reads ws?.persona; ChatWindowInstance.tsx:87 falls back to 'general-purpose' if initialPersona undefined. Chain is correct in code; bug is either server-side persona save OR first-window-before-workspace-load timing |
| P2 | Chat input too small | โ | โ
shipped (S2 batch 1c6d9f2) |
confirmed at PDF source |
| P3 | Tier-gated menu items | โ | โ shipped (S2 batch) | confirmed |
| P4 | Mutation Gates / 3-level approval | ๐ | โ
shipped S1 07cbf25 + 575f2c9 |
defaultAutonomy enum + radio + new-window inheritance |
| P5 | Advanced Settings actionable | โ | โ shipped (S2 batch) | confirmed |
| P6 | Room โ verify 2 parallel agents | ๐ | โ shipped (S4 verification) | per S4 handoff "PDF picks shipped (P14/P15/P6/P10)" |
| P7a | // slash commands |
โ | โ shipped (S2 batch) | confirmed |
| P7b | "No tools assigned" | โ | โ shipped (S2 batch) | confirmed |
| P8 | Agents vs Personas naming | ๐ก | โ shipped โ addressed by M-01 | a8b6548 PersonaSwitcher two-tier + 02c029d rich tooltip โ the redesign disambiguates personas as "modes" vs "specialists", removing the naming ambiguity |
| P9 | AI-generate agent โ Stripe link broken | ๐ด | ๐ด blocked (Stripe products) | external โ Marko's Stripe dashboard work; see [M]-01 |
| P10 | Bee-style persona icons (light + dark) | ๐ | โ shipped (S4 PDF picks) | per S4 handoff |
| P11 | Group members shows only 3 | โ | โ shipped (S2 batch) | confirmed |
| P12 | Workspace template Blank twice | โ | โ shipped (S2 batch) | confirmed |
| P13 | Group filter Projects/Research | โ | โ shipped (S2 batch) | confirmed |
| P14 | Virtual path truncated + Local D-drive only | ๐ | โ shipped S4 (option 1: home on C: + D:) | per PDF-DEFERRED-DECISIONS pick + S4 handoff |
| P15 | Create Template modal overlap | ๐ | โ shipped S4 (option 2 / viewport check) | per S4 handoff |
| P16 | Files app only Virtual storage | ๐ | โ
shipped S1 516090c |
3-tab <FilesAppTabs> |
| P17 | Tooltips missing app-wide | ๐ | โ shipped S1 (P17.1..5, ~80 sites) | bf18e16 is the last commit; zero title="" remain in components/os/ |
| P18 | Waggle Dance signals | ๐ | โ
shipped โ M-41 9faaf78 |
"Waggle Dance deterministic signal ordering" |
| P19 | Cockpit System Health "Ok" red | โ | โ shipped (S2 batch) | confirmed |
| P20 | AI Act warning explanation | โ | โ shipped (S2 batch) | confirmed |
| P21 | Timeline always empty | ๐ | โ
shipped โ M-42 0b49a42 |
"align Timeline vocabulary with server AuditEventType" |
| P22 | Telemetry "Upgrade to unlock" | โ | โ shipped (S2 batch) | confirmed |
| P23 | Backup & Restore doubled | โ | โ shipped (S2 batch) | confirmed |
| P24 | Events Replay unclear | โ | โ shipped (S2 batch) | confirmed |
| P25 | Scheduled Jobs toggle stays off | ๐ | โ shipped โ M-43 (per code comment) | ScheduledJobsApp.tsx:106-114 explicit "M-43 / P25" comment โ server auto-enables on trigger; client syncs from response |
| P26 | New scheduled job creation unclear | ๐ | โ shipped โ improved UX | ScheduledJobsApp uses CRON_SCHEDULE_PRESETS + CRON_JOB_TYPES + describeCronExpr (plain-English schedule summary) โ far clearer than raw cron |
| P27 | Skills & Apps Installed/Starter overlap | โ | โ shipped (S2 batch) | confirmed |
| P28 | Marketplace empty โ sync from DB | ๐ | โ
shipped โ ac586f7 "fix(marketplace): correct monorepo seed path resolution" |
combined with C4 dedupe (S1 b8dab3d) |
| P29 | Skills & Apps cards not clickable | ๐ | โ shipped โ detail pane wired | CapabilitiesApp.tsx:160 onClick={() => setSelectedPack(pack)} opens overlay detail card at line 218+ |
| P30 | MCP install flow unclear | ๐ | โ shipped (S3 PDF picks) | per S3 handoff "P30 MCP install clarity" |
| P31 | Second Marketplace dock | โ | โ shipped (S2 batch) | confirmed |
| P32 | Team Governance on Free | โ | โ shipped (S2 batch) | confirmed |
| P33 | "API Keys" vs "Vault" naming | โ | โ shipped (S2 batch) | confirmed |
| P34 | Approvals โ Ops or delete | ๐ | โ shipped (S3) โ Approvals โ Teams-tier | per S3 handoff |
| P35 | Spawn Agent "no models available" | ๐ | โ
shipped โ 8782cab Phase A/B polish |
SpawnAgentDialog.tsx:263-277 has actionable empty state: "Keys configured but no models returned โ the LiteLLM proxy may not be running." |
| P36 | Dock spawn-agent click does nothing | ๐ | โ shipped โ fully wired | Dock.tsx:152 onClick={onSpawnAgent} โ Desktop.tsx:398 onSpawnAgent={() => ov.setShowSpawnAgent(true)} |
| P37 | Ctrl-K search hidden | โ | โ shipped (S2 batch) | confirmed |
| P38 | Status bar WiFi badge / 24h | โ | โ shipped (S2 batch) | confirmed |
| P39 | Status bar left static | ๐ก | โ
shipped โ M-47 bb9cae5 |
"dynamic focused-window label in status bar" |
| P40 | Light mode boot logo / animation | ๐ | โ
shipped โ cbe8924 H-04..06 + 8782cab theme-aware logo |
BootScreen.tsx:27-28 useIsLightTheme + waggleLogoLight / waggleLogoDark, full animation set still present |
| P41 | Light mode "Waggle AI" text styling | ๐ | โ shipped โ H-04..06 polish close | text uses text-foreground (theme-aware token); font-display font-bold consistent across modes |
Summary
| Status | Count | Items |
|---|---|---|
| โ shipped | 38 | P2-P8, P10-P34, P35-P41 (all but P1 + P9) |
| ๐ก wired but needs LIVE test | 1 | P1 โ onboarding persona โ first chat window |
| ๐ด blocked external | 1 | P9 โ Stripe products (Marko, post-benchmarks) |
| ๐ still open | 0 | โ |
M-33..48 effective effort: ~0 engineering hours of new build. ~1-2 hours
for P1 Playwright E2E test (or live binary smoke). All other items are
already on main under M-XX commits since S2.
Recommendation
-
P1 verification only โ write a Playwright test that:
- Onboards with
researcher-toolstemplate (auto-selects researcher persona) - Lands on Ready step โ completes
- Verifies the first chat window opens with
currentPersona === 'researcher' - If green: close P1 โ . If red: 1-2 hr fix in handleFinish or ChatWindowInstance fallback.
- Onboards with
-
Skip remaining "exec" of M-33..48 โ there's nothing to execute.
-
Move directly to
#2M-07..10 Harvest UX polish โ this was the next item in Marko's S2 sequence. ~2-3 d of genuine functional work.
Why the gap: PDF triage doc rot
The PDF source doc (PDF-E2E-ISSUES-2026-04-17.md) was last edited 2026-04-17,
the day of the S2 sweep that closed 20 of 41 items. Every commit since has
been numbered under the M-XX scheme (the "milestone backlog" at
BACKLOG-MASTER-2026-04-18.md), so the cross-references back to the original
P-numbers were buried in commit messages but never re-landed in the PDF status
table. The 16 items presumed open under "M-33..48 = remaining PDF" were
actually shipped one-by-one as M-41/M-42/M-43/M-47 etc.
Lesson for future planning surfaces: When work splits across multiple
backlog files (PDF triage + M-XX milestone + L-XX latency), the source
should hold canonical status; commits should be tagged with both numbering
schemes (M-41 ยท P18 is the right pattern, used in some commits but not all).
Author: Claude (audit per Marko's S2 directive โ sequence M-33..48 first)