Files
waggle-os/docs/redesign-warm-hive/smoke-pr35-routes-live-20260616/REPORT.md
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

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; /healthdatabase.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/confirmstatus: active, id 47. (404 on 999999.)
  • 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 → setMetadataemitAuditEvent → 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 exact updatedAt my confirm stamped (live persistence proof).

trace (all three paths):

  • GET /api/memory/47/trace{"trace":null} (honest — manual frame, no trace_id).
  • GET /api/memory/999999/trace → 404 Memory not found.
  • GET /api/memory/abc/trace → 400 Invalid memory id.
  • Populated {trace:{...}} requires a chat-written frame carrying metadata.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/memoryTrust tab is the default Memory view.

  • Manage (01-manage-fresh-sidecar.png): honest stat bar — 3 memories · high-confidence (gated, not faked) · 0 stale · 0 awaiting 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=personal200 → 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)

  1. Mark PR #17 ready. It's stacked on PR #16 → merge/rebase #16 → main first, then rebase #17 onto main.
  2. Optionally commit this evidence dir alongside the prior smoke-pr35-20260616/.