{
  "intent": "1",
  "backlog": "1",
  "source": "repo/flashyos",
  "org": "org/flashyos",
  "generated": "2026-10-15T09:29:10.354Z",
  "items": [
    {
      "id": "backlog/flashyos/archive-the-duplicate-repository",
      "rev": 2,
      "kind": "decision",
      "status": "open",
      "title": "Archive one of the two repositories holding the same codebase",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "agent/flashyos-bot",
      "asserted": "2026-08-31",
      "expires": "2026-09-30",
      "visibility": "public",
      "detail": "FlashyLabs/claimyour.gold and FlashyLabs/flashygoldams sit at the same commit; claimyour.gold carries both root histories and matches the live property. Until one is archived every control is applied twice, Dependabot opens every pull request twice, and a fix can land in one and not the other with nothing reporting the divergence.",
      "owner": "agent/claude-builder",
      "capabilitiesWanted": [
        "repo-administration"
      ],
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/conventional-commits",
      "rev": 2,
      "kind": "task",
      "status": "open",
      "title": "Adopt conventional commit prefixes across the estate",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "agent/flashyos-bot",
      "asserted": "2026-08-30",
      "expires": "2026-11-28",
      "visibility": "public",
      "detail": "42 of 81 entries in flashyos own shiplog land as 'other', which is the honest read of our commit hygiene and the signal the format is designed to give. Prefixes turn the changelog from a list into a changelog.",
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/deploy-behind-trunk",
      "rev": 2,
      "kind": "task",
      "status": "open",
      "title": "Three properties deploy from a branch behind their own trunk",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "agent/flashyos-bot",
      "asserted": "2026-08-31",
      "expires": "2026-11-29",
      "visibility": "public",
      "detail": "flashy-gold deploys 55 commits behind main, mlgblockchain 45, flashy-network 11 — each because the GitHub default names a claude/* scratch branch and Vercel takes its production branch from that default. Every one of those trunks already contains the branch it deploys, so correcting the pointer loses nothing. Measured by tools/estate-integration.mjs.",
      "owner": "agent/claude-builder",
      "capabilitiesWanted": [
        "repo-administration"
      ],
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/first-two-portcos",
      "rev": 2,
      "kind": "decision",
      "status": "open",
      "title": "Choose the two portfolio companies that adopt first",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "person/michael",
      "asserted": "2026-08-30",
      "expires": "2026-09-29",
      "visibility": "public",
      "detail": "They need a git history and a willingness to publish one file. The vendored emitters mean it costs each of them an afternoon rather than an integration.",
      "owner": "person/michael",
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/integration-gate-in-ci",
      "rev": 2,
      "kind": "task",
      "status": "open",
      "title": "Run the integration survey as a scheduled gate, not a command",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "agent/flashyos-bot",
      "asserted": "2026-08-31",
      "expires": "2026-11-29",
      "visibility": "public",
      "detail": "tools/estate-integration.mjs measures stranded work offline and tools/integration-floor.json records the ceiling, but it is a command somebody has to remember. The other half — whether a default branch is red, and for how long — needs the API and a token, and belongs in a scheduled workflow beside hygiene.yml that fails rather than skips when the secret is absent.",
      "owner": "agent/claude-builder",
      "capabilitiesWanted": [
        "ci-cd",
        "github-actions"
      ],
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/join-the-ends-in-the-api",
      "rev": 2,
      "kind": "task",
      "status": "open",
      "title": "Join the loop in the API: externalRef on RoadmapItem, digests as evidence",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "agent/flashyos-bot",
      "asserted": "2026-08-30",
      "expires": "2026-11-28",
      "visibility": "public",
      "detail": "One migration each. RoadmapItem.externalRef carries the backlog item id so a settlement can close it; InitiativeTask accepts a shipped/1 entry digest where evidenceUrl is accepted today.",
      "owner": "agent/claude-builder",
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/name-the-two-tenses",
      "rev": 2,
      "kind": "decision",
      "status": "open",
      "title": "Decide whether backlog/1 and shipped/1 keep the FlashyOS prefix",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "person/michael",
      "asserted": "2026-08-30",
      "expires": "2026-09-29",
      "visibility": "public",
      "detail": "Renaming a published profile identifier after adopters exist is expensive; renaming before is free. This is the decision that has to happen before any outside adoption.",
      "owner": "person/michael",
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/one-read-surface",
      "rev": 2,
      "kind": "task",
      "status": "open",
      "title": "One read surface: what is waiting on me, everywhere",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "agent/flashyos-bot",
      "asserted": "2026-08-30",
      "expires": "2026-11-28",
      "visibility": "public",
      "detail": "The estate calendar and the personal list, rendered from estate-backlog.json and estate-shiplog.json. One page, not a product.",
      "owner": "agent/claude-builder",
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/owner-durable-default-branch",
      "rev": 4,
      "kind": "task",
      "status": "done",
      "title": "Move the GitHub default branch off an agent’s scratch branch",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "person/michael",
      "asserted": "2026-09-07",
      "expires": "2026-12-06",
      "visibility": "public",
      "detail": "A repository whose default branch is a `claude/*` branch has no stable name for its own trunk, so `main` misleads every human and every tool that reads it — this estate’s own surveys included, until they were taught to ask. Only a repository admin can change the setting, and `scripts/default-branch.mjs` in flashy-infra refuses to flip one where the trunk is behind, which is the only way it could destroy anything.\n\nOutstanding in 6: fashion-st, flashy-labs, flashy-sdk, kopman-build, music-hub, personality-ai.\n\nDerived by tools/owner-queue.mjs. It closes itself when the measurement stops — nothing closes it by being ticked off.",
      "blocked": [
        "fashion-st",
        "flashy-labs",
        "flashy-sdk",
        "kopman-build",
        "music-hub",
        "personality-ai"
      ],
      "closed": "2026-09-15",
      "closedBy": "agent/flashyos-bot",
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/pick-one-mesh-check",
      "rev": 2,
      "kind": "decision",
      "status": "open",
      "title": "Pick one mesh check: the live-surface sweep or the conformance gate",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "agent/flashyos-bot",
      "asserted": "2026-08-31",
      "expires": "2026-09-30",
      "visibility": "public",
      "detail": "Two now exist. flashy-group/scripts/mesh-check.mjs fetches every property llms.txt on a schedule and files one issue; claude/dais-institutional-redesign-xdggrt gates mesh reporting on conformance across eight repositories and has been unmerged since 26 August. Merging both gives the estate two answers to one question, which is the failure the mesh rule exists to prevent.",
      "owner": "agent/claude-builder",
      "capabilitiesWanted": [
        "architecture-review"
      ],
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/promote-something-or-stop-serving",
      "rev": 2,
      "kind": "task",
      "status": "open",
      "title": "Promote an intention, or stop serving an empty backlog",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "agent/flashyos-bot",
      "asserted": "2026-08-31",
      "expires": "2026-11-29",
      "visibility": "public",
      "detail": "This property serves backlog/1 at a well-known path and every fetch of it returns an empty list, while 7 open item(s) sit in the repository unpromoted. The URL answers 200, so no fetcher, validator or uptime check will report it. Only a named human can promote — or the property should stop serving the file.",
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/promote-the-integration-record",
      "rev": 2,
      "kind": "decision",
      "status": "open",
      "title": "Promote the integration items, or stop serving an empty backlog",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "agent/flashyos-bot",
      "asserted": "2026-08-31",
      "expires": "2026-09-30",
      "visibility": "public",
      "detail": "These items are filed private, because filing writes private and only a named human may promote. That is the consent rule working as designed. It also means a stranger fetching the well-known backlog URL receives an empty list, which teaches every reader the format is decorative. The decision is per item and belongs to person/michael.",
      "owner": "agent/claude-builder",
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/publish-the-estate-shiplogs",
      "rev": 2,
      "kind": "decision",
      "status": "open",
      "title": "Decide which properties publish their shiplog publicly",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "person/michael",
      "asserted": "2026-08-30",
      "expires": "2026-09-29",
      "visibility": "public",
      "detail": "Every repository adopted with visibility: private, so nothing is published. Flipping one field per repo publishes that repository's shipping to anyone who asks. FlashyLabs repositories are private today, so this exposes commit subjects that are currently not public — which is why no agent made this call.",
      "owner": "person/michael",
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/rung-five-as-a-test",
      "rev": 3,
      "kind": "idea",
      "status": "done",
      "title": "Make the fifth readiness rung a real test in tools/",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "person/michael",
      "asserted": "2026-08-30",
      "expires": "2027-02-26",
      "visibility": "public",
      "detail": "A vendored, drift-tested emitter is carried by both tense packages but is not yet enforced. Two data points is a coincidence; the test is what makes it a rule. Worth doing once a third package needs it.",
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    },
    {
      "id": "backlog/flashyos/serve-well-known-estate",
      "rev": 2,
      "kind": "task",
      "status": "open",
      "title": "Serve the two well-known paths from every estate property",
      "source": {
        "repo": "repo/flashyos"
      },
      "assertedBy": "agent/flashyos-bot",
      "asserted": "2026-08-30",
      "expires": "2026-11-28",
      "visibility": "public",
      "detail": "Adoption writes the public projection into each property's served directory. gold-holdings additionally needs a vercel.json rewrite, because Vercel does not reliably serve a dot-directory from a static deployment.",
      "owner": "agent/claude-builder",
      "capabilitiesWanted": [
        "static-sites",
        "vercel"
      ],
      "promoted": {
        "at": "2026-09-08",
        "by": "person/michael"
      }
    }
  ]
}
