Skip to content

๐Ÿ“… Daily Agenda: August 22, 2026 ( PDT ) โ€‹

  • Operation Baseline: 0900-1700
  • Workspace: lantern_app
  • Active User: fixture-operator
  • Focus: get the app, the admin portal and the merchant portal working end to end
  • Status: โฌœ not started

๐ŸŽฏ Key Focus Blocks โ€‹

  • [ ] 0900-1130: make local admin and merchant login possible (#819)
  • [ ] 1130-1400: one-command local service stacks with port-collision guards (#855)
  • [ ] 1400-1700: fix the webhook retry loop, once the replay-versus-accept answer lands

๐Ÿ• Realtime Log & Activity Blockers โ€‹

  • [ 2026-08-22 16:26 PDT ]: AGENDA BUILT > 3 ranked, 4 parked, 8 cut, 1 gap, from the 2026-08-21 carry and PROTOTYPE.md Phase 1; no file existed for today, no git, branch or PR state was read, and nothing gathered covers apps/web.

๐Ÿงฉ Focus Tasks & Session Prompts ( Chronologically ordered ) โ€‹

Session 1: Local admin and merchant login 0900-1130 โ€‹

  • Skills: cloud-service, env-vars, verify
  • Context: Local auth-api cannot mint custom tokens under ADC, so neither portal can be logged into on this machine.
  • Project: not yet created
  • Needs from you: none
  • Status: โฌœ not started
Goal: Admin and merchant portal sign-in works against a locally running auth-api, with no deployed dev involved.
Start here: https://github.com/cattreedev/lantern_app/issues/819
Done when: A local auth-api returns a custom token and both portals reach a signed-in state on localhost.
Watch out: ADC lacks iam.serviceAccounts.signBlob, so the fix is a credential or impersonation grant, not a code change to the token path.

Session 2: Local service stacks 1130-1400 โ€‹

  • Skills: repo-map, script-wiring, safe-automation
  • Context: One command brings up a preset of services with port-collision guards, instead of an afternoon of hand-starting them.
  • Project: not yet created
  • Needs from you: none
  • Status: โฌœ not started
Goal: A named preset starts every service it lists in one command, and refuses to start on a port already in use.
Start here: https://github.com/cattreedev/lantern_app/issues/855
Done when: Running a preset brings the whole stack up, and a second run against a taken port exits with a named collision rather than serving silent 404s.
Watch out: The Firestore emulator and venues-api both claim 8080, so take every port from tooling/vscode-extension/src/config.js and never invent one.

Session 3: Fix the webhook retry loop 1400-1700 โ€‹

  • Skills: debug, tdd, test-plan
  • Context: Two deliveries landing in the same second drop the second event, confirmed on August 21, carried since August 20, and currently unowned.
  • Project: not yet created
  • Needs from you: When a webhook event is dropped, should it be replayed from the delivery log, or accepted as lost? It blocks the whole fix, because the August 21 session recorded that the answer changes the fix's entire shape, and it is the only blocker on this row.
  • Status: โธ๏ธ blocked
Goal: Two webhook deliveries arriving within the same second both persist, with neither silently lost.
Start here: branch fix/webhook-retry-audit, and the carry entry in /tmp/agenda-fmt3/2026-08-21.md
Done when: A test that fires two deliveries inside one second records both, and that same test fails against the current code first.
Watch out: The replay-versus-accept question is still unanswered, so do not pick one side and build on it; the second-granular dedup key is where the event is lost.

โ“ User Question Log โ€‹

Append-only. Every question asked of her, logged when asked.

  • [ 2026-08-22 16:26 PDT ] Q: When a webhook event is dropped, should it be replayed from the delivery log, or accepted as lost? > A: UNANSWERED > Affected: blocks the whole webhook retry fix (Session 3); open since the bug was confirmed and unanswered through the August 21 close.
  • [ 2026-08-22 16:26 PDT ] Q: What is the retention window? > A: UNANSWERED > Affected: the parked row "Decide the retention window" and everything downstream of it; recorded as never asked on August 19, 20 and 21, and asked here for the first time.

๐Ÿ…ฟ๏ธ Parked โ€‹

Carried in from yesterday's Parked section and yesterday's EOD report.

TaskWhy parkedWhat unparks it
Second-source the geocoderCONDITION ALREADY FIRED. Parked August 19 as not blocking anything, and by August 20 the parked reason itself said the primary geocoder had failed twice that week. Verified across all three dated files. It stays parked today only because second-sourcing a provider is resilience work rather than wiring the three surfaces together.Already fired: the primary geocoder failing twice in a week. Moves to the top the same hour a geocoder failure turns up in an end-to-end pass.
Decide the retention windowNever asked on August 19, 20 or 21, and the August 21 block from 1400 to 1700 allocated to it did not happen. Nothing technical blocks it. Parked because a retention policy is not what makes the three surfaces work end to end.Her answer, raised today in the User Question Log for the first time.
Rewrite the onboarding emailNot this leg. Carried unchanged from August 20 into August 21.A decision to work on activation at all.
Replace the CI cache actionThe current one still works. New to the August 21 parked table, and neither trigger has occurred.It breaking, or the vendor deprecating it.

โœ‚๏ธ Cut Today โ€‹

Failed the focus test. Kept with its reason so it is not silently re-proposed tomorrow.

TaskWhy it was cut
Credential and identity colocation (#875)P0, in progress, and genuinely the admin portal, but it is a confidentiality fix on a surface that already functions. The sharpest cut here: bring it straight back the moment this leg ends.
Contrast enforced for realP0 and in progress, but it is gate blindness (axe cannot parse the palette, plus the #895 neutral ratchet). Three surfaces working tomorrow would not close it. The plan still cites #878, which is CLOSED; the live successor is #895.
Personal context syncP0 and the only started Phase 1 row, but it is agent context tooling across machines, still unfinished the day after all three surfaces work.
Doctor learns moreDiagnostics about the environment rather than the environment itself. Also stale: the plan says Not started while its only cited issue #857 is CLOSED.
Prebuilt CodespaceIts own Why line conditions it on someone joining who cannot use the local path, and it is the lowest-priority row in the phase.
Broken doc linksFiled under Runs throughout, which gates nothing and is gated by nothing. Roughly 500 links stay broken either way.
Agent guidance (#950)Real work, and what the current branch is named for, but skills and rules staying current is not what makes the three surfaces work end to end.
Tidy the settings screen spacingExplicitly cosmetic, scoped to two cards sharing a spacing scale. No project folder, no issue, and it never appeared in the August 21 summaries despite being queued for the 1500 block.

โš ๏ธ Gaps โ€‹

ONLY when there are any. Rows nobody is carrying.

  • An actual end-to-end pass across all three surfaces, recording where each one breaks. Missing from both readers: the carry file names no such task, and PROTOTYPE.md Phase 1 covers only environment pieces (portal login, service stacks, doctor). The focus is the three surfaces working end to end, and nothing gathered names running them to find out what breaks, so today's ranked work fixes only the blockers already known and the rest stays invisible.

Built with VitePress