{
  "shipped": "1",
  "source": "repo/flashy-gold",
  "org": "org/flashy-gold",
  "generated": "2026-09-14T09:58:09.051Z",
  "entries": [
    {
      "id": "ship/flashy-gold/1afeea862e27",
      "repo": "repo/flashy-gold",
      "at": "2026-09-08T14:16:33Z",
      "kind": "infra",
      "title": "Run the charter checker this repository already ships",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-08",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "`scripts/check-charter.mjs` has been here, vendored from canon, and\nnothing called it: not a workflow, not a package script, not a test. A\nchecker nobody runs is the estate's own \"gate that never ran\" shape —\nthe conformance job that died at *could not determine executable to run*\nfor 975 consecutive runs and told nobody, because a check that never\nexecutes cannot go red.\n\n`estate-findable` in flashyos is what surfaced it: of the estate's\nseventeen uninvoked scripts, this one and mlgblockchain's twin were\namong the three that nothing named at all.\n\nIt passes today, which is the point — wiring it costs nothing now and\ncatches the charter drifting later. It is dependency-free and runs\nbefore `npm ci`, so it goes first: a charter that no longer parses\nshould not wait behind an install.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BjzD1kWqueq1ArT1m4mZsy",
      "refs": {
        "commit": "1afeea862e2758d9ab36b2417ab00d6b9a018a82"
      },
      "digest": "acb077696e3616e525eb075e0ee068ec17b082bef737e6514472830924076d2e"
    },
    {
      "id": "ship/flashy-gold/88f50bee2870",
      "repo": "repo/flashy-gold",
      "at": "2026-09-07T13:52:02-04:00",
      "kind": "other",
      "title": "Flashy Finance is live: mark LIVE, announce on /settlement, add changelog entry (#7)",
      "by": [
        "person/michael",
        "agent/claude"
      ],
      "asserted": "2026-09-07",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "* Flashy Finance is live: mark LIVE, announce on /settlement, changelog\n\nThe Flashy Finance settlement seam (src/lib/flashyFinance.ts →\nflashyRails.ts, /api/v1/finance/*) is feature-flagged on FLASHY_RAILS_URL,\nwhich is now set in production — the seam is live end to end\n(www.flashy.gold/api/v1/finance/rail/status → configured:true, ok:true).\n\nContent/status/docs only. No balance-read source code changed.\n\n- content.ts: the \"Flashy Finance\" alliance-network item is now LIVE,\n  not IN BUILD. Its badge colour is derived from the word by statusColor,\n  so the colour follows automatically.\n- /settlement: a truthful \"Flashy Finance is live\" section — Flashy Gold\n  now settles on the shared estate-wide rail (one record across the\n  properties), the read path is live, earning is unchanged and redemption\n  remains waitlist-stage. Links to flashynetwork.com's settlement surfaces.\n- data/releases.json: a dated, attributable changelog entry for the\n  rail going live.\n- content.test.ts: asserts the Flashy Finance status is LIVE, exactly as\n  the other property statuses are asserted, and that the badge colour is\n  derived from the word.\n\ntypecheck: pass. test: 102 pass; the one failure (tests/hunt.test.ts) is a\npre-existing vendor-bolt.mjs drift against the flashyos canonical checked\nout beside this repo, unrelated to this change. build: pass.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014WQ7KxLJpGLvRPCK6yXEk3\n\n* fix(lint): drop unused type-only Metadata imports from 16 pages\n\nThe reusable-CI 'Typecheck, test and build' job died at the lint step: 16\npage.tsx files import `type { Metadata }` from 'next' but never reference it\n— each exports `const metadata = { ...meta({...}) }` through the vendored\n@flashyos/page helper, whose return type is inferred, so the annotation (and\nits import) is dead. Pre-existing on main; the CI rollout is what surfaced it.\n\nRemoved only from pages where Metadata was otherwise unreferenced;\nl",
      "refs": {
        "commit": "88f50bee28702650c3888c82470d9aa6218c4966",
        "pr": "https://github.com/FlashyLabs/flashy-gold/pull/7"
      },
      "digest": "a06d1e589d3f22e605c7fa695726267b75fbb1b0d09d850de7f74e0150a4dc79"
    },
    {
      "id": "ship/flashy-gold/d998e6a43ca8",
      "repo": "repo/flashy-gold",
      "at": "2026-09-07T12:28:09-04:00",
      "kind": "feature",
      "title": "Merge pull request #8 from FlashyLabs/claude/trust-routing-network-77xwmg",
      "by": [
        "person/michael"
      ],
      "asserted": "2026-09-07",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Merge main, and carry the session's estate work to the shipping ref",
      "refs": {
        "commit": "d998e6a43ca801b5d7aaaa64043a63de516cdc50",
        "pr": "https://github.com/FlashyLabs/flashy-gold/pull/8"
      },
      "digest": "1b627ed52a5918e41686ce4bf1f202e8ab73ef915a9646279d88aa8c9e2006ab"
    },
    {
      "id": "ship/flashy-gold/756ddab24d12",
      "repo": "repo/flashy-gold",
      "at": "2026-09-07T10:43:56-04:00",
      "kind": "feature",
      "title": "Merge pull request #6 from FlashyLabs/claude/source-code-audit-b97g8c",
      "by": [
        "person/michael"
      ],
      "asserted": "2026-09-07",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "docs(finance): document the Flashy Rails env vars, and roll a fresh deploy",
      "refs": {
        "commit": "756ddab24d127f10c345f54a25dc8e2e0daa7c79",
        "pr": "https://github.com/FlashyLabs/flashy-gold/pull/6"
      },
      "digest": "67bbc48e0f6c7585fd92c72f8c8f8c2206f8d8f1823f45123e917631ce7dffdb"
    },
    {
      "id": "ship/flashy-gold/d499babd11c0",
      "repo": "repo/flashy-gold",
      "at": "2026-09-07T07:47:49-04:00",
      "kind": "feature",
      "title": "Merge pull request #5 from FlashyLabs/claude/source-code-audit-b97g8c",
      "by": [
        "person/michael"
      ],
      "asserted": "2026-09-07",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "feat(finance): wire flashy.gold onto the shared rail as a service",
      "refs": {
        "commit": "d499babd11c0007f97cb6f1c1ed59d93b340e508",
        "pr": "https://github.com/FlashyLabs/flashy-gold/pull/5"
      },
      "digest": "1b2c79ac2053a63fa6026887eab2758f39c19ba9a9317cffe239022da6407256"
    },
    {
      "id": "ship/flashy-gold/15c98c4030c8",
      "repo": "repo/flashy-gold",
      "at": "2026-09-06T12:14:13+00:00",
      "kind": "fix",
      "title": "Hold the entries that publish another property's shard",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-06",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "A `shipped/1` entry is served at this repository's public well-known surface,\nwhich any stranger can fetch. Nine entries across seven properties named other\nproperties' `bolt/1` shards — six of them titled \"This property hides <WORD>\" —\nso the estate's own public record was handing out the answers to its own hunt\nwhile every structural check reported the hunt healthy.\n\nFound by tools/bundle-reach.mjs in flashyos on its first run, which walks what\na deployed page can reach. The export-surface test that was meant to cover this\nclass reads a package's named exports, where the words are genuinely absent,\nand an export surface says nothing about what a bundler carries.\n\n`.shiplog/held.json` maps the sha to the reason. The entry stays in this\nrepository's own record, sealed and counted; only the published projection\nomits it. That is the mechanism built for an entry naming a rotated credential,\nused here for the second time.\n\nHolding is NOT remediation. The commit message is still in git history, and an\nentry is sealed once — re-deriving to remove it is the destructive operation\nthe house rules already warn about.\n\nKind: fix\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\n\nClaude-Session: https://claude.ai/code/session_01BjzD1kWqueq1ArT1m4mZsy",
      "refs": {
        "commit": "15c98c4030c802b38f4ec09c15e956d52221f868"
      },
      "digest": "6779b7a254a5119a5cbd2404ae31d0193430daf3ba0627d823b2f34e5d9133fd"
    },
    {
      "id": "ship/flashy-gold/a7ef21737b22",
      "repo": "repo/flashy-gold",
      "at": "2026-09-06T11:23:46+00:00",
      "kind": "fix",
      "title": "Land the component half of the egg fix, which the previous commit dropped",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-06",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The previous commit here carried .bolt/bolt.js and the re-vendored emitter and\nNOT the component that imports them, so its message described a fix half of\nwhich was not in it. The cause is worth writing down because it is silent: a\nsingle `git add -A a b c` with one pathspec that does not exist in this\nrepository fails the whole command and stages nothing, and the loop that ran\nit sent stderr to /dev/null. Every repository reported a clean push.\n\nThe component is the half that matters. It imports `.bolt/bolt.js` rather than\ncomputing a path to `.bolt/bolt.html` at request time — a computed path is\ninvisible to Next's output file tracing, so the file is not carried into the\ndeployed function, existsSync returns false, and the component returns null\nsilently. That is why Tier I of bolt/1 was unwinnable a week after it was\nsealed as a permanent puzzle.\n\ntests/hunt.test.ts is the invariant rather than the repair: import and never\nread, a module that exists and carries this property's shard, module and HTML\nthe same bytes, the layout actually rendering it, the emitter reproducing what\nis committed, and the vendored emitter byte-identical to canon. Every\nassertion strips comments before matching, because a test that greps a file\npunishes an explanation.\n\nKind: fix\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\n\nClaude-Session: https://claude.ai/code/session_01BjzD1kWqueq1ArT1m4mZsy",
      "refs": {
        "commit": "a7ef21737b225eb5bb02147f7420f49f028d9c6c"
      },
      "digest": "4f1f131821da168b40c69df6bee2697e495f0c05bf93737565e3af41f542d905"
    },
    {
      "id": "ship/flashy-gold/199ff63da19c",
      "repo": "repo/flashy-gold",
      "at": "2026-09-06T11:18:00+00:00",
      "kind": "fix",
      "title": "The egg is carried by the bundler, never read at runtime",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-06",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Tier I of bolt/1 was sealed on 2026-08-31 as a permanent puzzle and was\nunwinnable a week later. The correlation is by MECHANISM rather than by\nproperty: every property that bakes the snippet into committed HTML serves\nits shard, and every Next property that reads it at request time serves\nnothing — with the code on the shipping branch, the deploy current, and\nnothing anywhere red.\n\nA path computed from process.cwd() is invisible to Next's output file\ntracing, so the file is never carried into the deployed function, existsSync\nreturns false, and the component returns null. Silently, because the format\nmade absence silent on purpose so a checkout with no shard would still build.\nThat explanation is consistent with every data point available and is NOT\nproven — settling it needs a production build served by `next start`, or the\nVercel build log.\n\nSo this does not argue with the hypothesis; it removes the question.\nvendor-bolt.mjs now emits `.bolt/bolt.js` beside the HTML, and the component\nimports it. A static import is a dependency the bundler can see, and an\nabsent module is a build error rather than a page that quietly has no egg.\nAn entire failure class goes away rather than one property being patched with\nan outputFileTracingIncludes entry the next adopter has to rediscover.\n\nProved in flashyos rather than assumed: before this change the shard appeared\nin nothing the marketing build emitted; after it, in two server chunks.\n\nThis property had no test for its egg at all, which is why nothing said so.\nIt has one now, and it asserts the invariant rather than the repair: the\ncomponent imports and never reads, the module exists and carries this\nproperty's shard, the module and the HTML are the same bytes, the layout\nactually renders it, and the emitter run here reproduces what is committed.\nEvery assertion strips comments before matching, because a test that reads\nprose punishes an explanation — this estate's recorded mistake three times\nover, and made twice more while",
      "refs": {
        "commit": "199ff63da19cf59c84ddfa51eb6c969f458cd161"
      },
      "digest": "c84bcb86db90224b12f3da7170764265f1ad2fc0a73c0bb81854ac798330ca90"
    },
    {
      "id": "ship/flashy-gold/20d6f1621ee3",
      "repo": "repo/flashy-gold",
      "at": "2026-09-06T10:54:43+00:00",
      "kind": "fix",
      "title": "directory/1: run the generator this repository actually has",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-06",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The scheduled emit ran `vendor-directory.mjs` — and that is the variant for a\nrepository with NO charter and no organisation. Its own header says so:\n*\"No `operates`. That edge is org → agent, and there is no org here.\"*\n\nThis repository has a charter and `scripts/directory.mjs`, the generator that\nreads it, and `package.json` has named that one the whole time. So every\nscheduled run overwrote a charter-derived fragment with a weaker one, and the\nweaker one declared no organisation behind the machine that signs every sealed\nentry here — an identity on the record with nobody claiming responsibility for\nit.\n\n`emitter-declaration.test.mjs` in flashyos has been red on that for weeks and\ncould only say the fragment was wrong, never why: both generators are correct,\nand the defect was which one was wired. Two emitters for one surface, with the\nwrong one running, is this estate's own recurring shape.\n\nThe fragment is regenerated in the same commit and now carries the `operates`\nedges: the organisation runs the machine, rather than declaring it as a\ngovernance role — `declares` would put \"ci\" into the handshake's advertised\ncapabilities and tell the network this org does continuous integration for\nother people.\n\nKind: fix\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BjzD1kWqueq1ArT1m4mZsy",
      "refs": {
        "commit": "20d6f1621ee32a09ebb61bdc3f4d3e99f5882758"
      },
      "digest": "581eff5bd6cfd25c7d2a406cd8287876356c5fe53a9fe0f134fc5360f9a85ceb"
    },
    {
      "id": "ship/flashy-gold/0c6cd76a58b8",
      "repo": "repo/flashy-gold",
      "at": "2026-09-05T17:09:35+00:00",
      "kind": "feature",
      "title": "Every page gets its own card and its own canonical",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-06",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "These pages carried a title, a description and a canonical and nothing to\nrender a social link with, so every share was a grey rectangle. One `meta()`\ncall now sets all four, which is why a page cannot carry a title its card\ndisagrees with — the same line sets both.\n\nThe kit is vendored from `@flashyos/page` in flashyos rather than\nreimplemented. One transform is applied when vendoring and the drift test\napplies the same one: the package is NodeNext and its internal imports carry a\n`.js` extension, which a Next bundler cannot resolve to a `.ts` file.\n\nSEO and GEO are the same evidence read twice. A search engine can rank a page\nit does not understand; an answer engine has to decide whether it can say where\na quote came from, and an unattributed quote is one it will usually not make.\nThe fields are the same either way, so one call sets them rather than one per\naudience.\n\nPages the scaffolder could not speak for were left alone and named rather than\nfilled. A description nobody has written is a description nobody has written,\nand inventing one would put invented copy on a social card.\n\nKind: feature\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BjzD1kWqueq1ArT1m4mZsy",
      "refs": {
        "commit": "0c6cd76a58b80bea0ef603a20f0008a16836f21c"
      },
      "digest": "6e542b669d39c59bc9c7ab3c246f5e2a7d19069171a1e672983f36011095597b"
    },
    {
      "id": "ship/flashy-gold/3a7748cded57",
      "repo": "repo/flashy-gold",
      "at": "2026-09-04T20:20:21Z",
      "kind": "fix",
      "title": "card/1 — a link preview, where there was a grey rectangle",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-04",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Kind: fix\n\nThis property declared no og:image and, in some cases, no twitter:card. Every\nlink to it — pasted into Slack, LinkedIn, iMessage, a model's tool output —\nrendered as a grey box with a hostname in it, in the exact moment somebody is\ndeciding whether to click.\n\nNothing had ever measured it. `estate-seo` in flashyos graded properties from\na hand-written list of six repositories and read committed HTML, so a Next app\nwas invisible to it twice over: not on the list, and with no HTML to walk. The\ntool now takes its denominator from every target in every `.deploy/config.json`\nand reads a Next property's metadata from source.\n\nThe card is a committed PNG in `public/`, generated by `tools/estate-cards.mjs`\nin flashyos from this property's OWN accent, read out of its own globals.css by\nits own variable name. Nothing about what this looks like was decided in a\ntool, and re-running that generator after a rebrand is what keeps it true.\n\nNot an `app/opengraph-image.tsx`. Four properties in the estate render a card\nfrom live page state, which is better and is why they are untouched; the same\napproach here means committed woff files per repository, and Satori fetches a\nfont over the network for any codepoint it lacks — which fails in a sandboxed\nbuild and draws an empty box where the mark should be. A committed PNG has no\nbuild step to fail.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "3a7748cded571080ab184e5056b47a009e4af87f"
      },
      "digest": "42e471abc39e2cd5bc7e55bb1b34dabd422cb22c2aedb0c9fefb744deb2c073e"
    },
    {
      "id": "ship/flashy-gold/0e7680627b9e",
      "repo": "repo/flashy-gold",
      "at": "2026-09-04T17:24:54Z",
      "kind": "other",
      "title": "Re-vendor the directory checker for dependsOn",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-04",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "directory/1 gained an edge type: one published artifact requiring\nanother to run. Not folded into `cites`, which the vocabulary has always\ndocumented as being for sources — a dependency is a hard requirement a\npackage manager enforces, and giving one edge type two meanings is the\nfailure this vocabulary has recorded twice already.\n\nThis copy is byte-identical to packages/directory/vendor-check-directory.mjs\nin flashyos. Changing the source there does nothing here until the copy\nis replaced, and a stale copy does not fail — it disagrees, silently,\nabout exactly the field somebody has just changed.\n\nKind: chore\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "0e7680627b9e8fec0f1f90813069cdf8c3b73898"
      },
      "digest": "07debcbab090aef6c90fb97f4eba4e84b555bf8c85720948447607d507745155"
    },
    {
      "id": "ship/flashy-gold/e0c6dc6e3f60",
      "repo": "repo/flashy-gold",
      "at": "2026-09-03T02:42:52Z",
      "kind": "other",
      "title": "The machine-age doors: /engage/ names the three ways in",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-03",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "One page, three doors, each cited rather than restated: an AAO charter\nour agents can read (conformance init, flashyos.com/join, and where this\nproperty serves its own handshake), the human graph\n(magician.network/join and this property's concierge), and the machine\nsurfaces an agent actually reads here. IntentMesh is named without a\nlink because no URL for it exists yet. The estate ladder is one line,\ncited to gord.holdings/engage. Registered in the nav utility strip, the\nfooter, llms.txt and the sitemap; engage.test.ts pins the page, the\nthree doors and both join links.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EXAA7bi94PPtBupN1jGt9N",
      "refs": {
        "commit": "e0c6dc6e3f60fa62b871e1f7520323a98f2dc314"
      },
      "digest": "3aebfaa852ded720669134d9b14cfd9adc935043badf646e382f9d9e66e54d74"
    },
    {
      "id": "ship/flashy-gold/5e0582677487",
      "repo": "repo/flashy-gold",
      "at": "2026-09-02T17:46:21Z",
      "kind": "fix",
      "title": "Take the SDK bump this repository has been one caret away from for ten minors",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-02",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "`@flashyos/agent` was pinned at `^0.6.0` and the package is at 0.16.1.\nnpm's caret on a 0.x version pins the MINOR, so that range is\n`>=0.6.0 <0.7.0` and reads to most people as \"0.6 and later\". Ten minor\nversions had shipped and this property could take none of them — no error,\nno warning, and every method added since absent at runtime.\n\nThe sixteen methods behind that boundary are the ones by which an\ninitiative comes to exist or a want gets declared: proposeInitiative,\njoinInitiative, offer, declareCapabilities, discover, discoverRoadmaps,\npublishRoadmapItem, engageRoadmap, resolveInitiative, broadcast,\nclaimTask, completeTask, decide, declareFromCharter, watch and work. The\nestate audited the demand side as empty; half of that was that nobody\ncould reach it.\n\nThe delta is purely additive — nothing removed, an identical constructor —\nwhich is why this is a range change and not a migration. The lockfile\nalready resolved 0.16.1; only the declared range was stale, which is the\nquiet half of this failure.\n\nTypecheck and the full suite pass unchanged.\n\nKind: fix\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "5e058267748760c9bfe50e6c37fe045665a896e7"
      },
      "digest": "9b981881fed894810ff8c068bb31552a3aa55e1984a74b21d13856033a3ee11a"
    },
    {
      "id": "ship/flashy-gold/fd528443fd16",
      "repo": "repo/flashy-gold",
      "at": "2026-09-02T17:34:07Z",
      "kind": "infra",
      "title": "Pin the hosting configuration where a machine reads it",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-02",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Creating a Vercel project asks three questions — framework preset, build\ncommand, output directory — and the answers were in a panel that cannot be\nread from a checkout, shown in a diff, or tested. This repository now\nanswers all three in its own vercel.json, at the directory Vercel serves,\nso setting up the project is import, Root Directory, Production Branch,\ndomains, and nothing else.\n\nFor a static root the two keys that matter are `framework: null` — stop\nautodetecting from a parent directory — and `outputDirectory: \".\"`, because\nthe directory is the site; with no package.json there, nothing installs and\nnothing builds. `deploy/1`'s checker now refuses a vercel target whose root\nhas no such file, so it cannot quietly go missing later.\n\n`installCommand` is deliberately not pinned where it was not already: `npm\nci` fails outright where `npm install` forgives a lockfile that has\ndrifted, and changing how a live site installs is not one of the decisions\nthis is removing.\n\nKind: chore\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "fd528443fd1600da0d26ed1ccaf28da20390263a"
      },
      "digest": "262cba2fcfbb331360b9a6bc63f336568cc386ef83c8d1d919185777479a7c72"
    },
    {
      "id": "ship/flashy-gold/ebd1709a68c9",
      "repo": "repo/flashy-gold",
      "at": "2026-09-02T16:22:24Z",
      "kind": "other",
      "title": "Re-vendor: the ship log learns ritual/1 before its first commit",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-02",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "`vendor-shiplog.mjs` gained `ritual/1: observe the office` in\nBOOKKEEPING_SUBJECTS upstream, so every copy in this estate disagreed with\ncanon about whether that workflow's refresh commits are work. A stale\nvendored copy does not fail — it disagrees, silently, about exactly the\nfield somebody has just changed, and the last three entries on that list\nwere each added only after their commits had already sealed as work under\nagent/unattributed.\n\nReplaced by `node tools/estate-revendor.mjs --write` in flashyos, which\ncompares every copy byte-for-byte against the default branch rather than\nagainst whatever is checked out.\n\nKind: chore\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "ebd1709a68c983bd0c6bf069f639acb884c40dc8"
      },
      "digest": "d5deaa027e04caf53e89570e2b7bbe7aab685a9af01b69e533da39fcf5e82f47"
    },
    {
      "id": "ship/flashy-gold/30970cc0c825",
      "repo": "repo/flashy-gold",
      "at": "2026-09-02T16:13:29Z",
      "kind": "feature",
      "title": "deploy/1: declare where this repository is hosted",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-02",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Root directory, production branch, framework and registrar, in a file a\nmachine can check instead of in two settings panels nobody can read from a\ncheckout.\n\nThe estate spent an afternoon on 2026-09-02 answering \"which domains are\nhosted and what does each one still need\". Every fact it produced already\nexisted — in a Vercel panel, a GoDaddy zone, and somebody memory — and none\nof it was anywhere a check could reach. Fourteen estate domains were\nresolving to a parking page with finished sites committed behind them.\n\nThe checker is dependency-free and runs before an install. Two of its rules\nare ones nothing else here makes: a root directory that does not exist in\nthe tree is refused, because a hosting project pointed at a typo builds\nnothing and reports success; and a production branch is refused if it does\nnot exist on origin, or if it differs from the default with no written\nreason — an accidental divergence and a deliberate one look identical from\ninside a panel.\n\nIt carries no credentials, no account or project identifiers, and no DNS\nrecord values. The first because the value of this file is that the\nrepository can be handed to somebody else; the last because those belong to\nthe host and they move — Vercel went from 76.76.21.21 to 216.198.79.1, and a\ncopy of that in thirty repositories is thirty copies to update.\n\nEvery value here was measured, not remembered.\n\nKind: feature\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "30970cc0c825a70737495146cccfae1fb0d6e05f"
      },
      "digest": "8754eda52fb3c65eabca15542b77bb99206bceeb2ef6e35697c2f5376e70897d"
    },
    {
      "id": "ship/flashy-gold/78e943b303ef",
      "repo": "repo/flashy-gold",
      "at": "2026-09-01T21:10:53Z",
      "kind": "feature",
      "title": "Tell the estate the moment this repository pushes a record",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "graph.yml in flashyos merges every property's fragment on a daily\nschedule, so without a dispatch a change here is invisible to the estate\nfor up to 24 hours — and \"the graph is a day behind\" is\nindistinguishable from \"this property has nothing new to say\".\n\nThe dispatch has been in the shiplog/backlog template since August and\nin no repository, because each vendored its workflow before the template\nhad it. This adds it, gated on the commit step having actually pushed: a\ndispatch per run rather than per change would turn one daily merge into\na merge per push across thirty repositories.\n\nThe commit step is replaced with one canonical form rather than patched,\nbecause the estate had two vintages of it — some repositories carry a\nfive-attempt push retry the template lacked, and re-emitting would have\ndeleted it. Both halves are here now.\n\nThe retry resolves the branch per run instead of resetting to a literal\norigin/main. Eleven repositories in this estate have an agent branch as\ntheir default, and there a rejected push would reset the checkout to a\ndifferent branch and push that over the deploy branch.\n\nUnset ESTATE_DISPATCH_TOKEN means a delay of up to 24 hours, never a\nloss — the daily merge is the floor, and the step says so loudly rather\nthan skipping green.\n\nKind: feature\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01FDosmV9fXV6oZ9NXe7PZ76",
      "refs": {
        "commit": "78e943b303ef81b7e511918ef16851a6a0084e84"
      },
      "digest": "765fa407afcc5aabf34eccb241e7a51dd2e928979533066e8bc97820bf459fe7"
    },
    {
      "id": "ship/flashy-gold/8ff3c1c3d7db",
      "repo": "repo/flashy-gold",
      "at": "2026-09-01T19:19:59Z",
      "kind": "feature",
      "title": "Serve the backlog projection at /.well-known/intent.json too",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "intent/1 is backlog/1's successor name and its readers accept the legacy\nversion key permanently, so the cost is one more entry in the serve list:\nthe emitter writes the same public projection to both paths from one emit,\nand no copy step exists to forget. Validated by the intentmesh checker as\nwell as the vendored one.\n\nKind: feat\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NfXZ2PAsNCENGJupuCQrnH",
      "refs": {
        "commit": "8ff3c1c3d7db620631aa2fb208d05a2485caddba"
      },
      "digest": "ba36cc87d39633780c13f98577250a24b9c67cd0ae251c95ef21176701c66743"
    },
    {
      "id": "ship/flashy-gold/7a2615e2c869",
      "repo": "repo/flashy-gold",
      "at": "2026-09-01T18:48:17Z",
      "kind": "feature",
      "title": "Activate: the Mesh Concierge on flashy.gold",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Three of the Activation standard's four artifacts. `/concierge.js` is the\nbuilt bundle of @magician/concierge vendored byte-identical; the root\nlayout includes it once with this property's accent and the charter's own\nnamed human, so a filing lands in this property's queue rather than a\nshared one. `/concierge/` carries the slot and the panel renders inline.\n\nThe page says plainly what the door is not: not a waitlist, not an\nallocation, and not a way to obtain Flashy Gold rewards. An intake panel\non a rewards property is exactly where somebody reads an offer that was\nnever made.\n\nFour tests, and the first two matter more than the page. The served\nbundle is asserted to make no network call, keep no storage and load no\nthird party — read from the copy a visitor's browser runs rather than\nfrom canon, because checking the source instead of the copy is precisely\nthe mistake a vendored file makes easy. It is pinned byte-identical to\nmagician's build when that checkout is beside this one, and reported\n*unknown* rather than current when it is not. The door's contact is\nasserted to be the charter's `accountableTo` rather than an address\nsomebody typed twice. And the accent is asserted to be a hex: this\nproperty's #ffc93c reads 1.4:1 as text on the widget's panel, so the\nwidget derives a readable variant from it — which it can only do for a\ncolour it can parse.\n\nKind: feature\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "7a2615e2c869c55b488d1ffbfd07366bbe508d6c"
      },
      "digest": "6fe27f9048dacdf5010a75f4923e707eaa3415dcbb5f5aee235e75dc3d9c8fde"
    },
    {
      "id": "ship/flashy-gold/63ff8f4a26e6",
      "repo": "repo/flashy-gold",
      "at": "2026-09-01T18:00:31Z",
      "kind": "other",
      "title": "Re-vendor shiplog: the filter learns directory/1, delivery/1 and intent/1",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Three formats gained a workflow that commits a refresh. Without this the\nfirst run of each seals as work under agent/unattributed, inflating the\ntwo numbers the record exists to make honest.\n\nA vendored change does nothing until the copy is replaced, and a stale\ncopy does not fail — it disagrees, silently, about exactly the field\nsomebody has just changed.\n\nKind: chore",
      "refs": {
        "commit": "63ff8f4a26e610c5ce27e3e3d6958c49ee7b0c6e"
      },
      "digest": "d113431a443fb15c1573372ee0ac6df383aed58f6b8b12ebbcaa22599990b247"
    },
    {
      "id": "ship/flashy-gold/4360f5ee0cc6",
      "repo": "repo/flashy-gold",
      "at": "2026-09-01T14:55:27Z",
      "kind": "feature",
      "title": "Give this repository's directory fragment a machine that refreshes it",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "shipped/1 and backlog/1 each ship a workflow with their adoption, so\nevery repository filing one has something re-running the emitter.\ndirectory/1 never did — sixteen repositories in this estate got the\nfragment and nothing else, and were still serving the bytes one\nhand-sweep produced on 2026-08-31.\n\nNothing was red, and nothing would have gone red. A fragment nobody\nre-emits does not decay for a year; it stops being true. A machine\nsurface added here never enters the graph, the asserted date freezes,\nand a change to the vendored emitter reaches a copy that never runs it.\n\nThe workflow is generated by workflow() in @flashyos/directory rather\nthan hand-written, gates on the default branch resolved per run, and\ncommits with [skip ci] because a refresh is a record of what already\nhappened.\n\nvendor-shiplog.mjs is re-vendored in the same commit: its bookkeeping\nfilter had never heard of \"directory/1: refresh the fragment\", so the\nfirst refresh would have sealed as work under agent/unattributed.\n\nKind: feature",
      "refs": {
        "commit": "4360f5ee0cc6cee2e388534ccc7f70d2f4a91b9a"
      },
      "digest": "b124ffff6fa3e2b2ca0814b5bda03307a55f4e38901474dfa35ee7537504327c"
    },
    {
      "id": "ship/flashy-gold/0aaba8112ace",
      "repo": "repo/flashy-gold",
      "at": "2026-09-01T14:37:44Z",
      "kind": "fix",
      "title": "Re-vendor check-directory.mjs: enforce what every edge type must carry",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The vendored checker had hand-written blocks for three of the sixteen edge\ntypes and nothing for the other thirteen, so engaged without a basis,\ndelegatedTo without a scope and issued without a date all validated clean —\nin thirty identical copies that agreed with each other perfectly.\n\nIt reads a requires table now, mirroring EDGE_REQUIRES in\n@flashyos/directory, with one conditional: `declares` needs a role when it\nnames an agent and not when it names a machine surface. That split was\nmeasured, not decided — across the estate all 88 agent declarations carry a\nrole and none of the 43 surface declarations do.\n\nflashyos/tools/vendored-directory.test.mjs differentials this copy against\nthe package by verdict, and asserts every estate copy is byte-identical to\nit. This repository's fragment passes the stricter checker unchanged.\n\nKind: fix",
      "refs": {
        "commit": "0aaba8112ace2b99ab68963528141b35b468fff7"
      },
      "digest": "f252932ecf080698ab45bf35c0fe8a8c87761277c546f53e42c244412d916859"
    },
    {
      "id": "ship/flashy-gold/d864500fcd17",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T20:57:43Z",
      "kind": "feature",
      "title": "backlog/1: close what no longer measures [skip ci]",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "estate-backlog-gaps --close in flashyos closed the machine-filed items\nwhose rule stopped measuring — the GitHub default branch is off the\nscratch branch, and the machine surfaces are declared. Closure is the\nfiling bot's own lane: it records that a measurement changed and makes\nnothing visible to anyone new.\n\nKind: chore\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NfXZ2PAsNCENGJupuCQrnH",
      "refs": {
        "commit": "d864500fcd17ba30de910af1edbc6f8cb469afe0"
      },
      "digest": "e4ef00d0011f19296952702360181bd22f7f5661b210d273942648414fd6d0c7"
    },
    {
      "id": "ship/flashy-gold/630aecbb2f1d",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T20:54:05Z",
      "kind": "infra",
      "title": "Hold the attribution line: freeze what sealed, refuse what would seal next",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The bookkeeping-filter window let emitter refresh commits seal as shipped\nentries under agent/unattributed. The fixed vendor-shiplog.mjs is already\non this branch; this adds the test that makes the line hold — the sealed\nentries are frozen by id (sealed is final under append-only) and any new\nunattributed entry fails the suite.\n\nKind: test\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NfXZ2PAsNCENGJupuCQrnH",
      "refs": {
        "commit": "630aecbb2f1d4d82aef0ff7382217b4d423a2cb0"
      },
      "digest": "39bc6607f3a2304d520ada829d47fdf4e9fa23b211181607272ae6f8630edd0a"
    },
    {
      "id": "ship/flashy-gold/09cc0d9dd162",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T19:46:04Z",
      "kind": "fix",
      "title": "Re-vendor on the branch that actually ships [vercel skip]",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "This repository's GitHub default is a claude/* scratch branch and main is 45+\ncommits ahead of it, which is also what the live domain serves. So the copies\nwere replaced on the default and the trunk kept the old ones — the house rule's\nfailure mode exactly, and silent, because the push succeeded.\n\nThe fixes: the hold applied at projection, so it can retract an entry already\nsealed public rather than only one held before sealing; and a bookkeeping\nfilter that tolerates the [skip ci] suffix instead of sealing every emitted\nrefresh commit as shipped work.\n\nKind: fix",
      "refs": {
        "commit": "09cc0d9dd16289e94720525635a20d36eef1aeee"
      },
      "digest": "009730f97cd551f0c5961a02f52dee9682bb3881878fd442b385283ae3593e6d"
    },
    {
      "id": "ship/flashy-gold/26b80c22177b",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T19:38:27Z",
      "kind": "fix",
      "title": "Re-vendor the shiplog emitter: the bookkeeping filter learned its suffixes",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The emitted refresh subjects grew \", and the checkpoint over it\" and\n\"[skip ci]\", and the exact-match anchor in the old copy missed both — so\nevery refresh commit sealed as a shipped entry under agent/unattributed.\ngda-group sealed six before the fix landed. Byte-identical with\npackages/shiplog/vendor-shiplog.mjs in flashyos as of its fix.\n\nKind: fix\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NfXZ2PAsNCENGJupuCQrnH",
      "refs": {
        "commit": "26b80c22177b141c766772261ab21f8b765f62d3"
      },
      "digest": "a31bf44b888898ac9a065e8c33d7ab11dec98ec6e891e6dfeb152c4b0295c874"
    },
    {
      "id": "ship/flashy-gold/dbb29d0a9d68",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T17:11:25Z",
      "kind": "feature",
      "title": "Give this property its first machine-readable estate ring",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "An 18 August audit found flashy.gold the loosest node in the estate: ~140\nestate URLs hand-typed across llms.txt and nothing anywhere that could say\nwhich links were the canonical spiderweb. Every sibling declares a ring; this\nsite had none.\n\nESTATE_RING in content.ts is the five neighbours syndicate/1 — the estate\nfeed flashyos.com publishes at /estate-feed.json — computes for a products\nproperty: the three hubs, plus claimyour.gold and flashy.academy beside it in\nthe cluster. Reconciled 2026-08-31, single source per this repository's own\nrule, rendered in the footer as a strip in the receipts band's visual\nlanguage — the same kind of claim, a link a reader can follow rather than a\nname to take on trust.\n\nestate-ring.test.ts holds the invariants: five entries, https and absolute,\nnever itself, no duplicates, all three hubs present, and every ring URL named\nin LLMS_TXT — so the strip a person sees and the surface a model reads cannot\ndisagree about which estate this property belongs to.\n\nKind: feature\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01NfXZ2PAsNCENGJupuCQrnH",
      "refs": {
        "commit": "dbb29d0a9d685f89a3bf94ca3cace4441c32a33c"
      },
      "digest": "96267e07b97943bacfc0dd04773d552422a696cbfec4590389826880acfea620"
    },
    {
      "id": "ship/flashy-gold/842812f8b011",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T16:42:57Z",
      "kind": "feature",
      "title": "Give a person the door the agents have had all along",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The handshake here has advertised `join` to agents since it shipped and no\npage linked it. A live survey of the estate on 2026-08-31 — fetched over the\nnetwork rather than read from git — found the machine door at six of seven\nproperties and the human door at nought of eight. Every property in this\nestate published a way in that only a program could take.\n\n`EXTERNAL.meshJoin` sits beside `osOrg` and `liveHq` because the three answer\ndifferent questions and were being conflated: the org page is for somebody\nalready on the network, Live HQ is where our own membership is checked, and\nneither takes an approach from a stranger. The link goes in the org card,\nwhich already tells a reader this org is on the mesh and until now left them\nwith no way to get on it themselves.\n\nA test pins it to the `join` the handshake serves, so the two doors cannot\ndrift into naming different URLs.\n\nKind: feat",
      "refs": {
        "commit": "842812f8b011801d02d88406d6e88340fd411a57"
      },
      "digest": "00a35de813cde993a775e1322440a931d994df4b9d8e42a2dac96d6e10c93a48"
    },
    {
      "id": "ship/flashy-gold/5830a7670e6c",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T16:42:49Z",
      "kind": "fix",
      "title": "An emitted record must not spend a deploy [vercel skip]",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The emitters commit a refreshed fragment on every push, and each of those is a\ndeployment. On 2026-08-31 the estate landed 594 commits on default branches and\n321 of them — 54% — were emitters refreshing their own output. Vercel's build\nrate limit is 100 a day across the account, so the record-keeping machinery was\nconsuming the whole estate's deploy budget three times over and starving the\npushes people actually made.\n\nIt was invisible everywhere. Each property sat a few revisions behind, gda.group\nhad stopped on 30 August, nothing was red. The one place it was written down was\na commit status on a dependabot PR nobody had opened: \"Deployment rate limited —\nretry in 24 hours.\"\n\n[skip ci] is the marker Vercel and GitHub Actions both honour. The fragment\nstill reaches the domain on the next deploy a real push triggers, which is the\nright cadence for a record of something that already happened.\n\nThis commit carries [vercel skip] rather than [skip ci] so CI still validates\nit without spending one of the deploys it exists to save.\n\nKind: fix",
      "refs": {
        "commit": "5830a7670e6c1f7ca84047a7dfbd32937e07b766"
      },
      "digest": "63280ca08f7ebe3638b0a27636c4dfccce53c05824e37c02ca71b85b8d03e8bd"
    },
    {
      "id": "ship/flashy-gold/74f52397759b",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T13:04:01Z",
      "kind": "feature",
      "title": "Declare the two machines that write this repository's record",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Every sealed entry carries `assertedBy` and every filed backlog item carries an\nagent id, and this fragment defined neither. A signature that resolves to\nnothing is provenance that reads as provenance and carries none — an empty\nfield would have been more honest.\n\nTwo machines, not one. The seal runs on a push to the default branch; the\nfiling runs whenever somebody records an intention. Both ids are read from the\nconfig that stamps them rather than composed from the charter slug — deriving\nwas wrong in two repositories out of ten on the first roll-out, and every\nstructural check passed for both.\n\nEach carries `delegatedTo` from the accountable human, bounded to exactly what\nit emits: the shape of a Flashy ID root grant, whose issuer is that human and\nwhose scope a chain may only ever narrow.\n\nThis became visible when the default branch moved to `main`. The declaration\nhad been made on the branch that used to be the default and never reached the\none that ships — which is the failure the durable-default check exists to end.\n\nKind: chore\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "74f52397759b7a4db8978445e3ccff386ca07231"
      },
      "digest": "047bb68635bae3f80b1f5c35f3ee03e3fff4e1b4dc537e5bc8e0fd1f245ed137"
    },
    {
      "id": "ship/flashy-gold/915a2de9b280",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T13:00:13Z",
      "kind": "other",
      "title": "Re-vendor the directory checker from the branch that ships",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "`estate-hygiene` learned to compare `scripts/check-directory.mjs` against its\nsource in flashyos, and immediately found four repositories carrying a stale\ncopy — this one among them.\n\nNothing was broken. That is the point: a vendored file that has drifted does\nnot fail, it disagrees, silently, about whichever rule somebody has just\nchanged in the source. The copy is only as good as the last time somebody\nremembered to replace it, which is why the comparison is a gate rather than a\nhabit.\n\nKind: chore\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "915a2de9b2806d65a2463bf2999756c11e5927b7"
      },
      "digest": "d09fe1c70e4ceeb59d7903d411c014186f3979b2ab98b85a9f088a568bafbf68"
    },
    {
      "id": "ship/flashy-gold/36d4299ae680",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T12:56:25Z",
      "kind": "infra",
      "title": "shipped/1: refresh the log, and the checkpoint over it",
      "by": [
        "agent/unattributed"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "refs": {
        "commit": "36d4299ae6800183424b3552e214c20a862c0959"
      },
      "digest": "9150816e4a3e75bf621cbfd4a8f5cd7e45c46525e52804c6b1da9bdbc292fa57"
    },
    {
      "id": "ship/flashy-gold/26b517e4a2b8",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T08:56:15-04:00",
      "kind": "feature",
      "title": "Merge pull request #4 from FlashyLabs/claude/gord-directory-spec-3jx7zk",
      "by": [
        "person/michael"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Re-vendor the emitters from the branch that ships, not from a stale checkout",
      "refs": {
        "commit": "26b517e4a2b80f8f141fe8471d36ea5da8c8c10a",
        "pr": "https://github.com/FlashyLabs/flashy-gold/pull/4"
      },
      "digest": "a807a0dac9699487863c2b03495f67e7f6b2689b222b24a8193ad693b690c376"
    },
    {
      "id": "ship/flashy-gold/ddbdbe85f293",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T08:52:05-04:00",
      "kind": "feature",
      "title": "Merge pull request #3 from FlashyLabs/claude/gord-directory-spec-3jx7zk",
      "by": [
        "person/michael"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Re-vendor the two emitters that had drifted",
      "refs": {
        "commit": "ddbdbe85f2936eb1785871768b795c2eebfc5686",
        "pr": "https://github.com/FlashyLabs/flashy-gold/pull/3"
      },
      "digest": "e88b61397fbc1ab2665e883208c863171d8e8b3805fbb240808c42ad8f7c3840"
    },
    {
      "id": "ship/flashy-gold/c4f2ec68760b",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T08:40:37-04:00",
      "kind": "feature",
      "title": "Merge pull request #2 from FlashyLabs/claude/gord-directory-spec-3jx7zk",
      "by": [
        "person/michael"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Bring the old default branch's work onto main",
      "refs": {
        "commit": "c4f2ec68760b9fe309993f8fdf1d99cea508a6b8",
        "pr": "https://github.com/FlashyLabs/flashy-gold/pull/2"
      },
      "digest": "e0bfe45b0c9b6f1ccb42662d3ad035da5e84103edb5d3b5004bf92b78eaec0de"
    },
    {
      "id": "ship/flashy-gold/c3b5179f7f4d",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T03:06:38Z",
      "kind": "infra",
      "title": "shipped/1: refresh the log, and the checkpoint over it",
      "by": [
        "agent/unattributed"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "refs": {
        "commit": "c3b5179f7f4dfc5db5d8f8be1650e64f07b1de08"
      },
      "digest": "09bf4da1124fa8dfe13bdf25e86c98b597acb3ec8320a703f13083dc3550fd36"
    },
    {
      "id": "ship/flashy-gold/09c41b1c910e",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T03:06:24Z",
      "kind": "feature",
      "title": "Merge release/pin-ledger-to-0-5-0 — stop tracking a moving dependency",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The substance is one line: `@flashy/ledger` moves from `#main` to `#v0.5.0`. A\ngit dependency on a branch means every install of this property can produce a\ndifferent build from the same commit, which makes a deployment unreproducible\nand a regression impossible to bisect. The branch also adds tests for the\nmachine surfaces and fixes what they caught.\n\nTwo conflicts in package.json, both about which side is newer, and they answer\ndifferently:\n\n  scripts — the default branch's `eslint .` is kept over the branch's\n  `next lint`, which Next deprecated, and its `typescript-eslint` dependency\n  goes with it.\n\n  vitest — the branch's `^4.1.11` is kept over the default branch's `^3.2.7`.\n  Traced rather than guessed: the default branch went 2.1.9 → 3.2.7 on 14\n  August and has never carried 4, while this branch bumped it on 25 August, and\n  4.1.11 is what is installed here and what the sibling properties run. Left as\n  it was, an `npm ci` on this repository would have installed a major version\n  behind everything else in the estate.\n\n21 tests pass. Typecheck reports the same six errors before and after the merge\n— all of them missing module declarations from an incomplete install, none\nintroduced here.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0198vyysGCrfdioK9uQr3kbs",
      "refs": {
        "commit": "09c41b1c910e4232427bdfae5d36ea28395e962b"
      },
      "digest": "3756484d92835ec0d352007014c785a52b31777725026996a63b8b56a59d8439"
    },
    {
      "id": "ship/flashy-gold/bad7f0c9326d",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T02:18:35Z",
      "kind": "other",
      "title": "Re-vendor the backlog emitter: it can revise an item now",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "`file` has taken `--wants` since the beginning and nothing could add them\nafterwards, so every item filed across the estate — all of them filed without\nwants — was permanently invisible to the matcher, which refuses an item that\nnames no `capabilitiesWanted`. A format whose central field is\nwrite-once-at-creation is a format whose central field is empty.\n\n`revise` changes everything about an item except its visibility. Promotion\nstays a separate verb because it is a separate decision: it refuses anything\nbut a `person/` id, and folding it in would give a revision the power to\npublish. Unmentioned fields are left alone — `close` is a revision too, and\nclearing on absence would strip every want in the repository.\n\nCopied byte-identical from flashyos rather than edited here. A stale vendored\nfile does not break; it disagrees, silently, about exactly the field somebody\nhas just added.\n\nKind: chore",
      "refs": {
        "commit": "bad7f0c9326d679c0f5854627350ba56ae6c4930"
      },
      "digest": "9161cff0d602418e47c1f5cff30163803f4960b079bb6010e4e6da24d49aeb8f"
    },
    {
      "id": "ship/flashy-gold/5e30aee07085",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T01:45:09Z",
      "kind": "feature",
      "title": "Close the backlog items this repository has since fixed",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "These were filed from measurement — a signature citing an identity nothing\ndeclared, a repository sealing a record and publishing no directory fragment\n— and the measurement no longer finds them. An open item naming work that is\nfinished is a record that is wrong about the one thing a backlog is for.\n\nSigned by the filing machine rather than by a person, and that asymmetry is\ndeliberate. Promotion publishes an organisation's intention on its behalf and\nneeds a named human; closure records that a measurement changed, makes\nnothing visible to anyone new, and the identity that made the claim is the\nhonest one to withdraw it.\n\nLeft alone, these would have decayed in about ninety days. Ninety days of a\npublished backlog naming finished work is not a reason to wait.\n\nKind: chore",
      "refs": {
        "commit": "5e30aee070855e1d25b779f82d8d34cd60271a51"
      },
      "digest": "5586b9d8822fac56e7c0273e6123c7e6f2b91fbe46eefe00fa2d6c678aad64d0"
    },
    {
      "id": "ship/flashy-gold/43d4ba39ec82",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T01:37:49Z",
      "kind": "feature",
      "title": "Publish a directory/1 fragment, so this repository's signatures resolve",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Every sealed entry here carries `assertedBy: agent/<slug>-ci` and every filed\nitem carries `agent/<slug>-bot`, and nothing in the estate defined either. An\n`assertedBy` naming an id nothing declares reads as provenance and carries\nnone, which is worse than leaving the field out — across the estate that was\n2,478 edges citing identities that formally did not exist.\n\nThe repositories that already had a fragment each hand-wrote one around their\nAAO charter. This repository has no charter, and neither will an outside\nadopter of `shipped/1` on their first push, so the fragment comes from\n`vendor-directory.mjs`: dependency-free, derived from the two config files\nthat already do the stamping, and validated here by the vendored checker.\n\nIt does not declare an organisation. `.shiplog/config.json` carries an `org`\nfield that adoption filled in with this repository's own slug, and in sixteen\nrepositories that names a company which does not exist. A repository is not\nthe authority for which organisation answers for it; defining one here to\nraise a provenance number would put the fiction into the published graph. The\nemitter says so on every run, and the gap is filed rather than papered over.\n\nKind: feat",
      "refs": {
        "commit": "43d4ba39ec82a157bd95b771f35178fd48cb688a"
      },
      "digest": "6511ad6e1276427d263037020c6f183b94512d15125fa6f8e5d94c15c44d6f16"
    },
    {
      "id": "ship/flashy-gold/609909d25054",
      "repo": "repo/flashy-gold",
      "at": "2026-08-31T01:00:53Z",
      "kind": "feature",
      "title": "File the gaps this repository can prove about itself",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "`backlog/1` was published by thirty repositories and empty in twenty-nine —\nfull distribution and nothing to distribute, which is worse than no adoption,\nbecause a format every property emits and none fills teaches every reader that\nthe format is decorative.\n\nThe temptation was to write some intentions. That would be fabrication: an\nagent inventing what an organisation intends is exactly what `promote()`\nexists to prevent, and a backlog of plausible work nobody agreed to is worse\nthan an empty one.\n\nSo these are derived, not invented. Each item is a gap the estate survey\nmeasures directly — a signature citing an identity nothing declares, a\nrepository sealing records and publishing no directory, a default branch that\nis an agent's scratch branch — and each carries the evidence that establishes\nit, because an item that says what to do without saying how anyone knows is an\ninstruction rather than a finding.\n\nFiled private. Reaching public needs a named human to promote it, which is the\nconsent rule rather than an oversight.\n\nKind: feature\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01FDosmV9fXV6oZ9NXe7PZ76",
      "refs": {
        "commit": "609909d2505460a2397e88c11d84a6b2656463aa"
      },
      "digest": "bd5182d86d022114718602bb73ae0d3c4939fde21434ddfd22324741f05ff521"
    },
    {
      "id": "ship/flashy-gold/097b286bf34b",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T21:44:36Z",
      "kind": "infra",
      "title": "shipped/1: refresh the log, and the checkpoint over it",
      "by": [
        "agent/unattributed"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "refs": {
        "commit": "097b286bf34b4cd804da492b0a583c3903352a15"
      },
      "digest": "4e6ec2fc89346f21f9ab2e01e11987bebf8f5e6471242eb7c02412ef7d2ad682"
    },
    {
      "id": "ship/flashy-gold/3761b90178e4",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T21:42:22Z",
      "kind": "other",
      "title": "Lint this repository, which had a lint script and no linter",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "package.json has carried `\"lint\": \"next lint\"` since the repository was\nscaffolded, and there was no eslint config anywhere in the tree. The script\nexisted, the command ran, and nothing was ever checked.\n\nThat is worse than having no lint script at all. A script named `lint` in\npackage.json is the thing a reviewer looks at to decide whether a repository\nlints, and this one answered yes for months.\n\nTwo findings on the first real run, both now clear. The font stylesheet in the\nroot layout tripped `no-page-custom-font`, which is a Pages Router rule firing\nbecause there is no `pages/_document.js` for the link to live in — this is the\nApp Router, where the root layout is the document. It carries a targeted\ndisable with that reason written beside it rather than a blanket rule change.\n\nKind: chore\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "3761b90178e4253be39efe2f41d1d541951d2d52"
      },
      "digest": "1ae5c13ed314422e96754043ec74605e31083152d294b045411263aec79c067b"
    },
    {
      "id": "ship/flashy-gold/b33dd28d5ee8",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T20:38:07Z",
      "kind": "feature",
      "title": "Match the licence to the register rather than to a guess",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The estate declares every repository's licence and copyright holder once, in\nflashyos `tools/estate-licences.mjs`. This branch disagreed with it — and this\nis the branch that deploys, so it is the one that mattered.\n\nAn earlier pass applied a licence by pattern-matching what siblings had done,\nbefore that register existed, and pushed the correction to a branch that is\nnot this repository's default. Both mistakes are the same mistake: deciding\nlocally what is decided once, centrally.\n\nWritten from the register. Where the holder line named the property rather\nthan the legal entity it was worse than blank — an absent file is a question,\na wrong one is an answer somebody may rely on.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "b33dd28d5ee874df48848d347cf06cee9e0f40c7"
      },
      "digest": "4addeae3e50c619baefcffa478f187449dcffcf2ad02759749e7a02fd3003310"
    },
    {
      "id": "ship/flashy-gold/237b17ee7b36",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T20:36:56Z",
      "kind": "feature",
      "title": "Match the licence to the register rather than to a guess",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The estate now declares every repository's licence and copyright holder once,\nin flashyos `tools/estate-licences.mjs`. This repository disagreed with it.\n\nAn earlier pass through the estate applied AGPL-3.0-only by pattern-matching\nwhat siblings had done, before that register existed. For a brand property\nthat is the wrong answer and not a small one: AGPL means a competitor may fork\nand host it provided they publish their changes, which is a grant nobody\nintended to make. Where the holder line named the property rather than the\nlegal entity it was worse than blank — an absent file is a question and a\nwrong one is an answer somebody may rely on.\n\nWritten from the register, not decided here. That is the rule the house rules\nstate: a repository does not hold its own opinion about its licence, because\nthirty-five separate opinions is the state the register exists to end.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "237b17ee7b3686e461a2379a382987de10d32cdc"
      },
      "digest": "4a41cc29064136f29729458a5d48b26d8c98cbd0cdc33fd1cce1bb5eb91607e5"
    },
    {
      "id": "ship/flashy-gold/1976bb4bae96",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T19:45:08Z",
      "kind": "fix",
      "title": "Re-vendor the charter checker: it had drifted from the spec",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The vendored checker rejected renamedFrom, which the charter defines and the\nrole-rename sync reads; rejected a digit in a role name, which the spec's own\nregex allows; and enforced no length bound at all, so the 24-character role\nname cap was the one rule this pre-install check could not see.\n\nEleven byte-identical copies across the estate agreed with each other\nperfectly and disagreed with @flashyos/aao in all four places. The monorepo\nnow runs both checkers over the same documents and fails on any disagreement\nabout the verdict.\n\nThis charter still passes.\n\nKind: fix",
      "refs": {
        "commit": "1976bb4bae9685f4d3ce3eb595c08638df5d99fc"
      },
      "digest": "24f49b116d1093903efa7d18218b79ae073ff82795507adfa3aa3e5940f6b719"
    },
    {
      "id": "ship/flashy-gold/b7073c7ce818",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T19:32:34Z",
      "kind": "docs",
      "title": "Carry the house rules, so an agent stops having to guess them",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Twenty of thirty-five repositories had no CLAUDE.md or AGENTS.md, and an\nagent with no repository doc guesses. Every avoidable mistake made across\nthis estate on 2026-08-30 happened in a repository without one — and each\nwas a fact that is true everywhere rather than a fact about that\nrepository:\n\n  work pushed to `main` in eleven repositories whose default branch is not\n  `main`, deploying nothing and read by nobody, with the push succeeding;\n\n  a vendored emitter trusted after its source changed, so a privacy hold\n  added that morning did nothing in sixteen repositories and published the\n  entry it was meant to withhold;\n\n  a copyright holder guessed as the studio on a client's site;\n\n  measurements reported from a working copy while claiming to describe the\n  branch that ships — twice, in two tools, by two agents, four hours apart.\n\nNone of that is repo-specific knowledge, and writing it thirty-five times\nwould drift the first time it changed. It is declared in\n`tools/estate-house-rules.mjs` in flashyos and synced between two markers.\nEverything outside the markers is this repository's own and is never\ntouched.\n\nWhere this file is new it says the repository is not yet described, which\nis true. A generated description would be wrong and would read as\nauthoritative; admitting the gap is a task somebody can close in a minute.\n\nKind: docs",
      "refs": {
        "commit": "b7073c7ce818d2d404377830255a1c2d7ab2bcb8"
      },
      "digest": "b55fdc2fc71326481ccad1e59f39eee06bbff059175820f67dba830dd566a029"
    },
    {
      "id": "ship/flashy-gold/d4e9e2518be9",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T19:19:49Z",
      "kind": "other",
      "title": "Conformance from the package, not from memory",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "This test re-derived the spec's constants by hand — the ten families, the\n24-character role-name cap, the list of top-level keys — and six properties in\nthis estate each made the same copy while bringing themselves to L2. A copied\nlist is a vendored snapshot of a live source with nothing to notice when the\ntwo diverge, which this estate has an explicit rule against. I wrote it anyway,\nsix times.\n\n`assertProperty` from @flashyos/conformance is the one place those rules live,\nimported from @flashyos/aao. The spec adds a family and this repository learns\nabout it on the next install rather than passing against a list from last year.\n117 lines to 87, and the 87 are mostly the part that is actually about\nflashy.gold.\n\nWhat stayed is what nothing else knows: the drift check between the root\ncharter and the served copy, the slug matching the org this property reports\nas, the never-real-gold rule, and the role that must exist to speak to a\nreader.\n\nThe test says plainly what it cannot prove — that flashy.gold serves these\nfiles. Every property here once held a valid charter and served it nowhere the\nchecker looks; `npx @flashyos/conformance flashy.gold --level 2` is the other\nhalf, after a deploy.\n\nTypecheck clean, 50 tests green against the real 0.2.1 from the registry.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "d4e9e2518be9d090592d1de2031eb27e91d8718e"
      },
      "digest": "a43a3636bc10565cdb661a6dfae07b41a38a658ec0f491153a9cc9c0eeaeeb8e"
    },
    {
      "id": "ship/flashy-gold/55da5f02cda2",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T18:19:03Z",
      "kind": "docs",
      "title": "Declare a licence: AGPL-3.0-only",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "AGPL-3.0-only, because this runs as a service and a hosted fork should have to publish its changes.\n\nThe estate had a licence in 4 of 32 repositories that carry code, which made\nevery other one legally un-embeddable by anyone outside it — including the\nportfolio companies this is all built for. An absent licence is not permissive;\nit is all rights reserved by default.\n\nThe text is the estate's canonical copy, and package.json declares the same\nthing where there is one, so the file and the manifest cannot drift apart.\n\nKind: docs",
      "refs": {
        "commit": "55da5f02cda2673017f4bcbbce6070c2abded8f8"
      },
      "digest": "f465b545f69323b0ded26a66dabd2271d73d36c8cc3a531c48d545767f49b0f7"
    },
    {
      "id": "ship/flashy-gold/235505c80816",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T18:15:28Z",
      "kind": "feature",
      "title": "Merge: their charter, my routes — the two halves L2 needs",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Another session wrote this charter on main while I wrote one on a branch, and\nneither of us had both pieces. A charter that nothing serves leaves a property\nat L1 forever, because @flashyos/conformance reads\n/.well-known/flashyos-charter.json and nowhere else. Main had the charter; this\nbranch had the route and the test.\n\nTheirs on the roster. `disclosure` is a better name than my `value` for the\nsame responsibility: what this property owes a reader is disclosure of what a\nreward is, not an assertion of what it is worth. The handshake now advertises\ntheir three role names.\n\nOne fix to my own test, which failed on their charter for the second time in\nthe same way. It forbids the phrase \"real gold\", and their role purpose says\n\"Never describes rewards as real gold\" — the rule being written down, which is\nthe opposite of breaking it. My earlier version excluded only the maintainer\nnote. It now drops any sentence containing \"never\" before looking, so a\ncharter that actually called the reward real gold would have to do it in a\nsentence that does not forbid it.\n\nAnd a bug in my regeneration step, caught by the parity test: rewriting the\nhandshake's capabilities by iterating the old object re-added the stale list\nafter inserting the new one. The old key is dropped first now.\n\nTypecheck clean, 53 tests green.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "235505c8081650a3edb503bd3a493f61753bee7c"
      },
      "digest": "d735b470c08affc3e1133e91943cd0b1a715d757f044753e934876a23cc4595c"
    },
    {
      "id": "ship/flashy-gold/16c42e26be2f",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T18:01:17Z",
      "kind": "other",
      "title": "Re-emit against the rebased tree",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Kind: chore",
      "refs": {
        "commit": "16c42e26be2f180f5663d682fbf11f58e5c4f54e"
      },
      "digest": "fa94c8ed9a3df5ac60d741c791852938b2009f47e6c908ee32d56a53df69b6f4"
    },
    {
      "id": "ship/flashy-gold/ceb6e8c720c3",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T17:58:55+00:00",
      "kind": "fix",
      "title": "Carry the current vendored emitters",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "A stale copy fails silently and in the dangerous direction: it does not know\nabout rules added since it was vendored, so it ignores them rather than\nerroring. Re-emitted and re-verified against the refreshed copies.\n\nKind: fix",
      "refs": {
        "commit": "ceb6e8c720c39107f7c42452d7f8c852e34e41a1"
      },
      "digest": "fd07190f8c73c20318f53f13d5205d59b1e19be6ed2c3fe4b11e44529a8b2836"
    },
    {
      "id": "ship/flashy-gold/d17a004fb29a",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T17:38:27+00:00",
      "kind": "infra",
      "title": "shipped/1: refresh the log, and the checkpoint over it",
      "by": [
        "agent/unattributed"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "refs": {
        "commit": "d17a004fb29a7bdf292554239e68d55e4f9d861f"
      },
      "digest": "f1c62aa93e956980458c6e775dec24c72bde3ca8fd1f75f44bc1eced9ecb9806"
    },
    {
      "id": "ship/flashy-gold/bff5e653b878",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T17:38:12+00:00",
      "kind": "fix",
      "title": "Fail loudly on a fragment that exists and cannot be parsed",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The emitter treated an unparseable fragment as an absent one and built a head\nover whatever else it could read. A conflicted fragment produced a\nvalid-looking head over nothing.\n\nKind: fix",
      "refs": {
        "commit": "bff5e653b87863a52162ae340b45f6ce15a8a906"
      },
      "digest": "fe63073392ab300cc89f695a7c8b20be749a225f578573677112c6c535b75710"
    },
    {
      "id": "ship/flashy-gold/41af058f6e84",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T17:22:42+00:00",
      "kind": "other",
      "title": "Re-emit the log and its checkpoint after rebase",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Kind: chore",
      "refs": {
        "commit": "41af058f6e848ef49bbb3220a03acc9c6033ec05"
      },
      "digest": "c4f728402e8734ab3f3cb2a7efb77f774d04c2cc5217e3e3dcf2e6990bc501c3"
    },
    {
      "id": "ship/flashy-gold/65ecb979b60d",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T17:18:12+00:00",
      "kind": "feature",
      "title": "Adopt checkpoint/1 — a tree head over what this repository seals",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "An RFC 6962 Merkle root over the sealed claims already published here, served\nbeside them. Anyone holding the fragments can recompute it and see whether the\nrecord still describes what it said it did.\n\nThe head is deliberately unsigned. A signature over a root computed and checked\nby the same party is ceremony without a property — what makes history provably\nappend-only is a witness who is not us, and that is not built. The root catches\ndrift and after-the-fact edits, and nothing here claims more.\n\nIt is refreshed by the shiplog workflow rather than its own, so the head and\nthe log it commits to always move in one commit. A separate workflow would\nleave a window in which the published root and the published record disagree,\nand a reader hitting that window sees a forged-looking estate.\n\nKind: feature",
      "refs": {
        "commit": "65ecb979b60d687262a93e9c596fa497f915b5d2"
      },
      "digest": "2f88a17bd6c357e4cc2032099760f109668d03846bbee62934b8ba5b21dac8c2"
    },
    {
      "id": "ship/flashy-gold/3b9c0ea38c8c",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T17:02:38+00:00",
      "kind": "fix",
      "title": "Re-vendor the emitter, and publish this log",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The vendored copy here predated four changes: an emit that unions rather\nthan replaces, a per-entry privacy hold, a guard that stops an agent's\ncommits being filed under a person, and a filter for this format's own\nrefresh commits.\n\nA stale vendored copy does not fail. It disagrees with the source about\nwhat it was told to do — which is how a hold added this morning did\nnothing in sixteen repositories and marked the held entry public.\nestate-hygiene now compares every vendor-*.mjs byte-for-byte against the\npackage it came from, and this repository was one of nine it caught.\n\nvisibility is public. Everything derived has been private since adoption;\nthis is the decision that makes it a changelog anyone can read.\n\nKind: fix",
      "refs": {
        "commit": "3b9c0ea38c8ca184ea537971c74e44a8890cf915"
      },
      "digest": "4cfde7ef429408610f590a979520af3309db032dac53c3a34c775ef411789a8b"
    },
    {
      "id": "ship/flashy-gold/ec8aa06554ed",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T16:18:22+00:00",
      "kind": "fix",
      "title": "Map the estate's commit addresses to who they belong to",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "`authors` was empty and `defaultAuthor` filed every entry under one identity,\nso this log looked fully attributed while agent-authored commits were recorded\nas the person named as the default.\n\nThe map is declared once in flashyos `tools/estate-authors.mjs` and synced\nhere. Five addresses are left unmapped on purpose, each with a stated reason.\n\nKind: fix",
      "refs": {
        "commit": "ec8aa06554ed9ce81ef7b082a4b52d4827f41eed"
      },
      "digest": "bd34e2513b93b66f9f4725ee3b2ce9342d21a136766d5bdb476af7e171878a27"
    },
    {
      "id": "ship/flashy-gold/39c2d92b00fe",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T15:46:15+00:00",
      "kind": "fix",
      "title": "Stop pinning the shiplog and backlog workflows to a branch name",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Each workflow triggered on `branches: ['<the default branch at adoption>']`.\nEleven repositories in this estate have a `claude/*` branch as their GitHub\ndefault; renaming one to `main` is the right thing to do and would have stopped\nits workflow firing. Nothing would have failed — the fragment would simply have\nstopped advancing, and a stale changelog reads exactly like a current one.\n\nThe trigger now matches any push and the job is gated on\n`github.ref_name == github.event.repository.default_branch`, resolved per run,\nso a rename is survived rather than discovered. `branch` is dropped from the\nconfig: nothing read it, and a stored branch name is a snapshot of something\nthat changes.\n\nKind: fix",
      "refs": {
        "commit": "39c2d92b00fe29a7f8fa220b111304b25c2964d0"
      },
      "digest": "a4e373bc262832f13b2031f69ab891c2952d212cd0b27194d8bc105f43b92bb0"
    },
    {
      "id": "ship/flashy-gold/d385b7f4819d",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T13:21:16+00:00",
      "kind": "infra",
      "title": "Reclassify the log against the convention this estate writes in",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The derived log was classified only by conventional-commit prefixes, and\nthis repository writes declarative English. Unclassified went from 100%\nto 0% by reading the estate's declared imperative lexicon, looking\npast a project prefix to the verb behind it, and dropping merges of\nanother branch into this line — which are not things that shipped.\n\nNothing is published: entries remain private and the served copy is the\npublic projection.\n\nKind: infra\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01FDosmV9fXV6oZ9NXe7PZ76",
      "refs": {
        "commit": "d385b7f4819d5cabc65fac8ab217f12e6e4c8d38"
      },
      "digest": "33ab955c41b1fa2ef73623ae12f7eac69eab72f70b6e771e31787dcc0c6f8ecb"
    },
    {
      "id": "ship/flashy-gold/5eeec3824a91",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T05:45:14+00:00",
      "kind": "feature",
      "title": "Adopt backlog/1 and shipped/1",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "This repository now publishes the two tenses the estate records: what it\nintends, and what it shipped. Both are emitted by a dependency-free\nvendored script, so nothing here gains a toolchain it did not have.\n\nNothing is published by this commit. Backlog items are filed private and\nreach the served fragment only when a named human promotes one; shipped\nentries land private until someone changes one field in\n.shiplog/config.json. The served copy is the public projection and the\nemitter writes it, so a private record cannot reach a URL through a\nforgotten copy step.\n\nDerived 9 entries from this repository's own history, every seal\nrecomputed. Org org/flashy-gold, served at public/.well-known/shiplog.json.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01FDosmV9fXV6oZ9NXe7PZ76",
      "refs": {
        "commit": "5eeec3824a9146552fcdebe578bfc43336d5219a"
      },
      "digest": "73cfd361f06f98b9a27a5ebfa2cb132ba384810036f11b153882d6d2f2e11778"
    },
    {
      "id": "ship/flashy-gold/237e205283c4",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T03:07:48Z",
      "kind": "feature",
      "title": "Advertise a way in a stranger can actually use",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The handshake's `join` field is the one thing in that document somebody\nactually follows. Every handshake in the estate pointed it at\napp.flashyos.com/onboard, which redirects anyone without a session to a\npassword form. A stranger following the URL our own standard tells them to\nfollow arrived at a login they had no account for.\n\nIt now points at https://flashyos.com/join — open, no account, nothing to\ninstall.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "237e205283c4467757e71365fa431497dbb4f9fb"
      },
      "digest": "2d15e9a901d922d577bcb6de9937baba7134c3d4cf01ae0c57dbecf060678f1a"
    },
    {
      "id": "ship/flashy-gold/4b6044539719",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T02:26:33Z",
      "kind": "infra",
      "title": "Point the front door at the ladder's new home",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The ladder moved from gord.ventures to gord.holdings. It is an estate-wide\nclaim — every door in the estate points at it — and estate-wide claims belong\nto the parent rather than to one sibling that also has its own lanes. The old\nURL had no deployment behind it, so this door was directing anyone who read it\nto a 404.\n\nConfig and emitted door, nothing else.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "4b6044539719b886a36aa84b5805b3fbf75ca028"
      },
      "digest": "7612c4def9292a935ae579fa796f240593fd9974a1800e34628fc2fc4fa1c556"
    },
    {
      "id": "ship/flashy-gold/277da9e8ba4c",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T01:34:49Z",
      "kind": "feature",
      "title": "Serve the directory fragment, which this property was not doing",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The fragment lived only at the repository root. A Next.js app does not\nserve the repository root, so https://<this property>/directory.fragment.json\nreturned 404 — and the estate's directory is federated, meaning every\nproperty is supposed to publish its own fragment for anyone to fetch and\nmerge.\n\nThirteen of fourteen properties were in this state. The consequence is\nlarger than a missing file: the estate graph could only be assembled by\nsomeone with a git checkout of every repository, which defeats the entire\nreason for federating it. A graph you can only build from a laptop proves\nthe files are on that laptop. A graph assembled from published URLs proves\nthe estate publishes what it says it does, can be reproduced by somebody\nwho does not trust us, and is the only shape that lets an organisation we\ndo not own ever join it.\n\nSame defect as the charter, found the same way and fixed the same way: the\nfragment is copied into the served directory and CI diffs the served copy\nagainst the source so the two cannot drift.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "277da9e8ba4c49a8d6fb4e24dedbb0dde2114bdd"
      },
      "digest": "ac3a9b11dfe484dfe0537c72ba8bb8fc5246985c76d20d809e6b6b2c9bc9261e"
    },
    {
      "id": "ship/flashy-gold/9eb75ba8d722",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T00:19:03Z",
      "kind": "feature",
      "title": "Serve the charter, which this property was not doing",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The AAO charter lived only at the repository root. A Next.js app does not\nserve the repository root, so https://<this property>/flashyos.roles.json\nreturned 404 while the standard this estate publishes tells every\norganisation to serve exactly that path.\n\nFound by running the estate's own properties through the verifier written\nto mark a stranger's homework. Nine of the ten live properties failed at\nrung 1 — not because a charter was missing, but because nobody could read\nit. gord.holdings was the only one that passed, and only because it is a\nstatic site that happens to serve from the repository root.\n\nThe charter is now copied into the served directory, and the front door\nworkflow diffs the served copy against the source so the two cannot drift.\nA charter that exists and cannot be fetched is worth exactly as much as no\ncharter at all — less, because it produces the belief that the work is\ndone.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "9eb75ba8d722f22088e37a27f0b4455616eb95be"
      },
      "digest": "2f445a27d29b1dbeef88d53281f5a3f510e1c25b76927697de8c74e800c496f0"
    },
    {
      "id": "ship/flashy-gold/76017b900786",
      "repo": "repo/flashy-gold",
      "at": "2026-08-30T00:14:34Z",
      "kind": "feature",
      "title": "Publish a front door (frontdoor/1)",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "This property now serves /.well-known/frontdoor.json: which lanes it\nopens, what it asks at each, and what it owes in return. It completes the\ntrio the estate already half had — the handshake says who this is, the\ncharter says how it is governed, the door says how to reach it.\n\nLanes are declared per property class rather than per property, so the\nrestraint is checkable: a consumer app opens one lane and it is not\ncapital, and no property outside the parent and the bank opens the capital\nlane at all. frontdoor.config.json is the only file here that carries\nanything specific to this repository.\n\nThe rungs are identical across the estate on purpose. Standing is\nportable — the credential is a charter published at the applicant's own\ndomain, not a row in our store — so an applicant who climbs at one door\nand arrives at another must be owed the same thing. The estate-wide merge\nfails if two properties promise different terms for the same rung.\n\nCarried verbatim in every door: a rung buys a reply and a place in a\nqueue. It never buys authority, money, or access. Publishing a file at a\ndomain proves someone can write to that host and nothing more. Where real\nauthority is needed it is delegated and verified through flashyID. Both\nthe checker and the library reject a door that drops that paragraph,\nbecause a door quietly treated as an authorisation is the one way this\nbecomes a vulnerability rather than a front door.\n\nscripts/check-frontdoor.mjs and scripts/emit-frontdoor.mjs are vendored\nbyte-identical across every repository publishing a door; the canonical\ncopies and the drift test live in @flashyos/frontdoor. Both are\ndependency-free, so CI needs no install and the same two scripts work on a\nNext.js app and a static generator alike.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "76017b900786b8a0d2b642e2119b3aee912b4049"
      },
      "digest": "905463ca38649cbaa3d62af40c4811d3bd2304ebcfa96bb82699c8a5e57ff805"
    },
    {
      "id": "ship/flashy-gold/a1668ea24a47",
      "repo": "repo/flashy-gold",
      "at": "2026-08-28T00:29:52Z",
      "kind": "feature",
      "title": "Merge the mesh handshake into main",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Keeps main's newer grouped, repo-aware dependabot config over the\nhardening baseline's simpler one; the handshake and its test come across\nunchanged.\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "a1668ea24a479dcde61ae72bba32bda7e87d0cad"
      },
      "digest": "2eae227eb17ec3fd52d95a4c987df17dd67a74ca575a3a67e60cf54a6a9d2a6e"
    },
    {
      "id": "ship/flashy-gold/f7e890b596f9",
      "repo": "repo/flashy-gold",
      "at": "2026-08-26T19:29:25Z",
      "kind": "feature",
      "title": "Publish one disclosure route, and volunteer the gaps",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Two of fourteen repositories told a researcher where to send a vulnerability.\nFor an estate whose flagship product is delegated authority — holding a\nproduction signing key — that is the most conspicuous gap in the governance\nreview.\n\nSame address everywhere, deliberately: a researcher who finds two and picks\nthe worse one has been failed by us. The policy also states what we do not\nhold — no SOC 2, no penetration test, keys in a managed secret store rather\nthan an HSM — because a security policy that omits its own gaps is a\nmarketing page.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EEAAmijDh3kzFH7SY53jZ7",
      "refs": {
        "commit": "f7e890b596f9c069423690a18b3d0f46899a5c09"
      },
      "digest": "55b7c1ef5c282029f8ff7d3006f7cbea2ec4c049b07aef18020f7e175208a79d"
    },
    {
      "id": "ship/flashy-gold/aaf60491185e",
      "repo": "repo/flashy-gold",
      "at": "2026-08-26T19:25:32Z",
      "kind": "infra",
      "title": "Update dependencies on a schedule, grouped so the queue stays readable",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Zero repositories in this estate had automated dependency updates, which\nmeans no automated security updates either. Grouped weekly rather than\nungrouped: an estate this size produces more pull requests than anyone reads\nif every bump opens its own, and a queue nobody reads is indistinguishable\nfrom no updates at all — except that it also hides the security ones.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EEAAmijDh3kzFH7SY53jZ7",
      "refs": {
        "commit": "aaf60491185e369d1437c84256067d0afbf912ac"
      },
      "digest": "d1f4e3a52f75629584b2115464c84e9c078b9332b8b10d7cd1bf3d1221a237dd"
    },
    {
      "id": "ship/flashy-gold/ac0d0e89b882",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T21:19:34Z",
      "kind": "other",
      "title": "Footer: the org card says #11, and the badge keeps its shape",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The FlashyOS network card rendered 'ORG #—' — a placeholder where the\nmesh register already knew the answer — and forced the 190×28 status\nbadge into a 180×20 box, distorting the one mark the kit says must\nnever be redrawn. The number now reads from GOLD_JSON.mesh.org_number\n(one source, already tested), and the img matches the SVG's intrinsic\nsize.\n\n26 tests, typecheck and build green.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "ac0d0e89b88264c65805269158c44ec06049a857",
        "pr": "https://github.com/FlashyLabs/flashy-gold/pull/11"
      },
      "digest": "27645f7cadc8f2dbcb181ddd76b4c2341a56ad18ef14a2cbaeda7265fb0ebed4"
    },
    {
      "id": "ship/flashy-gold/48c01c1271ed",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T20:46:14Z",
      "kind": "other",
      "title": "Press: two releases enter the record — the open ledger and the open stack",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "48c01c1271eda26682b07d7b84e97cefb94dff7d"
      },
      "digest": "94eaf6710d2bfa8fd651aac2ec0a8cb22b9154893af52ba9041a61fd9ff6e13e"
    },
    {
      "id": "ship/flashy-gold/7505e515a0c6",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T17:44:06Z",
      "kind": "other",
      "title": "The asset lens on the AAO Stack canon",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "gold.json gains a canon block — one claim (Flashy Gold is the first\nasset on the stack's open settlement-ledger rules) and five terms each\ndeferring to its canonical home — and llms.txt carries the same five in\nthe defined-elsewhere section. Four tests pin the two surfaces to each\nother and to the estate rule that this site links the canon and never\nbecomes a second home.\n\n26 tests green; typecheck clean.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "7505e515a0c631075375ae13819a9c1672620c3e"
      },
      "digest": "3fe5d3b8914a81bb6835bf7686ec50cccd96bc1c13d31807acd9c836d74dda63"
    },
    {
      "id": "ship/flashy-gold/21eb5433934f",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T15:59:10Z",
      "kind": "feature",
      "title": "Take the ledger's public debut: pin @flashylabs/ledger at v0.5.0",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "flashy-ledger went public today, which is the event this dependency has\nbeen waiting on: the git+https pin finally resolves for Vercel (no SSH\nkey, no private-repo 404), so this also unblocks every deploy since the\npin landed. Moves from a floating commit of the pre-rename @flashy/ledger\nto the tagged v0.5.0 under its real name, and adapts the balances route\nto 0.5.0's AccountRef reads — tenant isolation became part of the key\nitself rather than adapter configuration.\n\nTypecheck, production build, and tests green with the public package.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "21eb5433934fe63cca0b9ed7bbb37ee399bbbb93"
      },
      "digest": "0b9393899f0e9b1572b888be7bdc2c33e4e9d6b665f2d999ebd7751c2fed65b3"
    },
    {
      "id": "ship/flashy-gold/deec058d4b76",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T14:01:59Z",
      "kind": "other",
      "title": "Hidden Bolts 404: the kit bolt drawn cracked over a page that did not settle",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The one surface where the mark may break (Hidden Bolts doctrine:\ndecorative only, nothing gated). Same single kit path drawn twice\nthrough two clip halves in Flashy Gold, the lower half slipped off the\nbreak line; the not-on-the-ledger copy stays.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "deec058d4b76b9d239289739336a9f8013bac728"
      },
      "digest": "41395f757e558149391c5177c82125b2d80cea6ce721ef5bdad13d3f13e4719b"
    },
    {
      "id": "ship/flashy-gold/4c60a3aebccf",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T03:18:14Z",
      "kind": "infra",
      "title": "Pin @flashy/ledger to the exact commit the asset API was written against",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "github:...#main was a moving target pointing at a repo three versions\nahead of the 0.1.0-era API this site consumes; the pin freezes the\ncommit that was always in the lockfile anyway. The dependency builds on\nVercel the moment FlashyLabs/flashy-ledger goes public — npm fetches\nGitHub-hosted deps via the https codeload tarball first and only falls\nback to ssh (the current failure) when a private repo 404s it.\n\n22 tests green, build green with a from-scratch lockfile.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "4c60a3aebccf3a0237ec1aa08df4d51715a9af4f"
      },
      "digest": "2b1bc40622e30aee9c4b572f9557d36b9c53c0d406d58c0f93b501ac66ccc32a"
    },
    {
      "id": "ship/flashy-gold/88cdcfeb6214",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T02:59:53Z",
      "kind": "infra",
      "title": "Pin Node 22 and the Vercel build explicitly",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The repo builds clean locally at the exact commit Vercel fails on, so\nthe failure is environmental: with no engines field and no vercel.json,\nVercel falls back to the project's dashboard Node default, and Next 16\nrequires >= 20.9. engines.node = 22.x overrides the dashboard from the\nrepo side; vercel.json makes install/build explicit while we're at it.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "88cdcfeb62149fe8124bf3b4237677fc0655b326"
      },
      "digest": "37bead500f582868f6134c665387483e0a4586db17d3bbadd3193173312be988"
    },
    {
      "id": "ship/flashy-gold/ae0aa32988f7",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T02:49:21Z",
      "kind": "feature",
      "title": "Add the @vercel/analytics dependency the layout already imports",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "layout.tsx has rendered <Analytics /> from @vercel/analytics/next all\nalong, but the package was never in package.json — an npm ci build\n(exactly what Vercel runs) fails on the missing module. Locally it rode\nin on transitive luck. 22 tests, typecheck, build green.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "ae0aa32988f793317d09db1111154f6b2b0a1f91"
      },
      "digest": "2fff4cb960da6af3151a09c8508187305b339e995ca510cdd619d38703ba0da8"
    },
    {
      "id": "ship/flashy-gold/5173b920eec6",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T02:46:35Z",
      "kind": "other",
      "title": "Per-property kit favicon",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Same kit tile geometry, this property's accent on the bolt — the tab\nicon now follows the one-accent-per-property lockup grammar. Stale\npre-kit icon assets removed where present.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "5173b920eec663603afceebcd2c801ed1987a1e9"
      },
      "digest": "e3dcff8887dde03a9c97f22ce98916ce79e17d4b276e20de4d2655a948ade394"
    },
    {
      "id": "ship/flashy-gold/a3c2d124f754",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T02:30:40Z",
      "kind": "other",
      "title": "Typeset FLASHY-GOLD lockup in the nav per the kit",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "bolt.png + FLASHY GOLD text becomes the kit lockup: FLA + the exact\nbolt path in the property gold + HY at ink, GOLD suffix in accent mono.\n22 tests, typecheck, build green; nav screenshot-verified.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "a3c2d124f75400733da33187a0ff94620b6a3635"
      },
      "digest": "984063082e3cffc7c05c253307d8717307e3bec519d28eb827c40e0ad07bdcd5"
    },
    {
      "id": "ship/flashy-gold/ba7d88d622d0",
      "repo": "repo/flashy-gold",
      "at": "2026-08-25T02:14:37Z",
      "kind": "feature",
      "title": "Merge Bolt Rollout: flashy.gold on the kit",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Kit gold #FFC93C on Ink, Archivo Black display via next/font, vendored\nbrand/ with drift test. Merged tree verified before push.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "ba7d88d622d027e9209d91ec1b7cdae4fde672b9"
      },
      "digest": "d0aa87643eaff043cb672f7b8d7595e8bc3adc2bdad45f1c55ebc7bb8fe2f70b"
    },
    {
      "id": "ship/flashy-gold/b3bf7fcb84e7",
      "repo": "repo/flashy-gold",
      "at": "2026-08-21T17:01:49Z",
      "kind": "infra",
      "title": "Point settlement at flashynetwork.com, the settlement record's real home",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The Flashy Network property is live at flashynetwork.com — /ledger/, /proof/,\n/network.json, /llms.txt and /group.json all return 200 there. flashy.network\nserves an unrelated WordPress site (\"Flashy — The Culture Layer of the\nInternet\"), so every mesh pointer aimed at it was a 404 or a wrong-brand\nlanding.\n\nThe canonical on /settlement/ was the one that could cost real ranking: it\ndeclared https://flashy.network/ledger/ as the authoritative version of this\npage, and that URL 404ed. A canonical pointing at a missing page is how a page\ngets dropped from the index — the tag was doing the opposite of its job.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KxxGczxBxLF8qfXpcAW3rs",
      "refs": {
        "commit": "b3bf7fcb84e764f1215e25736bee5b7f9b167ed7"
      },
      "digest": "0c2ef9ff7167249683c3c1fe922ed2380b1aebcaf70cf2adc31d44b32f0e1a25"
    },
    {
      "id": "ship/flashy-gold/aa27471b29f4",
      "repo": "repo/flashy-gold",
      "at": "2026-08-20T22:07:04Z",
      "kind": "feature",
      "title": "Add tests for the machine surfaces, and fix what they caught",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "content.ts is the single source for /llms.txt, /gold.json, /sitemap.xml and\n/robots.txt, plus this property's identity on the FlashyOS mesh. Nothing\nrenders those to a screen, so a malformed edit fails silently: the page still\nbuilds, the crawler reads something wrong, and nobody finds out. This repo had\nno test runner at all.\n\nFourteen assertions covering structure and cross-surface consistency rather\nthan copy, so editing prose does not break the build.\n\nThey found a real disagreement on the first run. gold.json published\nplay-for-gold as live while the human-facing earning register said IN BUILD —\nagents read one, people read the other. Flashy Group lists Flashy Fun as LIVE\nand describes it as play-for-gold gaming, and the newsroom has Dig It past\n200,000 gold hunters, so live is correct and the register was stale. Also\npoints the verb at FLASHY FUN rather than the generic ALLIANCE SURFACES.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0198vyysGCrfdioK9uQr3kbs",
      "refs": {
        "commit": "aa27471b29f44bbfd47cf466a6e9b0ce8cb66d26"
      },
      "digest": "06865720815668a4abb042b761252352bc147da1519d31ddad6338e296091885"
    },
    {
      "id": "ship/flashy-gold/e9af83137746",
      "repo": "repo/flashy-gold",
      "at": "2026-08-14T21:49:46+00:00",
      "kind": "feature",
      "title": "Give settlement one canonical home, and it is not this one",
      "by": [
        "person/michael",
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "This site declared itself \"the canonical home for the unit and its settlement\".\nThat was correct when written and stops being correct the moment flashy.network\npublishes the record — two properties claiming settlement under a doctrine that\nsays one claim has one canonical home.\n\nThe line drawn here is unit versus record. This site owns the unit: what Flashy\nGold is, how it is earned, what it redeems for. flashy.network owns the record it\nsettles on: the ledger, its entries, the invariant, and whether any of it\nreconciles. Demand side and verification side.\n\n/settlement/ keeps its content — the conceptual lens on what settlement must be\nfor an agent mesh to work is a different question from whether ours does it — but\nits canonical tag now points at flashy.network/ledger/ so the two stop competing\nfor the same query.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01X8LDnsexvNjSkqc2ihZR7U",
      "refs": {
        "commit": "e9af83137746ea52bbb8799edac334addd7478fe"
      },
      "digest": "572dafc16a62e0b14714b09f104498eee0697e3c527bd4cf882417e0f69b6758"
    },
    {
      "id": "ship/flashy-gold/d14c823ea186",
      "repo": "repo/flashy-gold",
      "at": "2026-08-13T18:06:42+00:00",
      "kind": "infra",
      "title": "Carry the verifiable org identity now that the record is public",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The org is claimed, reporting, and opted into public visibility, so the\npublic endpoint resolves. gold.json carries the org id and number, llms.txt\ntells an agent reader exactly where to verify the claim without auth, and\n/machine/ links the record. The claim about being on the mesh is now\ncheckable by a stranger rather than asserted by the site.\n\nOrg id committed deliberately: it is a public identifier, every endpoint\ntaking one still demands a session or the bootstrap key, and Flashy Group\nalready publishes its own. The agent token stays the only deploy secret.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0198vyysGCrfdioK9uQr3kbs",
      "refs": {
        "commit": "d14c823ea18609d803f2c30f9e8d8ecbe5c4cc4a"
      },
      "digest": "1b1282f0c64af796fb1154ec14e46813273d1dcf1e3b1f41a3003d14d9be98fe"
    },
    {
      "id": "ship/flashy-gold/5b87cc13e270",
      "repo": "repo/flashy-gold",
      "at": "2026-08-13T18:04:00+00:00",
      "kind": "feature",
      "title": "State the mesh status instead of asserting it",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The section claimed this property \"runs as a connected organization on the\nFlashyOS agent mesh\" whether or not it does. isOnMesh was exported and never\nused, so the claim was true only once credentials reached the environment —\nand the page said it regardless.\n\nThat is exactly the thing this site does not do. The section now reads its own\nruntime state and uses the site's status vocabulary: LIVE — REPORTING once the\norg id and agent token are present, IN BUILD — REGISTERED, NOT YET REPORTING\nuntil then, with the reason stated plainly.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0198vyysGCrfdioK9uQr3kbs",
      "refs": {
        "commit": "5b87cc13e270aaafa71457b18544eb221f6c2393"
      },
      "digest": "5e5be8a4c3ae77494fd58b7caa5c19250c5277aac7afcb3c18178e340dd83905"
    },
    {
      "id": "ship/flashy-gold/9cb53de94857",
      "repo": "repo/flashy-gold",
      "at": "2026-08-13T17:53:54+00:00",
      "kind": "feature",
      "title": "Match the agent name the token was actually minted for",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "The API's verifyAgentToken checks token.agentName === agentName, so the\ndeclared name has to match the mint exactly. init minted for 'flashy-gold';\nthis file declared 'flashy-gold-ledger', which would have failed verification\nsilently rather than loudly.\n\nOrg cmsrtfvu30000zg6r8nh5fhkg, organization #11 on the network.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0198vyysGCrfdioK9uQr3kbs",
      "refs": {
        "commit": "9cb53de9485757704b3412da30bcbdb4dc1aebc4"
      },
      "digest": "0f2cff8bff845a3deba49988f6dd7e943cf1ca753ca697b057cb0d556570e57e"
    },
    {
      "id": "ship/flashy-gold/a0ed03930be5",
      "repo": "repo/flashy-gold",
      "at": "2026-08-13T16:33:48+00:00",
      "kind": "feature",
      "title": "Add CI",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "This repository had no build gate. Typecheck and production build now run on\nevery push and pull request.\n\nBoth were verified green before the workflow was written: tsc is clean and the\nbuild completes with no environment set, because every page is statically\nrendered and the only server route is the waitlist intake. When the asset API\nlands here it will need placeholder env vars and a test step; the workflow says\nso at the point where they go.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_019pUgSYP9uuYUPC3BJUmCxo",
      "refs": {
        "commit": "a0ed03930be502e57def8b2f1fec1360974ac585"
      },
      "digest": "3c851f18b2dc27416a819223d835e80a8755da1c0c25a90c05ca61491c918dc8"
    },
    {
      "id": "ship/flashy-gold/eb479fa66965",
      "repo": "repo/flashy-gold",
      "at": "2026-08-11T23:50:06+00:00",
      "kind": "feature",
      "title": "Build flashy.gold site from the v2 mockup",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Ports the mockup into a Next.js App Router site: 21 statically rendered\nroutes covering the thesis, how it works, Real World Value, the earning\nregister, alliance, developers, civilization, trust, support, press,\nstatus, FAQ, search, the four legal documents, and the machine surfaces.\n\nAll copy and data live in src/lib/content.ts so a status or clause is\nchanged once and every surface that mentions it follows, including\n/llms.txt, /gold.json and the sitemap. Status colour is derived from the\nstatus word rather than set by hand.\n\nThe redemption waitlist is a real form backed by /api/waitlist, which\nrefuses the submission when no list provider is configured rather than\nconfirming a signup it did not record.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_019pUgSYP9uuYUPC3BJUmCxo",
      "refs": {
        "commit": "eb479fa66965ed23e71c86d9ec5bb7a3abfb16ea"
      },
      "digest": "27a14abfc1d1135ec891cf61daf4a04e09c2b1067fcb37c46783a348ea05f66c"
    },
    {
      "id": "ship/flashy-gold/a792f19f9247",
      "repo": "repo/flashy-gold",
      "at": "2026-08-11T23:24:54+00:00",
      "kind": "infra",
      "title": "Initial commit",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/flashy-gold-ci",
      "visibility": "public",
      "detail": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_019pUgSYP9uuYUPC3BJUmCxo",
      "refs": {
        "commit": "a792f19f92475bc436ad19f0e7024df69fab70e3"
      },
      "digest": "bf1f113744d1ab6356e6f8b7da2019814f9387f6346897f60e6d825ebf62d5c7"
    }
  ]
}
