Demo / the vault
Efforts/cos-guides-seen.json
{
"_comment": "Slug -> last-seen 'updated' date. Slugs absent from this map, or whose feed 'updated' is newer than the date here, surface in the weekly review's 'New from chiefofstaff.io' section (ADR-16). Seeded with the guides actually read and implemented on 2026-09-05 rather than left empty, so the first weekly review surfaces only what has not been read.",
"_seed_note": "The feed at http://localhost:8788/guides.json returned 404 at seed time — the site was reachable earlier in the session and had gone down by the time the watcher first ran. Dates below therefore come from each guide's own frontmatter 'published' field in the Markdown twin that was fetched and read, not from the feed. The first successful feed fetch will reconcile them. This is recorded rather than silently papered over: a watcher that reports 'nothing new' when it could not reach the feed is the failure mode the script explicitly refuses.",
"seeded": "2026-09-05",
"feed_reachable_at_seed": false,
"fetch_log": [
{
"date": "2026-09-05",
"result": "unreachable",
"detail": "404 at seed time; script exited non-zero rather than report 'nothing new'."
},
{
"date": "2026-09-06",
"result": "unreachable",
"detail": "Weekly review run. curl -sf failed against http://localhost:8788/guides.json. Second consecutive failure. The URL is a localhost placeholder, not chiefofstaff.io — filed as bug hobbs-21n. Section 12 did not render, and did NOT report 'nothing new'."
},
{
"date": "2026-09-13",
"result": "unreachable — but not for last week's reason",
"detail": "Weekly review run. `./scripts/guides-watch.sh` exited 1 for the THIRD consecutive week. Rowan's expectation this session was that the feed would now be reachable because 'the two failures last week were the server, not you'. That is not what was found. The server IS up: workerd is listening on 127.0.0.1:8788 (a wrangler dev for ~/Claude/chief-of-staff.io). It returns HTTP 404 on /guides.json AND on / AND on nine other probed paths, i.e. it 404s on everything, so this is not a missing feed route — the running worker is serving nothing. Cause not diagnosed further; that repo is not the vault and is not Hobbs's to change (authority row 13). chiefofstaff.io itself resolved to nothing from here (curl exit, http=000), so there is no public fallback. hobbs-21n remains correct and is not the whole story.",
"workaround": "The build artifact dist/client/guides.json exists on disk (32 guides, generated field present) and was read DIRECTLY and diffed against `seen` by hand. Section 12 of the 2026-09-13 review renders from that file, NOT from an HTTP fetch, and says so in the section itself. This is disclosed rather than presented as a successful fetch (ADR-16's whole point, and the paginate-to-exhaustion rule the feed itself publishes).",
"seen_map_written_back": false,
"why_not": "18 guides are new. Marking them seen now would bury all 18 permanently the moment they were surfaced once, unread and undisposed — 'routed is not done', anti-pattern 15. The map is left untouched until Rowan gives a disposition. They surface again next week if he does not, which is the correct behaviour and not a bug."
},
{
"date": "2026-09-19",
"result": "SUCCESS — first successful HTTP fetch since the watcher was written",
"detail": "Rowan fixed the server. `./scripts/guides-watch.sh` exit 0, HTTP 200 from http://localhost:8788/guides.json, 32 guides. The Markdown twins fetch too (hiring-a-curator.md 5599 bytes, credentials-and-confidentiality.md 6054 bytes), so the full ADR-16 loop — feed, diff, twin — is live for the first time. Diff: 18 new, 0 updated. The URL in the script was never changed; hobbs-21n's stated cause was wrong and it is closed with that written down. Residual carried as hobbs-hab: https://chiefofstaff.io/guides.json still does not answer from here (https curl exit 28; http returns a 302 stub to www, not JSON), so the watcher depends on a dev server in a repo that is not the vault.",
"nothing_actually_new_since_last_week": "The feed's own `generated` field is 2026-09-05T06:57:26.383Z — the same build that was read off disk on 2026-09-13. The 18 are byte-for-byte the same 18 surfaced in Section 12 of Efforts/reports/weekly-2026-09-13.md, not 18 fresh ones. They re-surface because they were never disposed of, which is the seen-file behaving correctly.",
"seen_map_written_back": false,
"why_not": "Unchanged from 2026-09-13 and for the same reason: marking 18 guides seen the moment they are surfaced, unread and undisposed, is anti-pattern 15. Rowan said this session he will answer yes or no per guide; the map is written back only against those answers, and only for the ones he answers.",
"correction_to_last_week": "Two of the 18 are not un-applied. Atlas/team/gmail-personal.md carries `<!-- template: chiefofstaff.io/guides/hiring-a-curator, credentials-and-confidentiality -->` and was written from the on-disk twins on 2026-09-18. Against hiring-a-curator's six-step protocol the vault is at steps 1-2 of 6: curator picked, charter drafted. Step 3 (runtime with a restricted tool list) is absent and the charter s.10 says so; steps 4-6 (scope the auth, read-only smoke test, graduate to rotation) are Rowan's and are blocked on hobbs-9rq, itself blocked on hobbs-oou. So these two are part-implemented, not unread, and not done. Neither is marked seen."
},
{
"date": "2026-09-20",
"result": "SUCCESS — first fetch from the public origin, and the first that was not machine-dependent",
"detail": "Rowan deployed chiefofstaff.io. scripts/guides-watch.sh repointed from http://localhost:8788/guides.json to https://chiefofstaff.io/guides.json; exit 0, HTTP 200 after the apex 301 to www, 32 guides. hobbs-hab closed. Localhost was probed in the same session and still returns 404 on /guides.json, so the move was off a dead dependency, not a preference.",
"the_finding": "The public origin serves a LATER BUILD than localhost ever did. Feed generated 2026-09-05T18:57:37.864Z; the on-disk artifact read on 2026-09-13 and the localhost fetch of 2026-09-19 were both generated 2026-09-05T06:57:26.383Z — twelve hours earlier. So the watcher has been reporting honestly against a stale source for two weeks. Diff today: 0 new, 1 UPDATED — anti-patterns, feed 'updated' 2026-09-05 against seen 2026-09-01. It could not have been seen from localhost at all.",
"what_changed_in_it": "The site's list went from fifteen entries to seventeen. #16 'Routed Is Not Done' we already carry. #17 'The Commitment That Exists Only in a Session' is NEW and is not in Atlas/anti-patterns.md. Twin fetched: https://www.chiefofstaff.io/guides/anti-patterns.md, 7859 bytes.",
"seen_map_written_back": false,
"why_not": "anti-patterns is surfaced, not disposed. Rowan answers one line per guide (his pattern of 2026-09-19) and the disposition_invariant below forbids marking a slug seen with no carrier. Section 12 of the 2026-09-20 review renders it.",
"prerequisite_check": "what-a-chief-of-staff-system-is — met; it is in the seen map and was read on 2026-09-05."
}
],
"seen": {
"anti-patterns": "2026-09-01",
"capture-everything-organise-nothing": "2026-09-01",
"commands-are-procedures": "2026-09-01",
"concrete-actions-only": "2026-09-01",
"credentials-and-confidentiality": "2026-09-01",
"decision-records-for-a-life": "2026-09-01",
"every-message-gets-a-receipt": "2026-09-01",
"family-is-a-venture": "2026-09-01",
"files-are-memory": "2026-09-01",
"hiring-a-curator": "2026-09-01",
"incremental-handling": "2026-09-01",
"manager-not-operator": "2026-09-01",
"never-late-money-ops": "2026-09-01",
"operators-with-narrow-hands": "2026-09-01",
"other-sessions-brief-the-chief": "2026-09-01",
"paginate-to-exhaustion": "2026-09-01",
"publishing-without-leaking": "2026-09-01",
"reports-as-deliverables": "2026-09-01",
"telegram-as-the-channel": "2026-09-01",
"the-constitution": "2026-09-01",
"the-daily-brief": "2026-09-01",
"the-decision-authority-table": "2026-09-01",
"the-execution-lane": "2026-09-01",
"the-feedback-log": "2026-09-01",
"the-one-way-valve": "2026-09-01",
"the-review-surface": "2026-09-01",
"the-task-graph": "2026-09-01",
"the-vault": "2026-09-01",
"the-weekly-review": "2026-09-01",
"voice-notes-are-the-killer-input": "2026-09-01",
"watching-for-new-guides": "2026-09-01",
"what-a-chief-of-staff-system-is": "2026-09-01"
},
"seed_dates_reconciled": "2026-09-19 — done. On the first successful fetch all 14 seeded slugs matched the feed's 'updated' exactly (all 2026-09-01). The _seed_note's promise is discharged; the frontmatter-derived dates were correct and no slug was wrongly suppressed.",
"disposition_invariant": "Nothing is marked seen unless Rowan refused it outright or a live task carries it forward. `seen` suppresses a slug until the feed's `updated` moves, so marking a slug seen with no carrier is how a disposition is lost — anti-pattern 15. Every entry below names its carrier or says 'refused'.",
"dispositions": {
"date": "2026-09-19",
"source": "Rowan, Saturday 2026-09-19, one line per guide, in response to the 18 surfaced 2026-09-13 and re-surfaced today",
"yes": {
"incremental-handling": "YES, implement this week. 'Four of my last five brief items were things I'd half-done and put back down, so that one's aimed at me.' ADR-28 written 2026-09-19 BEFORE implementation, per ADR-16. Carried by hobbs-7q3 (P1) and hobbs-7vi (P2, blocked on 7q3).",
"never-late-money-ops": "YES, second. 'The yard invoice sitting open at P0 for fourteen days is the argument.' Sequenced after incremental-handling because the feed lists it as a prerequisite. Needs its own ADR before implementation. Carried by hobbs-z4y (P2, blocked on hobbs-7q3)."
},
"deferred_with_a_named_trigger": {
"_rowans_words": "'Telegram and everything behind it — no. Not yet. That's the credential gate and I want the Gmail curator decision made on its own first, exactly as we agreed. Ask me again once Pike is either granted or refused.'",
"_carrier": "hobbs-wtt — 're-ask the Telegram channel question the day Pike is granted or refused', blocked on hobbs-9rq. These five are marked seen ONLY because that task exists. Close it without making the re-ask and this disposition is lost silently.",
"slugs": [
"telegram-as-the-channel",
"every-message-gets-a-receipt",
"voice-notes-are-the-killer-input",
"the-execution-lane",
"reports-as-deliverables"
]
},
"refused": {
"_rowans_words": "'Everything else on that list — no, and I don't need the reasoning, your takes were right.'",
"_note": "Refused at this version. Two of the eleven — hiring-a-curator and credentials-and-confidentiality — are not unread: they are the provenance of Atlas/team/gmail-personal.md and the vault sits at steps 1-2 of that guide's six-step protocol. Steps 3-6, including the read-only smoke test, are inside hobbs-9rq's scope and do not need the feed to resurface them. Recorded here so a reader does not read 'refused' as 'not applicable'.",
"slugs": [
"capture-everything-organise-nothing",
"the-review-surface",
"hiring-a-curator",
"credentials-and-confidentiality",
"operators-with-narrow-hands",
"the-one-way-valve",
"commands-are-procedures",
"paginate-to-exhaustion",
"family-is-a-venture",
"other-sessions-brief-the-chief",
"publishing-without-leaking"
]
}
},
"dispositions_2026_09_20": {
"date": "2026-09-20",
"status": "AWAITING ROWAN — one guide, one word",
"anti-patterns": "UPDATED, not new. The added entry is #17 'The Commitment That Exists Only in a Session'. Not marked seen. Recommendation recorded in Efforts/reports/weekly-2026-09-20.md s.12."
}
}