From 0bffff81752a37a8fbaced7f22984d9b5e8e01ed Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Wed, 7 Oct 2026 09:06:55 -0500 Subject: [PATCH] fixup! docs: goal tree aims at the weekly roundup (#23) 1c-vi: the cache proven complete against diigo's RSS export (and the 0-based page_num found on the way); 1e: the password-manager login; 1f: "invalidate the last N days" as today's stopgap; how-to-run: the webkey page and compare-export. Generated-by: Claude Opus 5.5 --- capsite-checklist.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/capsite-checklist.md b/capsite-checklist.md index 75de868..2061268 100644 --- a/capsite-checklist.md +++ b/capsite-checklist.md @@ -37,6 +37,10 @@ narrative. `cache: HIT`. - [x] 1c-v. Tests: `pnpm lint && pnpm test` (the real worker + DOs against [a fake webapp](diigo-cache/tests/fake-webapp.js)). + - [x] 1c-vi. Complete: a filled cache holds everything in diigo's + RSS export (16,744 of 16,744; differences are form only), + 2026-10-07, via `scripts/compare-export.ts`. Getting there + found diigo's `page_num` is 0-based (schema v2 migration). - [ ] **1d. Date windows and search on the public page**, toward the weekly PESOS roundup of [#23](https://github.com/dckc/madmode-blog/issues/23) @@ -52,7 +56,8 @@ narrative. from the webkey page `/cache/#`, which trades the key for a capability over Cap'n Web (`diigo-cache/src/api.ts`; `startFill`/`fillStatus`/`stopFill` in `src/cache.ts`; - `tests/fill.test.ts`). + `tests/fill.test.ts`). `/cache/` without a key is a login form + the password manager fills. - [ ] **1f. Cached pages go stale: the head must refresh.** A page hit never expires, and diigo pages are updated-desc, so every new or @@ -66,7 +71,8 @@ narrative. **Durable state**: additive only if `pages`/`page_members` keep their meaning; say so before changing them (capsite AGENTS.md). Needs a test: an item added to the fake webapp shows up after a - refresh. + refresh. Stopgap today: "invalidate the last N days" on the + webkey page (`invalidateRecent`), then fill. - [ ] **2. madmode reads the public cache**: public data, so no capability, no cookie, no plugin sync job, no cron on madmode's @@ -144,7 +150,11 @@ line (a repeat page is answered from DO sqlite storage). GET / is inert A private-only cache can be published later from its created page (`POST /_publish`, cache id in the body). -Checks: `cd diigo-cache && pnpm lint && pnpm test`. +Fill and invalidate a cache: http://localhost:8787/cache/ (log in with +the cache id from the password manager). + +Checks: `cd diigo-cache && pnpm lint && pnpm test`. Against a diigo RSS +export: `node scripts/compare-export.ts `. madmode (EmDash site; separate worker, separate concerns):