{
  "shipped": "1",
  "source": "repo/mlgblockchain",
  "org": "org/mlgblockchain",
  "generated": "2026-09-02T17:34:29.031Z",
  "entries": [
    {
      "id": "ship/mlgblockchain/8f8033811bd2",
      "repo": "repo/mlgblockchain",
      "at": "2026-09-02T17:34:11Z",
      "kind": "infra",
      "title": "Pin the hosting configuration where a machine reads it",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-02",
      "assertedBy": "agent/mlgblockchain-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": "8f8033811bd2a310d396adeea0c31a9d74a72525"
      },
      "digest": "360f756a6fd7a95efe7996111d5179be7ec62eeb8b74b3191aedf61d1fefdd90"
    },
    {
      "id": "ship/mlgblockchain/4589a528da8d",
      "repo": "repo/mlgblockchain",
      "at": "2026-09-02T16:22:56Z",
      "kind": "other",
      "title": "Re-vendor: the ship log learns ritual/1 before its first commit",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-02",
      "assertedBy": "agent/mlgblockchain-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": "4589a528da8d3ee898aa0f0d36bbb353e15d3f48"
      },
      "digest": "1360f9355815a0b9302b163300789f53b9d40e0a8381eceed4a7864c2c282022"
    },
    {
      "id": "ship/mlgblockchain/b0fd5c5094c2",
      "repo": "repo/mlgblockchain",
      "at": "2026-09-02T16:13:47Z",
      "kind": "feature",
      "title": "deploy/1: declare where this repository is hosted",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-02",
      "assertedBy": "agent/mlgblockchain-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": "b0fd5c5094c2ebd42e886f075ca42c03c527274e"
      },
      "digest": "b25694adf54bcfdcc9f6fbcf559be79401eb58016fe5b43b77e8949be9cc3c98"
    },
    {
      "id": "ship/mlgblockchain/43abcd760def",
      "repo": "repo/mlgblockchain",
      "at": "2026-09-01T21:11:00Z",
      "kind": "feature",
      "title": "Tell the estate the moment this repository pushes a record",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/mlgblockchain-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": "43abcd760defc910db50757984431d0b05283a6e"
      },
      "digest": "22c60fc2fad62ebddb594181370a387c72cdf9d7d7067477af4829e85d6a7026"
    },
    {
      "id": "ship/mlgblockchain/37ab8f315182",
      "repo": "repo/mlgblockchain",
      "at": "2026-09-01T19:20:02Z",
      "kind": "feature",
      "title": "Serve the backlog projection at /.well-known/intent.json too",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/mlgblockchain-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": "37ab8f31518252d911854e44438d8007145a91b0"
      },
      "digest": "33c236de385fd84143aae0a53b93abc45c9493941b29fce42957698df8fa8c19"
    },
    {
      "id": "ship/mlgblockchain/47eceb5cf569",
      "repo": "repo/mlgblockchain",
      "at": "2026-09-01T18:49:53Z",
      "kind": "feature",
      "title": "Activate: the Mesh Concierge on mlgblockchain.com",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/mlgblockchain-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 brass accent and the\ncharter's own named human, so a filing lands in this property's queue\nrather than a shared one. `/concierge` carries the slot and the panel\nrenders inline.\n\nThe page argues the door in this firm's own terms: we publish no\nrelationship we cannot evidence, and the same rule applies to intake. A\nform collects and files you somewhere; a door hands one sentence to one\naccountable person and does nothing else with it.\n\nFour tests. The served bundle is asserted to make no network call, keep\nno storage and load no third party — read from the copy a visitor's\nbrowser runs rather than from canon, because checking the source instead\nof the copy is exactly the mistake a vendored file makes easy. It is\npinned byte-identical to magician's build when that checkout is beside\nthis one, and reported unknown rather than current when it is not. The\ncontact is asserted to be the charter's accountableTo rather than an\naddress typed twice. And the accent is asserted to be a hex, because the\nwidget measures it against its own panel before using it as text and can\nonly do that for a colour 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": "47eceb5cf569b4e9e47537e66dbe68e2c2112a39"
      },
      "digest": "e97a9304f552527076ee94c1a769b310b6c66f7f5f2538587ae8cdcc81d9198a"
    },
    {
      "id": "ship/mlgblockchain/2deb737f692a",
      "repo": "repo/mlgblockchain",
      "at": "2026-09-01T18:00:40Z",
      "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/mlgblockchain-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": "2deb737f692a7cdcc069c8b7d6af80f652a9dfb8"
      },
      "digest": "7f41afd945c4f5b96082a338738f55d120d6408699d8a8a6a2706995b74c4e76"
    },
    {
      "id": "ship/mlgblockchain/891149802d18",
      "repo": "repo/mlgblockchain",
      "at": "2026-09-01T14:55:34Z",
      "kind": "feature",
      "title": "Give this repository's directory fragment a machine that refreshes it",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/mlgblockchain-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": "891149802d1871ecc24b45ce4e6529fd4801fe17"
      },
      "digest": "bb27c07c094cf8541ed13b4eb7fcc2d524482e41848d7c10f2667c4dd2bd939f"
    },
    {
      "id": "ship/mlgblockchain/909ae715c316",
      "repo": "repo/mlgblockchain",
      "at": "2026-09-01T14:37:50Z",
      "kind": "fix",
      "title": "Re-vendor check-directory.mjs: enforce what every edge type must carry",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/mlgblockchain-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": "909ae715c316092b6e4830ba741d1c686f45fceb"
      },
      "digest": "30c55e778cb09f2654b4b3e8d2138041ecf51d45a13cf4ca5a9416a472eb53fd"
    },
    {
      "id": "ship/mlgblockchain/326a3017ba35",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T20:57:48Z",
      "kind": "feature",
      "title": "backlog/1: close what no longer measures [skip ci]",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-09-01",
      "assertedBy": "agent/mlgblockchain-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": "326a3017ba353e57008967ccde7c0310315adc1d"
      },
      "digest": "8b28a0a8b69ee34dcd8f937abd14b523c177d2bf1064094b76b7529babd1e13f"
    },
    {
      "id": "ship/mlgblockchain/504634513fd1",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T20:54:17Z",
      "kind": "infra",
      "title": "Hold the attribution line: freeze what sealed, refuse what would seal next",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "504634513fd1cc5209efe4cecfc932c770c4e0c5"
      },
      "digest": "aafdfdbee8a371df2975579e700f4876ba88c2a3bfffbb790aa24b4d59756ed4"
    },
    {
      "id": "ship/mlgblockchain/25b0b5af5dd6",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T19:46:07Z",
      "kind": "fix",
      "title": "Re-vendor on the branch that actually ships [vercel skip]",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "25b0b5af5dd6072e788923dfd3635fe9195bf74c"
      },
      "digest": "519a38c654131857c108065b58cee67006d175d8aa2fece198c0f4f37c56a201"
    },
    {
      "id": "ship/mlgblockchain/ba9139d3aaac",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T16:41:10Z",
      "kind": "feature",
      "title": "Give a person the door the agents have had all along",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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.\n\nThe same fetch found this domain serving `app.flashyos.com/onboard`, which is\nthe dashboard's account flow and not the mesh's open door. The repository was\nfixed weeks ago; production is running a build from before that commit. That\nis a deploy setting nobody here can change, and it is the reason a test in\nthis repository cannot be the whole check: a test pins what ships from here,\nand only a fetch pins what the domain serves.\n\n`MESH_JOIN` is declared in `src/lib/site.ts` and read by both the handshake\nroute and the footer, so the two doors cannot drift into naming different\nURLs — which, on the live domain, is exactly what has happened.\n\nKind: feat",
      "refs": {
        "commit": "ba9139d3aaacef8ef07f1877f4a08c5b90dffb10"
      },
      "digest": "68d2abdcaebc4aa096b8cb746899dc90d7f83af1b3894630ebfa71c03d4a95d0"
    },
    {
      "id": "ship/mlgblockchain/6ed612584366",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T13:04:03Z",
      "kind": "feature",
      "title": "Declare the two machines that write this repository's record",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "6ed612584366d323d563389388d15ee2f2da8a6c"
      },
      "digest": "e14884680becee3a96d34e096ee86bf48b667e611e56d0ac66c621ec786d6a16"
    },
    {
      "id": "ship/mlgblockchain/580d63bab071",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T13:00:15Z",
      "kind": "other",
      "title": "Re-vendor the directory checker from the branch that ships",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "580d63bab071540eb7a11f5d339a2ee3ebbc42f3"
      },
      "digest": "f4b57072c5df8f2ca2981be87cfe8aebe0b0f4ab679c301444753e38e3c5cf94"
    },
    {
      "id": "ship/mlgblockchain/257daa6791ea",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T12:52:24Z",
      "kind": "infra",
      "title": "shipped/1: refresh the log, and the checkpoint over it",
      "by": [
        "agent/unattributed"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "refs": {
        "commit": "257daa6791ead78fd04c01220dc9895f7bd1999d"
      },
      "digest": "b5bd3f86714d24ffbdbfe3f37feb71647b56a251fd6dbf7ed5d85fe79f2bbd34"
    },
    {
      "id": "ship/mlgblockchain/80b8fc6f49f0",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T08:56:45-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/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Re-vendor the emitters from the branch that ships, not from a stale checkout",
      "refs": {
        "commit": "80b8fc6f49f0959ff21feed7c16dd2300a693ad7",
        "pr": "https://github.com/FlashyLabs/mlgblockchain/pull/3"
      },
      "digest": "d53bb8e2d9dfb7156c12076076c707b5aa9f6234b8ce1c49b9cc8c58344d3805"
    },
    {
      "id": "ship/mlgblockchain/e5dd2d5e1712",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T08:52:12-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/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Re-vendor the two emitters that had drifted",
      "refs": {
        "commit": "e5dd2d5e17124a9dae880fde7eade6ea4a8e7c92",
        "pr": "https://github.com/FlashyLabs/mlgblockchain/pull/2"
      },
      "digest": "1cf0d215dbcb0906c6098ce0fd1e17e7aa5644537677be2332b6c4ee5c576dad"
    },
    {
      "id": "ship/mlgblockchain/7e2a58935dc0",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T08:43:05-04:00",
      "kind": "feature",
      "title": "Merge pull request #1 from FlashyLabs/claude/gord-directory-spec-3jx7zk",
      "by": [
        "person/michael"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Bring the old default branch's work onto main",
      "refs": {
        "commit": "7e2a58935dc02ae4a9938247b6e9b97a054ab441",
        "pr": "https://github.com/FlashyLabs/mlgblockchain/pull/1"
      },
      "digest": "b810498719555c058288057a5af9b3d8fdfc54ee23646be475a5af8221918702"
    },
    {
      "id": "ship/mlgblockchain/551628d18a70",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T02:20:02Z",
      "kind": "other",
      "title": "Re-vendor the backlog emitter: it can revise an item now",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "551628d18a702d2083f8f23b92eeafa5b2f0db86"
      },
      "digest": "3f8b09487157cacfef2068725f39c280d556d72a60ac27a630dda0b62fabdee6"
    },
    {
      "id": "ship/mlgblockchain/2a1a766acb1e",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T01:46:46Z",
      "kind": "infra",
      "title": "shipped/1: refresh the log, and the checkpoint over it",
      "by": [
        "agent/unattributed"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "refs": {
        "commit": "2a1a766acb1ea1b760eb1c09a49ae76c7e6c3617"
      },
      "digest": "f8a7ed53212be31f083312245096634ca35cdd404164059b1394bfebead6fb62"
    },
    {
      "id": "ship/mlgblockchain/d4cef56d799c",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T01:45:10Z",
      "kind": "feature",
      "title": "Close the backlog items this repository has since fixed",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "d4cef56d799c498a1c57ba7eca73b84083569276"
      },
      "digest": "05859a6bd9268489362d3355a482fa86a01dbfa14372ac8400f5a6efd2498782"
    },
    {
      "id": "ship/mlgblockchain/54e1b4352683",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T01:37:50Z",
      "kind": "feature",
      "title": "Publish a directory/1 fragment, so this repository's signatures resolve",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "54e1b43526830a4b9ebaa966b5a14e8c93485575"
      },
      "digest": "16aa02da6644c8a508a46462f5697a3479e66572aef154e37f6db8c8cffc44b2"
    },
    {
      "id": "ship/mlgblockchain/2d02b47e6af1",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-31T01:00:55Z",
      "kind": "feature",
      "title": "File the gaps this repository can prove about itself",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "2d02b47e6af1b00dbf725b9ef899b04396886d42"
      },
      "digest": "34f843439654be32f9f6e68d1e22b5d561df4a1072fc61298e94049914639069"
    },
    {
      "id": "ship/mlgblockchain/d8d3473c540b",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T21:44:52Z",
      "kind": "infra",
      "title": "shipped/1: refresh the log, and the checkpoint over it",
      "by": [
        "agent/unattributed"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "refs": {
        "commit": "d8d3473c540b927352d919e6d897ae3e13266045"
      },
      "digest": "e0a2f1d052afbff5804c0081077afd63ba0a97a239db2592090ccc75a8cec388"
    },
    {
      "id": "ship/mlgblockchain/872a55ed40dc",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T21:44:18Z",
      "kind": "other",
      "title": "Lint this repository, which had a lint script and no linter",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "`\"lint\": \"next lint\"` has been in package.json since this repository was\nscaffolded, with no eslint config anywhere in the tree. The script existed, the\ncommand ran, and nothing was ever checked — which is worse than having no lint\nscript, because a `lint` script is the thing a reviewer looks at to decide\nwhether a repository lints.\n\nOne error on the first real run, in SiteHeader: the effect that closes every\nmenu on a route change trips `set-state-in-effect`. The rule is right about the\nmechanism and it costs one extra render per navigation. It carries a targeted\ndisable with that written beside it rather than a refactor, because the\nalternative is a behavioural change to the header of a live ~420-page site,\nmade by a linter rather than by anyone who wanted it, to save one render on an\naction that is already a page navigation. flashyos made the same call on the\nsame rule.\n\nKind: chore\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BEaXzktRU5ZPe3R2NY7CKD",
      "refs": {
        "commit": "872a55ed40dc4eff0016bfd82a03e266709c21aa"
      },
      "digest": "7359728447e85395747dad068ace5659267ef8a4f6c1aade5c9475fefc1c2183"
    },
    {
      "id": "ship/mlgblockchain/24e889ebe5f4",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T20:38:09Z",
      "kind": "feature",
      "title": "Match the licence to the register rather than to a guess",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-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": "24e889ebe5f468a3de143c9916d2e5b051a2ed39"
      },
      "digest": "22354b65043468a6f37ac2bd28b4e894d5814bde6aa41640a40049485bee876d"
    },
    {
      "id": "ship/mlgblockchain/392fda985b8a",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T20:37:05Z",
      "kind": "feature",
      "title": "Match the licence to the register rather than to a guess",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "392fda985b8a0c777661955fa3e51c93d1759f4f"
      },
      "digest": "cc0cf7ad7e179d6ef3da11ac64a753308732daafb082b8e011971b59820e1578"
    },
    {
      "id": "ship/mlgblockchain/a31f238b5448",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T19:45:16Z",
      "kind": "fix",
      "title": "Re-vendor the charter checker: it had drifted from the spec",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "a31f238b5448362975ee86d0801fce79bc1c230b"
      },
      "digest": "edfd3da91951c36e6200b10bdd14591a6f04db301344cfe86fc21226d22af784"
    },
    {
      "id": "ship/mlgblockchain/ec1193d49bcd",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T19:32:06Z",
      "kind": "docs",
      "title": "Carry the house rules, so an agent stops having to guess them",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-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": "ec1193d49bcd227ea6c1e5c1a4f824a547928f6d"
      },
      "digest": "c819b03b347ce06f92f6f34e7b78147cd26c372dbb3b50f5c43eccb62166f1aa"
    },
    {
      "id": "ship/mlgblockchain/c06303dd0aad",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T19:25:24Z",
      "kind": "other",
      "title": "Conformance from the package, not from a copy of its rules",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "tests/flashyos-charter.test.ts carried its own SPEC_KEYS, its own FAMILIES\nlist and its own 24-character role-name cap, all typed out from the spec. A\nvendored snapshot of a live source with nothing to notice when the two\ndiverge — the one failure mode this estate has a rule against.\n\nassertProperty applies the published rules and imports its constants from\n@flashyos/aao, so a family added to the spec arrives here on the next install\nrather than never. requireThresholds carries the old every-role-has-a-gate\nassertion.\n\nWhat remains is what is true of this practice and of no other org: the two\nirreversible roles held at CRITICAL, and the bijection between roles and the\nreal capability catalogue.\n\nKind: refactor",
      "refs": {
        "commit": "c06303dd0aad5fff8f9592919db88f3b1a7ad0f9"
      },
      "digest": "4070687d1aa91630268f50c3cc9dd8dc6e119db3e87423772fbdae07f091e4ba"
    },
    {
      "id": "ship/mlgblockchain/40ad66de9425",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T18:39:06Z",
      "kind": "feature",
      "title": "Merge: keep the nine-role charter, because the handshake already advertises nine",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "The one repository in this pass where I kept my branch's charter over the one\nanother session wrote on main, and the reason is checkable rather than a\npreference.\n\nThis site's handshake has folded over src/content/capabilities.ts since before\neither charter existed: nine capability slugs, one per service page. Their\ncharter declares three roles — delivery, engineering, inbound. Run the two\ntogether through auditProperty and every one of the nine advertised\ncapabilities comes back unanswered:\n\n  Advertises \"ai-transformation\" but no role answers for it\n  Advertises \"agent-infrastructure\" but no role answers for it\n  … and seven more\n\nThat is precisely the state a charter exists to fix — nine things advertised\nwith nobody named accountable for any of them. The nine-role version is\nbijective with the catalogue, and a test asserts the bijection in both\ndirections, so a tenth role would be a service nobody sells and a capability\nwith no role would be a page nobody answers for.\n\nTheir three roles are not wrong as a description of the practice. They are\njust not the thing this property already tells the network it does.\n\nTwo names stay shorter than their slug and carry the long form in\nx-capability: `smart-contract-engineering` and `product-design-engineering`\nare 26 characters against the spec's 24-character cap, and the URLs on a live\nsite do not move for a manifest's benefit.\n\nTypecheck clean, 43 tests, build green.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "40ad66de9425ff7b30a509057ed23bf523ef445d"
      },
      "digest": "859d3b080c3267b85b89d3d71799e472ae77728311eea4d75fb4c864d475b709"
    },
    {
      "id": "ship/mlgblockchain/2f0f08857266",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T18:19:18Z",
      "kind": "docs",
      "title": "Declare a licence: AGPL-3.0-only",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-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": "2f0f088572661eae14c4eba48315e9a831d3616a"
      },
      "digest": "bb98c835e0aa7c1765014e0c4e94183dd81a6b4b3c74e8a5842ea3418e998aeb"
    },
    {
      "id": "ship/mlgblockchain/3b4bbc1fd41c",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T17:59:33Z",
      "kind": "infra",
      "title": "shipped/1: refresh the log, and the checkpoint over it",
      "by": [
        "agent/unattributed"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "refs": {
        "commit": "3b4bbc1fd41c1e274e5c1e3c9a13fb94c7e4e2f7"
      },
      "digest": "4c69973c751dae06075412b3e836ebe88c63fec3fb6901359b97a2bfdfd9c2af"
    },
    {
      "id": "ship/mlgblockchain/5e8bb63c91dd",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T17:59:23Z",
      "kind": "fix",
      "title": "Carry the current vendored emitters",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-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": "5e8bb63c91dd64e60bafa9dc1c371313342a6dc4"
      },
      "digest": "1c985bc574c94b94a0196b9a924a79d22789366e1c5f23c70b024d3898bbcf7d"
    },
    {
      "id": "ship/mlgblockchain/a8de5f060ab2",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T17:39:46+00:00",
      "kind": "infra",
      "title": "shipped/1: refresh the log, and the checkpoint over it",
      "by": [
        "agent/unattributed"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "refs": {
        "commit": "a8de5f060ab212c9319533243cce394502eefb34"
      },
      "digest": "c83072106891247a12c790cce8f51d3d9092402e66fd0a562e7cc1d824803b48"
    },
    {
      "id": "ship/mlgblockchain/765fcaf08cbc",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T17:39:33Z",
      "kind": "fix",
      "title": "Fail loudly on a fragment that exists and cannot be parsed",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-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": "765fcaf08cbc630e4515c5f42eae424f8b5f43e2"
      },
      "digest": "b776c25422f9528ee1ac1a9a65df3e1c56af0e83a5557812de9a961ee56f6d81"
    },
    {
      "id": "ship/mlgblockchain/657f7e6db400",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T17:23:34Z",
      "kind": "other",
      "title": "Re-emit the log and its checkpoint after rebase",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Kind: chore",
      "refs": {
        "commit": "657f7e6db4005f2ed5071c31f481fd5600da65dc"
      },
      "digest": "66a6a06131299cbf9f3898ecad620f9aedbdb710ce09b32ed9e0f8b06872cf21"
    },
    {
      "id": "ship/mlgblockchain/857788f2b764",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T17:18:14+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/mlgblockchain-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": "857788f2b764a10eb8138f697323e7d88fe38a7a"
      },
      "digest": "54e42ede89b09d515ac18af4f4a28cdad5ce00d2ec19a40f3e9dffe581aaa858"
    },
    {
      "id": "ship/mlgblockchain/8e5ee047a457",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T17:02:44Z",
      "kind": "fix",
      "title": "Re-vendor the emitter, and publish this log",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-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": "8e5ee047a45770d925be010b4baeee3641f4fb24"
      },
      "digest": "729ff26c1b781f77c7f9e59e8c5088c06048a92ed01c6e5e661611c1eb6b93a4"
    },
    {
      "id": "ship/mlgblockchain/e6bc01f9260e",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T16:18:23+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/mlgblockchain-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": "e6bc01f9260e7388c00af3c37a91dfe673acf391"
      },
      "digest": "a77451fa99515e01f118a57e972325c416f9843f13967deb54f6d77880975e44"
    },
    {
      "id": "ship/mlgblockchain/01c9ba1315ef",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T15:46:16+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/mlgblockchain-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": "01c9ba1315eff5bb5cc1b5039c6596bd35cade0b"
      },
      "digest": "04651adab6ec3b39b8df9d93b2cfa65e2f1f400ec29e25f75976c987aa281135"
    },
    {
      "id": "ship/mlgblockchain/93c6325c46ea",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T13:21:50+00:00",
      "kind": "infra",
      "title": "Reclassify the log against the convention this estate writes in",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-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 38% 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": "93c6325c46eaf89d90b5780dbd065814a6d14103"
      },
      "digest": "0dd1d9ae2ff258ac87b045e961af2bad7407990c176b8340b443fe9c1c8c5864"
    },
    {
      "id": "ship/mlgblockchain/01d9e92e4672",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T05:47:13+00:00",
      "kind": "feature",
      "title": "Adopt backlog/1 and shipped/1",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-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 16 entries from this repository's own history, every seal\nrecomputed. Org org/mlgblockchain, 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": "01d9e92e467271207da8f0a3053e464b664c2b46"
      },
      "digest": "259c09d3510f432321f454250eaaba1254e3a1b243bc8b434060918ddee0071c"
    },
    {
      "id": "ship/mlgblockchain/66f1e1ef8d97",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T03:07:49Z",
      "kind": "feature",
      "title": "Advertise a way in a stranger can actually use",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "66f1e1ef8d970173450aedffcaa325d06dc1e40e"
      },
      "digest": "198be99c3b746c38d5aa8c8821c4e26858cd7cbff194b2c54094e9ae34be88e8"
    },
    {
      "id": "ship/mlgblockchain/aa8e1d45b450",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T02:26:32Z",
      "kind": "infra",
      "title": "Point the front door at the ladder's new home",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "aa8e1d45b450d6d67c6ad9d90d15a0d189118db8"
      },
      "digest": "0e33a0fa9987845eaa57c5832a52c93ba19073a2f0ca0ed2df72add5bc9df944"
    },
    {
      "id": "ship/mlgblockchain/9b16dffb6ae9",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T01:34:52Z",
      "kind": "feature",
      "title": "Serve the directory fragment, which this property was not doing",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "9b16dffb6ae9b027c1fed7d4d610dc0ffaf5d37d"
      },
      "digest": "ef77ac9d1cade6eae8196d31e160c367ff00d8e7e4fde4c05391f9790e6417da"
    },
    {
      "id": "ship/mlgblockchain/d27f245156f0",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T00:18:59Z",
      "kind": "feature",
      "title": "Serve the charter, which this property was not doing",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "d27f245156f0463f78c6c7bcf5b872af96235a29"
      },
      "digest": "e459191caf6afaef3f8d8d27c5a18190029a9694bbce752ad226d10ca63a7104"
    },
    {
      "id": "ship/mlgblockchain/a1b86bdbee1a",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-30T00:14:29Z",
      "kind": "feature",
      "title": "Publish a front door (frontdoor/1)",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "a1b86bdbee1a6d1a9ba15de720805cd2fb82fd2d"
      },
      "digest": "69669c9ee0e5fee2ab14d252be502042865583a4a075a3480f704676e72276a0"
    },
    {
      "id": "ship/mlgblockchain/e6efb89915c3",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-28T00:29:55Z",
      "kind": "feature",
      "title": "Merge the mesh handshake into main",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "e6efb89915c39ce5e01ea2eeb4f90761b3cf8285"
      },
      "digest": "f73a5b20ca23a075fbbb52299085221d9705d79f5387dbbfc00cc42463240507"
    },
    {
      "id": "ship/mlgblockchain/fa35ffd83dcf",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-26T19:29:20Z",
      "kind": "feature",
      "title": "Publish one disclosure route, and volunteer the gaps",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "fa35ffd83dcf01d97c9f6a19eaeec1a83e2450bd"
      },
      "digest": "0868d8044e6f28bedfed4143344829401099652de0ccee4a655207c529d3157d"
    },
    {
      "id": "ship/mlgblockchain/2b111c91bee5",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-26T19:23:17Z",
      "kind": "infra",
      "title": "Update dependencies on a schedule, grouped so the queue stays readable",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-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": "2b111c91bee57544a9bedf99c64ef579d6723b7d"
      },
      "digest": "1b8b99fa9740f90c27c42caef979b023f89dc503dbfbf5cc2f837c8122b2f3d4"
    },
    {
      "id": "ship/mlgblockchain/1045e898a4cf",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-26T04:56:05Z",
      "kind": "other",
      "title": "vitest resolves the @ alias — the glossary-integrity gate was red on main",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "tsconfig defines @/* → src/* but vitest.config.ts never mirrored it, so\ntests/glossary-integrity.test.ts failed collection (\"Cannot find package\n'@/content/capabilities'\") and CI has been red: 16 ring-consistency tests\npassing, the entire integrity suite collecting zero. One resolve.alias\nline, same pattern flashy-gold and flashy-network already carry.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "1045e898a4cf035058e9c45c0a62c6311807cf7c"
      },
      "digest": "5f6946bc09064350944b9c4d36d09d78dd704d343b0fdc8bc54eaf2286663777"
    },
    {
      "id": "ship/mlgblockchain/40cc92596713",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-25T17:55:41Z",
      "kind": "other",
      "title": "Glossary integrity suite",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Five structural tests over the DefinedTermSet: unique slugs and terms,\nnearby references resolving, usedIn hrefs registered as real routes,\nevery seeAlsoInGroup deferring off-site over https, and the five-term\nstack canon present under the agents tag.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "40cc9259671344394816dd814baac93d472d0b18"
      },
      "digest": "3a28f41ff0bce7593b16af9c8e08b263438aac76c1e74e8c54253da1279660c6"
    },
    {
      "id": "ship/mlgblockchain/667e3fa46d18",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-25T17:28:06Z",
      "kind": "other",
      "title": "Two build-lens terms: agent execution protocol and infrastructure",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Each with the failure modes that cause it and what good looks like,\nwired into the existing agents cluster and deferring to the FlashyOS\noperator definitions.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "667e3fa46d18f76e160ae8836b8e8d63ab4e8677"
      },
      "digest": "13ffbe32aee2b35fb45fe94bbf6776e3efe52ad0d13b1757890128a5f6d1a0f8"
    },
    {
      "id": "ship/mlgblockchain/5645b185d0db",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-25T17:13:34Z",
      "kind": "other",
      "title": "Three build-lens terms: the stack, its settlement layer, and the problem",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "The Agentic Autonomous Operating Stack, the cross-organizational\nsettlement and reputation layer, and the enterprise agent risk and\nclearing problem enter the glossary in this repo's voice — each with\nthe causes-of-failure and what-good-looks-like registers the set uses,\nnearby links into the existing settlement/authority vocabulary, and\nseeAlsoInGroup pointing up to the canonical homes (gda.group for the\ndefinitions, flashynetwork.com for the live layer) per the term\ncontract in this file's header.\n\nTypecheck, build, 16 tests green.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "5645b185d0dbcead3d499b24f70030e96f57d020"
      },
      "digest": "c7850cb6c9e07250f1c92273665328751212d93411c672b87588715124999a4d"
    },
    {
      "id": "ship/mlgblockchain/1c137984a176",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-25T16:48:11Z",
      "kind": "other",
      "title": "Case study: books anyone can audit, rules anyone can fork",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-31",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "The technical telling of the AAO Stack build-out, on the protocol\nproperty per the Stack and the Story council: the open Apache-2.0\nledger rules (append-only, integer minor units, hash-chained), sealed\ncanonical settlements frozen at resolution, and the auditor shipped as\na public npm package pinned byte-identical to the sealing code. Links\nto the canonical study on gda.group through the affiliate line and\ncarries the related-party disclosure like every study here.\n\nTypecheck, build, and 16 tests green on next 16.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01VgrPGGUFKMq9zXBHnfcTgs",
      "refs": {
        "commit": "1c137984a176dc9b67839d19240034546dbba086"
      },
      "digest": "b30e2e79b0b2d6b60f44f0a168cb12f091cd04bc1cc79f071026eaceaaaa52ef"
    },
    {
      "id": "ship/mlgblockchain/6c09e5e0fe13",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-21T18:08:04+00:00",
      "kind": "feature",
      "title": "Add Vercel Analytics",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Imported from @vercel/analytics/next rather than /react — the Next subpath\nhooks this app's router, so client-side navigations between routes are counted\ninstead of only the first server-rendered load. On a site that is mostly\ninternal navigation across 45 answer pages and an 86-term glossary, the /react\nbuild would undercount nearly everything after the entry page.\n\nVersion 2.x here, but 1.6.1 in flashy-network. Not an oversight: 2.x declares a\npeerOptional on vite@^8, which this repo satisfies through vitest@4 and\nflashy-network does not (vitest@2, vite@5). Each is pinned to what resolves\nagainst its own tree with a plain `npm ci`, which is what Vercel runs.\n\nVerified: tsc clean, 16/16 tests pass, next build compiles.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KxxGczxBxLF8qfXpcAW3rs",
      "refs": {
        "commit": "6c09e5e0fe1330be2200c7c5e30bc14c3003739a"
      },
      "digest": "4b5d86aa4a0e6abf40ff5ad105b8710dd8638808997b62b08fda5d80fb23dcd6"
    },
    {
      "id": "ship/mlgblockchain/0edf40c53b83",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-20T13:15:07+00:00",
      "kind": "other",
      "title": "Answers to 45, weighted to the two under-served audiences (R-8)",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "The corpus had drifted to 29 Enterprise pages against 2 Government and\n2 Developer — while the mesh audit named Government the highest-value,\nlowest-competition cluster in the group, on the grounds that almost\nnothing across the properties speaks in a procurement register. This\nwave corrects the balance rather than adding more of what was already\nthere: both now sit at 8.\n\nGovernment: evaluating vendor security claims, what belongs in an RFP,\nrunning a proof of concept that produces a decision, accountability for\nautomated action on a citizen's record, procuring open-source-based\ninfrastructure, and issuing verifiable credentials.\n\nDeveloper: idempotent credit and debit paths, reliable event indexing,\ntesting a contract system before mainnet, what key rotation actually\ninvolves, ledger-to-ERP integration, and what running a node in\nproduction commits you to.\n\nReference integrity verified across every relatedTerms, relatedCapability\nand readNext target; tsc, tests and full build clean.",
      "refs": {
        "commit": "0edf40c53b83fc7bb23d86038ba34789ca325bed"
      },
      "digest": "87798b6191f6732f3fa24406cf08ce710eb3bcb5e7d39f97c8f636b3849419cb"
    },
    {
      "id": "ship/mlgblockchain/9151e7333c2d",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-20T02:08:05+00:00",
      "kind": "feature",
      "title": "Ship the jurisdiction cluster: six regulator-named answer pages (R-6)",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "The geography strategy from board paper v8.0 §5c, executed: VARA/Dubai,\nMiCA/EU, MAS/Singapore, IFSCA/GIFT City, the Swiss DLT framework, and\nADGM-vs-DIFC — each answering what the regime changes in the BUILD, with\nthe legal question explicitly deferred to counsel and the remote-first\ndelivery model stated plainly. Every page cross-links the matching\ngda.group location page, closing another strand of the group spiderweb.\n\nThe India page and the government industry page gain the practice's\nverified public-sector record: helping establish the Kerala Blockchain\nAcademy (2017) with the Government of Kerala's IIITM-K and the\nBlockchain Education Network — India's first state-backed blockchain\nacademy, 33,500+ candidates trained across 66+ countries, per KBA's own\npublished figures and contemporaneous coverage (CoinDesk, The News\nMinute).\n\n33 answer pages total. Owner waived the D-W gate; regulator facts are\nkept minimal and verifiable, and the cluster joins the February 2027\nreview cadence. tsc, tests, and full build verified.",
      "refs": {
        "commit": "9151e7333c2da1fe63803af814841bfad91f93c0"
      },
      "digest": "799ce9a2770dd8881af07329bcbc5fdc363218201daa87dfdb604b2581631b63"
    },
    {
      "id": "ship/mlgblockchain/bbb34f71c3a1",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-20T02:03:46+00:00",
      "kind": "other",
      "title": "Install vitest and run the test suite in CI",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "The ring-consistency test landed referencing vitest without the\ndependency, which would have failed the new CI gate's type check on its\nfirst run. vitest installed, a test script added, and the CI workflow\nnow runs it between type check and build. 16 tests pass.",
      "refs": {
        "commit": "bbb34f71c3a11d240217053cd2de44f4d3f136fe"
      },
      "digest": "824cfba4737431439a25e47695b0d2f88181131b6e778e38858fe29e76e4c7ae"
    },
    {
      "id": "ship/mlgblockchain/1d94b0d19c90",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-20T02:02:09+00:00",
      "kind": "feature",
      "title": "Add a CI gate: type check and production build on every push",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "The last web property in the group without CI. Same\ngreen-before-deploy discipline as the siblings.",
      "refs": {
        "commit": "1d94b0d19c90beaa859c21d9abab2c524b189cbd"
      },
      "digest": "6e671f7409cb613dbca484f5e147af51806fa7f7a5af049edcaf6004a8837549"
    },
    {
      "id": "ship/mlgblockchain/ae345607cfca",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-19T20:17:19+00:00",
      "kind": "other",
      "title": "Glossary to 86 terms (v10.0 R-8, second growth batch)",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Thirty-six terms, same sourcing rule as the first batch: vocabulary the\nsite already uses undefined — the proposer-committer split, decision\nevidence and policy versioning behind the agent answers; the licensing\nvocabulary (white-label licence, support obligation, source escrow,\ndisclosed origin); the publishing discipline itself (stated direction,\nstatus vocabulary, canonical home, term contract, machine surface, ring\nmanifest); the procurement set (security questionnaire, control\nenvironment, data residency, subprocessor register); and the operational\nset (on-call rota, runbook, post-mortem, daily reconciliation close,\nsettlement instruction, trade capture, exception workflow, bridge trust\nmodel, fee market exposure, and more).\n\nReference integrity verified (no duplicate slugs, every nearby link\nresolves, every usedIn href is a real route); tsc and full build clean.",
      "refs": {
        "commit": "ae345607cfca0735e346faa4aa2501cc9156e053"
      },
      "digest": "d05c6ce1683a080a2d7f5b6004ab75d043bb6b0069165ff6c629cacfc97da34c"
    },
    {
      "id": "ship/mlgblockchain/c5f2a2e44b86",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-19T18:23:37+00:00",
      "kind": "other",
      "title": "Complete the institutional machine surfaces (board paper v9.0, E-1)",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "The group-wide mesh audit found five gaps on this site's own surfaces,\nall closed here:\n\n- llms.txt gains the \"## The group\" section every sibling property\n  publishes — eight ring entries with machine-surface pointers, so a\n  crawler landing here can reconstruct the group without leaving.\n- group.json's ring gains ClaimYour.Gold: a named case-study affiliate\n  was missing from the manifest that vouches for it.\n- The answers index now carries FAQPage JSON-LD over the twelve\n  highest-intent questions (capped deliberately — an exhaustive list\n  reads as markup stuffing); detail pages keep their QAPage markup.\n- WebSite + SearchAction schema against the real /search page.\n- /faq, /faqs and /glossary now 301 to their canonical surfaces, so the\n  institutional keywords resolve without adding a duplicate page (D-Z).\n- Organization sameAs corrected to profile-page semantics: it now points\n  at the gord.holdings portfolio entry about this firm, not at sister\n  companies' homepages — the group edge is parentOrganization's job.\n\nVerified: tsc, full build, and a runtime pass confirming both redirects,\nboth new schema blocks, the group section, and the ring entry.",
      "refs": {
        "commit": "c5f2a2e44b86eb178be57236e7d73c1020a03126"
      },
      "digest": "ba418b596f008b478273b1114bbf504e220c2d9762359c274de06160576f8e48"
    },
    {
      "id": "ship/mlgblockchain/dc03ef35251c",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-18T19:55:14+00:00",
      "kind": "feature",
      "title": "Add Next.js's auto-generated agent-rules files",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Written by next dev itself; its own note says committing keeps the\ntree clean rather than re-diffing on every future dev run.",
      "refs": {
        "commit": "dc03ef35251c4cce986750889536f1ade868c427"
      },
      "digest": "7fd6db3997dff1ae10066b3c0dc1ef02ef313cf956326cf9d5a0e9136161d4bd"
    },
    {
      "id": "ship/mlgblockchain/73f3ddb57c9b",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-18T19:53:55+00:00",
      "kind": "feature",
      "title": "Ship the next content wave from board papers v7.0/v8.0: 15 answer pages, 20 glossary terms",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Executes the tickets those papers marked ready-now, with no gate outstanding:\n\n- v7.0 B-1 / v8.0 Cluster 4: twelve sector-crossed procurement answer\n  pages, one per industry, each built from that industry's own already-\n  published constraint rather than a new evidence claim — so none of it\n  reopens D-R, which still gates sector-specific delivery-evidence pages.\n- v7.0 B-5: three category-level comparison pages (white-label vs.\n  build in-house, managed services vs. in-house node operations,\n  permissioned vs. public chain). No competitor is named — the line\n  that ticket was gated on.\n- v7.0 B-3: twenty glossary terms (30 -> 50), sourced from vocabulary\n  already used in shipped copy rather than invented for the glossary.\n  Continues toward the 250-term target; not the full jump in one pass.\n\nDeliberately not touched: sector-specific mesh pages (gated on D-R, a\nreal Phase 1 engagement), jurisdiction/compliance content (gated on\nD-W, a named legal reviewer), and the locations-page delivery list\n(gated on a real engagement to list). All still open per v7.0 §5.\n\nVerified: tsc --noEmit, a full reference-integrity pass (every\nrelatedCapability/relatedPlatform/relatedTerms/nearby slug resolves,\nno duplicate slugs), `next build`, and a Playwright pass across every\nnew route in both themes plus a 320px reflow check — no console\nerrors, no 404s.",
      "refs": {
        "commit": "73f3ddb57c9bfe32fc0de15e516b081356af6e56"
      },
      "digest": "ce3f60c59198c5e8814c591cdfccaa67836820ae0a25c03816fe9dec4f249dde"
    },
    {
      "id": "ship/mlgblockchain/f7c87ef60379",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-18T19:43:28+00:00",
      "kind": "other",
      "title": "Elevate Trust & Procurement to a primary nav section and footer column",
      "by": [
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Trust, security, certifications, data processing, vulnerability\ndisclosure, business continuity, procurement and alliances were reachable\nonly through a single buried \"Trust centre\" link. Enterprise and\ngovernment buyers look for this as a first-class nav item, so it now gets\nits own mega-menu section and its own footer column — the pattern used by\nevery enterprise B2B site this practice is trying to read as one of.\n\nRemoved the resulting duplicate links from Platforms→Evaluate and Who We\nAre→Governance so each destination has one clear home in the nav. Added\nSupplier conduct to the footer legal bar, where it was previously\nunlinked from any surface.",
      "refs": {
        "commit": "f7c87ef60379155e31e8a0ade25fece8ed1cf8b4"
      },
      "digest": "c8d31b3738e4bf071885853b795e2e411a073b9841f7797d23fc081e136f86af"
    },
    {
      "id": "ship/mlgblockchain/622608745197",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-18T18:18:46+00:00",
      "kind": "infra",
      "title": "Wire answers and case studies into nav/search/sitemap; add a favicon",
      "by": [
        "person/michael",
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "- Nav: Answers under What We Think / What We Do; Case studies under\n  Our Work — mega-menu and footer both.\n- routes.ts, search-index.ts: case studies and the 12 answer pages are\n  now indexed, searchable, and included in the XML/HTML sitemaps and\n  llms.txt (which builds from the same route list, so it picked up the\n  new \"Answers\" group automatically).\n- Glossary term contract, on-page (§K-2): custody-design and\n  agent-coordination now link up to GDA Group's broader market-framing\n  entries rather than leaving the reader to infer the boundary.\n- Sector cross-links (§K-4): 11 of 12 industry pages now link to the\n  matching GDA Group sector page for the capital-side coverage of the\n  same ground. Government & public sector is the deliberate omission —\n  no real GDA sector match exists, and a forced one would be worse than\n  none.\n- The site never had a favicon; browsers were silently 404ing on\n  /favicon.ico every load. Added one (hand-built ICO, no image library\n  available) plus an SVG app icon in the practice's mark.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KxxGczxBxLF8qfXpcAW3rs",
      "refs": {
        "commit": "62260874519754b2f0e87022baa347c5bec6633c"
      },
      "digest": "e0b4842e2935851e2072e55a52dbd1bb1554125ce2091dd3d6d5629e9f6fada7"
    },
    {
      "id": "ship/mlgblockchain/b14ea11864e7",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-18T17:50:08+00:00",
      "kind": "infra",
      "title": "Split case studies from white-label; add build-lens answer pages",
      "by": [
        "person/michael",
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Case studies vs. white-label (§1 of the follow-up audit):\n\n- The platform catalogue no longer names which group affiliate a capability\n  also powers. Eight \"licensed from X\" tags are gone from identity, engagement,\n  messaging, wallet, swaps, bridges, rewards and learning — those pages now\n  describe the capability as MLG's own engineering, full stop.\n- The evidence that used to live inline now lives in six case studies under\n  /our-work/case-studies, each naming the affiliate and carrying the\n  related-party disclosure at body weight — a case study's whole purpose is\n  to be checkable, so the naming belongs there rather than on a sales page.\n- FlashyOS keeps its disclosure on the agent coordination runtime page,\n  because that product IS the integration of FlashyOS — a different case\n  from reselling a sister property's own IP as MLG's white-label catalogue.\n\nAgent mesh / enterprise-government content (the explicit ask):\n\n- 12 answer pages under /answers, split Enterprise / Government / Developer:\n  how to integrate an agent mesh network, what changes for government\n  procurement and audit, mesh vs. a single agent, what integration costs,\n  how to evaluate a vendor, ledger-or-database, build-vs-buy, token register\n  construction, production operating cost, and three white-label capability\n  questions. Every page opens with a direct, quotable answer.\n- None of these compete with GDA's capital-lens \"what is X\" pages — each\n  that touches a GDA-owned term (agent mesh network) links up to GDA's\n  definition rather than redefining it, consistent with the term contract.\n\nFlashyOS distribution-arm roadmap (stated direction, not a signed agreement):\n\n- Added to the agent-infrastructure capability page, /firm/ecosystem, and\n  group.json's new roadmap[] field, each labelled explicitly as a direction\n  under consideration rather than a formalised partnership.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KxxGczxBxLF8qf",
      "refs": {
        "commit": "b14ea11864e76e782443b3a5672188ece6c1b1bc"
      },
      "digest": "4e366a3309ecf9bd26f758d757ff1a63ec7e0ba94ccc31b476fbb64bd605c4e8"
    },
    {
      "id": "ship/mlgblockchain/c8860ad0d614",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-18T16:09:50+00:00",
      "kind": "infra",
      "title": "Remove verification scripts from the working tree",
      "by": [
        "person/michael",
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Ad-hoc Playwright drivers used to check rendering, fonts and the 320px\nreflow. They served their purpose in review and are not part of the site.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KxxGczxBxLF8qfXpcAW3rs",
      "refs": {
        "commit": "c8860ad0d6147e6958b99692b4773c1cb0eb6a14"
      },
      "digest": "4a634cc883b10808516a3449cab88581842756753c9ac77839d1a76311544169"
    },
    {
      "id": "ship/mlgblockchain/a885e924b3c2",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-18T15:50:59+00:00",
      "kind": "other",
      "title": "Self-host fonts, join the group mesh, and publish the white-label catalogue",
      "by": [
        "person/michael",
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Fonts are now served from /fonts rather than Google, generated by a committed\nscript. The build no longer depends on Google being reachable, and the cookie\npolicy's claim that this site contacts no third party is now literally true —\nit was not before.\n\nMesh alignment, from an audit of the sibling repositories:\n\n- flashy.group corrected to flashygroup.com throughout. The mesh's own machine\n  surfaces never use flashy.group, so every link we published to it was a\n  dangling edge.\n- Added /group.json, the ring manifest every other property publishes and this\n  one did not. Without it MLG is invisible to the mesh: an agent reading the\n  group's surfaces finds MLG only in a biography and a realised-exit note.\n- The term contract is now machine-readable, declaring the build-side terms\n  this property owns and deferring capital-markets and agent-economy families\n  to gda.group and flashygroup.com.\n\nWhite-label licensing is now the catalogue the third business needs: six\nproducts backed by software that exists in the group's estate — identity,\nengagement and social, Telegram surfaces, the wallet service, swaps and\nredemption, and settlement — alongside the eight legacy slots. Every entry\ncarries a build status in the group's own vocabulary (LIVE / IN BUILD /\nIN DESIGN / NORTH STAR) plus the evidence for it, so a status is auditable\nrather than asserted. Bridges ship as NORTH STAR with an empty white-label\ncolumn, because there is no bridge to license.\n\nFlashyOS status assertions now defer to flashyos.com. The group's documents\ndisagree — FLASHY_CHARTER.md says proof of concept, FLASHY_VISION.md and\nFlashy Group's property data say LIVE — and restating either would put this\nsite in contradiction with a sibling property.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KxxGczxBxLF8qfXpcAW3rs",
      "refs": {
        "commit": "a885e924b3c2aeb2efec333f6722307d1768fc9e"
      },
      "digest": "09750538f3ca8fe6a952c8cb58bea5e899b87c053c10f80e00410d1c2995e598"
    },
    {
      "id": "ship/mlgblockchain/6addb03284f6",
      "repo": "repo/mlgblockchain",
      "at": "2026-08-18T04:20:02+00:00",
      "kind": "feature",
      "title": "Build mlgblockchain.com from the mockup set and board papers",
      "by": [
        "person/michael",
        "agent/claude"
      ],
      "asserted": "2026-08-30",
      "assertedBy": "agent/mlgblockchain-ci",
      "visibility": "public",
      "detail": "Implements the architecture from the two board papers rather than the\nfifteen-screen mockup set alone: five noun-labelled sections over a\ncapability × industry matrix, a platform catalogue for the licensing\nbusiness, and the encyclopedia — plus the launch-blocking page families\nthe readiness audit identified as stopping enterprise signature.\n\n116 pages prerender at build. Content lives in src/content/; pages hold no\ncopy inline, so the matrix, mega-menu, search index, sitemaps and llms.txt\nall follow from the same data.\n\nCarries the guardrails from §9 as code rather than as convention:\n\n- One disclosure string plus two composed variants, so the related-party\n  wording cannot drift between the pages that must carry it.\n- Engagements render their permission state; unpermissioned entries are\n  labelled, not hidden.\n- Intersection pages generate only where the work is evidenced.\n- Recognition, alliances and client results ship empty with the reason\n  stated; /trust/gaps lists what is unfinished.\n- Retired token-era URLs redirect to the history page, which describes\n  those services in the past tense.\n- The enquiry route returns 503 when delivery is unconfigured rather than\n  reporting success for mail it did not send.\n\nVerified in a browser: skip link is the first tab stop, the mega-menu\nopens on focus and closes on Escape, prefers-reduced-motion is honoured,\nand all 17 audited routes reflow at 320px with correct heading order.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KxxGczxBxLF8qfXpcAW3rs",
      "refs": {
        "commit": "6addb03284f69dad09a5cb60beacaf3f836e3c29"
      },
      "digest": "e9e9e2df6f2e878032d4fcb869c05ae312c7a8f843e0616a6dfc92b4bee646b3"
    }
  ]
}
