4.7 KiB
PR3.5 — Live route verification against a FRESH sidecar (2026-06-16)
Why this exists: the S3 handoff shipped PR3.5 but flagged one open item — the running
:3333 dev sidecar was started 2026-06-12 (4 days pre-PR3.5), so tsx never loaded the
new routes. The committed UI smoke (smoke-pr35-20260616/) therefore ran the Memory-Trust
front door against a stale backend. This pass restarts the sidecar from the PR3.5 tree
and exercises the three new routes end-to-end (HTTP + FE), closing that gap.
Verdict: PASS. All three PR3.5 backend routes work live; the FE wires to them with 0 console errors/warnings.
Environment (verified, not assumed)
| Thing | State |
|---|---|
| Branch | feature/warm-hive-pr3 @ 199bdbab |
| Sidecar | fresh start from this tree — WAGGLE_SKIP_LITELLM=1 tsx packages/server/src/local/start.ts on :3333; /health → database.healthy:true, personal mind frameCount 3 |
| New-route presence proof | GET /api/memory/999999/trace (no auth) → 401 MISSING_TOKEN (route exists) — NOT a Fastify "route not found" 404, i.e. the live sidecar has the PR3.5 code |
| Vite | running :8080, serves this tree (its served MemoryTrustManage.tsx module contains ConfidenceRing + /confirm) and proxies /api → my fresh :3333 |
| Auth | bearer from GET /api/auth/session-token (loopback, no Origin needed) |
1A — GET /api/workspaces/:id/context projects frame.source ✅
The provenance ⬡ pill on the Workspace "What Waggle knows" rows is fed by the source
column the SELECTs now carry (workspaces.ts:394 / :411).
| Workspace | recentMemories | sources observed |
|---|---|---|
writer-demo-anya |
8 | user_stated AND tool_verified (multi-source — proves not hardcoded) |
default-workspace |
1 | user_stated |
new-hive |
0 | (honest empty) |
recentDecisions[].source projected too. Writer-demo frames 14/15 carry agent_inferred
(the backend-review H-1 honesty fix — agent writes are no longer silently user_stated).
1.5 — POST /api/memory/:id/confirm + GET /api/memory/:id/trace ✅
confirm (HTTP + audit-trail proof):
POST /api/memory/47/confirm→status: active, id 47. (404 on999999.)- End-to-end write proof in
~/.waggle/audit.db:event_type=memory_write ws=personal 2026-06-16 15:43:56 in={"frameId":47,"action":"confirm"} out={...,"status":"active"}→ route →setMetadata→emitAuditEvent→ DB. Workspace-mind path also exercised (writer-demo-anya frame 12,mind:workspace). - The drawer for M-47 shows
updated 6/16/2026, 5:43:56 PM— the exactupdatedAtmy confirm stamped (live persistence proof).
trace (all three paths):
GET /api/memory/47/trace→{"trace":null}(honest — manual frame, notrace_id).GET /api/memory/999999/trace→ 404Memory not found.GET /api/memory/abc/trace→ 400Invalid memory id.- Populated
{trace:{...}}requires a chat-written frame carryingmetadata.trace_id(pattern-write-back path) — none in the dev data; unit-covered (memory-center 25/25).
UI smoke — Memory-Trust front door vs the FRESH sidecar ✅
http://localhost:8080/memory → Trust tab is the default Memory view.
- Manage (
01-manage-fresh-sidecar.png): honest stat bar —3memories ·—high-confidence (gated, not faked) ·0stale ·0awaiting confirm. 3 rows with the live 3-segment provenance line⬡ M-47 · source: you · ● fresh; M-1 shows real freshness● aging — added 9w ago. "Forgotten" filter honestly disabled (hard-delete, no recovery). - Detail drawer:
source: user_stated,updated …5:43:56 PM(my confirm write). - "Why is this here?" → FE fired
GET /api/memory/47/trace?mind=personal→ 200 → Why view rendered the no-fabrication empty state: "No trace is linked to M-47. This memory was added manually, imported, or written before traces were linked…" (02-why-trace-null-fresh-sidecar.png). - All FE→backend calls 200 (
/api/memory?mind=personal&limit=500,/api/memory/stats?scope=all-minds,/api/workspaces,/api/memory/47/trace). Console: 0 errors, 0 warnings (whole session).
Notes
- Audit log shows a prior live-verify ran at 15:18 (throwaway frames, since cleaned up) — consistent with concurrent activity earlier in the day; this pass independently reproduces PASS on a freshly-restarted sidecar.
- No code changed in this pass — verification only. Evidence is uncommitted (founder's call).
Next (ship)
- Mark PR #17 ready. It's stacked on PR #16 → merge/rebase #16 → main first, then rebase #17 onto main.
- Optionally commit this evidence dir alongside the prior
smoke-pr35-20260616/.