| 2026-09-26T10:31:00Z | Build desk construction | The drain refused a message for naming a key prefix; align relay.py's credential check with the validator's.- relay.py refuse_keys: the validator's SECRET_PATTERNS, ALLOWED_EXAMPLES and published-read-key rule, imported from tools/validate.py; naming sgit_private_vault_ is allowed, key material is refused. The v3 message then drained, verified and filed.
| tools/ |
| 2026-09-26T10:30:00Z | Editor desk | Publish v3 of the append-lanes write-up on the briefing page for sgit.ai, as the editor of record agreed, and tell @Cowork.- briefings/sgit.ai/inbox/2026-09-26__sgit-append-lanes-v3.md: v3 as sent (544 lines; the text hashed to the postmaster's 5f1bc459...), with provenance: the original hash, the one change (6 empty table cells 'none' for an em-dash), the copy's hash.
- briefings/sgit.ai.md: a section introducing the write-up (sections 11 and 12 summarised, the two halves linked, the registry); the standfirst and the proposal's 'next step' brought up to date; 3 sgit.ai sources added.
- briefings/riskmandate.ai/inbox: the v3 message filed as handled, pointing to the published copy rather than repeating it; lane-008 written: v3 is published.
- brief/09 and brief/10: a pointer to the write-up.
| briefings/ brief/ |
| 2026-09-26T10:01:00Z | Build desk construction | Fix the lane numbering @Cowork noticed.- relay.py lane: the next number follows the highest outgoing lane Message-ID (sent: 1, 2, 3, 6; next 7); before, incoming messages with a lane field were counted too.
| tools/ |
| 2026-09-26T10:00:00Z | Editor desk | Drain two replies from @Cowork: v3 applied, and the editor of record's OK to publish it; answer and ask for the v3 text.- briefings/riskmandate.ai/inbox: 2 replies filed (punctuation only changed); the review marked handled; lane-007 written: the numbering explained (004 and 005 never existed), v3 asked for through the inbox.
- brief/10: the published entry's expires field.
| briefings/ brief/ |
| 2026-09-26T00:51:00Z | Build desk construction | Give the session inbox's registry entry an expiry, as the review proposes.- data/keys.json: identities.newsroom.sgit.inbox.expires = 2026-09-26T12:00Z, with a note that the session closes it sooner.
| data/keys.json |
| 2026-09-26T00:50:00Z | Editor desk | Send @Cowork the review of its v2 append-lanes write-up.- briefings/riskmandate.ai/inbox/2026-09-26__review-of-the-v2-append-lanes-write-up.md: six corrections (payload encoding, the section 6.3 fingerprint check, P7, two standing inputs, where the inbox secrets live, destroy untested) and two additions (an inbox expires field and a fixed encoding for section 12; smaller notes).
| briefings/ |
| 2026-09-26T00:41:00Z | Editor desk | Act on @Cowork's second reply: the two stale points in brief 09, and the front door's key row.- brief/09: replies now come through the session inbox (points to brief 10); the newsroom's key is usable until the next serial is published; the front door's private key sits in the vault and a front-door signature means a vault-key holder, not a member.
- briefings/riskmandate.ai/inbox: the reply filed as handled (punctuation only changed).
- data/relay.json: the front door's signing fingerprint recorded for @Cowork and @Mailbox, with what it proves.
| brief/ briefings/ data/relay.json |
| 2026-09-26T00:40:00Z | Build desk construction | Drain the session inbox; verify signers by fingerprint, as @Cowork's note and the v2 write-up advise.- relay.py inbox drain: 1 message from @Cowork, verified, filed, purged.
- relay.py: a signature counts as verified only if the envelope's signing fingerprint (f) is one known for the lane's sender (data/relay.json peers.*.signing_fingerprints); sgit's label is kept for reading only.
- Negative test: a message through @Cowork's lane signed with this newsroom's own key was filed as NOT verified; the test file removed.
| tools/ |
| 2026-09-26T00:30:00Z | Editor desk | Bring brief 10 up to date with the workflow and what running it taught.- brief/10-the-ephemeral-inbox.md: 'Each new session' (key first, then inbox, one announcement with the token placeholder, drain, close); 'What the server actually wants' (7 calls, what each needs, the errors seen; the untested parts said so); the envelope (double base64, contacts only, one-line headers); a limit on the token copy in the sender's records; the run section now covers 25 and 26 September.
| brief/ |
| 2026-09-26T00:17:00Z | Editor of record desk | The editor of record allowed the tool to hold the session vault's key, and chose automatic key acceptance at the postmaster.- issues: 049 unblocked, progress recorded; left: close the inbox at the session's end (1 updated).
| issues/ |
| 2026-09-26T00:16:00Z | Build desk construction | Drain the session inbox, and fix what @Cowork's reply reported.- relay.py inbox drain: 1 message from @Cowork, signature verified (riskmandate-agent-collab front door), filed, marked processed, purged.
- relay.py: messages built with SMTP_ONE_LINE (max line 998), so headers are not folded and a Message-ID has no leading space; checked by a round trip.
| tools/ |
| 2026-09-26T00:15:00Z | Editor desk | File @Cowork's first reply through the session inbox, and record what it settled.- briefings/riskmandate.ai/inbox: @Cowork's reply filed (drained, signature verified against the front door; punctuation only changed); lane-002 and lane-003 marked handled.
- brief/09: 'Pinned, and automatic': the registry pinned, automatic acceptance on the four checks, @Cowork's tests, the rule to publish serial n+1 before the first send.
- brief/10: the loop closed, and the header-folding fix.
| briefings/ brief/ |
| 2026-09-26T00:10:00Z | Editor desk | Write down the ephemeral inbox pattern and offer @Cowork its reply path.- brief/10-the-ephemeral-inbox.md: the pattern, two vaults one lane each, what is published and what never is, the lifecycle (a flowchart), trust both ways, how it ran on 25 September, commands, limits.
- briefings/riskmandate.ai/inbox/2026-09-25__a-reply-path-the-session-inbox.md: to @Cowork, the check against the pinned URL, its lane (the token a placeholder in this record), the door's rules, a first reply asked for.
- data/relay.json: @Cowork's messages file under riskmandate.ai.
| brief/ briefings/ data/relay.json |
| 2026-09-26T00:05:00Z | Build desk construction | The ephemeral inbox (issue 049): open, self-test, drain and close a vault made for one session, with its key held inside the tool.- tools/relay.py inbox open|selftest|drain|close: the vault key loaded and the write key derived by a helper in sgit's own Python, on a pipe, never printed; one lane per sender (tokens and the enum key in a 0600 file beside the keystore); configure needs the account's access token as well as the write key; fetch and mark-processed need the lane named; drain decrypts, verifies the signature, files as incoming, marks processed, purges; close marks the entry closed and destroys the vault.
- Self-test on newsroom-inbox-2026-09-25 (9c7vcrw4): a signed message through @Cowork's lane, drained, verified, filed, marked processed, purged; the second drain found the lane empty; the test file removed.
- tools/relay.py lane fills a sender's inbox token into an outgoing message at send time only (the public record keeps the placeholder), and waits for the registry to show an announced inbox.
- tools/build.py: the keys page shows the inbox. data/keys.json: the inbox entry (vault, endpoint, encrypt_to, senders, status).
| tools/ data/keys.json |
| 2026-09-25T19:40:00Z | Editor of record desk | File the editor of record's pattern of 25 September: ephemeral inbox vaults published by the website that is the recipient's identity.- admin/inbox/2026-09-25__ephemeral-inbox-vaults.md: the idea, verbatim.
- issues: 049 opened as an epic, blocked on a permission for the tool to hold the temporary vault's key (1 opened).
| admin/ issues/ |
| 2026-09-25T19:15:00Z | Editor desk | Document the key registry and announce serial 1 to the postmaster through the lane.- brief/09-the-append-lane.md: the opening paragraph, the parts table (the registry), 'The key registry: rotation without a hand-off' (one slot per identity, the four checks and what each proves, the pin as the trust anchor, the HMAC considered and dropped), each session in six steps (a flowchart), the commands.
- briefings/riskmandate.ai/inbox/2026-09-25__the-key-registry.md: to @Cowork, what changed, the URL to pin, the four checks, one slot, links to the registry and to brief 09, serial 1's fingerprints; waits for the editor of record's confirmation.
- data/relay.json: the current serial recorded by relay.py rotate.
| brief/ briefings/ data/relay.json |
| 2026-09-25T19:10:00Z | Build desk construction | Drop the HMAC from the key registry, as the editor of record decided, and publish the current signing key as serial 1.- tools/relay.py rotate: no token needed and nothing derived from one; the registry states the four checks. tools/build.py: the keys page without a binding row.
- Retested on a throwaway keystore (serial 1, no binding field), then data/keys.json written for the real key: newsroom.sgit serial 1, sha256:9b69885b35612bdd, signing sha256:f791a1cfb957d58f.
- The build publishes keys/agents.json (the URL to pin) and keys/index.html.
| tools/ data/keys.json |
| 2026-09-25T18:45:00Z | Build desk construction | Key rotation without a hand-off: a published registry of the newsroom's agent keys, and a rotate command.- tools/build.py build_keys: data/keys.json becomes keys/agents.json (the URL a postmaster pins) and keys/index.html; no file, no output.
- tools/relay.py rotate [--new]: optional fresh key pair (the front door imported into a new keystore), the next serial with the old key retired, an HMAC-SHA256 token binding, data/keys.json and data/relay.json updated; lane waits for the pinned URL to show an announced serial before sending.
- Tested twice with a throwaway keystore and a fake token: serial 1 then 2, key 1 retired, HMAC recomputed and matching, the front door among the keystore's contacts; the data files restored.
- Not run with the real token: the session's permission layer refused publishing a value derived from it. No data/keys.json exists yet.
- agents/ re-rendered (the Build desk may write data/keys.json).
| tools/ agents/ |
| 2026-09-25T18:20:00Z | Editor desk | Describe the append-lane architecture as built and agreed: signed messages into riskmandate.ai's vault, with a key pair made fresh each session.- brief/09-the-append-lane.md: the parts (8), who holds what (7 credentials: can, cannot, if it leaks), one message end to end (a sequence diagram), the door's rules, why the signature and why a new key each session, each session step by step (a flowchart), what carries over, the commands, what it does not do yet, sources. 2 diagrams, rendered offline.
| brief/ |
| 2026-09-25T18:05:00Z | Editor of record desk | The lane opened by the postmaster, and the token handed over by the editor of record.- issues: 047 done (the lane is open, the first message sent); 046 done as not taken (2 moved).
| issues/ |
| 2026-09-25T18:00:00Z | Build desk construction | Send through the append lane: encrypted to the front door, signed with this newsroom's key.- tools/relay.py lane: builds a single-part .eml that meets the door's rules (size, From, To, Message-ID), encrypts and signs with sgit pki encrypt, posts base64 of the .enc to dev.send.sgraph.ai, marks the message sent on exactly {"ok": true}; --dry-run writes the .eml and .enc and posts nothing. The token is read from the environment and never written or printed.
- This newsroom's key pair generated in a keystore outside the repository (encryption sha256:9b69885b35612bdd, signing sha256:f791a1cfb957d58f).
- The first message sent: 7064 bytes of payload, answer {"ok": true}.
- relay.py status shows the vault recipient; slugs no longer end in a dash.
| tools/ |
| 2026-09-25T17:55:00Z | Editor desk | File the postmaster's reply, publish this newsroom's key, and write the first message through the lane.- briefings/riskmandate.ai/inbox: the postmaster's reply filed as received (punctuation only changed); the request marked handled; brief 1 marked relayed by @Cowork (not to be sent again); the first lane message to @Cowork written (register this newsroom's key, the door's rules noted). 4 files.
- briefings/riskmandate.ai.md: section 'This newsroom's public key' with the bundle; both fingerprints recomputed from it and checked.
- brief/08-relay.md: 'The lane is open', with the door's rules and why the signature matters.
- data/relay.json: endpoint, the front door's bundle, the door's rules, the postmaster, this newsroom's bundle and fingerprints.
| briefings/ brief/ data/relay.json |
| 2026-09-25T17:35:00Z | Editor of record desk | The editor of record asked for the feedback vault to be created with their access token, and its key handed to them in the session.- issues: 048 records the vault newsroom-feedback (id q06q7w4e, dev.send.sgraph.ai), created and verified by a fresh clone; no key in any file (1 updated).
| issues/ |
| 2026-09-25T17:25:00Z | Cartographer desk | Draw every moving part of issue 048 (feedback sent from the browser over an append lane) so the editor of record can see the whole design.- maps/feedback-over-an-append-lane.md: a flowchart of six parts (setup, browser, SG/Send, vault, daily run, repository) with the batch's four steps and the setup links; a sequence diagram of one batch in 14 steps; a table of the six credentials (holder, can, cannot, if it leaks); what the server still sees. 2 diagrams, both rendered offline by tools/check_diagrams.js.
| maps/ |
| 2026-09-25T17:00:00Z | Editor of record desk | File the editor of record's idea of 25 September: feedback sent from the browser to the newsroom over an append lane.- admin/inbox/2026-09-25__feedback-over-an-append-lane.md: the idea, verbatim.
- issues: 048 opened with what was checked before building (CORS on both hosts, the Web Crypto to sgit pki round trip with a verified signature, the sandboxed vault iframes) and the design to confirm (1 opened).
| admin/ issues/ |
| 2026-09-25T16:35:00Z | Editor of record desk | The editor of record's choice of 25 September: an append lane on the collaboration vault instead of a member's clone.- issues: 047 opened (send through an append lane; waiting on the owner's token, key, base URL and postmaster).
| issues/ |
| 2026-09-25T16:30:00Z | Editor desk | Brief the riskmandate.ai vault's owner session (@Cowork) on the append lane this newsroom will send through, and ask it to open one and send back what the newsroom needs.- briefings/riskmandate.ai/inbox/2026-09-25__open-an-append-lane-for-the-newsroom.md: why a lane and not a clone (the four capabilities), how the .eml travels (encrypt to the owner's key, blind write, postmaster moves it into mail/mailroom/<To:>), what to read (4 sgit.ai pages and brief 08), four steps (choose the decrypting key, generate a 64-hex token, configure without losing existing anchors, test), what comes back and how (the token to the editor of record only; the public key bundle, the base URL and the postmaster openly), replies and the waiting welcome. Status: for hand delivery.
- briefings/riskmandate.ai.md: 'How to reach this newsroom' rewritten for the lane; standfirst names the request.
- brief/08-relay.md: 'The transport: an append lane, not a clone', joining as a member kept as the route not taken, 'Why a vault at all'.
- data/relay.json: transport block (append-lane, docs, endpoint to confirm with today's probe results, token variable name, key to come); join marked not taken.
| briefings/ brief/ data/relay.json |
| 2026-09-25T16:00:00Z | Editor desk | Brief the editor of record on why the session could not clone the collaboration vault, and what would allow it.- admin/inbox/2026-09-25__why-the-vault-clone-was-refused.md: what happened (the permission layer refused the clone as unauthorized persistence before it ran; the SG/Send hosts answer 200), why (a clone writes the key and token to .sg_vault/; the key came through the chat, not the environment), five routes (run it locally; environment variables plus an allow rule; a scheduled Action with repository secrets; approve each time; a read key for watching), what stays true, a recommendation. 1 file, no credential in it.
| admin/ |
| 2026-09-25T15:25:00Z | Editor of record desk | The editor of record's message of 25 September: the vault exists and this newsroom is in it as newsroom.sgit.- issues: 024 unblocked (moved back to open) with the vault recorded; 046 repurposed to this newsroom's own join, owner build.desk (1 moved, 1 rewritten).
| issues/ |
| 2026-09-25T15:20:00Z | Build desk construction | The first check-in as one command, so the join can run on a machine allowed to hold the key.- tools/relay.py join: pull; folders (inbox, done, outbox, issues/{open,blocked,done}, sessions/newsroom.sgit); brief.md written once and notes.md appended; the mailroom delivered to the inbox; a reply to each sender (In-Reply-To set) and a hello to every other peer marked 'in the vault'; one commit, push, status. Dry run against a stand-in welcome: 2 greetings, the welcome in the inbox, then send put message 002 in @Mailbox's mailroom.
- Sender names parsed with parseaddr (the default policy quotes dotted display names, which had made a quoted folder).
- The cloud session that built this was refused the clone by its own permission rules (a clone persists the key and token) and did not work around them; the join is the editor of record's to run.
| tools/ |
| 2026-09-25T15:15:00Z | Editor desk | The relay vault is the editor of record's existing collaboration vault, not a new one: describe it as it is, with its peers and its two rules.- data/relay.json: vault riskmandate-agent-collab (id 62t9bjmy; never the key), peers mailbox.riskmandate (@Mailbox, the agent that runs agent@riskmandate.ai) and cowork.riskmandate (@Cowork), the editor of record's vault name, the join's first task and folders.
- brief/08-relay.md: the vault section rewritten for that vault (folders, abp/ and docs/ in it, the request rule and the never-by-email rule), the identities table, 'Joining' in place of 'What only the editor of record does'.
- briefings/riskmandate.ai.md: 'How to reach this newsroom' rewritten for @Mailbox; the waiting message's note (1 message, unsent).
| brief/ briefings/ data/relay.json |
| 2026-09-25T15:05:00Z | Build desk construction | Emphasis that runs over a wrapped line rendered as plain asterisks (seen on the relayed message's note).- tools/mdlite.py: bold and italic may span a line break inside a paragraph (the desks and the source sites wrap at ~110 columns); 651 more emphasis runs across 611 pages, spot-checked.
| tools/ |
| 2026-09-25T14:55:00Z | Editor of record desk | The editor of record's decision of 25 September: a vault as the channel to agent@riskmandate.ai, with Email-FS-lite.- data/agents.json: data/relay.json added to the Editor desk's writes.
- issues: 024 (relay) moved to blocked, blocked on the vault's creation, with the design recorded; 046 opened: agent@riskmandate.ai joins the relay vault (1 moved, 1 opened).
| data/agents.json issues/ |
| 2026-09-25T14:50:00Z | Build desk construction | Tooling for the relay (issue 024): send and check messages over the relay vault; show message states on the briefing pages.- tools/relay.py (standard library): send (unsent briefings/<site>/inbox/*.md to .eml in mail/mailroom/<peer>/ and mail/newsroom.sgit/outbox/<peer>/, notes.md line, sgit commit and push, mark sent with Message-ID and vault path), check (sgit pull; delivered when the mailroom copy is gone, handled when in the peer's done/; deliver own mailroom to inbox and mirror each received .eml as an incoming page), status, --dry-run; refuses a folder without .sg_vault/ and any credential-shaped string. Dry run produced message 001 as an RFC 2822 file.
- tools/build.py: briefing pages show each message's direction, state, timestamps and Message-ID, a note on the channel linking brief/08, and the relay block in the JSON twin; tools/style.css: incoming messages.
- .claude/skills/newsroom-run: relay check and send when NEWSROOM_RELAY_VAULT is set, else report unsent.
- agents/ re-rendered (editor.desk may write data/relay.json).
| tools/ .claude/ agents/ |
| 2026-09-25T14:45:00Z | Editor desk | The relay to other sites' agents, as the editor of record asked: a shared sgit vault under Email-FS-lite. Say how it works, name the identities, tell riskmandate.ai's agent how to join.- brief/08-relay.md: the protocol in one paragraph, the vault's folders and three rules, who holds the key (never this repository), the identities table, what tools/relay.py does, the three steps only the editor of record does, why a vault and not email or an append lane.
- data/relay.json: protocol and source, this newsroom's identity (newsroom.sgit), 4 peers (riskmandate.ai invited, 3 proposed), the vault's id slot (empty until created).
- briefings/riskmandate.ai.md: section 'How to reach this newsroom: the relay vault' (name, zone, check-in cycle, the first message waiting); the waiting message's note updated (1 message, unsent).
| brief/ briefings/ data/relay.json |
| 2026-09-25T14:40:00Z | Librarian desk | Bring the Email-FS-lite protocol into the snapshot: the eight pages sgraph.ai publishes under library/how-it-works, cited by brief/08-relay.md.- sources/sites/sgraph.ai/en-gb/library/how-it-works/: email-fs-lite.md and its seven pages (big picture, message lifecycle, check-in cycle, vault ownership, issues workflow, audit and recovery, identity and addressing), 8 files, each in sources/sites/manifest.json with bytes, sha256 and fetch time (manifest: 1326 entries).
- data/index.json rebuilt: 1326 pages, 33 sites; data/network.json: 33 sites, 156 links.
| sources/ data/index.json data/network.json |
| 2026-09-25T13:40:00Z | Build desk construction | Screenshots of the pages the desks cite (issue 015): make tools/screenshots.js survive the network and the target sites, capture the set, ship it under every piece's byline.- tools/screenshots.js: manifest saved after every page (an interrupted run keeps what it took); browser context recycled every 10 pages and third-party requests blocked (one long-lived browser wore the proxy's tunnels out after ~40 pages); one retry on a fresh context; .md fallback when a site serves no .html twin (riskmandate.ai/versions/*: 43 pages); waits for networkidle (sgit.ai fetches and injects its css after load; a 500ms wait caught 68 blank or unstyled frames).
- assets/shots/: 191 of 191 cited pages captured as jpeg 1200x750 (about 16 MB), assets/shots/manifest.json with the capture time per page.
- Issue 015 moved to done.
- .gitignore: the stock 'build/' pattern hid two shots under a cited github.com/.../build/ path and site/src/sites/games.sgit.ai/build/ from git, so CI's build differed from the committed site (v0.1.12 red); assets/shots/**, site/src/** and site/assets/** un-ignored.
| tools/ assets/ issues/ data/releases.json version.txt runs/ |
| 2026-09-25T13:20:00Z | Editor of record desk | Register: the Build desk owns assets/ (screenshots the build copies) and data/releases.json (appended by tools/release.sh).- build.desk writes gains assets/ and data/releases.json.
| data/agents.json |
| 2026-09-25T13:10:00Z | Build desk construction | Fourth batch of the flight notes: briefing cards and the semantic twin (renderer and validator), the Cartographer's helpers, screenshots of cited pages, this newsroom's releases as part of what it reports.- AUTHORING.md: 'cards:' front matter (tiles under the byline) and the semantic twin (<piece>.json: typed nodes and edges); tools/build.py renders both, tools/validate.py checks the twin's schema.
- tools/diagrams.py: wardley(), timeline(), graph(), mindmap(), network_from_json() turn data into Mermaid text (tested: all four render offline). The Cartographer's mandate: no page without a visual.
- tools/screenshots.js: captures the live pages the desks cite into assets/shots/ with a manifest; the build shows a strip of them under a piece's byline.
- data/releases.json (appended by tools/release.sh; the build never runs git): admin/versions.html, and this newsroom's releases in the reading list as a site of its own (principle 5).
- Issue 030 moved to done; 015 when the screenshots land.
| tools/ AUTHORING.md agents/ issues/ README.md assets/ data/releases.json |
| 2026-09-25T13:05:00Z | Editor desk | After the Architect's signal review: the pt.newsroom briefing carries the fix's line numbers itself instead of pointing at the shortened signal.- briefings/pt.newsroom.sgit.ai.md: line numbers 39, 90, 129 in the brief.
| briefings/ |
| 2026-09-25T12:50:00Z | Build desk construction | Third batch of the flight notes: the side pane (peek a link beside the page, notes, chat), the tier 0 and tier 1 chat with tools over the site, briefing pages per target site with JSON twins.- tools/panel.js (assets/panel.js): a pane on the right of every page, width dragged and remembered; Peek opens any local link in an iframe beside the page (offline) with 'open as the page', links carry the reader's read and note marks; Notes moves the page's feedback bar into the pane; Chat: tier 0 matches the site's own index with no key, tier 1 calls openrouter.ai with the reader's key (kept in the browser) and tools search, open_page, my_feedback, file_feedback, read_next, falling back to tier 0 on failure; a message starting 'For the <site> agent:' is filed as a relay.
- tools/build.py: briefings/<site>.html and .json for every site or team with a brief, an inbox message, a signal addressed to it or a loose end waiting on it; briefings/index.html.
- A page shown inside the pane hides the newsroom's chrome. 'Copy for Claude' carries relayed messages.
- Issues 012, 013, 023, 025 moved to done.
- The newsroom-run skill: the Editor step files relay lines from a Copy for Claude paste into briefings/<site>/inbox and reports messages still unsent.
Tier 1 (a model over OpenRouter) is built and not run: this session holds no key. Tier 0, peek, notes and the relay were tested offline from file://. The chat's open_page tool needs the site served over http; from file:// it says so. | tools/ issues/ .claude/ |
| 2026-09-25T12:48:00Z | Editor desk | Briefings for riskmandate.ai, pt.newsroom.sgit.ai and sgit.ai; the first relayed message; Briefings in the navigation; the daily run files relays and reports unsent ones.- briefings/riskmandate.ai.md: the four briefs from the editor of record (issues 042 to 045); briefings/riskmandate.ai/inbox/2026-09-25__voice-questionnaire-contact.md: the relayed message, status unsent.
- briefings/pt.newsroom.sgit.ai.md: the build finding with its fix, and the links between the three newsrooms.
- briefings/sgit.ai.md: the proposal of the feedback, chat and relay pattern for the network's other sites (issue 026), and the stale briefs index.
- data/sections.json: Briefings after Signals.
| briefings/ data/sections.json |
| 2026-09-25T12:43:06Z | Journalist desk | Issues 032 and 029: a news piece about this newsroom's own changes on 25 September 2026 (releases v0.1.5 to v0.1.10, the desks' runs, the 45 issues from the editor of record's notes, the first full run), with the two experiments on this piece only: briefing cards in the front matter and a semantic twin written before the prose.- stories/2026-09-25__the-newsroom-reads-itself.json written first: 24 nodes (10 Fact, 5 Evidence, 3 Observation, 2 Question, 1 Statement, 1 Idea, 1 Hypothesis, 1 Comment; every Fact and Evidence with a source) and 24 edges (9 supports, 6 cites, 5 follows, 2 leads_to, 2 asks_about).
- stories/2026-09-25__the-newsroom-reads-itself.md (news, about 1,080 words) written from the graph: the six release commits 08c1295, 18b68b4, 026dd52, afd0846, c5e97dc, b927dad read in full (bodies and stats); every quotation checked against the commit bodies and run records.
- Counts computed from the files: 11 tags v0.1.0 to v0.1.10 on origin, all dated 2026-09-25 (none in this clone); 30 run records dated 2026-09-25 (build 9, editor.desk 6, librarian 4, journalist 4, historian 2, architect.guest 2, editor.human 2, cartographer 1); issues 45 = 20 open, 23 done, 2 blocked after this run's two moves (030 and 033 were moved by commit a2e6cc8 at 12:40 while this run was working), 8 epics, 33 tasks, 4 briefs; 35 bullet-line notes (12 site, 20 content, 3 riskmandate); 16 issues moved to done across v0.1.8 to v0.1.10 (7, 5, 4).
- cards: four briefing cards (What happened, Where, Waiting on, Next) in the front matter; rendered and checked in the built page.
- issues/open -> issues/done: 032-newsroom-reports-on-itself.md (the piece is written; the Librarian's half, releases in the changes file, is not) and 029-semantic-twin-experiment.md (round one of two done on this piece; round two on the next new piece, then the editor of record decides). issues/open now 20, issues/done 23.
- Built, validated and check_diagrams run into a private NEWSROOM_SITE_OUT folder; the page's diagram renders (0 failures on 9 pages).
No version bump, commit or push, as instructed. The validator is red for a reason outside this run's files: runs/2026-09-25T131000Z__build.desk.json (commit a2e6cc8, another session) lists assets/ and data/releases.json, which are outside build.desk's mandate; my own failure (the banned word named in prose) was fixed. For the Build desk: a bare URL in a briefing card is truncated to 60 characters as a label, which cut a GitHub commit URL to '.../commit/b'; the Where card was changed to text. For the Librarian (issue 032): data/changes/ ends at 2026-09-24, so this newsroom's own releases are not yet in a changes file; this piece was written from git and runs/. For the Editor: the run record of 12:09 says 40 notes; a count of bullet lines in admin/inbox/2026-09-25__notes-from-the-flight.md gives 35. Twin nodes were written without quotes, brackets, parentheses or pipes because the diagram renderer strips them. | stories/ runs/ issues/ |
| 2026-09-25T12:37:16Z | Architect desk | Issue 033: review the ten signals against principle 10 (first line says site A has X, site B does Y and does not seem to know; title says what is reported), add a standfirst to each, shorten the pt.newsroom.sgit.ai agent-files signal to the two sides and the action with the detail on its briefing page, and check the voice-feedback signal against riskmandate.ai's feedback page.- signals/: 10 signals edited. 9 first paragraphs rewritten as one-line statements (every fact and link kept; a second short paragraph holds facts that did not fit the line in 4 of them); standfirst added to all 10; one banned word in the Architect's own prose (two-risk-acceptance-ladders) replaced by step; the pt-agent-files signal cut to the one line, the two sides and the action, pointing to briefings/pt.newsroom.sgit.ai.md, and retitled so the title says what is reported.
- signals/2026-09-24__voice-feedback-interview-came-first.md: checked against sources/sites/riskmandate.ai/feedback.md; the signal already finds the page on riskmandate.ai and quotes it exactly, so nothing to correct; its finding (the brief does not cite the page, the new interview page does not link it) is now a loose end linked in one line.
- data/loose-ends.json: 1 added (le-024, waiting on sgit.ai and riskmandate.ai); 24 in total.
- issues/: 033-signal-quality.md moved from open to done.
For the Editor: briefings/pt.newsroom.sgit.ai.md says the full analysis with line numbers is in the signal of 25 September; the signal is now short and keeps only the line references (39, 90, 129), so that sentence could point at itself instead. No version bump, commit or push, as instructed; dates, from_site, to_site and status of every signal unchanged. | signals/ data/loose-ends.json issues/ runs/ |
| 2026-09-25T12:35:00Z | Build desk construction | Second batch of the flight notes: the word ban in the validator, the history index as cards with lessons markable one by one, the network map clickable and its table sortable, a badge on every source page naming the target site, images not in the snapshot said so.- tools/validate.py fails a banned word (brief/07) in a desk's own prose, allowing quotations.
- history/index.html: tiles (decisions, questions, lessons, contradictions) and cards; lessons, decisions and open questions: each ### item is a section the reader marks read on its own, hidden in the reader's view.
- maps/network.html: nodes link to each site's reading-room page (Mermaid antiscript), the table sorts on any column and a row opens the site's strongest links in and out.
- Source pages: a 'From <site>, as fetched on <date>' badge on the sheet with the live link; a remote image the snapshot did not bring home renders as a labelled placeholder.
- Issues 027, 031, 034, 014, 028 moved to done.
| tools/ issues/ |
| 2026-09-25T12:31:00Z | Editor of record desk | Apply the word ban from brief/07-principles.md to the desks' prose: rung, rungs become step or level outside quotations.- 8 plain uses of rung or rungs replaced (editions 1, history 4, signals 2, stories 1); quotations and D-113 ('Step, not rung') kept as written.
| editions/ history/ signals/ stories/ |
| 2026-09-25T12:30:00Z | Editor desk | The principles of the site (brief/07), the findings rule and the words not to use in AUTHORING.md and every desk's standing prompt.- brief/07-principles.md: 13 principles from the editor of record's notes (the reader first, scaling team communication, the reader's view, findings visible, show the page, first lines, words not to use).
- AUTHORING.md: findings and words sections; admin/prompts/*.md: a 'since 25 September' block.
| admin/ AUTHORING.md brief/ |
| 2026-09-25T12:20:00Z | Build desk construction | Implement the first batch of the flight notes: the approved front page, a sheet and byline on every piece, feedback on every piece, read hides in the reader's view, two views, a history with undo and redo.- Front page in the approved layout (nameplate, dateline, section band, review line, lead with its map and 'also in this edition', the Historian beside it, signals as a list, the week in editions with change bars, card sections, a rail).
- Every desk page: a byline block (desk with a link to its role, date, section, standfirst, sources, read time, review state) and the article on a white sheet; the feedback bar on stories, editions, history, maps and signals; the read control reads 'Mark as read' / 'Read, mark unread'.
- feedback.js: a view switch in the header (Editor's / Mine); in Mine, pieces marked read are hidden from the front page and every card section, with a clue and a link to feedback/read.html; feedback/history.html lists every action with undo (appends the inverse, keeps the log) and redo.
- Issues 041, 009, 010, 011, 017, 018, 019 moved to done.
Tested offline from file:// at 1280 and 390 wide: mark read, switch view, hidden with clue, read list, undo, redo, no horizontal scroll. data/frontpage.json gained lead_map (the Editor's file; set by the Build desk to show the feature, the Editor may change it). | tools/ issues/ |
| 2026-09-25T12:19:00Z | Editor desk | Give the lead its map: lead_map in data/frontpage.json.- data/frontpage.json: lead_map = maps/brief-to-build, the Cartographer's drawing of the lead story.
| data/frontpage.json |
| 2026-09-25T12:10:00Z | Build desk construction | Capture the editor of record's notes of 25 September (read offline on a plane) as issues, and give the back office an issues board.- issues/: 45 issues in issues-fs-lite form (8 epics, 33 tasks, 4 briefs for agent@riskmandate.ai); 41 open, 2 blocked, 2 done.
- tools/build.py renders admin/issues/ (kanban by status with epic, owner and priority filters) and a page per issue; tools/validate.py checks every issue has created and priority and a real parent.
The notes name the editor of record as a target audience; kept as written in the inbox (their own words). Implementation of the issues starts with the reading experience and the personalised site. | issues/ tools/ CLAUDE.md |
| 2026-09-25T12:09:00Z | Editor desk | File the editor of record's notes of 25 September in the inbox, verbatim, as the source the issues cite.- admin/inbox/2026-09-25__notes-from-the-flight.md: 35 notes in three groups (the site, content, tasks for agent@riskmandate.ai).
The Build desk then filed 45 issues from it (its own run record). | admin/ |
| 2026-09-25T09:33:00Z | Editor of record desk | Change the register of agents: the Editor becomes a desk that owns the front page, the sections and the admin back office; the Cartographer becomes a full desk that owns maps/; the Journalist and Historian get the centres of gravity the editor of record set.- 9 agents: editor.desk (new), librarian.desk, journalist.desk, historian.desk, cartographer.desk (was a guest desk), architect.guest, developer.guest, build.desk, editor.human.
Made by one session at the editor of record's instruction (25 September 2026); recorded per desk so each change sits under the mandate that owns it. | data/agents.json |
| 2026-09-25T09:32:00Z | Editor desk | Set up the back office and the site's sections.- data/sections.json: 12 sections in navigation order (News, Perspective, Maps, Reading room, ...).
- admin/inbox/README.md: where feedback and run reports go.
Made by one session at the editor of record's instruction (25 September 2026); recorded per desk so each change sits under the mandate that owns it. | data/sections.json admin/ |
| 2026-09-25T09:31:00Z | Librarian desk | Compute the network: which site links to which.- tools/librarian.py writes data/network.json: 32 sites, 152 site-to-site links counted from every snapshotted file.
Made by one session at the editor of record's instruction (25 September 2026); recorded per desk so each change sits under the mandate that owns it. | data/network.json data/index.json data/vaults.json |
| 2026-09-25T09:30:00Z | Build desk construction | Newsroom workflow infrastructure: bundled Mermaid, maps, the magazine front page, News, the admin back office, sections-driven navigation.- tools/vendor/mermaid.min.js (Mermaid 12.0.0, MIT) and assets/diagrams.js: diagrams render offline; tested wardley-beta, flowchart, timeline, mindmap from file://.
- tools/build.py: maps/ as a desk folder; maps/network.html computed from data/network.json; front page composed from data/frontpage.json; news/index.html; admin/ (desks, review queue, front page, notes, prompts, inbox); navigation from data/sections.json.
- AUTHORING.md: standfirst and section, maps and the Mermaid rules, frontpage.json. The newsroom-run skill now runs the Cartographer every day and the Editor last.
Made by one session at the editor of record's instruction (25 September 2026); recorded per desk so each change sits under the mandate that owns it. | tools/ AUTHORING.md .claude/ agents/ CLAUDE.md |
| 2026-09-25T09:23:55Z | Editor desk | Compose the front page dated 24 September 2026 from this run's Journalist, Historian and Cartographer work; write the editor's notes and the five desks' standing prompts; check the desks' findings in the sources and add those that are loose ends.- data/frontpage.json: lead stories/2026-09-24__brief-to-build-in-a-day (quotations and figures checked against riskmandate.ai v1.34.2, v1.34.3, v1.34.4, its brief register and sgit.ai's brief and briefs index); 3 top items (history/the-story-so-far, maps/brief-to-build, the reader's guide); 6 sections (News and features 5, Perspective 3, Maps 6, The back catalogue 4, Editions 5, Signals 4); 5 briefs, each with a link.
- admin/notes.md: priorities, what is next for each desk, 37 pieces waiting for the editor of record (11 stories, 5 editions, 5 history, 6 maps, 10 signals), and 4 hand-offs between desks.
- admin/prompts/: 5 standing prompts (editor.desk, librarian.desk, journalist.desk, historian.desk, cartographer.desk).
- data/loose-ends.json: 3 added (le-021 vaults summary thirty-one against 36 rows; le-022 replay eight weeks against six; le-023 level 3 never run against done many times), each checked in the snapshot; 20 existing entries kept.
- Not added, already contradictions in history/decisions.md (all three verified): fifteen or sixteen examples, store.sgit.ai's t1 checkout address, 'two days after v0.2.55'.
- data/sections.json unchanged.
Built and validated into a private NEWSROOM_SITE_OUT folder; no version bump, commit or push, as instructed. history/week-2026-39 left off the front page: it has no standfirst, so its card reads 'Counted by this desk from the logs named.' For the Historian: add standfirsts to week-2026-39 and lessons. For the Librarian: riskmandate.ai v1.34.9 to v1.34.12 are named in versions/index.json but not in the snapshot. | data/frontpage.json admin/ data/loose-ends.json runs/ |
| 2026-09-25T09:16:30Z | Historian desk | The bigger picture: history/the-story-so-far.md from the first recorded release to 24 September 2026; history/decisions.md restructured into a numbered log D-001 onward with pre-18 September decisions added; history/open-questions.md numbered Q-001 onward.- Read all 166 sgit.ai version-log entries, riskmandate.ai's versions.md and all 106 release notes, the llms.txt of abp, risks, store, nhi, twins, pki, graphs, open-source, sg-sentinel and what-can-it-do.games, abp.sgit.ai's version notes v0.1.0, v0.2.0 and v0.4.4, data/network.json, the editions of 20 to 24 September and history/*.md.
- history/the-story-so-far.md: 1942 words, covers 2026-06-29 to 2026-09-24; three eras, six connection lines, six moments.
- history/decisions.md: 124 decisions (52 kept from 24 September, 72 added from 29 June to 17 September across riskmandate.ai, sgit.ai and abp.sgit.ai), oldest first, with supersedes and superseded-by lineage; 12 contradictions (3 added).
- history/open-questions.md: 29 questions, 2122 words, 11 August to 24 September.
Step 6 of the skill not done by instruction: no version bump, no commit, no push. Built and validated into a scratch NEWSROOM_SITE_OUT folder because several desks ran at once. history/week-2026-39.md and history/lessons.md unchanged. For the Librarian: store.sgit.ai's llms.txt lists a checkout address for t1 while saying no payment link exists (recorded under Contradictions in history/decisions.md); sgit.ai's v0.2.56 and v0.2.58 say 'two days after v0.2.55' though the log dates v0.2.55 and v0.2.56 the same day. | history/ runs/ |
| 2026-09-25T09:15:07Z | Cartographer desk | Draw the newsroom's first maps: a Wardley map of the sgit network and one of riskmandate.ai's offer, a timeline of the network, a mindmap of the recurring concepts, a flowchart of the newsroom's own run, and a flowchart of the brief-to-build story.- maps/sgit-network-wardley.md: one wardley-beta map, 3 anchors and 13 components, 22 links, 1 evolve (encrypted vaults, from sgit.ai's own map 6); a table giving the source for every position and every link.
- maps/riskmandate-wardley.md: one wardley-beta map, 3 anchors and 16 components, 21 links, 1 evolve (connectors, 'productised as they mature'); records that riskmandate.ai's pricing page and the store's ledger disagree on how far level 3 has run.
- maps/network-timeline.md: four timelines, 21 dated periods from 29 June to 24 September 2026, every date from a version log, a version record, a site's own v0.1.0 line or the store's ledger.
- maps/concepts-mindmap.md: eight mindmaps, one overview (7 themes, 35 concepts) and one per theme with the sites the build found for each concept, generated from the built concepts page rather than typed.
- maps/the-newsroom-flow.md: two flowcharts, the daily run with its four stops (19 nodes) and who reads and writes what (18 nodes).
- maps/brief-to-build.md: one flowchart of the interview-page loop, 17 nodes, with a table citing each step.
- Built into a private folder; node tools/check_diagrams.js: 7 pages checked, 0 failures.
Not released: no version bump, commit or push, as instructed. The validator's one remaining failure is not this desk's: history/the-story-so-far links to open-questions.html, which does not exist yet (the Historian's). The seven themes in the concepts mindmap are the Cartographer's grouping, not a source's. For the Editor: maps/sgit-network-wardley is the natural lead of the Maps section. For the Journalist: the level-3 status disagreement between riskmandate.ai/pricing and store.sgit.ai's ledger may be worth a line. | maps/ runs/ |
| 2026-09-25T09:09:51Z | Journalist desk | Back catalogue, part B: four pieces a new reader needs (a reader's guide to the 32 sites, a feature on abp.sgit.ai, a feature on the three newsrooms, an explainer on how agentic teams are organised), and standfirst and section lines for the three existing stories.- stories/2026-09-24__a-readers-guide-to-the-sgit-network.md (explainer, about 1,070 words): all 32 sites in seven groups, one or two sentences each from its own llms.txt (front page for the two provider sites without one), file counts from sources/sites/manifest.json.
- stories/2026-09-24__the-agent-behaviour-policy-site.md (feature, about 1,130 words): what an ABP is, 20 releases from v0.1.0 to v0.11.0, 315 files (182 md, 131 json, 2 txt), 14 articles, and riskmandate.ai's use of it (16 vault pages, the reviewed level, Lab 03 requests), shipped and drawn kept apart.
- stories/2026-09-24__three-newsrooms.md (feature, about 1,080 words): newsroom.sgit.ai's three running instances against its design, pt.newsroom.sgit.ai's real and not-real lists, this newsroom from brief/01; records that pt.newsroom.sgit.ai's llms.txt says no story is published while its story index says 5 of 6 are.
- stories/2026-09-25__how-agentic-teams-are-organised.md (explainer, about 1,020 words): teams.sgit.ai's two fields, claim forms 6/7/6, Explorer/Villager/Town Planner, and this newsroom's nine agents compared field by field. Dated 2026-09-25, not 2026-09-24, because the newsroom's register it describes was created on 25 September (commit dee6057).
- Added standfirst and section: news to the three existing stories (2026-09-21, 2026-09-23, 2026-09-24); nothing else in them changed.
- Every quotation in the four new pieces checked by script against the snapshot, brief/, agents/ and the dee6057 commit message: 0 missing.
Built and validated into a private folder (NEWSROOM_SITE_OUT) because other desks were working at the same time. The build passed. The validator reported 2 failures, neither in stories/: site/history/the-story-so-far.html links open-questions.html, and a page under site/maps/ links a map not yet written (riskmandate-wardley.html on one run, brief-to-build.html on the next). Both come from uncommitted work by other desks (history/the-story-so-far.md, maps/). For the editor: the abp.sgit.ai piece counts 315 files in the snapshot, of which 182 are markdown (the task said 180). No version bump, commit or push in this run, as asked. | stories/ runs/ |
| 2026-09-25T09:09:21Z | Journalist desk | Back catalogue, part A: reverse-engineer four pieces from material the network already has: sgit.ai from v0.1.1 to v0.6.8, RiskMandate.ai from its baseline to v1.34.8, the five business plans published as vaults, and the 36 published vaults as a whole.- stories/2026-09-24__sgit-ai-from-v0-1-1-to-v0-6-8.md (1198 words): 166 version-log entries read; counts by series (27, 100, 10, 10, 10, 9), by month (81 August, 85 September) and by day computed from sources/history/sgit.ai-version-log.json.
- stories/2026-09-24__riskmandate-from-baseline-to-v1-34-8.md (1133 words): versions.md (106 releases, 35 reconstructed, 71 from git) and 20 release notes read, plus index.md and pricing.md; prices quoted as the pages state them (£10, £50, £500, £1,500), and the record's own £5/£10 disagreement reported.
- stories/2026-09-24__five-business-plans-published-as-vaults.md (1240 words): README, PUBLIC.md, plan/00-START-HERE.md and spec headings of all five vaults, the five sgit.ai vault pages and startups/business-plans read; file counts (32, 31, 32, 27, 60) computed from sources/vaults/.
- stories/2026-09-24__thirty-six-published-vaults.md (1085 words): published-vaults.json (36 entries, 8 categories, 2,957 files, about 308 MB, 21 August and 15 September), data/vaults.json (36 read keys, all sgit_public_read_), demos/vaults/index, publishing and catalogue pages read.
- No key is printed in any story; each piece points at the vault page that publishes it.
Built and validated into a private output folder (NEWSROOM_SITE_OUT) because several desks worked at once. validate.py's last run reported 1 failure, not in this run's files: a broken link in history/the-story-so-far.html to open-questions.html, which belongs to another session still writing (an earlier run showed 4 such failures from other desks' work in progress). No version bump, commit or push, as instructed. For the Historian: sgit.ai's vault index summary still says 'Thirty-one vaults' against 36 rows; the business-plans page summary names two plans of five; the Risk Acceptance Office README says the replay runs over eight weeks and its page says six; riskmandate.ai's pricing page says fifteen applications and its home page sixteen. For the Librarian: versions/index.json (fetched 25 September) names v1.34.9 to v1.34.12, whose notes are not in the snapshot. | stories/ runs/ |
| 2026-09-25T08:49:09Z | Architect desk | Find why pt.newsroom.sgit.ai's rendered agent files (agents/*/ROLE.md, MANDATE.md) show some fields one character per bullet, and write a signal for that newsroom: what is wrong, the cause, the fix, and that this newsroom's tools/agents.py already renders a string field as one item.- Read agents/redacao.pt/ROLE.md and MANDATE.md, dados/agentes.json, build/mandatos.py and gate 35 in build/gates_artigos.py in a read-only clone of the pt repository (commit b3e9530), and this repo's tools/agents.py.
- Cause: build/mandatos.py line 39, lista(), iterates a string character by character; trabalha_com and errado_quando are strings in dados/agentes.json for all 5 agents, so 10 files are affected (5 ROLE.md 'Works with', 5 MANDATE.md 'Wrong when').
- 1 signal written: signals/2026-09-25__pt-agent-files-one-character-per-bullet.md (sgit.newsroom.sgit.ai -> pt.newsroom.sgit.ai, status new).
Not released: version.txt not bumped, nothing committed or pushed, as asked. Sending the signal to the pt newsroom belongs to the Editor. | signals/ runs/ site/ |
| 2026-09-25T08:24:17Z | Build desk construction | Frame the vault apps inside the newsroom; vaults as cards.- vaults/app/<slug>.html for the five seed vaults, sandboxed frame; the vaults page as 36 cards.
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. | tools/ |
| 2026-09-25T08:20:29Z | Build desk construction | Build the reading-list design: filters and feedback kept on the device.- tools/feedback.js; reading list on the reading room and the new-pages page; feedback bar on every source page; documents on a white sheet.
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. | tools/ run-local.sh README.md |
| 2026-09-25T08:02:03Z | Librarian desk | Bring home the .md twin of every linked network page not in the snapshot; fix links to sgit.ai update notes in the changes files.- tools/fetch_missing.py: 643 pages brought home, 5 refused for credential-shaped strings; the index grows from 675 to 1318 pages.
- data/changes/2026-09-20.json and 2026-09-21.json: links to sgit.ai repo content paths now point at the anchors on sgit.ai/updates/.
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. Split when the register was created: one session did this work across desks; the validator refused the single record, so each desk's part is recorded under that desk. | sources/ data/index.json data/changes/ |
| 2026-09-25T08:02:03Z | Journalist desk | Correct links in the editions and a story that pointed at sgit.ai repo content paths, not live pages.- editions/2026-09-20.md, 2026-09-21.md and stories/2026-09-21__the-performance-page-that-corrected-itself.md: links to update notes now point at the anchors on sgit.ai/updates/, which are in the snapshot.
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. Split when the register was created: one session did this work across desks; the validator refused the single record, so each desk's part is recorded under that desk. | editions/ stories/ |
| 2026-09-25T08:02:03Z | Build desk construction | Add run-local.sh and bring home the .md twins of linked network pages.- run-local.sh and tools/fetch_missing.py; the build keeps a heading's own anchor, resolves riskmandate.ai release-note links from the site root, ASCII section file names.
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. Split when the register was created: one session did this work across desks; the validator refused the single record, so each desk's part is recorded under that desk. | tools/ run-local.sh README.md CLAUDE.md |
| 2026-09-25T00:25:01Z | Librarian desk | Concepts for the index: the ideas that recur across sites.- data/concepts.json: 35 concepts, each with terms the build searches the snapshot for.
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. Split when the register was created: one session did this work across desks; the validator refused the single record, so each desk's part is recorded under that desk. | data/concepts.json |
| 2026-09-25T00:25:01Z | Architect desk | Guest desks for 24 September: check the seven cross-pollination seeds in brief/04 and the loose-end seeds; keep what holds.- 9 signals (6 of 7 seeds held; append lanes dropped), 20 loose ends (16 open, 2 closed, 2 unclear).
- The three guest desks' work was done in one pass and is recorded under the Architect.
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. Split when the register was created: one session did this work across desks; the validator refused the single record, so each desk's part is recorded under that desk. | signals/ data/loose-ends.json |
| 2026-09-25T00:20:23Z | Librarian desk | Librarian for 20 to 24 September: changes files from the sgit.ai version log, the new-pages list, riskmandate.ai's version record and the CLI briefs (no earlier snapshot to diff).- data/changes/2026-09-20.json to 2026-09-24.json: 18, 31, 8, 17 and 49 changes, each summarised after reading the page or release note.
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. | data/changes/ |
| 2026-09-25T00:20:23Z | Journalist desk | Journalist for 20 to 24 September: one edition per day, and a story where one deserved the room.- editions/2026-09-20.md to 2026-09-24.md, all reviewed_by empty.
- stories/2026-09-21__the-performance-page-that-corrected-itself.md, 2026-09-23__a-proposal-to-uk-sovereign-ai.md, 2026-09-24__brief-to-build-in-a-day.md.
- Verified the 24 September lead against the sources: the interview page was briefed and built the same day; sgit.ai's briefs index still lists it as open.
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. | editions/ stories/ |
| 2026-09-25T00:20:23Z | Historian desk | Historian for the week of 18 to 24 September: the moment, lessons and decisions.- history/week-2026-39.md: the moment is a mislabelled read key refused on 20 September.
- history/lessons.md: 47 lessons. history/decisions.md: 52 decisions and 9 contradictions.
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. | history/ |
| 2026-09-25T00:20:23Z | Build desk construction | Build the first version from the seed pack: build, validator, librarian tool, CI.- tools/mdlite.py, build.py, validate.py, librarian.py; .github/workflows/deploy-pages.yml (validate, tag, deploy).
Backfilled on 2026-09-25 when the register of agents was created: this run happened before runs/ existed. 'when' is the time of the commit that landed its work; the task is the prompt the desk was given, summarised. | tools/ .github/ README.md AUTHORING.md |