Files
waggle-os/docs/plans/PDF-AUDIT-2026-04-20.md
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

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:

  1. git log --since="2026-04-17" for commits referencing the area
  2. Grep current source files for the relevant component/handler
  3. Cross-reference recent session handoffs (S2 / S3 / S4 / S1)
  4. 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

  1. P1 verification only โ€” write a Playwright test that:

    • Onboards with researcher-tools template (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.
  2. Skip remaining "exec" of M-33..48 โ€” there's nothing to execute.

  3. Move directly to #2 M-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)