{
  "$schema": "folio-bean-index/v1",
  "tile": {
    "beans": {
      "count": 132,
      "unit": "open beans"
    }
  },
  "repoWeb": "https://github.com/litlfred/folio-assistant",
  "fileWeb": "https://github.com/litlfred/folio-assistant",
  "fileRef": "cat/cat-harness/beans",
  "items": [
    {
      "id": "folio-assistant-015u",
      "title": "The fixed '▾ Folio' handle covers page titles and content",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:13Z",
      "updatedAt": "2026-09-24T17:45:58Z",
      "preview": "The Folio glass handle is fixed at the top and overlaps each page's heading, and at 390 px the glass's own first controls. Reserve space for it, or move it out of the reading flow.\n\nObserved on: `external-schemas`, `folio`, `library`, `navbar`, `tools` (see each `cat-harness/docs/wireframes/<kind>/intent.md`). Per-page detail is in each visualiser's task under the epic.\n\n## Done when\n\n- [x] No pag",
      "file": "beans/defs/folio-assistant-015u--the-fixed-folio-handle-covers-page-titles-and-cont.md"
    },
    {
      "id": "folio-assistant-03nl",
      "title": "MERGE-MAIN NOTIFICATION HYGIENE: one bad matrix member reds the whole run, and an unchanged failure re-notifies on every push to main",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T05:52:09Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "## Brief\n\n**What and why.** The owner is being emailed *\"Merge main into opted-in PRs /\nmerge:main into PR (1958) — Failed in 6 minutes and 18 seconds\"* many times a\nday. `merge-main.yml` fires on every push to `main` (many per hour) and runs one\nmatrix member per opted-in PR; a single member's failure makes the whole run\n`failure`, and GitHub emails the run. Run `37179860536` failed on exactly on",
      "file": "beans/defs/folio-assistant-03nl--merge-main-notification-hygiene-one-bad-matrix-mem.md"
    },
    {
      "id": "folio-assistant-065p",
      "title": "SWEEP TRAP: a stale local `main` ref makes every branch look like it carries unmerged beans",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T15:48:01Z",
      "updatedAt": "2026-09-27T08:27:57Z",
      "preview": "Found 2026-09-25 during a `/goal-review` sweep, by axis 4's own instruction —\n*\"Items that exist only on a branch … Sweep the open branches' stores too, or\nthe review is blind to the largest workstream.\"*\n\n## The trap\n\nThe natural way to write that comparison is the way the skill's prose implies:\n\n```sh\ngit diff --name-only --diff-filter=A main..origin/<branch> -- beans/defs/\n```\n\nIn this containe",
      "file": "beans/defs/folio-assistant-065p--sweep-trap-a-stale-local-main-ref-makes-every-bran.md"
    },
    {
      "id": "folio-assistant-06e3",
      "title": "docs-auto: a handler at cat-harness/docs-auto/<auto-doc-type>/<path> that derives documentation for a sub-graph — and the authoring rule that the author must summarise what it indexes",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T20:54:07Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Owner, 2026-09-20 (session_014HGPQoUnzXGqSspA8x6YyD), in three messages.\n\n## 1. The handler\n\n> in cat-harness needs to be harness/handler at `cat-harness/docs-auto/<auto-doc-type>/<path>`\n> defined. which will auto-generate extracatable documentation at `<path>` sub-graph.\n> extracablle = bpmn, tasks, glossary, etc. ther is a glosarry bean... this could\n> clarify it lives at `cat-harness/docs-auto",
      "file": "beans/defs/folio-assistant-06e3--docs-auto-a-handler-at-cat-harnessdocs-autoauto-do.md"
    },
    {
      "id": "folio-assistant-073f",
      "title": "KG-JSONLD STAGING: each <stub> stages its JSON-LD on cat/<harness>/kg-jsonld; CI gates it; the gated branch publishes to the CDN (bootstrap-first walk, failed subgraph skips its cone)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T21:42:43Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "Owner, 2026-10-02, verbatim: \"i think we also need cat-kg-jsonld in which all of the json(ld) is staged before being published. right now. it is a bit adhoc. bootstrap-tools writes to bootstrap's gh-pages direcrtly i thinkj..... instead (whoever is doing the rendering of the KG):\n* the writer puts <stub>'s new/incremental updates to the json(ld) KG in the <stub>'a cat-kg-json-ld branch\n* the CI ch",
      "file": "beans/defs/folio-assistant-073f--kg-jsonld-staging-each-stub-stages-its-json-ld-on.md"
    },
    {
      "id": "folio-assistant-08u4",
      "title": "SURVIVAL PATH: every referenced IRIS node resolves by Handle, with a liveness check and a snapshot pointer",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-kupb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:01:44Z",
      "updatedAt": "2026-09-30T08:26:13Z",
      "preview": "From the `v048` roast, objections 6 + 7. Placed under `kupb` by the owner, 2026-09-24.\n\n**Measured:** every catalogue node id is a DSpace UUID or a path, and every upstream URL is `iris.who.int/…`. `hdl.handle.net` occurs **0** times in `who-iris/catalogue`, against `iris-dspace.md` R1: *\"Resolve by **Handle** where one exists… only the Handle is guaranteed outside WHO\"*. No step in `sample-import",
      "file": "beans/defs/folio-assistant-08u4--survival-path-every-referenced-iris-node-resolves.md"
    },
    {
      "id": "folio-assistant-0b8c",
      "title": "Derived artefacts with a branch-kept input are built at publish, never committed (fsh-guts viewer first)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-nama",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T18:49:32Z",
      "updatedAt": "2026-10-06T06:14:10Z",
      "preview": "Owner, 2026-10-05: *\"how to fix process so wont fail? update process/skills\"*, then option 1 (build at publish), and *\"use dependencies between KG derivations and such (caches, auto-docs, etc)\"*.\n\n## Failure\nThe committed page `cat-harness/docs/fsh-guts/index.md` is derived from `fsh-guts/`, which is stored on `cat/cat-harness/fsh-guts` (keyedBy tip) and moves without a main commit. bean rva2's st",
      "file": "beans/defs/folio-assistant-0b8c--derived-artefacts-with-a-branch-kept-input-are-bui.md"
    },
    {
      "id": "folio-assistant-0dav",
      "title": "QA READERS F2b: the eleven self-sidecar gates compute and judge; audit-coverage stops reporting a moved kind as empty",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:47:13Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Arc `3fva`, from reader audit `gxvk` (`cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md`, family F2b). Refines `oqe3` 3.1c and part of 3.1a. As of 2026-10-06 this is not blocked on `16ei`: it completed (qa-store landed; CI publishes `main/` and `pr/` entries and the prune runs on schedule), so the block is withdrawn. Its write-in-check fixes to `skill-register.ts` and `check-harness-state",
      "file": "beans/defs/folio-assistant-0dav--qa-readers-f2b-the-eleven-self-sidecar-gates-compu.md"
    },
    {
      "id": "folio-assistant-0fua",
      "title": "Long flat lists with no search or filter",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:14Z",
      "updatedAt": "2026-09-30T16:48:12Z",
      "preview": "Pages of 46 to 240+ rows are one flat list with no search, filter or grouping, so finding an entry means scrolling tens of thousands of pixels on a phone. Add a filter and grouping in the shared list component.\n\nObserved on: `glossary`, `processes`, `skills-index`, `tools` (see each `cat-harness/docs/wireframes/<kind>/intent.md`). Per-page detail is in each visualiser's task under the epic.\n\n## Re",
      "file": "beans/defs/folio-assistant-0fua--long-flat-lists-with-no-search-or-filter.md"
    },
    {
      "id": "folio-assistant-0g7s",
      "title": "processes visualiser: 7 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/processes/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **\"Searchable\" in the H1, but the page has no search or filter control.** The only search is the site-wide theme search. Finding one of 68 processes means scr",
      "file": "beans/defs/folio-assistant-0g7s--processes-visualiser-7-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-0hi8",
      "title": "DEPLOY: a local HTTP server that serves a rendering with its declared media types",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:55:36Z",
      "updatedAt": "2026-10-09T14:40:00Z",
      "preview": "From [#363](https://github.com/litlfred/folio-assistant/issues/363): \"no github,\nlocal git only. tools (several options) to run lightweight server locally for\nskill of hosting content (using mime time data whch github tool cant)\" and\n\"github on private repo so gh-pages not avaialbe. use local server skill.\"\n\n## This hole is already documented, deliberately\n\n`skills/ui/ui-core/serving-renderings.md",
      "file": "beans/defs/folio-assistant-0hi8--deploy-a-local-http-server-that-serves-a-rendering.md"
    },
    {
      "id": "folio-assistant-0ipy",
      "title": "AGENTIC SE LITERATURE: five papers on agentic code review, adversarial debate and agent routing — ingest, analyse within and across, and attack folio-assistant with them",
      "status": "completed",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:15:14Z",
      "updatedAt": "2026-10-12T18:26:29Z",
      "preview": "placeholder",
      "file": "beans/defs/folio-assistant-0ipy--agentic-se-literature-five-papers-on-agentic-code.md"
    },
    {
      "id": "folio-assistant-0js9",
      "title": "INGEST + METHODOLOGY: five subject-indexing papers (SemEval-2025 Task 5 x3, LCSH agentic pipeline, LCSHBench)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T19:46:16Z",
      "updatedAt": "2026-09-26T12:13:49Z",
      "preview": "Ingest five open-access subject-indexing papers into `cat-harness/library/`, and adopt the methodology they support. The platform library holds only sources a methodology cites (`library-ref.test.ts`), so the ingest and the methodology nodes have to land together.\n\n## The five sources\n\n| bib-slug | paper | role |\n|---|---|---|\n| `arxiv-2605.03537v1` | Chow, skill-based agentic pipeline for LCSH in",
      "file": "beans/defs/folio-assistant-0js9--ingest-methodology-five-subject-indexing-papers-se.md"
    },
    {
      "id": "folio-assistant-0jtl",
      "title": "SKILLS: a review package in folio-assistant-core — large-document-review, review-heatmap, review-navigation, learned from WHO SOPs and inspection practice",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T21:02:55Z",
      "updatedAt": "2026-10-10T16:40:53Z",
      "preview": "Owner: *\"review ... skills for document review for large things like a DAK or\nL1 digital transofrmation hadbook\"* and *\"put into folio-assistant-core\"*.\n\n**What.** A `review` skill package at `folio-assistant-core/skills/review/`,\ndeclared in folio-assistant-core.json:\n- `large-document-review`: the method. Slice the document by the folio/\n  graph, not by page. Assign slices to reviewer roles by s",
      "file": "beans/defs/folio-assistant-0jtl--skills-a-review-package-in-folio-assistant-core-la.md"
    },
    {
      "id": "folio-assistant-0kbt",
      "title": "gen-docs-pages publishes a QA count that includes the witness files it deletes in the same run",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T09:39:59Z",
      "updatedAt": "2026-10-07T11:50:39Z",
      "preview": "The `qa` tile and `assets/qa/index.json` are projected BEFORE the orphan sweep removes witness files whose section no longer exists, so one run after a section is renamed or removed publishes a count that includes a file that run itself deleted.\n\nMEASURED on the #1898 branch, 2026-10-04, while bean `vqlp` was being fixed. A section `the-basic-flow` was added, generated (writing `witnesses/document",
      "file": "beans/defs/folio-assistant-0kbt--gen-docs-pages-publishes-a-qa-count-that-includes-.md"
    },
    {
      "id": "folio-assistant-0lde",
      "title": "L1 EVIDENCE: ingest the external evidence an L1 guideline computes from (PICO question sets, Cochrane/WHO systematic reviews, GRADE profiles)",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-qvxh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T10:13:24Z",
      "updatedAt": "2026-10-04T10:13:24Z",
      "preview": "Owner, 2026-10-01 (qvxh): smart-L1 is 'fully computable from smart-base assets (and maybe some other things like PICO, cochrane, etc)'. Owner, 2026-10-04 (qvxh option 1): name what is not yet a graph rather than fake one.\n\nFour l1-guideline sections (key-questions, evidence-retrieval-and-synthesis, certainty-of-evidence, evidence-to-decision) are computed from evidence smart-base has not ingested.",
      "file": "beans/defs/folio-assistant-0lde--l1-evidence-ingest-the-external-evidence-an-l1-gui.md"
    },
    {
      "id": "folio-assistant-0lj4",
      "title": "UNDECLARED SIBLING: cat-harness imports 20x from bootstrap-tools, which it does not declare needing — and four checks all report clean",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T11:15:58Z",
      "updatedAt": "2026-10-08T08:05:00Z",
      "preview": "`cat-harness/` imports **20 times** from `bootstrap-tools/`, an instance it does\n**not declare needing** — and **four separate checks all report clean.**\n\nFound 2026-09-30 while a sibling agent was planning the `adapters/` closure. It\nflagged the relation as *undetermined* and said it could not find what treats\nthe two as one layer; this bean is that question answered.\n\n## The declarations\n\n```\nca",
      "file": "beans/defs/folio-assistant-0lj4--undeclared-sibling-cat-harness-imports-20x-from-bo.md"
    },
    {
      "id": "folio-assistant-0lmb",
      "title": "CONTENT MODEL: block kinds, adapters and the authoring surface",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-npuo",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:43:44Z",
      "updatedAt": "2026-10-04T15:12:16Z",
      "preview": "The block kinds and adapters an author actually writes against.\n\n`55ao` is the one with the largest blast radius — a real `recommendation` kind\nmeans a builder, a Zod schema, a label prefix, viewer registration, constraint\nrows and QA criteria, about thirty files — and it is tracked rather than\nhalf-done for exactly that reason. `cz17` brings the DAK type in properly.\n\n`6xaz` and `bqrg` are the au",
      "file": "beans/defs/folio-assistant-0lmb--content-model-block-kinds-adapters-and-the-authori.md"
    },
    {
      "id": "folio-assistant-0mf0",
      "title": "S2 merge treadmill: land merge:main (#1754) and regen-in-CI on the merge result (d33q part B)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:14:33Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "G4. Main moves ~every 3 min; a merge->regen->CI cycle is ~22 min; three handovers stalled on it.\n\n## Done when\n- [x] #1754 merged  — 2026-10-01T17:24:57Z\n- [x] d33q part B: CI regenerates on the merge result  — merge-main.yml (#1820, #1834), green on main\n- [x] median PR-green -> merged measured before and after  — measured 2026-10-06: green→merged median 2.2→5.7 min (not faster); merged-while-red",
      "file": "beans/defs/folio-assistant-0mf0--s2-merge-treadmill-land-mergemain-1754-and-regen-i.md"
    },
    {
      "id": "folio-assistant-0mpw",
      "title": "Remote mount of a harness: declared directory with a remote source, defaults in the harness's own declaration",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-fnx4",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T17:55:54Z",
      "updatedAt": "2026-10-23T14:13:00Z",
      "preview": "Owner ruling 2026-10-06 (this session): replace submodule linking (e.g. litlfred/smart-ra has folio-assistant as a submodule) with a REMOTE MOUNT. Not .deps/ (dot-dir; collides with GitHub conventions and our own dot-prefix guard).\n\n## Design (option 1, amended by the owner)\n- A remote mount is a DECLARED DIRECTORY with a new SubgraphSource member, e.g. source: {remote: {repository, ref: <40-char ",
      "file": "beans/defs/folio-assistant-0mpw--remote-mount-of-a-harness-declared-directory-with.md"
    },
    {
      "id": "folio-assistant-0qjq",
      "title": "MERGE-MAIN APPROVAL STALL — CORRECTED: already handled by design; the only gap is `stage`, deliberately preview-only, and the real fix is #1829 D1",
      "status": "scrapped",
      "type": "bug",
      "priority": "low",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-9f05"
      ],
      "createdAt": "2026-10-02T14:10:55Z",
      "updatedAt": "2026-10-16T06:30:00Z",
      "preview": "## This bean was filed on a false premise — corrected 2026-10-02\n\n**I filed it without reading `merge-main.yml` first.** That is the error worth\nrecording, because everything the first version \"discovered\" is written in that\nfile, measured on the same day, with its reason and its fix.\n\nThe step is **\"Have CI judge the merge commit\"**:\n\n> Every GATING workflow, so each judges the merge commit: a bo",
      "file": "beans/defs/folio-assistant-0qjq--merge-main-approval-stall-the-bots-push-creates-ac.md"
    },
    {
      "id": "folio-assistant-0r7u",
      "title": "CONTENT SPLIT 2026-10-06: authoring, review and publication to folio-assistant-core; methods stay in cat-harness — before seeding and before GOAL 5 resumes",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T06:42:34Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Owner, 2026-10-06, verbatim: *\"do content split propoerly across repos\"*, *\"that needs to be done before F\"*, and *\"not a race to separate.   do it properly.\"* Placement rule: *\"folio-asst-core focused on content authroiung, review pubilcation.   cat-harness on SDLC, tooling, decision making, general methdologies, basic common infra/state mgmt\"*.\n\nStory `rfuq` (S4, direction and placement) owns th",
      "file": "beans/defs/folio-assistant-0r7u--content-split-2026-10-06-authoring-review-and-publ.md"
    },
    {
      "id": "folio-assistant-0s6w",
      "title": "MERGE VERIFICATION: reading merge-tree's rc through a command substitution reports the WRONG exit status, and it reads as clean",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T02:07:04Z",
      "updatedAt": "2026-10-04T06:03:36Z",
      "preview": "A merge steward verifies mergeability with `git merge-tree --write-tree` and reads the exit\ncode: **rc=0 clean, rc=1 CONFLICT, rc>=2 an ERROR that is not clean**. On 2026-10-03 that\nread was wrong for a whole session, in one specific shell form, and it reported **clean**.\n\n## The defect\n\n```sh\ngit merge-tree --write-tree origin/main \"$sha\" >/dev/null 2>&1\necho \"merge-tree rc=$?\"                   ",
      "file": "beans/defs/folio-assistant-0s6w--merge-verification-reading-merge-trees-rc-through.md"
    },
    {
      "id": "folio-assistant-0tg5",
      "title": "STATE BRANCH P4: bean gates run on push to 'state'; harness-dirs, audit:coverage, kg:audit read the storage field",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:58:10Z",
      "updatedAt": "2026-10-09T07:45:00Z",
      "preview": "Nine bean gates in code-quality-gates.yml move to a state-branch workflow. A gate that cannot fetch the branch reports unknown, never a pass.\n\n## Done when\n- [x] state-branch workflow with the bean gates\n- [x] check:harness-dirs / audit:coverage / kg:audit read storage\n\nProposal: cat-harness/docs/proposals/state-branch-2026-10-02.md\n\n## Measured 2026-10-04 (PR #2052): what the mount covers, and th",
      "file": "beans/defs/folio-assistant-0tg5--state-branch-p4-bean-gates-run-on-push-to-state-ha.md"
    },
    {
      "id": "folio-assistant-0utt",
      "title": "PRODUCER: kg-export.bootstrap.qa-results.json is read by check:published-instance-exports but produced by no workflow",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T09:30:19Z",
      "updatedAt": "2026-10-01T18:34:24Z",
      "preview": "Found by the r7v6 agent (C2 fix, 2026-10-01). The C2 gate now actually compares the committed `cat-harness/test/results/kg-export.bootstrap.qa-results.json` with a fresh re-export. On its first run it found the file stale (different producer hash, untagged modules 0→3), and the file was refreshed by hand in `ba1908fa`.\n\n**Owner ruling 2026-10-01:** keep the file and add a producer. Do not delete i",
      "file": "beans/defs/folio-assistant-0utt--producer-kg-exportbootstrapqa-resultsjson-is-read.md"
    },
    {
      "id": "folio-assistant-0uu2",
      "title": "DECLARATION GAP: every top-level directory is a declared subgraph — the split, and the headline count was wrong three ways",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:58:39Z",
      "updatedAt": "2026-09-24T06:22:01Z",
      "preview": "Owner, 2026-09-23: 'bootstrap/ should be its own subgraph.... in fact QA: in harness `<stub>/*.*` should be a subgraph.' The FIRST half only — which top-level directories are undeclared, and what each should become. The reference-direction half is a sibling session's.\n\nDeliverable is a SPLIT (declare / fold / remove / already-declared / not-mine), not a sweep. Implement only what the owner picks.\n",
      "file": "beans/defs/folio-assistant-0uu2--declaration-gap-every-top-level-directory-is-a-dec.md"
    },
    {
      "id": "folio-assistant-0w7q",
      "title": "VIEWER RAIL: avatar header, per-visualiser section, drop redundant ☰/[x], QA flags (#1757)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-p5wm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T07:25:35Z",
      "updatedAt": "2026-10-04T19:56:18Z",
      "preview": "Owner report 2026-10-01, issue #1757 (session_01Cw8JgZEDT5VqQ5ergjdMjB).\n\n## Done when\n- [x] rail header is the instance avatar or initial, clickable pin toggle; ☰ and [x] removed (rail + Jekyll footer)\n- [x] NavbarModel carries a per-visualiser section, open by default; Graphs collapsed when present\n- [x] ~~/todos/ visualiser section: todos grouped by attached KG node~~ — **struck by the owner, 2",
      "file": "beans/defs/folio-assistant-0w7q--viewer-rail-avatar-header-per-visualiser-section-d.md"
    },
    {
      "id": "folio-assistant-0xfe",
      "title": "GATE RED ON MAIN: 25 published translations carry no `.po` catalogue, compounding across three merges",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T06:44:45Z",
      "updatedAt": "2026-09-26T06:47:24Z",
      "preview": "`translation-drift`'s ratchet test — \"no NEW drift, and nothing unreadable\" —\nwas failing on `main`: 25 published translations served with no `.po` catalogue\nand no entry in `UNCATALOGED`.\n\n**Fixed on `main` by #1364, not by this bean.** Closed on evidence rather than\nauthorship, per `bean-coordination` §\"Closing a bean whose work has already\nlanded\" — the evidence is re-derived below rather than ",
      "file": "beans/defs/folio-assistant-0xfe--gate-red-on-main-25-published-translations-carry-n.md"
    },
    {
      "id": "folio-assistant-0ytk",
      "title": "CODE LISTS: closed sets of codes as SKOS nodes, each code with a definition and a source",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T19:29:49Z",
      "updatedAt": "2026-09-25T16:37:09Z",
      "preview": "Owner, 2026-09-23, on the adjudication answers bean bvuk had written into diagrams as bare strings: \"we need an expandable option, not just declared in code. list of codes and corresponding narrative desc and source should be part of a node/asset. can we use existing tools for new Skills?\" Chosen: all of adjudication answers, JSON-LD namespaces (2j09), our own namespaces; published through the exi",
      "file": "beans/defs/folio-assistant-0ytk--code-lists-closed-sets-of-codes-as-skos-nodes-each.md"
    },
    {
      "id": "folio-assistant-10uc",
      "title": "RENDERED SURFACE: navbar, visualisers, stickies — GOAL 2's stream, moved under GOAL 4 at GOAL 2's sign-off",
      "status": "in-progress",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T18:09:11Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "## What this is\n\nStream 2 of 3 in the 2026-09-22 consolidation (see the sibling claims under\n`vuip` and `yg29` for the stall measurement that prompted it). It owns **GOAL 2\n(`p5wm`) — 39 open beans**, the largest single group in the store.\n\nThis is the stream where the artefact a reader judges actually appears: the LHS\nnavbar, the visualisers, the stickies, avatars and themes.\n\n## What this stream",
      "file": "beans/defs/folio-assistant-10uc--stream-23-goal-2-the-rendered-surface-navbar-visua.md"
    },
    {
      "id": "folio-assistant-129h",
      "title": "Merge refused: #2080 owed CI not green on its head",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-3fva",
      "blocking": [
        "folio-assistant-5hox"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:42Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "PR #2080, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_HeadNotGreen: conflict declared, own CI missing-required.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2080.json`, status `waiting-on-author`): Owner-ap",
      "file": "beans/defs/folio-assistant-129h--merge-refused-2080-owed-ci-not-green-on-its-head.md"
    },
    {
      "id": "folio-assistant-12s9",
      "title": "PREFIX = DECLARING SUBGRAPH: rename the folio: BPMN prefix and folio-*/v1 schema ids to the path of the Subgraph that declares them (owner ruling iwtn #1)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-88mg",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:03:10Z",
      "updatedAt": "2026-09-24T18:02:28Z",
      "preview": "## Owner ruling, 2026-09-23 (bean iwtn, ruling 1 of 4)\n\n> use `<sub>:` as prefix when assets are declared/instantiated in `<sub>`. what patterns for sub-sub-graphs? `<path>:<in>:<graph>:` or so?\n\nA nested Subgraph uses its **path of Subgraph ids joined with dots**. XML forbids a colon inside a prefix, so `a:b:c:` cannot be used. The owner chose this pattern on 2026-09-23 over \"Harness name only\" a",
      "file": "beans/defs/folio-assistant-12s9--prefix-declaring-subgraph-rename-the-folio-bpmn-pr.md"
    },
    {
      "id": "folio-assistant-12ws",
      "title": "ONE NAME, TWO MEANINGS: check-l1-complete declares a local instanceRootFor that contradicts the exported one",
      "status": "completed",
      "type": "task",
      "priority": "low",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T07:36:38Z",
      "updatedAt": "2026-10-07T06:34:00Z",
      "preview": "FOUND 2026-09-21 while sweeping `a6kl`.\n\n`cat-harness/schemas/cat-harness.ts:2495` exports:\n\n    /** {@link findInstanceRoot}, throwing rather than returning `undefined`. */\n    export function instanceRootFor(start: string): string\n\n`cat-harness/scripts/check-l1-complete.ts:718` declares its own:\n\n    export function instanceRootFor(cwd: string): string | undefined\n\nThey are genuinely different f",
      "file": "beans/defs/folio-assistant-12ws--one-name-two-meanings-check-l1-complete-declares-a.md"
    },
    {
      "id": "folio-assistant-1335",
      "title": "DAK block kinds into smart-base: a harness contributes its content adapter and block kinds to core (dak-blocks.ts, DAK entries of block-kinds.ts)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-n3ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T17:45:13Z",
      "updatedAt": "2026-10-02T15:26:21Z",
      "preview": "Split off stage D (bean kg83) of the smart-* separation (#1767), owner 2026-10-01: 'Split: move 2 now, bean the rest'.\n\nStage D moved dak.ts and dak-content-type.ts (and their tests) into smart-base/schemas/. dak-blocks.ts could NOT follow, measured 2026-10-01: core's own content model knows DAK —\n- cat-harness/schemas/block-kinds.ts: CONTENT_ADAPTERS = ['paper', 'dak'], DAK_BLOCK_KINDS, DAK_COMPO",
      "file": "beans/defs/folio-assistant-1335--dak-block-kinds-into-smart-base-a-harness-contribu.md"
    },
    {
      "id": "folio-assistant-14ve",
      "title": "REGEN NOT A FIXPOINT: bun run cat regen asks each check once, so a check asked before its input's writer runs reports current and stays stale",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T23:42:28Z",
      "updatedAt": "2026-10-08T05:42:00Z",
      "preview": "Measured 2026-09-29 on claude/sharp-einstein-970n6g (PR #1511), after merging main:\n\n- `bun run cat regen` pass 1: \"58 current, 4 regenerated, 0 unrepaired\", exit 0.\n- `navbar:include:check` still failed, and so did `gen-navbar-include.test.ts` (\"the writer is a fixpoint over the real data\").\n- Cause: the navbar include is generated from `cat-harness/docs/_data/harness.json`, which `docs:harness` ",
      "file": "beans/defs/folio-assistant-14ve--regen-not-a-fixpoint-bun-run-regen-asks-each-check.md"
    },
    {
      "id": "folio-assistant-16ei",
      "title": "qa-store: one read/write API for QA results, qa:fetch / qa:publish, ContentDirectory.storage, CI publish and a prune that fires",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-3fva",
      "blocking": [
        "folio-assistant-2ae2",
        "folio-assistant-c8uq",
        "folio-assistant-cxcn",
        "folio-assistant-d6bw",
        "folio-assistant-id4s"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:00:46Z",
      "updatedAt": "2026-10-06T06:09:21Z",
      "preview": "Arc `3fva`, proposal §2.2–2.4 and §4 Phase 2. Blocked on the SPIKE bean. Serial, one agent: everything else depends on this.\n\n- `qa-store` module:\n  - `readQa(ref, path)` returns hit / miss / corrupt / unknown, and a miss is never read as clean;\n  - `publishQa(ref)` follows the lake-cache write path, with fetch → rebuild-on-tip → push, 3 attempts and `backoff-sleep.ts`, and never `-f`.\n- `bun run ",
      "file": "beans/defs/folio-assistant-16ei--qa-store-one-readwrite-api-for-qa-results-qafetch.md"
    },
    {
      "id": "folio-assistant-18p1",
      "title": "EXPORT test-plan/v1 → FHIR R5 TestPlan in fhir-harness, once SMART Guidelines IG content is complete",
      "status": "draft",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-ygzh"
      ],
      "createdAt": "2026-10-01T09:12:25Z",
      "updatedAt": "2026-10-01T09:12:25Z",
      "preview": "Owner, 2026-10-01: *\"https://www.hl7.org/fhir/testplan.html is a downstream target in fhir context … we should be able to map to fhir test plan when we have full smart guidelines IG content.\"*\n\n## What\n`test-plan/v1` (platform, `cat-harness/schemas/test-plan.ts`, bean `ygzh`) stays FHIR-free. In the FHIR context a SMART Guidelines IG gets its test plans **exported as FHIR TestPlan resources**:\n- `",
      "file": "beans/defs/folio-assistant-18p1--export-test-planv1-fhir-r5-testplan-in-fhir-harnes.md"
    },
    {
      "id": "folio-assistant-1948",
      "title": "SHA-pin GitHub Actions workflows: required on main and publish, unpinned on staging",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-ieum",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T22:03:25Z",
      "updatedAt": "2026-10-08T03:00:00Z",
      "preview": "## Landed evidence\n- Completed as part of epic `folio-assistant-ieum` on main (PR #2504).\n- SHA-pinning required on main and publish workflows, verified on origin/main.",
      "file": "beans/defs/folio-assistant-1948--sha-pin-github-actions-workflows-required-on-main.md"
    },
    {
      "id": "folio-assistant-197s",
      "title": "Dependabot cannot run Bun here: 'could not run Bun … configuration error' on #908, and the npm ecosystem never touches bun.lock",
      "status": "todo",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T16:58:15Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Measured 2026-09-26.\n\n## What happened\n\n- At 15:26Z dependabot commented on #908: *\"Dependabot could not run Bun to update your dependencies due to a configuration error.\"* That came about 13 minutes after #1407 put the same bumps on main.\n- **This is not evidence of a defect in our config.** The same message appeared on 25–26 Sep across many unrelated repos with different setups. Examples: [bun-c",
      "file": "beans/defs/folio-assistant-197s--dependabot-cannot-run-bun-here-could-not-run-bun-c.md"
    },
    {
      "id": "folio-assistant-19wc",
      "title": "Skill pr-description: a PR body a first-time reader can follow",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T15:59:38Z",
      "updatedAt": "2026-10-02T20:46:38Z",
      "preview": "Owner, 2026-10-02 (on litlfred/fhir-ig-publisher#8): *\"PR should be readable for human for first time. what probelm trying to address, why, how approached, constratins, soltion... ...usage\"* and *\"make that a general skill when writing/updating PRs. see existing skills/processes\"*. Issue #1879.\n\n## Done when\n- [ ] cat-harness/skills/sdlc/sdlc-core/pr-description.md written and registered (skill:re",
      "file": "beans/defs/folio-assistant-19wc--skill-pr-description-a-pr-body-a-first-time-reader.md"
    },
    {
      "id": "folio-assistant-1acg",
      "title": "check:head-has-run counts an action_required run as RAN — a run that never executed satisfies 'the gates fired'",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T00:15:20Z",
      "updatedAt": "2026-10-03T01:21:22Z",
      "preview": "## The defect, in one line\n\n`ranAs` matches a run on **name and event** and never reads its `conclusion`:\n\n```ts\nfunction ranAs(runs: RunRow[], t: WorkflowTrigger, event: string): boolean {\n  return runs.some((r) => r.name === t.name && r.event === event);\n}\n```\n\n`RunRow` already carries `conclusion`. The data was in hand and not consulted.\n\nA `pull_request` run that completes **`action_required`*",
      "file": "beans/defs/folio-assistant-1acg--checkhead-has-run-counts-an-action-required-run-as.md"
    },
    {
      "id": "folio-assistant-1br0",
      "title": "SEARCH REMOTE: publish the identifier lookup as its own page and link it from the search box (#1972 step 3)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T14:17:59Z",
      "updatedAt": "2026-10-03T14:17:59Z",
      "preview": "Issue #1972 step 3 (remote/large graphs). The owner's choice of 2026-10-03,\nfrom four options: **a separate page and a link** — publish the identifier\nlookup as its own page OUTSIDE the docs pipeline, name it in the search\nmanifest as a `remote` scope, and have the search box show one link to it.\n\nIt keeps both standing decisions: bean `4pm8`'s ruling (title search over\nreferenced nodes is an acce",
      "file": "beans/defs/folio-assistant-1br0--search-remote-publish-the-identifier-lookup-as-its.md"
    },
    {
      "id": "folio-assistant-1bvx",
      "title": "check:reference-direction fails on main and is in NO workflow — nothing catches it",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T22:13:49Z",
      "updatedAt": "2026-10-06T14:30:00Z",
      "preview": "Measured on `main` `25bff68c4f3`, 2026-09-30.\n\n```\n$ bun run cat check:reference-direction\n✗ 1 PENDING entr(y/ies) no longer qualify — delete them\n✗ 91 file(s) name several instances above them and are not in PENDING\nexit 1\n```\n\n```\n$ grep -q \"bun run cat check:reference-direction\" .github/workflows/*.yml\nnot in any workflow\n```\n\n**Red on the default branch, and run by nothing.** That is `1xhc` in",
      "file": "beans/defs/folio-assistant-1bvx--checkreference-direction-fails-on-main-and-is-in-n.md"
    },
    {
      "id": "folio-assistant-1dre",
      "title": "PAGES SERVING PROBE: the instrument pages-publish-health counts, and it can only be built in CI because egress refuses every route from an agent",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T03:55:45Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "`pages-publish-health` (bean `qj9a`) counts instruments for observing the\npublished site. The count is **0**, so it reports a `major` finding whose action\nis this bean. This is that probe, specified rather than built, because it cannot\nbe built here.\n\n## Why it cannot be written or tested from an agent's container\n\nMeasured 2026-09-25 and 2026-09-26, every route refused:\n\n| route | result |\n|---|-",
      "file": "beans/defs/folio-assistant-1dre--pages-serving-probe-the-instrument-pages-publish-h.md"
    },
    {
      "id": "folio-assistant-1g4s",
      "title": "OPTION A: subgraphs inherit automatically as named members; dependents retired",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T22:39:25Z",
      "updatedAt": "2026-10-01T06:58:18Z",
      "preview": "Owner 2026-09-30: 'if f-a-core ... has a docs/ ... and depends on cat-harness where docs/ is declared ... the viewer should detect f-a-core/docs ... a named (sub-)subgraph of docs' and 'make dependents: reproduce automatic behaviour so don't need it'.\n\n## Summary of Changes\n- resolveDirectories: every instance-scoped entry gains one MEMBER per chain instance whose <root>/<path> exists (ResolvedDir",
      "file": "beans/defs/folio-assistant-1g4s--option-a-subgraphs-inherit-automatically-as-named.md"
    },
    {
      "id": "folio-assistant-1gf7",
      "title": "ASSESS: open standards for requirements, and methodologies that fit the bootstrap Requirement",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-2upx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T19:34:01Z",
      "updatedAt": "2026-10-09T18:43:00Z",
      "preview": "Issue #1164. Owner, 2026-09-23, choosing markdown front matter for requirement documents: '1 for now. need bean to assess open stds for requirements/methodologies that fit in'.\n\nThe bootstrap Requirement is deliberately free of outside concepts. This bean asks which open standards a harness could MAP it to or from, in a layer above bootstrap, and at what cost.\n\n## Done when\n- [x] a survey of open ",
      "file": "beans/defs/folio-assistant-1gf7--assess-open-standards-for-requirements-and-methodo.md"
    },
    {
      "id": "folio-assistant-1h6u",
      "title": "main red after 2c295f8 + translation batches #1404/#1409: 6 dangling skill links, 9 stale derived sets",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T14:30:05Z",
      "updatedAt": "2026-09-26T14:34:12Z",
      "preview": "Measured on pristine main f850f721a06, 2026-09-26. The failing checks were glossary-page, gen-skill-docs, gen-docs-pages, docs:auto, translation:index, check:ci-invocations (which re-runs the two generators), check:subgraphs, state:visualizer and docs:harness. Every open PR inherited them through its merge ref.\n\nCauses:\n- **2c295f8**, committed straight to main, rewrote skill script paths as `../.",
      "file": "beans/defs/folio-assistant-1h6u--main-red-after-2c295f8-translation-batches-1404140.md"
    },
    {
      "id": "folio-assistant-1hjm",
      "title": "merge queue is UNAVAILABLE on this repo — three workflows carry merge_group triggers that can never fire",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T22:29:45Z",
      "updatedAt": "2026-10-07T04:47:41Z",
      "preview": "Measured 2026-09-30, after the owner asked for the merge queue to be turned on.\n\n## What was found\n\nThe repository's **New branch ruleset** form offers thirteen rules. **`Require\nmerge queue` is not one of them**:\n\n```\nRestrict creations · Restrict updates · Restrict deletions\nRequire linear history · Require deployments to succeed · Require signed commits\nRequire a pull request before merging · R",
      "file": "beans/defs/folio-assistant-1hjm--merge-queue-is-unavailable-on-this-repo-three-work.md"
    },
    {
      "id": "folio-assistant-1j3q",
      "title": "ROUTE-KEYED STORAGE: a third `keyedBy` for regenerable rendered pages — one entry per route, replaced by its one writer, never spliced with `expect`",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [
        "folio-assistant-xsrv"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-03T13:20:54Z",
      "updatedAt": "2026-10-03T15:15:19Z",
      "preview": "Owner, 2026-10-03, decision 3 of the auto-doc rendered-graphs Q&A (#1966):\n**\"Add route-keyed storage, then move it off main\"** — asked about the cost of\nleaving generated pages committed on `main`.\n\nThe schema's own docblock (`cat-harness.ts`, §\"`keyedBy` — two keyings, and a\nthird is a schema change\") says what this bean is: *\"The field is an enum, not\na string, so a third keying is a schema cha",
      "file": "beans/defs/folio-assistant-1j3q--route-keyed-storage-a-third-keyedby-for-regenerabl.md"
    },
    {
      "id": "folio-assistant-1l13",
      "title": "witness-pipeline.yml has never run — keep, template, or retire?",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T06:47:37Z",
      "updatedAt": "2026-10-23T08:00:00Z",
      "preview": "Split from 52dz (2026-09-24). 52dz's owner decisions moved section-title-audit into folio_init templates, but witness-pipeline.yml was not part of that decision and still sits in .github/workflows with ZERO runs all time (measured 2026-09-20), so check:ci-health cannot see it by construction.\n\n## Done when\n- [x] measured: does it run against the platform at all, or only a folio's computations? (me",
      "file": "beans/defs/folio-assistant-1l13--witness-pipelineyml-has-never-run-keep-template-or.md"
    },
    {
      "id": "folio-assistant-1lfx",
      "title": "DEPLOY: STAGING must report which host rendered it, not assume gh-pages",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:55:36Z",
      "updatedAt": "2026-10-09T14:05:00Z",
      "preview": "From [#363](https://github.com/litlfred/folio-assistant/issues/363): \"make sure\nSTAGING knows where rendering happes (ghpages, local server) so can tell user\ncorrectly\".\n\n## The defect, stated as what goes wrong\n\nAn agent finishing a change tells the author where to look. Today that sentence\nis composed on the assumption that rendering went to GitHub Pages. On a private\nrepository there is no Page",
      "file": "beans/defs/folio-assistant-1lfx--deploy-staging-must-report-which-host-rendered-it.md"
    },
    {
      "id": "folio-assistant-1nu0",
      "title": "Viewers scoped to cat-harness only: Tools, QA, Beans, Health, Folio, Glossary, Attestations, Schemas",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-46ob",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T16:53:28Z",
      "updatedAt": "2026-10-15T18:59:39Z",
      "preview": "## Parent\n\nfolio-assistant-46ob\n\nA viewer exists, but it is declared with `covers: [<directory id>]` (cat-harness's own directory) or per-instance sub-graphs that were never drawn, so other harnesses' rows read \"no viewer yet\".\n\nMeasured live: Tools ×6 (cat-harness `tools` visualiser, covers id `tools`; page lists cat-harness's tools only), QA ×5 (`lsi`, covers id `qa`), Health ×3, Beans ×2, Folio",
      "file": "beans/defs/folio-assistant-1nu0--viewers-scoped-to-cat-harness-only-tools-qa-beans.md"
    },
    {
      "id": "folio-assistant-1ple",
      "title": "state:mount follows an ABSOLUTE marker path out of its own checkout: a copied checkout re-mounts (and can empty) the original",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-14T13:19:55Z",
      "updatedAt": "2026-10-16T07:48:00Z",
      "preview": "Found 2026-10-14 (session_01XueePufkpx8fwJxavyDS5h; owner chose \"C1: track it as a bean\").\n\n## What happened\nA scratch copy of an index checkout (`cp -a /home/user/folio-assistant <scratch>/S`) carried the original's `.git/branch-mounts/*.json` markers. Each marker's `into` is an ABSOLUTE path (`/home/user/folio-assistant/beans`, `…/todos`, `…/fsh-guts`, `…/issue-marks`). `bun run cat state:mount`",
      "file": "beans/defs/folio-assistant-1ple--state-mount-follows-an-absolute-marker-path-out-of.md"
    },
    {
      "id": "folio-assistant-1q4b",
      "title": "Re-draw the navbar wireframe after ob3m's 12 findings landed",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T05:55:48Z",
      "updatedAt": "2026-10-06T18:30:00Z",
      "preview": "ob3m's closing step, split out when ob3m closed on 2026-10-06: 'When fixed, re-draw cat-harness/docs/wireframes/navbar/ and re-run wireframe:check and check:wireframes.' intent.md's Observed and Findings sections still describe main with #1010/#1022 (before #1762, #1804, #1805, #1807, #1808 and #1819), so the wireframe documents a navbar that no longer exists.\n\n## Done when\n- [x] as-is.html and in",
      "file": "beans/defs/folio-assistant-1q4b--re-draw-the-navbar-wireframe-after-ob3ms-12-findin.md"
    },
    {
      "id": "folio-assistant-1qrr",
      "title": "FEATURE-STAGING: the workflow definition comes from the BASE but the checkout is the PR HEAD, so a newly-added step fails every branch that predates it",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T15:33:32Z",
      "updatedAt": "2026-10-22T17:10:00Z",
      "preview": "## The split\n\n`.github/workflows/feature-staging.yml:190` checks out the PR **head**:\n\n```yaml\nref: ${{ github.event.pull_request.head.ref || inputs.branch || github.ref }}\n```\n\nBut for a `pull_request` event GitHub takes the workflow **definition** from the\nBASE branch. So the steps that run are `main`'s, while the tree they run\nagainst is the PR's head. Those two disagree the moment a step is ad",
      "file": "beans/defs/folio-assistant-1qrr--feature-staging-the-workflow-definition-comes-from.md"
    },
    {
      "id": "folio-assistant-1r0p",
      "title": "INGEST: audio — transcription and translation",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-16T06:43:50Z",
      "updatedAt": "2026-10-21T21:32:00Z",
      "preview": "## What\n\nAudio content is transcribed, and the transcript translated into the folio's\nlanguages.\n\n## Done when\n\n`library/<slug>/transcript/` holds the source-language transcript and each\ntranslation, both referenced from `manifest.jsonld`, both carrying the\nprovenance stamp (`folio-assistant-iqim`), and both subject to the round-trip\nQA (`folio-assistant-ktt2`).\n\nDiagram: `processes/ingest-derive-",
      "file": "beans/defs/folio-assistant-1r0p--ingest-audio-transcription-and-translation.md"
    },
    {
      "id": "folio-assistant-1s5s",
      "title": "The published package's PYTHON half runs nowhere — CI's pytest job globs a directory that does not contain it",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T09:13:49Z",
      "updatedAt": "2026-09-26T10:38:03Z",
      "preview": "Split out of `rsi6` 2026-09-26. **That bean was closed `completed` carrying two\nunchecked boxes**, which the store's own rule forbids — \"ONLY if the bean has\nno unchecked todo items left\". Recorded here rather than quietly re-ticked,\nbecause a completed bean holding live work is exactly the shape that makes the\nstore unreadable, and this session has spent the day filing that class against\nother pe",
      "file": "beans/defs/folio-assistant-1s5s--the-published-packages-python-half-runs-nowhere-ci.md"
    },
    {
      "id": "folio-assistant-1swy",
      "title": "QA: verdicts, sidecars and the audited review record",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:43:44Z",
      "updatedAt": "2026-10-04T15:12:14Z",
      "preview": "Where a verdict lives, what shape it has, and who is allowed to change it.\n\n`2634` is the placement rule (provenance decides: a QA reviewer's output lives\nunder `test/results/`), `9gyz` is the shape (Finding, Decision and AuditNote are\nthree entities), and `cflw`/`nytj` are the two ways concurrent work corrupts the\nrecord — 218 sidecars rewritten by one edit, and two PRs green alone but red\ntogeth",
      "file": "beans/defs/folio-assistant-1swy--qa-verdicts-sidecars-and-the-audited-review-record.md"
    },
    {
      "id": "folio-assistant-1xhc",
      "title": "CI RELIABILITY: a gate that does not fire is indistinguishable from one that passed",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:43:44Z",
      "updatedAt": "2026-10-04T15:12:14Z",
      "preview": "A gate that does not fire is indistinguishable from one that passed.\n\nThat is `xom7`'s lesson one layer up, and every item here is an instance:\n`3pqn` (a PR that opens with zero checks looks exactly like one whose checks\nare green), `dzl3` (playwright fails before any test body runs), `t373`\n(`readme:audit` is in no workflow at all, and `main` carried eight dead links),\n`bgle` (a guard that enumer",
      "file": "beans/defs/folio-assistant-1xhc--ci-reliability-a-gate-that-does-not-fire-is-indist.md"
    },
    {
      "id": "folio-assistant-1xrg",
      "title": "state:visualizer:check cannot fail on a declaration that points at its own page (the '4 of 7 render a shell' premise was a FALSE FINDING — retracted)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T06:48:40Z",
      "updatedAt": "2026-09-30T09:03:42Z",
      "preview": "Found 2026-09-22 by LOOKING at a page rather than at the generator that wrote\nit. `lqo9` slice 2 added the `glossary` state graph, `state:visualizer`\ngenerated `docs/glossary/index.html` for it, every gate went green, and the\npage displays **nothing about the glossary**.\n\nIt is not a defect that slice introduced. Measured across all seven state\ngraphs the visualizer writes a page for:\n\n| graph | p",
      "file": "beans/defs/folio-assistant-1xrg--state-dashboards-4-of-7-render-a-shell-a-declared.md"
    },
    {
      "id": "folio-assistant-1yd7",
      "title": "LANDING STICKIES: each instance's sticky lives in its own folio/, not in cat-harness/folio/",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T21:46:20Z",
      "updatedAt": "2026-10-09T14:05:00Z",
      "preview": "## What\n\n`cat-harness/folio/` holds the landing stickies (`folio-landing-sticky/v1`) for\nother instances, beside its own `cat-harness.json`:\n`who-iris.json`, `bootstrap.json`, `folio-assist-core.json` and `folio-assistant.json`.\nMeasured on main 33bf3d2, 2026-10-07.\n\nEach sticky belongs in the `folio/` directory of the instance it describes.\n\n## Why now\n\nThe separation (ar1s) moves instances to th",
      "file": "beans/defs/folio-assistant-1yd7--landing-stickies-live-with-their-own-instance-not-in-cat-h.md"
    },
    {
      "id": "folio-assistant-1ygp",
      "title": "ROAST: adversarial pass over the hand-over screen, its wiring and the zero-trust-handover methodology before adoption",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ieum",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T19:29:09Z",
      "updatedAt": "2026-10-08T00:15:43Z",
      "preview": "Owner 2026-10-07: 'include adversarial analysis (general process we have)'. The process: lens fan-out plus an adjudicator (devils-advocate-watcher, Slot C), then generalise-the-fix move 2 on the wiring. Findings are recorded HERE with a status (answered / open / accepted-as-cost), because a printed objection is gone (v048).\n\n## Done when\n- [x] lenses run, adjudicated\n- [x] every surviving finding ",
      "file": "beans/defs/folio-assistant-1ygp--roast-adversarial-pass-over-the-hand-over-screen-i.md"
    },
    {
      "id": "folio-assistant-24fa",
      "title": "beans:claim pushes to main, which GUARANTEES a refuse-class conflict on the claiming branch's own completion",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T00:43:10Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "## Measured on itself, 2026-10-03\n\n`bun run cat beans:claim 8rff` writes the claim **straight to `main`**:\n\n> `_2026-10-03T00:27:48Z_ — Claimed by claude/merge-patterns-8rff — pushed to\n> main so sibling sessions see it before this branch has a PR (bean 35nj)`\n\nThat is deliberate and it works — `35nj` (\"A bean claim is invisible to a\nsibling until the PR exists, so claim-before-work does not preve",
      "file": "beans/defs/folio-assistant-24fa--beansclaim-pushes-to-main-which-guarantees-a-refus.md"
    },
    {
      "id": "folio-assistant-2634",
      "title": "QA outputs live under test/results/ — verdicts and witnesses both, by provenance",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T07:11:55Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "THE RULE, from the owner 2026-09-19: 'if the witnesses were generated as a QA reviewer primarily then it should be under test/results/ as part of a QA process.'\n\nPlacement follows PROVENANCE, not file family and not consumption. An artefact that is primarily the output of a QA review belongs under `test/results/`, whatever fetches it afterwards.\n\n## What exists today, measured 2026-09-19 on main\n\n",
      "file": "beans/defs/folio-assistant-2634--qa-outputs-live-under-testresults-verdicts-and-wit.md"
    },
    {
      "id": "folio-assistant-269z",
      "title": "Folio handle covers the who-iris replica's INGESTED COPY banner — conflicts with jpjt 'replica unchanged'",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:04:45Z",
      "updatedAt": "2026-09-24T18:04:45Z",
      "preview": "Found by bean 015u (2026-09-24). On the who-iris replica the fixed ▾ Folio handle covers the 'INGESTED COPY — not WHO' banner at 390 px, and at 1280 px a link sits centred under it, so a click there opens the glass instead.\n\nThe obvious fix, reserving the handle's band with top padding, is ruled out by an existing rule: `folio-mount.e2e` asserts a replica is UNCHANGED while the glass is closed (be",
      "file": "beans/defs/folio-assistant-269z--folio-handle-covers-the-who-iris-replicas-ingested.md"
    },
    {
      "id": "folio-assistant-279l",
      "title": "B10b (#1168): glossary ledger keys lanes by BPMN id; SKOS altLabel for renames; key pattern enforced + QA gate",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T14:59:53Z",
      "updatedAt": "2026-09-30T17:07:28Z",
      "preview": "Owner 2026-09-30: do as rec + QA gate + use SKOS for rename/alternate name. lane/<name> → process/<p>/lane/<laneId> (kg-export's identity); propertyNames pattern; a gate that fails on an off-pattern key; a renamed lane keeps its key and the old name becomes skos:altLabel (not a new term).\n## Done when\n- [ ] ledger keys match ^(role|process)/…; lane/Actor migrated\n- [ ] rename handled as altLabel/h",
      "file": "beans/defs/folio-assistant-279l--b10b-1168-glossary-ledger-keys-lanes-by-bpmn-id-sk.md"
    },
    {
      "id": "folio-assistant-27u0",
      "title": "check:anchor-names was blind to 2 of 4 base spellings: 75 ascents unseen, 9 real findings, and it printed a green check",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T05:47:27Z",
      "updatedAt": "2026-09-27T05:47:27Z",
      "preview": "Found 2026-09-27 while reading `check-translation-catalogue.ts`, which arrived on\n`main` in the 36 commits merged into `claude/brave-hypatia-r820sf`. Its docblock\njustified deriving the instance root locally with *\"because no module exports\nit\"*. That claim is false — `cat-harness.ts:2702` exports `instanceRootFor` — and\nchecking it opened the real defect one level down.\n\n## The defect\n\n`check:anc",
      "file": "beans/defs/folio-assistant-27u0--checkanchor-names-was-blind-to-2-of-4-base-spellin.md"
    },
    {
      "id": "folio-assistant-2ae2",
      "title": "Readers: docs site, feature staging, review heat map and MCP tools fetch QA from qa-reports",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-16ei"
      ],
      "createdAt": "2026-10-01T08:00:46Z",
      "updatedAt": "2026-10-10T17:04:26Z",
      "preview": "Arc `3fva`, proposal §4 items 3.3 and 3.4. Blocked on the qa-store bean. Can be dispatched in parallel with the gates bean.\n\n- the `assets/qa/` copy in `docs-site.yml:609` and `feature-staging.yml:1089`\n- the badges (`head_custom.html`, `docs/qa/index.html`)\n- `publish-block-qa.ts`, `review-heat.ts` and `gen-review-page.ts`\n- MCP: lsi output (`tools/index.ts`), `src/tools/degradation.ts` and `src/",
      "file": "beans/defs/folio-assistant-2ae2--readers-docs-site-feature-staging-review-heat-map.md"
    },
    {
      "id": "folio-assistant-2as0",
      "title": "Agent-triggered staging: local build + push to gh-pages, then an Artifact preview (#2410)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T11:12:53Z",
      "updatedAt": "2026-10-07T12:44:42Z",
      "preview": "Issue #2410. PR 1: cat-harness/scripts/stage-local.ts builds the folio's preview in the agent's checkout and pushes STAGING/<slug>/ through the same gate and render log as the workflow. PR 2: --artifact publishes it as a claude.ai Artifact. Measured 2026-10-07: 33 min runner queue before the workflow ran 45 s; Pages deploy 47 min queued.\n\n*2026-10-07* — completed: PR 1 (stage-local, push to gh-pag",
      "file": "beans/defs/folio-assistant-2as0--agent-triggered-staging-local-build-push-to-gh-pag.md"
    },
    {
      "id": "folio-assistant-2b5s",
      "title": "MOUNT COPIES A DIRECTORY WHOLESALE: /who-iris/ publishes 1,367 corpus files as pages, and /library/who-iris/ publishes all 1,378 a second time",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T20:00:52Z",
      "updatedAt": "2026-09-30T13:57:36Z",
      "preview": "## What\n\n`mount-instance-docs.ts` mounts a directory when it carries an `index.html`\n**at its own root**, and then copies **everything beneath it**. For\n`who-iris/library/` that is 1,378 files, of which 11 are pages:\n\n| | count | what |\n|---|---|---|\n| pages | 11 | 7 `.html` (index, community-list, 2 collections, 3 items), 3 cover `.png`, `image-verdicts.json` |\n| L1 corpus | 1,367 | 813 `.jsonld`",
      "file": "beans/defs/folio-assistant-2b5s--mount-copies-a-directory-wholesale-who-iris-publis.md"
    },
    {
      "id": "folio-assistant-2c2b",
      "title": "CI WATCH IS TWO-STATE: cancelled read as failure and reported a green main red — bun run cat ci:watch, three states with undetermined never collapsing",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T14:56:30Z",
      "updatedAt": "2026-09-30T19:43:02Z",
      "preview": "Issue #1624. Owner asked for this as a repo tool rather than session-local\nscratch tooling, 2026-09-30.\n\n## The defect, measured\n\nAn agent's CI poll folded `cancelled` into the failure set and reported **`main`\nred** on `3d2c7fbe869`, whose every hard gate had passed:\n\n```\nsuccess   Repository gates (hard)\nsuccess   TypeScript — tests, lint, types (hard)\nsuccess   End-to-end + accessibility (hard)",
      "file": "beans/defs/folio-assistant-2c2b--ci-watch-is-two-state-cancelled-read-as-failure-an.md"
    },
    {
      "id": "folio-assistant-2coi",
      "title": "IG fork sites: artefact JSON, JSON Schema and JSON-LD from the AST route, with the AST cache built and seeded in CI",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-11T07:17:27Z",
      "updatedAt": "2026-10-11T12:25:41Z",
      "preview": "Owner, 2026-10-11: \"fix: Artefact pages still link JSON to WHO, and have no JSON-LD or JSON Schema links. Use AST route. make sure it is fullly working w/ branch caches etc\". Follows 48a6 (fork site drift).\n\nLanded: fhir-harness#38 (ast-to-artifact-index --sidecars; ig-cache keeps expansions.json), #39 (--keep-published-grouping; description links rebased); smart-base#42 (smart-base:dak-ast-sideca",
      "file": "beans/defs/folio-assistant-2coi--ig-fork-sites-artefact-json-json-schema-and-json-l.md"
    },
    {
      "id": "folio-assistant-2e39",
      "title": "B9b (#1168): a BPMN lane is its own node; performedBy points at the registry role",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:54:25Z",
      "updatedAt": "2026-09-30T12:36:35Z",
      "preview": "Owner, 2026-09-30: Lane node. kg-export mints role/<lane name> per lane, so one role can get two nodes or merge by accident. Emit process/<p>/lane/<id> (type Lane) with bindsRole; performedBy goes to role/<roleRef>.\n\n## Done when\n- [ ] lanes exported as Lane nodes, not Role nodes\n- [ ] performedBy resolves to registry Role nodes, 0 dangling\n\n\n\n## Done — #1587\nLane nodes (process/<p>/lane/<id>, par",
      "file": "beans/defs/folio-assistant-2e39--b9b-1168-a-bpmn-lane-is-its-own-node-performedby-p.md"
    },
    {
      "id": "folio-assistant-2ee5",
      "title": "Merge refused: #1955 handed back",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-whlc",
      "blocking": [
        "folio-assistant-4ak5"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:43Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "PR #1955, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_MvpHighRisk: conflict declared, own CI green.\n- Queue entry (`beans/queue/litlfred--folio-assistant--1955.json`, status `active`): STATUS UNKNOWN on the 13:40Z al",
      "file": "beans/defs/folio-assistant-2ee5--merge-refused-1955-handed-back.md"
    },
    {
      "id": "folio-assistant-2gst",
      "title": "QA READERS F1: kg-audit reads its carried state (pair attestations, voice reviews, test runs) from qa-store — two false-cleans, and the kg-qa D2 split",
      "status": "completed",
      "type": "task",
      "priority": "critical",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:47:12Z",
      "updatedAt": "2026-10-23T13:35:00Z",
      "preview": "Arc `3fva`, from reader audit `gxvk` (`cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md`, §5.1 family F1). Refines `oqe3` 3.1a. Blocked on the qa-store bean `16ei`.\n\n**Holds two of the audit's CRITICAL rows.** It must land before `5hox`: deleting the kg-qa tree before this lands destroys the attestations without a word.\n\n## Readers\n- `cat-harness/scripts/kg-audit.ts:2751`: `--check` stale",
      "file": "beans/defs/folio-assistant-2gst--qa-readers-f1-kg-audit-reads-its-carried-state-pai.md"
    },
    {
      "id": "folio-assistant-2h76",
      "title": "STATE BRANCH P2: mechanism — storage keyedBy tip, branch-store splice-write, seed the orphan 'state' branch, session-start mount at state/",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:58:10Z",
      "updatedAt": "2026-10-06T06:26:35Z",
      "preview": "Serial, one agent. Reuses the 3fva spike 3ds9 write path (hash-object, mktree, commit-tree, push; never -f).\n\n## Done when\n- [x] schema field with keyedBy: tip\n- [x] branch-store.ts with retry over a moved tip\n- [x] state branch seeded with a hash-verified manifest (2026-10-02, see below)\n- [x] session-start hook mounts state/ and fails LOUDLY when it cannot\n- [x] bun run cat state:push\n- [x] meas",
      "file": "beans/defs/folio-assistant-2h76--state-branch-p2-mechanism-storage-keyedby-tip-bran.md"
    },
    {
      "id": "folio-assistant-2i5f",
      "title": "TERMINOLOGY / adjudication: the extractor vs the terminology, and judge vs judge — call the existing process, restate nothing",
      "status": "in-progress",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5yhm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T04:51:47Z",
      "updatedAt": "2026-10-02T08:01:23Z",
      "preview": "Under `5yhm`. **Two disagreements, not one**, and only the second is already\nsolved here.\n\n1. **The extractor and the terminology disagree.** The corpus uses a word the\n   authorised vocabulary spells differently, or does not carry at all. A\n   *content* decision — change the prose, author a local term with its reason,\n   or record that the vocabulary is wrong for this domain. Nothing covers this.",
      "file": "beans/defs/folio-assistant-2i5f--terminology-adjudication-the-extractor-vs-the-term.md"
    },
    {
      "id": "folio-assistant-2ipj",
      "title": "PROCESS CATALOGUES: clinical (smart-base-clinical holds none yet), public health and health system (from the DTH documents)",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T14:06:52Z",
      "updatedAt": "2026-10-20T18:19:02Z",
      "preview": "Owner, 2026-10-10: *\"there is a WHO/smart-base-clinical ... which will be the catalog of clinical processes/encoutners. Assume that such analouges will exist for public health and health systems (these will come fromt he already ingested Digiatl Transformation Handbooks (for supply chain architecture, product catalogu,,,) and more are coming).\"*\n\n## Measured 2026-10-10\nWorldHealthOrganization/smar",
      "file": "beans/defs/folio-assistant-2ipj--process-catalogues-clinical-smart-base-clinical-ho.md"
    },
    {
      "id": "folio-assistant-2j09",
      "title": "The undeclared-namespace check reads only BPMN xmlns, so a JSON-LD vocabulary can go unpinned forever",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T11:48:29Z",
      "updatedAt": "2026-09-23T19:29:49Z",
      "preview": "Split out of the 2026-09-22 fix to `external-schemas.ts`, deliberately not taken there because it is a much larger decision than the bug beside it.\n\n## The fix that was taken\n\n`unusedNamespaces` was reporting Dublin Core — 43 real uses, live in the glossary's own `@context` — as *\"a record outliving its dependency\"*, because `namespacesInUse()` reads **only** `processes/*.bpmn|dmn`. A vocabulary c",
      "file": "beans/defs/folio-assistant-2j09--the-undeclared-namespace-check-reads-only-bpmn-xml.md"
    },
    {
      "id": "folio-assistant-2j2r",
      "title": "cmsl follow-up: ~44 readers of decl.directories miss entries declared from within",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T17:24:45Z",
      "updatedAt": "2026-10-09T14:06:13Z",
      "preview": "## What\n\nSince cmsl step 1 (2026-09-30), `voices/` and `skills/lean/` are declared FROM WITHIN `skills/skills.json`, not in `<instance>.json`. `resolveDirectories` promotes them; but ~44 call sites read `readDeclaration(root).directories` directly and never see them.\n\nMeasured the same day: the UML overview deleted 5 voices diagrams, `check:wireframes` called 5 voices pages undeclared, and `viewer",
      "file": "beans/defs/folio-assistant-2j2r--cmsl-follow-up-44-readers-of-decldirectories-miss.md"
    },
    {
      "id": "folio-assistant-2lzp",
      "title": "atomic-mass-gen-check.yml is qou folio residue in the platform repo — move it to litlfred/qou",
      "status": "completed",
      "type": "task",
      "priority": "low",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T17:30:18Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "## Why\n`.github/workflows/atomic-mass-gen-check.yml` checks `content/quantum-observable-universe/lean/…`, which is not in this repository since the split. Its only live trigger here is an edit to the workflow file itself, and then it failed on a missing script (seen on PR #1284, which added its `# bpmn:` line). #1284 made the missing generator a stated \"not applicable\" notice rather than a red job",
      "file": "beans/defs/folio-assistant-2lzp--atomic-mass-gen-checkyml-is-qou-folio-residue-in-t.md"
    },
    {
      "id": "folio-assistant-2ngl",
      "title": "MODE: developer — local server, CLI tools, one model for every workflow",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:55:36Z",
      "updatedAt": "2026-10-09T18:59:00Z",
      "preview": "From [#363](https://github.com/litlfred/folio-assistant/issues/363): \"developer\nmode: likely wants local server hostign the content, run CLI version of tools.\nuses single agent/model for all workflows\".\n\n## The strawperson position\n\nDeveloper mode is a **point in the topology product**, not a special code path:\n\n| axis | value |\n|---|---|\n| forge | local git only, or any — the mode does not care |",
      "file": "beans/defs/folio-assistant-2ngl--mode-developer-local-server-cli-tools-one-model-fo.md"
    },
    {
      "id": "folio-assistant-2osx",
      "title": "Each instance publishes its own ns document for the block-kind classes it mints",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T16:41:00Z",
      "updatedAt": "2026-10-09T16:27:00Z",
      "preview": "Follow-up to the vocabulary move (bean 0r7u, owner rulings 2026-10-06): block-kind classes are minted in the declaring instance's namespace (folio-assistant-core:Prose, folio-assistant-sci:Theorem, smart-base:Persona), but no instance publishes a document defining them, so the class IRIs do not dereference. The core ones never did (pre-existing gap); sci and smart-base are new namespaces with no n",
      "file": "beans/defs/folio-assistant-2osx--each-instance-publishes-its-own-ns-document-for-th.md"
    },
    {
      "id": "folio-assistant-2q1p",
      "title": "RETIRED PREVIEWS COME BACK: the full-replace restore carries _retired as a record but never consults it, so a retirement is undone by the next main-site publish",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T12:00:53Z",
      "updatedAt": "2026-10-07T05:05:00Z",
      "preview": "Found 2026-10-02 by testing ONE preview retirement before dispatching 57 —\nwhich is the only reason it was found rather than paid for 57 times.\n\n## The failure, measured on `gh-pages`\n\n| commit | what it did |\n|---|---|\n| `a46c58ca9df` | `staging(cleanup): remove STAGING/claude-fervent-brahmagupta-rbwhzm` — **1615 files deleted** |\n| `93ffa64488c` | `docs(gh-pages): site from a07c3c66…` — **all 16",
      "file": "beans/defs/folio-assistant-2q1p--retired-previews-come-back-the-full-replace-restor.md"
    },
    {
      "id": "folio-assistant-2r2n",
      "title": "Mobile: pages scroll sideways at phone width",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:13Z",
      "updatedAt": "2026-10-01T18:13:39Z",
      "preview": "A page wider than a 390 px viewport makes the reader pan sideways to reach columns or actions. Fix in the shared table/grid CSS: wrap, stack or collapse columns at narrow widths, and let only a table's own container scroll, with a visible cue.\n\nObserved on: `catalogue`, `folio`, `fsh-guts`, `kg-viewer`, `library`, `navbar`, `processes`, `skills-index`, `tools`, `translation-status`, `uploads` (see",
      "file": "beans/defs/folio-assistant-2r2n--mobile-pages-scroll-sideways-at-phone-width.md"
    },
    {
      "id": "folio-assistant-2tfy",
      "title": "SEARCH COST: the lunr index is built on every page view — ~4.7 s CPU, ~315 MB heap before anyone searches",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T09:04:02Z",
      "updatedAt": "2026-10-03T09:04:02Z",
      "preview": "Owner, 2026-10-03, choosing among measured options: **\"Both, lazy first\"** —\nPR 1 builds the search index on first focus of the search box; PR 2 shrinks\nthe index.\n\n## Measured (local `preview:site` build, headless Chromium, median of 3)\n\n| page | search index | main-thread script | task | JS heap |\n|---|---|---|---|---|\n| `/` | loaded on load (theme default) | 4,796 ms | 5,234 ms | 314 MB |\n| `/`",
      "file": "beans/defs/folio-assistant-2tfy--search-cost-the-lunr-index-is-built-on-every-page.md"
    },
    {
      "id": "folio-assistant-2uj7",
      "title": "merge:guard follows Link next URLs in /repositories/<id>/ form, which the agent proxy refuses (page 2 → 403)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T05:11:59Z",
      "updatedAt": "2026-10-07T05:13:00Z",
      "preview": "Issue #2137. getAll in cat-harness/scripts/merge-guard.ts follows GitHub's Link rel=next, which names /repositories/<id>/...; the agent egress proxy refuses that form (403, 'Numeric-ID repository paths ... not supported'). Fix: normalise next to repos/{owner}/{repo}/.\n\n## Done when\n- [x] next-page URLs normalised; unreadable page still COULD NOT DETERMINE\n- [x] unit tests for page-2 normalised + p",
      "file": "beans/defs/folio-assistant-2uj7--mergeguard-follows-link-next-urls-in-repositoriesi.md"
    },
    {
      "id": "folio-assistant-2upx",
      "title": "DOCUMENTATION: one SDO voice, RFC 2119 requirement levels, and the pages the knowledge graph is missing",
      "status": "in-progress",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T16:21:34Z",
      "updatedAt": "2026-10-04T15:12:15Z",
      "preview": "Owner, 2026-09-21. A large body of direction on documentation, captured here as the frame; the children carry the work.\n\n**The writing standard.** We are writing as an SDO writes — W3C, IHE. Glossary Terms are Capitalized throughout. Requirement levels follow RFC 2119 (MUST / MUST NOT / REQUIRED / SHALL / SHALL NOT / SHOULD / SHOULD NOT / RECOMMENDED / MAY / OPTIONAL). The RFC is queued at `upload",
      "file": "beans/defs/folio-assistant-2upx--documentation-one-sdo-voice-rfc-2119-requirement-l.md"
    },
    {
      "id": "folio-assistant-2uui",
      "title": "WHO IRIS replica pages scroll sideways at desktop width",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T16:12:48Z",
      "updatedAt": "2026-09-30T17:17:27Z",
      "preview": "Found 2026-09-30 by the wireframe QA re-run on main 3779d5d27 (1280×800 and 1024).\n\n- who-iris/collection-collection-hq-publications.html: document 1366px wide at a 1280 viewport.\n- who-iris/community-list.html: 1503px at 1280.\n- A third page is too wide at 1024.\n\nCause: the download / 'Metadata record' cells do not wrap. #1592 (g9r2) made them wrap only below 640px, so phones are fixed and deskto",
      "file": "beans/defs/folio-assistant-2uui--who-iris-replica-pages-scroll-sideways-at-desktop.md"
    },
    {
      "id": "folio-assistant-2vne",
      "title": "Folio handle back to top-centre as a short pill",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T05:19:36Z",
      "updatedAt": "2026-09-27T05:19:46Z",
      "preview": "Owner 2026-09-27: 'i want purple folio button, not on navbar but at top middle of display screen. not so tall'. Reverses 269z's navbar placement.\n\n## Summary of Changes\n\n- `docs-ui.js` `placeHandle`: the handle is appended to `body` again (fixed top centre) on every page, rail or theme sidebar alike.\n- `docs-ui.css`: pill 1.75rem tall (was 3.25rem), rounded bottom corners, 0.85rem label; `--in-nav",
      "file": "beans/defs/folio-assistant-2vne--folio-handle-back-to-top-centre-as-a-short-pill.md"
    },
    {
      "id": "folio-assistant-2vpn",
      "title": "who-iris's top LHS navbar mark is the letter 'W', not an icon — and every harness's top mark must come from one mechanism",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-yg29",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T18:34:12Z",
      "updatedAt": "2026-10-05T04:57:30Z",
      "preview": "Owner, 2026-10-04, in session https://claude.ai/code/session_01Ga3HjmX3ag9vTgZWDSmsFi, on being asked to sign GOAL 3 off: *\"actually no, who-iris is missing top icon on LHS navbar. investigate why and if also try of other harnesses. all needs to be sconsisisten and consolidated\"* — with a screenshot of https://litlfred.github.io/folio-assistant/who-iris/ whose `.fa-nav-head` shows a slate tile wit",
      "file": "beans/defs/folio-assistant-2vpn--who-iriss-top-lhs-navbar-mark-is-the-letter-w-not.md"
    },
    {
      "id": "folio-assistant-2yyh",
      "title": "SMART-BASE HARNESS: the WHO digital-health corpus, its methodologies and its voices",
      "status": "completed",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T08:35:00Z",
      "updatedAt": "2026-10-10T08:00:00Z",
      "preview": "Issue #877 https://github.com/litlfred/folio-assistant/issues/877\n\nThe owner, 2026-09-22: *\"WHO dgital health needs a once voice. also lots of process in DIIG for digital transformation. the DIIG is a basis for the digital trasnformation handbooks. ingest docs, make methodlolgies subgraphs for project management.digital trasnform processes\"*, and on placement: *\"same as other smart-* now in corpus",
      "file": "beans/defs/folio-assistant-2yyh--smart-base-harness-the-who-digital-health-corpus-i.md"
    },
    {
      "id": "folio-assistant-3025",
      "title": "folio-paper-adapter: 44 of 47 skills have no role — the package is unmodelled, not untriaged",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-8jt6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T14:49:49Z",
      "updatedAt": "2026-10-09T21:56:00Z",
      "preview": "Measured 2026-09-20 while sampling for bean `y1w9`.\n\n## The finding\n\n`folio-paper-adapter` holds **47 skills and 44 are bound to nothing — 93 %.**\nThe 3 that are bound are scattered one-apiece across six unrelated roles\n(`reviewer` 2, `authoring-agent` 1, `onboarding-agent` 1, `ingestion-agent` 1,\n`evidence-agent` 1, `corpus` 1).\n\n**That pattern is the point.** Six roles holding one paper skill ea",
      "file": "beans/defs/folio-assistant-3025--folio-paper-adapter-44-of-47-skills-have-no-role-t.md"
    },
    {
      "id": "folio-assistant-30hn",
      "title": "BPMN: 16 of 33 processes are strict by omission, not by decision",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T15:56:22Z",
      "updatedAt": "2026-10-09T16:03:00Z",
      "preview": "Found while auditing for `folio-assistant-haya`; recorded there in\n[SDLC process audit §4](../../cat-harness/docs/proposals/sdlc-process-audit.md).\n\n## The measurement\n\n`processes/` holds 33 `.bpmn` files. 17 carry a\n`<folio:policy enforcement=\"…\">`; **16 do not.**\n\n    grep -L 'folio:policy' processes/*.bpmn | wc -l   # 16\n\n`src/workflow/process-model.ts:502` reads\n\n    const enforcement = declar",
      "file": "beans/defs/folio-assistant-30hn--bpmn-16-of-33-processes-are-strict-by-omission-not.md"
    },
    {
      "id": "folio-assistant-30jr",
      "title": "hfag's last three: declare the merge queue as a state graph, give it a viewer and tile, and record a train run",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T07:25:27Z",
      "updatedAt": "2026-10-21T17:26:00Z",
      "preview": "## Brief\n\nOwner, 2026-10-03: *\"do the three open hfag items\"*, then — when the tile turned out to be\nblocked on an integrity constraint rather than on effort — *\"1\"* (ship the other two, leave\nit open) *\"and 3\"* (surface the queue in the bean store rather than leaving it invisible).\n\n## What landed\n\n**The queue is a declared `state` graph.** Kind `merge-queue` in the registry — `holds: \"state\"`\nby",
      "file": "beans/defs/folio-assistant-30jr--hfags-last-three-declare-the-merge-queue-as-a-stat.md"
    },
    {
      "id": "folio-assistant-319n",
      "title": "ZOD IS IN CAT-HARNESS: move bootstrap-tools' graph.ts and discussion.ts into cat-harness/schemas, retire bootstrap-tools if empty",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-88mg",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:52:17Z",
      "updatedAt": "2026-09-24T05:45:45Z",
      "preview": "Owner, 2026-09-23 (bean iwtn, ruling 4): *\"cat-harness/tools like renderer. zod is in cat-harness\"*. `model-registry.ts` already moved (PR #1200). The owner then chose to move the other two as well, in a follow-up PR after #1200 merges.\n\n## The rule (owner, 2026-09-23)\n\n> Zod - these are authoring tools for the KG, different tools can/will be used, but the core KG should be unchanged.\n\nThe Zod fil",
      "file": "beans/defs/folio-assistant-319n--zod-is-in-cat-harness-move-bootstrap-tools-graphts.md"
    },
    {
      "id": "folio-assistant-31ni",
      "title": "Agent memory for every vendor: one memory source, one assembler, per-vendor agent files",
      "status": "in-progress",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:31:42Z",
      "updatedAt": "2026-10-23T20:40:00Z",
      "preview": "Owner question 2026-10-06: is there a Gemini/ChatGPT version of .claude/agent-memory to assemble too? Research (sources: vendor repos gemini-cli docs, openai/codex source, github/docs; Cursor/Antigravity UNVERIFIED): NO vendor but Claude has per-agent memory (memory: project -> .claude/agent-memory/<agent>/MEMORY.md). Others have per-agent DEFINITION files whose body is the prompt: Gemini .gemini/",
      "file": "beans/defs/folio-assistant-31ni--agent-memory-for-every-vendor-one-memory-source-on.md"
    },
    {
      "id": "folio-assistant-324x",
      "title": "regen reports docs:pages current while assets/beans/index.json is stale",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T07:18:41Z",
      "updatedAt": "2026-10-04T07:55:34Z",
      "preview": "Measured twice on #1955 (2026-10-04, after main merges that took main's copy of cat-harness/docs/assets/beans/index.json by the site-data pattern): the file lacked `edges` (bean vhqq), check:kind-validators:require-all failed in CI, yet `bun run cat regen` reported docs:pages:check current. Running `bun run cat docs:pages` rewrote it with 86 edges each time. So docs:pages:check does not compare th",
      "file": "beans/defs/folio-assistant-324x--regen-reports-docspages-current-while-assetsbeansi.md"
    },
    {
      "id": "folio-assistant-32f6",
      "title": "Prefix the harness's special branches with cat- (qa-reports, lake-cache/*, state); gh-pages unchanged",
      "status": "in-progress",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T18:07:50Z",
      "updatedAt": "2026-10-22T14:20:00Z",
      "preview": "Owner, 2026-10-02, verbatim: \"need to prefix 'special' branches with cat-, cat-qa-reports, cat-fhir-ast, cat-lean-cacje (or whatever), not sure if any more. gh-pages stays as is\" — and later: \"(need to /coordinate and rename active branches)\".\n\nParent: fs43, not 7x5n — fs43 is the arc whose subject is the special branches (its P7, rva2, declares every special branch with one field); 7x5n is the se",
      "file": "beans/defs/folio-assistant-32f6--prefix-the-harnesss-special-branches-with-cat-qa-r.md"
    },
    {
      "id": "folio-assistant-3432",
      "title": "BRANCH-ONLY RULING REQUEST: r0tm is a draft decision with a recommendation and a safe default, reachable from no ancestor of main",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T11:33:55Z",
      "updatedAt": "2026-10-09T13:25:00Z",
      "preview": "## The finding, and how it was measured\n\n`beans/defs/folio-assistant-r0tm--adapters-closure-*.md` exists on exactly one\nref — `origin/claude/yj6r-adapters-closure-plan` — and its commit\n(`974a0eac0ce`) is **not an ancestor of `origin/main`**:\n\n    git merge-base --is-ancestor 974a0eac0ce origin/main   -> non-zero\n    git branch -a --contains 974a0eac0ce                   -> that one branch\n\nIt is ",
      "file": "beans/defs/folio-assistant-3432--branch-only-ruling-request-r0tm-is-a-draft-decisio.md"
    },
    {
      "id": "folio-assistant-34cm",
      "title": "The committed site build under cat-harness/docs/ is 44% of all merge conflicts, and the publish workflow rebuilds it anyway",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T08:34:21Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Owner, 2026-10-03: *\"I want you to examine each of the conflicted PR as they\ncome in to figure out how we can reduce the conflicts/ignore them.\"* This is\nthat measurement, taken over the whole open queue at once rather than per PR,\nbecause the answer is a distribution and not a property of any one PR.\n\n## The measurement\n\nEvery conflicted path of every open non-draft PR, against `main` `d089aca961",
      "file": "beans/defs/folio-assistant-34cm--the-committed-site-build-under-cat-harnessdocs-is.md"
    },
    {
      "id": "folio-assistant-391j",
      "title": "MERGE SKEW: two green branches merged into a red main (prov-qaqc, 2026-09-24) — not a regen blind spot as first diagnosed; owner decides merge queue vs up-to-date vs fix-forward",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T06:06:37Z",
      "updatedAt": "2026-09-30T22:33:44Z",
      "preview": "Measured 2026-09-24. Main went red on 10b48aed (the #1246 merge) in `TypeScript — tests, lint, types`: the test `prov-qaqc: the real repository > the committed page and logs are current (what check:prov-qaqc gates)` failed. #1245 had added the report; 172b558d (#1190) then committed a new workflow instance without regenerating it. It was fixed by a pure regeneration in #1249.\n\n**Why `bun run cat r",
      "file": "beans/defs/folio-assistant-391j--regen-blind-spot-a-check-enforced-by-a-bun-test-no.md"
    },
    {
      "id": "folio-assistant-398x",
      "title": "GUIDELINE DOMAIN: clinical / public health / health system strengthening, as a glossary scheme applied through classifications",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T14:06:52Z",
      "updatedAt": "2026-10-23T16:42:00Z",
      "preview": "Owner, 2026-10-10: *\"these will all need to be a part of a SMART Guideline at some point and are one of clinical health, public health, or health system strengthening guidlines ... In any case these all will be be in the Glossary and can be sorted out later.\"*\n\n**Measured.** No code exists for this anywhere. The closest is smart-base `KGInterventionType` (DRAFT: `#public-health`, `#health-system`,",
      "file": "beans/defs/folio-assistant-398x--guideline-domain-clinical-public-health-health-sys.md"
    },
    {
      "id": "folio-assistant-3clc",
      "title": "B10c (#1168): ModelId type + advisory check against the model registry",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T14:59:53Z",
      "updatedAt": "2026-09-30T15:20:06Z",
      "preview": "Owner 2026-09-30: Type + advisory. 532 free-string model ids across 5 fields; not-disclosed a declared value; bootstrap/models/models.json seeded with the 4 ids as validation: unverified.\n## Done when\n- [ ] ModelIdSchema on every model field\n- [ ] advisory check resolves ids against the registry\n\n\n\n## 2026-09-30 progress\n- [x] ModelIdSchema (bootstrap-tools/schemas/model-registry.ts) + NOT_DISCLOS",
      "file": "beans/defs/folio-assistant-3clc--b10c-1168-modelid-type-advisory-check-against-the.md"
    },
    {
      "id": "folio-assistant-3dci",
      "title": "THEME: grumpy-cyborg-agents for cat-harness; plain grumpy-cat moves to folio-assistant-core",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T12:36:12Z",
      "updatedAt": "2026-09-24T12:36:12Z",
      "preview": "Owner 2026-09-24: supplied three crops (card 1254x1254, mobile 1024x1536, laptop 1659x948) of the grumpy cat in the sage hoodie on a sled pulled by four robot cats — \"import avatar theme\", \"use this for the cat-harness theme, the current plain grump cat them it is using should be for folio-assisnt-core\", named \"grumpy-cyborg-agents\".\n\n## Summary of Changes\n- Art at cat-harness/docs/assets/img/harn",
      "file": "beans/defs/folio-assistant-3dci--theme-grumpy-cyborg-agents-for-cat-harness-plain-g.md"
    },
    {
      "id": "folio-assistant-3ds9",
      "title": "SPIKE: can CI and a fresh agent container both push to and read an orphan qa-reports branch through the proxy?",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:00:46Z",
      "updatedAt": "2026-10-01T08:53:39Z",
      "preview": "Arc `3fva`, proposal §4 item 1.2. **This spike can falsify part A**, so it goes before any mechanism is built.\n\nWrite path, as in lake-cache `cmd_seed`: hash-object, then mktree, then commit-tree, then push to a throwaway `qa-reports-spike`.\nRead path: `git fetch --depth=1 --filter=blob:none origin +qa-reports-spike:refs/qa-reports-read`, then `git show`.\n\nMeasure:\n- (1) push from a code-quality-g",
      "file": "beans/defs/folio-assistant-3ds9--spike-can-ci-and-a-fresh-agent-container-both-push.md"
    },
    {
      "id": "folio-assistant-3f5f",
      "title": "KG CONTEXT: inSubgraph and partOf both map to dcterms:isPartOf — subgraph membership and structural containment collapse into one property",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T09:46:16Z",
      "updatedAt": "2026-10-03T11:01:51Z",
      "preview": "Found by the c1m4 generator (gen-subgraph-jsonld.ts, 2026-10-03). In kg-export's context both `inSubgraph` (a node belongs to a named subgraph — a VIEW) and `partOf` (structural containment, e.g. an activity part of a process) map to `dcterms:isPartOf`. JSON-LD compaction therefore merges them into one property in the subgraph files, and a consumer cannot tell 'this skill is in subgraph skills/sdl",
      "file": "beans/defs/folio-assistant-3f5f--kg-context-insubgraph-and-partof-both-map-to-dcter.md"
    },
    {
      "id": "folio-assistant-3fva",
      "title": "ARC: QA & test evidence off main — a commit-keyed qa-reports branch, and a test-plan → certification process",
      "status": "in-progress",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T07:59:35Z",
      "updatedAt": "2026-10-21T19:15:00Z",
      "preview": "Issue #1763. Proposal, workplan, dispatch map and decisions D1–D5: `cat-harness/docs/proposals/qa-reports-branch-and-test-process-2026-10-01.md`.\nSibling of the QA epic `1swy` (an epic cannot be parented under an epic here).\n\nOwner, 2026-10-01: do not pollute main with the QA subgraph; publish it on a\ndedicated branch, as caching is; tie QA into a strawperson test process (an agent\nor machine is t",
      "file": "beans/defs/folio-assistant-3fva--arc-qa-test-evidence-off-main-a-commit-keyed-qa-re.md"
    },
    {
      "id": "folio-assistant-3hk4",
      "title": "QA-PUBLISH must publish real results once main holds none (5hox blocker)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T13:58:10Z",
      "updatedAt": "2026-10-21T19:15:00Z",
      "preview": "Found by the 5hox prep (2026-10-02, cat-harness/docs/proposals/5hox-removal-inventory.md). qa-publish publishes what the checkout holds under every declared qa directory. After 5hox removes the working copies, a fresh CI checkout holds almost nothing there (only the bootstrap kg-export sidecar), so every main/<sha> entry would hold ~1 file and every --against main baseline would shrink to nothing.",
      "file": "beans/defs/folio-assistant-3hk4--qa-publish-must-publish-real-results-once-main-hol.md"
    },
    {
      "id": "folio-assistant-3ka9",
      "title": "fhir-cache-seed-npm: follow transitive dependencies, and mirror smart-base's 4 missing packages",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T16:04:40Z",
      "updatedAt": "2026-10-08T01:15:00Z",
      "preview": "Split from 6mk7 on 2026-10-06 (session https://claude.ai/code/session_01EcBv3uwKYcnNbCC6BcPG92).\n\nSUSHI on smart-base still fails here, because 4 TRANSITIVE packages are not in the cache: crmi#2.0.0, cql#2.0.0, sdc#4.0.0 and terminology#7.3.0. The seeder reads only the IG's own `dependencies:`, so it never lists them. That means `--missing-out` never asks fhir-package-mirror for them either.\n\n## D",
      "file": "beans/defs/folio-assistant-3ka9--fhir-cache-seed-npm-follow-transitive-dependencies.md"
    },
    {
      "id": "folio-assistant-3lbz",
      "title": "TOOLS: Zod schemas are not reachable as Tools, and kg-navigation has none — audit + analysis",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T05:16:23Z",
      "updatedAt": "2026-10-09T16:03:00Z",
      "preview": "**Asked by the owner, 2026-09-20**: *\"all zod usage is associated with skills\nand put in tools? (like validate node in graph, or so) in kg-navigation?\"* —\nand, on shape: *\"a Tool per Zod schema... no, but there should be common\npatterns (single pattern?) with some parameters more or less\"*.\n\nAnalysis: `cat-harness/docs/proposals/zod-schemas-as-tools.md`, attached to\n[#223](https://github.com/litlf",
      "file": "beans/defs/folio-assistant-3lbz--tools-zod-schemas-are-not-reachable-as-tools-and-k.md"
    },
    {
      "id": "folio-assistant-3mo4",
      "title": "EXTRACTION: cleanMarkdownText leaves literal **** in a msgid when a code span is wrapped in emphasis, and eats the spacing when there are two",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T12:53:23Z",
      "updatedAt": "2026-10-07T05:07:00Z",
      "preview": "Found 2026-09-26 while measuring `lvk9`, and **pre-existing rather than introduced\nby it** — proven below.\n\n`cleanMarkdownText` strips an inline code span and strips emphasis markers, but\nwhen a code span is WRAPPED in emphasis it does neither cleanly, and it is not\nconsistent about which way it fails:\n\n| input | output |\n|---|---|\n| ``` **`clarity-defn-single`** — fail if x ``` | `\"**** — fail if",
      "file": "beans/defs/folio-assistant-3mo4--extraction-cleanmarkdowntext-leaves-literal-in-a-m.md"
    },
    {
      "id": "folio-assistant-3o5b",
      "title": "TEST PROCESS: tester + certifier roles, system-under-test actor facet, test-plan-execution.bpmn, certification DMN, kg-audit criteria",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [
        "folio-assistant-ff09"
      ],
      "blockedBy": [
        "folio-assistant-ygzh"
      ],
      "createdAt": "2026-10-01T08:00:47Z",
      "updatedAt": "2026-10-02T05:51:43Z",
      "preview": "Arc `3fva`, proposal §3.2 and §4 items 5.4 and 5.5. Blocked on the TEST PLAN schema bean.\n\n`test-plan-execution.bpmn` has five lanes:\n- Requester / SUT: requests certification against plan P.\n- Tester: resolves the plan, binds the test data, executes, writes the run.\n- Untainted checker: re-executes a sample (`untainted-verification`).\n- Certifier: decides, using the DMN that `exitCriteria` names.",
      "file": "beans/defs/folio-assistant-3o5b--test-process-tester-certifier-roles-system-under-t.md"
    },
    {
      "id": "folio-assistant-3oqj",
      "title": "FOUR KINDS NOTHING AUDITS: health, interaction, issue-marks, todos - 13 files, 0 criteria, 0 gates",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T05:44:17Z",
      "updatedAt": "2026-09-24T13:08:49Z",
      "preview": "Measured 2026-09-24 by `bun run cat audit:coverage` (bean `xutg`). Four declared\ngraph kinds hold files that **no `kg-audit` criterion and no gate declaring\n`@covers` reaches**:\n\n| kind | files | directories |\n|---|---|---|\n| `health` | 1 | `cat-harness/test/health/results` |\n| `interaction` | 1 | `interaction` |\n| `issue-marks` | 2 | `issue-marks` |\n| `todos` | 9 | `todos` |\n\n## This is an UPPER ",
      "file": "beans/defs/folio-assistant-3oqj--four-kinds-nothing-audits-health-interaction-issue.md"
    },
    {
      "id": "folio-assistant-3ozg",
      "title": "bun test rewrites 72 committed script-sidecars, so bun run cat gates reports NOT clean on every branch, main included",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T05:06:01Z",
      "updatedAt": "2026-09-27T07:15:00Z",
      "preview": "Measured 2026-09-27 on pristine main `c6960465301`, and the same on 2026-09-26 at `8fb8a041a8e`.\n\n## What happens\n\nA full `bun test` rewrites all 72 files under `cat-harness/content/pipeline/script-sidecars/`, changing only three fields in each:\n\n    last_run_at     wall-clock time of this run\n    last_run_sha    the checked-out HEAD\n    engine_version  the local bun (bun-1.3.11 here; the committe",
      "file": "beans/defs/folio-assistant-3ozg--bun-test-rewrites-72-committed-script-sidecars-so.md"
    },
    {
      "id": "folio-assistant-3p7c",
      "title": "MVP: bootstrap-provable layers — folio_init/instance-init against one layer alone, in an empty repo",
      "status": "completed",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T09:56:42Z",
      "updatedAt": "2026-10-04T09:56:42Z",
      "preview": "The MVP the owner ruled in `tndo` (2026-09-30), grouped so its progress can be read in one place.\n\n> **MVP = `folio_init` creates a working folio against that layer ALONE, in an empty repository.**\n\nRefined by the owner's 2026-10-01 ruling on `mer2`: for a layer with no adapter (`bootstrap`, `cat-harness`) the operation is an **instance-init**, not a folio — so \"working\" means the instance-init su",
      "file": "beans/defs/folio-assistant-3p7c--mvp-bootstrap-provable-layers-folio-initinstance-i.md"
    },
    {
      "id": "folio-assistant-3q47",
      "title": "PROCESS WALK: deterministically set an agent's context from the KG at each task",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T17:04:01Z",
      "updatedAt": "2026-10-09T20:15:00Z",
      "preview": "**Uncaptured owner requirement**, same comment as `folio-assistant-cy4p` —\n[#363](https://github.com/litlfred/folio-assistant/issues/363#issuecomment-5740727385),\n09:20, not beaned until 17:0x.\n\n> use for skill to deterministcally walk agent through process flow,\n> detministitcally setting the memory/context using the KG\n> (subprocess/role overlays). worktiems are the beans that they carry with\n> ",
      "file": "beans/defs/folio-assistant-3q47--process-walk-deterministically-set-an-agents-conte.md"
    },
    {
      "id": "folio-assistant-3r47",
      "title": "Drop the per-kind graph classes (KGraph, SkillGraph, VoiceGraph, …): a directory is a Subgraph holding GraphKind individuals",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-xsqm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:04:38Z",
      "updatedAt": "2026-09-30T20:04:55Z",
      "preview": "## The ruling, owner 2026-09-30\n\nAsked *\"KGraph needs better name? CatHarness? … what is bootstrap's? consistent? why not just CatHarness? why need graph?\"*, then chose **\"Drop per-kind classes\"** over renaming.\n\n## Why (measured 2026-09-30)\n\n- bootstrap has no class per kind: a kind is a word (`skills`, `processes`) and one `bootstrap:GraphKind` individual, `bootstrap:graphKind/<kind>`; a declare",
      "file": "beans/defs/folio-assistant-3r47--drop-the-per-kind-graph-classes-kgraph-skillgraph.md"
    },
    {
      "id": "folio-assistant-3sbm",
      "title": "TOOL RELEASES + PROFILES: named, versioned, hashed tool sets with per-tool runtimes; PROV-O log of what each run used; SPDX 3 as export",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T22:13:50Z",
      "updatedAt": "2026-10-21T21:32:00Z",
      "preview": "Issue #2481. Owner 2026-10-07: 'need named/versioned releases + sha of software. it's not a gate per se, but a logging of what version of the Tool was used for audit purpose'; 'different tools may need different instances of java, so cannot pin java globally'. Owner chose PROV log + SPDX export. Closes G4 of the SPDX proposal (bean sd5v); answers D1's missing consumer (bean ffv7).\n\n## Done when\n- ",
      "file": "beans/defs/folio-assistant-3sbm--tool-releases-profiles-named-versioned-hashed-tool.md"
    },
    {
      "id": "folio-assistant-3sm2",
      "title": "A gate held red by decision cannot ratchet its own subject — so the catalogue question is asked of the CHANGE (the 25→36 growth claim is RETRACTED: it was a mutant's output)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T19:39:54Z",
      "updatedAt": "2026-09-27T05:06:39Z",
      "preview": "Owner chose the route on 2026-09-26: **make the drift gate green rather than move\nthe masked gates out from behind it** (asked with four options, against `cpss`'s\n108 masked checks). Measuring first turned that into a finding: the gate cannot be\nbrought green by finishing a fixed list, because the list is growing faster than it\nis being cleared, and nothing stops it.\n\n## The arithmetic, measured o",
      "file": "beans/defs/folio-assistant-3sm2--the-t8g3-campaign-closed-24-catalogue-gaps-today-a.md"
    },
    {
      "id": "folio-assistant-3spu",
      "title": "INGEST: the Handbook's text layer keeps 742 soft hyphens (U+00AD) that split words in library sections",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T21:51:12Z",
      "updatedAt": "2026-09-29T23:21:35Z",
      "preview": "9789241548960-eng carries 742 U+00AD in 186 section files ('recommenda­tions', 'organi­zation'); the two style guides carry none; 21 sections in other libraries do too. The LSI tokenizer now joins them (tokenizer v2), but the section TEXT still carries them, so summaries, translation extraction and any lexical grep see fragments. Done when: the PDF rungs normalise U+00AD (join across the line brea",
      "file": "beans/defs/folio-assistant-3spu--ingest-the-handbooks-text-layer-keeps-742-soft-hyp.md"
    },
    {
      "id": "folio-assistant-3srh",
      "title": "TEN GATES HAVE NOT DECLARED @covers, so every audit-coverage verdict is an upper bound",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T05:44:18Z",
      "updatedAt": "2026-09-24T13:08:48Z",
      "preview": "`bun run cat audit:coverage` (bean `xutg`) reports coverage per declared graph kind\nfrom `@covers` lines gates carry in their own module docblocks. 118 scripts\ndeclare; **10 gates have not said**, measured 2026-09-24:\n\n- `check:agents-claims`\n- `check:context-emission`\n- `check:image-roles`\n- `check:avatar-instances`\n- `check:asset-roles`\n- `check:retired-front-matter`\n- `check:wireframes`\n- `chec",
      "file": "beans/defs/folio-assistant-3srh--ten-gates-have-not-declared-covers-so-every-audit.md"
    },
    {
      "id": "folio-assistant-3tza",
      "title": "IG / SMART Guideline creation: new repo or in-repo sub-KG, and the sub-KG lifecycle (stage, seed, re-point, cutover) extracted from the smart-* separation",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T07:13:44Z",
      "updatedAt": "2026-10-08T04:30:00Z",
      "preview": "Owner, 2026-10-06, verbatim: *\"add new skill/process: when asked to create a new FHIR IG or Smart Guideline, that can either be done in a new repo or within the folio of an existing harnessed repo. the agent should determine users intent and act accordingly. if user creates it in a folio/, then it can move it to another repo later (this is essentially the create a sub-KG process and skills we have",
      "file": "beans/defs/folio-assistant-3tza--ig-smart-guideline-creation-new-repo-or-in-repo-su.md"
    },
    {
      "id": "folio-assistant-3vc1",
      "title": "A nested bun install makes root tsc report 12 errors that CI does not have — and it is the only way to fix a stale nested lockfile",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T17:25:05Z",
      "updatedAt": "2026-09-27T10:04:12Z",
      "preview": "## The trap, measured 2026-09-26\n\n`cat-harness/adapters/mcp-server/bun.lock` was stale against its own manifest, so\nfixing it means `bun install` **in that directory** — there is no other way to\nregenerate a lockfile. That install creates a 56 MB\n`cat-harness/adapters/mcp-server/node_modules`, and from that moment the ROOT\n`bunx tsc --noEmit` reports **12 errors across 3 files under\n`cat-harness/a",
      "file": "beans/defs/folio-assistant-3vc1--a-nested-bun-install-makes-root-tsc-report-12-erro.md"
    },
    {
      "id": "folio-assistant-3x2o",
      "title": "Two generated skill pages name a source directory that does not exist — the oe98 banner bug recurs for remote stubs",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T10:44:49Z",
      "updatedAt": "2026-09-27T06:12:28Z",
      "preview": "Found 2026-09-26 while verifying `hloc`'s link rewriting — by checking that\nevery rewritten link points at something that EXISTS, which also swept the\nlinks the generator already composed.\n\n## The measurement\n\n`cat-harness/docs/reference/skill-instructions/fhir-client-operations.md` and\n`smart-launch.md` each open with:\n\n    > Generated from [`cat-harness/skills/remote-stubs/<name>.md`](\n    >   h",
      "file": "beans/defs/folio-assistant-3x2o--two-generated-skill-pages-name-a-source-directory.md"
    },
    {
      "id": "folio-assistant-423d",
      "title": "REVIEW COMMENTS: anchored to block id as 9gyz Findings, surviving moves — and the write path a static page lacks",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T21:02:55Z",
      "updatedAt": "2026-10-21T17:10:00Z",
      "preview": "Owner: *\"and then manage review comments etc.\"*\n\n**The real obstacle, measured.** `docs-ui.js` states it outright: *\"A\npublished page cannot write back to the repo\"* (lines 2077 and 2592). The\nreview page is static on gh-pages, so \"manage comments\" needs a WRITE PATH,\nand choosing it is the owner's decision:\n\n| option | anchors to | cost |\n|---|---|---|\n| A. GitHub PR review comments | a line of a",
      "file": "beans/defs/folio-assistant-423d--review-comments-anchored-to-block-id-as-9gyz-findi.md"
    },
    {
      "id": "folio-assistant-42u5",
      "title": "#1955 hand-off to the merge manager: kept merged with main by its session, by hand",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T12:31:39Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "**For the merge manager — #1955 is kept merged with `main` by its owning session, by hand.**\n\nThe `merge-main` bot cannot land `main` into this branch:\n- it refuses two **authored** conflicts, which have no declared pattern, correctly so (`merge-conflict-patterns`):\n  - `cat-harness/scripts/check-retired-front-matter.ts` — both sides added an import; both are kept (this branch's `checkoutRootFor`,",
      "file": "beans/defs/folio-assistant-42u5--1955-hand-off-to-the-merge-manager-kept-merged-wit.md"
    },
    {
      "id": "folio-assistant-437w",
      "title": "kg:subscribe refuses a fork whose declaration is one level down (smart-base, smart-trust, smart-immunizations): accept an upstreamPath",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fnx4",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T19:43:32Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "## Why\n\nThe owner ruled 2026-10-06 that smart-trust, smart-base and smart-immunizations leave folio-assistant the way who-iris did: each fork is authoritative and folio-assistant keeps a REMOTE subscription to it via `kg:subscribe`, pinned, no submodules. Today `bun run cat kg:subscribe` refuses all three with `not-a-substrate: the root carries no Knowledge Graph declaration`, because each fork ne",
      "file": "beans/defs/folio-assistant-437w--kgsubscribe-refuses-a-fork-whose-declaration-is-on.md"
    },
    {
      "id": "folio-assistant-4475",
      "title": "Run build-ig-site in an IG's own repository (smart-trust first), once folio-assistant is split",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T19:07:16Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "From bamf (#1670). The owner, 2026-09-30: an IG's site is built by the IG's own repository, by instantiating the smart-guideline harness there, and existing repos are NOT instantiated until folio-assistant is split completely (epic vke6).\n\n## What is ready\nfhir-harness's build-ig-site stages an IG source repository as one just-the-docs Jekyll site, with the Publisher's site.data.fhir. Verified on ",
      "file": "beans/defs/folio-assistant-4475--run-build-ig-site-in-an-igs-own-repository-smart-t.md"
    },
    {
      "id": "folio-assistant-4682",
      "title": "Agent memory target: Gemini CLI (not implemented — owner 2026-10-06)",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-31ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:35:15Z",
      "updatedAt": "2026-10-06T18:35:15Z",
      "preview": "Owner 2026-10-06: bean up, DO NOT implement yet. Target format: .gemini/agents/<agent>.md (front matter + prompt body; @file imports allowed, depth 5). Generated by the shared memory assembler into a marked region, with a --check gate and a per-target budget that drops lowest-priority nodes and reports them. Research: see parent bean 31ni.\n\n_2026-10-20_ — Owner re-asked (session https://claude.ai/",
      "file": "beans/defs/folio-assistant-4682--agent-memory-target-gemini-cli-not-implemented-own.md"
    },
    {
      "id": "folio-assistant-46l0",
      "title": "The same commit fails DIFFERENTLY in three environments, so a green run cannot be read as a green tree",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T06:33:48Z",
      "updatedAt": "2026-10-22T16:34:57Z",
      "preview": "Measured 2026-09-26 on ONE commit, `3c2523a8071`, three ways:\n\n| where | `bun test` failures |\n|---|---|\n| GitHub Actions | **7** |\n| a clean `git worktree` of that exact sha, full suite | **8** |\n| the two disagreeing files, run alone | **0** |\n\nThe sets are not nested. CI had two the worktree did not (`this repository's own\ncorpus`, `the real corpus`); the worktree had three CI did not (`FOLIO_R",
      "file": "beans/defs/folio-assistant-46l0--the-same-commit-fails-differently-in-three-environ.md"
    },
    {
      "id": "folio-assistant-46nf",
      "title": "B2 (#1168): voices and user stories point at their role; Role.voice and Role.useCases out",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:20:00Z",
      "updatedAt": "2026-09-23T22:49:20Z",
      "preview": "Part of s4sp (plan B). The 35 role voice sentences become one-rule voice profiles in folio-assistant-core (activeIn.roles to the cat-harness role); the 107 useCases become scenarios/stories.json UserStory nodes pointing at their role. Role.skills typed SkillNameSchema. kg-audit role-declares-voice and role-has-use-cases replaced by role-has-story and story-role-resolves; check:voices resolves acti",
      "file": "beans/defs/folio-assistant-46nf--b2-1168-voices-and-user-stories-point-at-their-rol.md"
    },
    {
      "id": "folio-assistant-46ob",
      "title": "Missing viewers: 100 navbar rows read 'no viewer yet' across 47 kinds on the live site",
      "status": "todo",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T16:53:28Z",
      "updatedAt": "2026-10-22T14:30:00Z",
      "preview": "## The ask, owner 2026-10-15 (verbatim)\n\n> bean up for missing viewers\n\nContext: the owner's screenshot of `/en/cat-harness/library/` showed \"no viewer yet\" on Processes and other declared sub-graphs.\n\n## Measured\n\nFrom the deployed `gh-pages` (folio-assistant `ac9cba167`, 2026-10-15T16:46Z), page `en/cat-harness/library/index.html`, parsing the rendered rail: **210 rows, 100 of them \"no viewer ye",
      "file": "beans/defs/folio-assistant-46ob--missing-viewers-100-navbar-rows-read-no-viewer-yet.md"
    },
    {
      "id": "folio-assistant-46qw",
      "title": "Rename state + fhir-ast/* to cat- names with rename-special-branch.sh (handoff to local agy agent)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T21:25:05Z",
      "updatedAt": "2026-10-02T21:33:31Z",
      "preview": "## Brief\n\nYou are the EXECUTOR for one task handed to you by the merge-steward cloud session (https://claude.ai/code/session_01ToWZR4RgTRCWeSsgxsSQfT). That session cannot push or delete branches: its environment blocks it. You can, because you run on the owner's machine with their git credentials.\n\nWHERE (you were sent here by one line naming this bean, branch and repo)\n- Repo:     litlfred/folio",
      "file": "beans/defs/folio-assistant-46qw--rename-state-fhir-ast-to-cat-names-with-rename-spe.md"
    },
    {
      "id": "folio-assistant-48a6",
      "title": "IG FORK SITES DRIFT: smart-trust and smart-base GitHub Pages lack the current harness chrome that smart-immunizations has",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T06:17:40Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "Reported by the owner, 2026-10-06 (session https://claude.ai/code/session_012qoycyCSGidZqW245vXhze), verbatim:\n\n> https://litlfred.github.io/smart-trust/ and https://litlfred.github.io/smart-base dont have updated harness on ghpages like https://litlfred.github.io/smart-immunizations does\n\n## What is known\n- **Reference (good):** https://litlfred.github.io/smart-immunizations/ shows the current ha",
      "file": "beans/defs/folio-assistant-48a6--ig-fork-sites-drift-smart-trust-and-smart-base-git.md"
    },
    {
      "id": "folio-assistant-4ak5",
      "title": "PER-HARNESS KG EXPORT: every instance publishes its own JSON-LD + schema (split cat-harness.jsonld); root index.jsonld meta-skeleton at depth 1",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-2ee5",
        "folio-assistant-e0hw"
      ],
      "createdAt": "2026-10-02T21:36:29Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "Owner, 2026-10-02, verbatim: \"bean: please make sure harnesses generate json(ld)+schema for their semi-static KGs, their subgraphs etc. there are some rules in the KG corpsu but scattered. right now, i dont see folio-assistnat.jsonld in gh-pagaes for example. i think all subsumted into cat-harness? these should be split out into their component sub-grpah/harnesses. see related beans. maybe we also",
      "file": "beans/defs/folio-assistant-4ak5--per-harness-kg-export-every-instance-publishes-its.md"
    },
    {
      "id": "folio-assistant-4ccr",
      "title": "WIREFRAME FINDINGS: usability and accessibility defects the as-is wireframes observed (#1023)",
      "status": "completed",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:13Z",
      "updatedAt": "2026-10-12T18:26:29Z",
      "preview": "The as-is wireframes merged in #1032 record, for every declared harness visualiser, what the page actually does at 1280×800 (web) and 390×844 (mobile). The `## Findings` section of each `cat-harness/docs/wireframes/<kind>/intent.md` holds only what was observed on the rendered page or read off its generator; nothing is inferred.\n\nThis epic turns those findings into work (owner, 2026-09-23: *\"make ",
      "file": "beans/defs/folio-assistant-4ccr--wireframe-findings-usability-and-accessibility-def.md"
    },
    {
      "id": "folio-assistant-4d22",
      "title": "A bean completed AFTER its PR merges is orphaned by the next re-branch — twice in one session",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T11:49:49Z",
      "updatedAt": "2026-09-22T11:49:49Z",
      "preview": "Measured 2026-09-22, twice, on this branch.\n\n## The shape\n\nThe sequence that loses it:\n\n1. PR merges.\n2. Agent marks the bean `completed` and commits it to the branch.\n3. Agent re-branches from the merged main: `git checkout -B <branch> origin/main`.\n4. **The completion commit is now orphaned** — it was pushed to the remote\n   branch but never merged, and the local branch no longer contains it.\n\nT",
      "file": "beans/defs/folio-assistant-4d22--a-bean-completed-after-its-pr-merges-is-orphaned-b.md"
    },
    {
      "id": "folio-assistant-4dbr",
      "title": "Forge portability: GitLab and sovereign-compute as additional Tool nodes, not a sixth repo",
      "status": "in-progress",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T18:46:11Z",
      "updatedAt": "2026-10-21T17:35:00Z",
      "preview": "Opened 2026-09-18 at the owner's direction: \"github ok for now, bean for future\ngitlab / sovereign-compute use\".\n\n## The decision this records\n\nThe five-repo split proposal (#223) considered a sixth repository,\n`agent-harness-github`, holding the four PR-choreography skills\n(`prepare-merge-auto`, `pickup`, `watch`, `coordinate`) so the harness could run\non another forge or none. **Rejected in favo",
      "file": "beans/defs/folio-assistant-4dbr--forge-portability-gitlab-and-sovereign-compute-as.md"
    },
    {
      "id": "folio-assistant-4dx7",
      "title": "LaTeX in the ✍ suggest editor: math macros, references, environments, validated against the KG",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-14T16:30:00Z",
      "updatedAt": "2026-10-16T07:05:00Z",
      "preview": "Owner, 2026-10-14 (session https://claude.ai/code/session_0147GQWs8akum21vSh5XYURR): *\"How does it handle latex? Don't implement now but add a bean to folio assistant sci.\"*\n\n## Context\n\nThe ✍ suggest action (a WYSIWYG Markdown editor beside ✎ edit on every Markdown block of every harness site, Milkdown Crepe loaded on first use, the change submitted as a prefilled GitHub issue) lives in the share",
      "file": "beans/defs/folio-assistant-4dx7--latex-in-the-suggest-editor-math-macros-referenc.md"
    },
    {
      "id": "folio-assistant-4dxv",
      "title": "goal-review axis 1: the session listing is ordered by CREATION, so a window filter must page until creation predates the window",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T12:20:12Z",
      "updatedAt": "2026-09-30T00:27:10Z",
      "preview": "Found 2026-09-24 in a 1-day goal review. The rule concerned is `goal-review` §\"The six axes\", axis 1 (\"ASK THE SESSION API FIRST … List the sessions\").\n\n**Measured:** `list_sessions(mine, limit 40)` returned 40 sessions, 22 of them updated in the window, and `has_more: true`. The in-window rows were interleaved with sessions last active on 07-03, because the list is ordered by creation, not activi",
      "file": "beans/defs/folio-assistant-4dxv--goal-review-axis-1-the-session-listing-is-ordered.md"
    },
    {
      "id": "folio-assistant-4fv8",
      "title": "Placement PR4: whole roles, stories, actors and capabilities move up to their owners",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-pzwb"
      ],
      "createdAt": "2026-10-01T06:58:01Z",
      "updatedAt": "2026-10-15T16:49:43Z",
      "preview": "Placement proposal §2 (owner rulings 2026-09-30 §6; process: review → resolve issues → staged PRs). Parent of PR0/PR1 is `9umr`; PR2–PR9 sit under the separation epic because D4 (owner, 2026-10-01, option 3) interleaves them with the split stages into one ordered sequence. Every PR: references move with the subject; generated trees regenerated, never hand-edited; `beans/**` not rewritten; kg-qa si",
      "file": "beans/defs/folio-assistant-4fv8--placement-pr4-whole-roles-stories-actors-and-capab.md"
    },
    {
      "id": "folio-assistant-4iey",
      "title": "PER-PLAN exit-criteria DMN: test-plan-execution looks up the plan's own decision table",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T05:51:37Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Follow-up from 3o5b (owner, 2026-10-02: bean, build later). test-plan/v1 lets a plan name its exitCriteria DMN, but GW_ExitCriteria in test-plan-execution.bpmn always evaluates the platform default (processes/decisions/test-certification.dmn).\n\n## Do first (interim guard, small)\n- [x] kg:audit criterion: a plan whose exitCriteria names a table other than the default is flagged (major), so no plan ",
      "file": "beans/defs/folio-assistant-4iey--per-plan-exit-criteria-dmn-test-plan-execution-loo.md"
    },
    {
      "id": "folio-assistant-4j86",
      "title": "STAGING CONE (file level): a preview rebuilds only what a PR's changed files can reach — general rule, in the skills",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-nama"
      ],
      "createdAt": "2026-10-04T13:49:44Z",
      "updatedAt": "2026-10-05T11:39:15Z",
      "preview": "Owner, 2026-10-04: *\"staging rebuild only what is dependency cone of changes (general rule. update skills)\"*. Asked how fine-grained, the owner chose FILE LEVEL (option 1 of 3).\n\n## Today (measured 2026-10-04, read-only map)\nfeature-staging.yml's cut is a PREFIX MATCH, not a cone:\n- compose-docs.ts `carriedInstances()` (bean ga8a) carries a composed instance only if a changed path starts with its ",
      "file": "beans/defs/folio-assistant-4j86--staging-cone-file-level-a-preview-rebuilds-only-wh.md"
    },
    {
      "id": "folio-assistant-4kj4",
      "title": "AVATARS: per-kind avatar, in and out of trash, both schemes, with a QA axis for coverage",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:08:23Z",
      "updatedAt": "2026-10-09T17:38:00Z",
      "preview": "Owner, 2026-09-19:\n\n> each content type should have an avatar in and out of trash. dark and\n> light mode. see work on themes by sibling for stickies.\n\nand, when asked whether that meant folio content types or `fsh-guts` node\nkinds:\n\n> if more than one kind then it fades through the avatars in a loop. issues\n> with that? also make sure needed accesabily modes. QA sidescares if avatar\n> thems not fu",
      "file": "beans/defs/folio-assistant-4kj4--avatars-per-kind-avatar-in-and-out-of-trash-both-s.md"
    },
    {
      "id": "folio-assistant-4kq7",
      "title": "Adopt github/spec-kit: spec-before-code gate, one spec template, specs as issue comments, change-size splitting",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T14:46:51Z",
      "updatedAt": "2026-10-09T21:40:00Z",
      "preview": "Issue: https://github.com/litlfred/folio-assistant/issues/730\n\nOwner request 2026-09-21: align folio-assistant with github/spec-kit; no development before a spec exists; all specs in one template; specs posted as GitHub issue comments; oversized changes split into multiple issues so human adjudication on the PR stays feasible; follow industry standards for the split.\n\n## Blocking decision — RESOLV",
      "file": "beans/defs/folio-assistant-4kq7--adopt-githubspec-kit-spec-before-code-gate-one-spe.md"
    },
    {
      "id": "folio-assistant-4l4d",
      "title": "GEN-DOCS-PAGES reads QA badges through qa-store (5hox blocker)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [
        "folio-assistant-5hox"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-02T13:58:10Z",
      "updatedAt": "2026-10-02T17:56:38Z",
      "preview": "Found by the 5hox prep (2026-10-02). docs:pages:check and check:ci-invocations go red with test/results/ absent: committed docs pages embed QA badges, and without the corpus gen-docs-pages writes 'not available', so every page reads stale. Either read the corpus through qa-store (fetch miss = UNKNOWN, never a stale page), or move the badges out of the committed pages into the build.\n\n## Done when\n",
      "file": "beans/defs/folio-assistant-4l4d--gen-docs-pages-reads-qa-badges-through-qa-store-5h.md"
    },
    {
      "id": "folio-assistant-4l5q",
      "title": "B7b (#1168): a skill declares the directories it governs (graph-kinds:, governs:); coverage.skill removed",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T19:50:21Z",
      "updatedAt": "2026-09-24T19:59:59Z",
      "preview": "Owner 2026-09-24: 'A' for coverage.skill, and 'skill names the directory' for a domain skill over a generic-kind directory. 24 kind claims added to skills' graph-kinds:; 5 directories whose kinds are all generic named in governs: as <instance>/<id>. scripts/skill-governance.ts reads both; a kind claim reaches the skill's instance, its dependents, and the platform. check-subgraph-coverage derives t",
      "file": "beans/defs/folio-assistant-4l5q--b7b-1168-a-skill-declares-the-directories-it-gover.md"
    },
    {
      "id": "folio-assistant-4nfs",
      "title": "ONTOLOGIST / TERMINOLOGIST: skills, methodologies, tools and processes for reviewing content and classifying/coding it",
      "status": "in-progress",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T14:07:07Z",
      "updatedAt": "2026-10-23T21:13:00Z",
      "preview": "Owner, 2026-10-10: *\"(add bean: need to provide ontologist/termonologist skills+methdologies+tools+processes when trying to review content and classify/code it)\"*.\n\n## What exists (measured 2026-10-10)\n- **Skills.** core `skills/library/cataloguing/ontologist.md` (scan → ambiguities → formal glossary → mapping); `glossary-terms.md` (\"reference first, define second\", candidate/authored/could-not-ex",
      "file": "beans/defs/folio-assistant-4nfs--ontologist-terminologist-skills-methodologies-tool.md"
    },
    {
      "id": "folio-assistant-4pla",
      "title": "JSON-LD VOICE, MECHANICAL HALF: publish:verify checks object properties are links and no document leans on a remote @base",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T07:23:50Z",
      "updatedAt": "2026-10-03T07:24:00Z",
      "preview": "The linked-data voice (bean 9y9j) holds 7 rules, all judgementOnly: a reviewer applies them, nothing checks the emitted documents. Two are decidable by a JSON-LD processor over the emitted files and belong in publish:verify's verifier set, which already runs on the built site before deploy (docs-site.yml) and on every PR's staging build (feature-staging.yml).\n\nMeasured 2026-10-03 over the 7,059 co",
      "file": "beans/defs/folio-assistant-4pla--json-ld-voice-mechanical-half-publishverify-checks.md"
    },
    {
      "id": "folio-assistant-4pm8",
      "title": "PAGEFIND: evaluate as the search engine for the large-datasets subgraph",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T09:21:09Z",
      "updatedAt": "2026-09-25T00:00:00Z",
      "preview": "Owner, 2026-09-20: '4 bean up. for now give requrements/constraings/issues/pros/cons/otpons here only for analysis/discussion./ not durable.'\n\nSo this bean is the TRACKING ITEM and deliberately not the analysis. The requirements, constraints, pros, cons and options were given in chat for discussion and are explicitly NOT to be written into the repository yet. Recording that instruction here matter",
      "file": "beans/defs/folio-assistant-4pm8--pagefind-evaluate-as-the-search-engine-for-the-lar.md"
    },
    {
      "id": "folio-assistant-4rbc",
      "title": "CI cone: enable the f017 input-hash skip under CI, seeded from main's last green run",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T19:39:28Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Issue #2456. Owner approved 2026-10-07 ~19:40Z (\"1y, 2y, 3y, 4y\"). Measurements in the issue body.\n\n_2026-10-07T19:39:38Z_ — Claimed by claude/ci-cone-f017 (session https://claude.ai/code/session_013WbQekVypi9A6YQbLDXMmJ).\n\n## 2026-10-07: the approach as specified skips nothing, so no CI plumbing was built\n\n**The falsifier hit before any code was written.** Under f017's existing rules, a pull requ",
      "file": "beans/defs/folio-assistant-4rbc--ci-cone-enable-the-f017-input-hash-skip-under-ci-s.md"
    },
    {
      "id": "folio-assistant-4sim",
      "title": "DCAT: describe a RELEASE of the glossary / terminology as a published dataset — held until the term model lands",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T11:48:00Z",
      "updatedAt": "2026-09-23T22:13:21Z",
      "preview": "Owner, 2026-09-22, ruling on #596's ruling 2: **\"DCAT: hold as bean as render of whatever we land on.\"**\n\nSo this is deliberately NOT built, and the reason is in the ruling's own words: DCAT renders *whatever we land on*, so building it before the term model is settled would render a moving target.\n\n## What DCAT is and is not\n\n**Not a term model.** It describes a `dcat:Dataset` and its `dcat:Distr",
      "file": "beans/defs/folio-assistant-4sim--dcat-describe-a-release-of-the-glossary-terminolog.md"
    },
    {
      "id": "folio-assistant-4tel",
      "title": "merge:main has no conflict pattern for translation-qa results, so it aborts",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T18:25:31Z",
      "updatedAt": "2026-10-07T11:50:33Z",
      "preview": "Measured 2026-10-04 ~18:15Z merging main into `claude/gracious-mendel-du6nn8` after #2105: `merge:main` ABORTED on five conflicts it classified `[no declared pattern]` — `cat-harness/test/results/translation-qa/docs/installation.{ar,es,fr,ru,zh}.translation-qa.json`. Both sides had only regenerated them (55+/55- each side). Resolved by hand by taking main's copy, then regen-after-merge proved the ",
      "file": "beans/defs/folio-assistant-4tel--mergemain-has-no-conflict-pattern-for-translation.md"
    },
    {
      "id": "folio-assistant-4tnt",
      "title": "folio-test main lags the pipeline: the dogfood folio does not exercise what folio_init writes today",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:10:09Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "Recorded from the qou work-plan analysis, 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). Not started: recorded so the gap has an owner. litlfred/folio-test was stood up by 58h0 as the folio_init dogfood; its main is behind the current template and pipeline, so it no longer proves what it was made to prove. Re-measure the delta before acting.\n\n\nRe-parented 2026-10-04 ",
      "file": "beans/defs/folio-assistant-4tnt--folio-test-main-lags-the-pipeline-the-dogfood-foli.md"
    },
    {
      "id": "folio-assistant-4tts",
      "title": "IG VARIABLES via Liquid: lift generate_smart_liquid.py into site.data and render IG pages from Jekyll/Liquid templates in one pass",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:36:15Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "Owner, 2026-10-01: *\"make use of jekyll/liquid templates in justthedocs pipeline. bean should be there on variable substitution\"*.\n\nNo bean tracked this before. It was P0's stated **open half** in two skills:\n- `ig-publisher-reduction` §\"P0 is a re-point\";\n- `ig-render-jekyll` §\"Where the variables come from\".\n\n**Settled design (from the skills; not redesigned here):**\n- **Lift** WHO's `generate_s",
      "file": "beans/defs/folio-assistant-4tts--ig-variables-via-liquid-lift-generate-smart-liquid.md"
    },
    {
      "id": "folio-assistant-4u5d",
      "title": "IG artefact index built at publish by fhir-harness from the AST: no IG instance commits fhir-artifact-index/",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-n3h9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T14:30:00Z",
      "updatedAt": "2026-10-23T14:36:00Z",
      "preview": "## Parent\n\nfolio-assistant-n3h9\n\nRelated: folio-assistant-p7mb (build derived artefacts at publish).\n\nOwner, 2026-10-23: \"fhir-artifact-index/ → shouldn't that be a part of fhir-harness?\" and \"1 and implement\" (plan, then implement). Plan: litlfred/fhir-harness#124. Thread \"fhir-harness IG viewers\".\n\n## Why\n\nsmart-trust and smart-base commit `fhir-artifact-index/` (index, menu, releases; 1.3 to 1.",
      "file": "beans/defs/folio-assistant-4u5d--ig-artifact-index-built-at-publish-by-fhir-harness.md"
    },
    {
      "id": "folio-assistant-4vg7",
      "title": "WORK PLAN: two bean files declare the same id folio-assistant-t3n8 — every id-keyed reader sees one and silently loses the other",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T12:05:24Z",
      "updatedAt": "2026-10-03T12:34:37Z",
      "preview": "Found 2026-10-03 by the q8ar SQLite slice builder (its manifest lists t3n8 under duplicateIds). Files: `folio-assistant-t3n8--harness-display-names-every-instance-declares-a-hu.md` (parent yj32) and `folio-assistant-t3n8--the-archive-rung-stages-but-can-never-promote-and.md` (parent ahvw). Any reader keyed by id (beans CLI, claim-bean, the dashboard index, roadmap) resolves one and drops the other",
      "file": "beans/defs/folio-assistant-4vg7--work-plan-two-bean-files-declare-the-same-id-folio.md"
    },
    {
      "id": "folio-assistant-4wzf",
      "title": "RENAME: agent-harness -> cat-harness (computable agentic testing harness)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T19:24:30Z",
      "updatedAt": "2026-09-30T10:23:23Z",
      "preview": "## The ask\n\nOwner, in chat 2026-09-18:\n\n> need to rename agent-harness to \"cat-harness\" for\n> \"computable-agentic-testing-harness\"\n\nQueued rather than done inline: it arrived mid-`g6yr`, and the standing\ninstruction is to queue new tasks rather than pivot.\n\n## Why it is bigger than a sed\n\nThe name is load-bearing in several distinct namespaces, and they do not all\nrename on the same schedule.\n\n**O",
      "file": "beans/defs/folio-assistant-4wzf--rename-agent-harness-cat-harness-computable-agenti.md"
    },
    {
      "id": "folio-assistant-4y2i",
      "title": "TOPOLOGY: sovereign cloud — hosted forge, jurisdiction-defined URLs, L4-L5 data stores",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:55:37Z",
      "updatedAt": "2026-09-19T09:01:53Z",
      "preview": "**Strawperson.** From [#363](https://github.com/litlfred/folio-assistant/issues/363):\n\"soverign cloud: hosted git server, staging and publcation URLs follows different\ndeployment pattern (jusidiction defined). in L4-L5 context may have data stores\nlike hapi. for (public health) portals, (health) digital wallets),etc. or health\nworker decision spport. bean up to may strwperson and create issue to r",
      "file": "beans/defs/folio-assistant-4y2i--topology-sovereign-cloud-hosted-forge-jurisdiction.md"
    },
    {
      "id": "folio-assistant-4z5o",
      "title": "Generated GitHub edit/source URLs escape the repo with ../ for every cross-instance figure",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T09:08:59Z",
      "updatedAt": "2026-10-07T11:50:39Z",
      "preview": "Generated pages compose GitHub URLs by joining an instance-relative path that leaves the instance root, producing links with `/main/../` in them:\n\n    https://github.com/litlfred/folio-assistant/edit/main/../folio-assistant-core/processes/library/l1-document-ingestion.bpmn\n    https://github.com/litlfred/folio-assistant/blob/main/folio-assistant-core/...   (the blob form is correct)\n\nThe `edit/` f",
      "file": "beans/defs/folio-assistant-4z5o--generated-github-edit-source-urls-escape-the-repo-.md"
    },
    {
      "id": "folio-assistant-502c",
      "title": "EXPERIMENT: forced along a BPMN vs managing it — do outcomes change, at what compute?",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T17:04:01Z",
      "updatedAt": "2026-09-19T17:04:01Z",
      "preview": "**Uncaptured owner requirement**, same comment as `folio-assistant-cy4p`\nand `folio-assistant-3q47` —\n[#363](https://github.com/litlfred/folio-assistant/issues/363#issuecomment-5740727385),\n09:20, not beaned until 17:0x.\n\n> comparision scenarios: give LLM BPMN and force them along it, givem LLM\n> BPMN and let them manage workflow. do behaviour outcomes change? how\n> much time/compute was needed?\n\n",
      "file": "beans/defs/folio-assistant-502c--experiment-forced-along-a-bpmn-vs-managing-it-do-o.md"
    },
    {
      "id": "folio-assistant-52cz",
      "title": "A CONFLICTED PR CREATES NO pull_request RUN, and g62s's headUnjudged cannot see it — the one absent-run case that needs no glob evaluation",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T14:07:18Z",
      "updatedAt": "2026-09-30T18:25:48Z",
      "preview": "## The incident, measured\n\nPR #1589, 2026-09-30. `Repository gates (hard)` failed on `86e403cdfdd`. I\nfixed the cause (`readme:subgraphs`, two stale directory READMEs), pushed twice,\nand **no `Code-quality gates` run was ever created for either new head.** The\nPR went on showing a red from a superseded commit.\n\nThe cause was not the queue and not a path filter. The PR was\n**`mergeable_state: \"dirt",
      "file": "beans/defs/folio-assistant-52cz--a-conflicted-pr-creates-no-pull-request-run-and-g6.md"
    },
    {
      "id": "folio-assistant-52dz",
      "title": "|-",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T07:44:35Z",
      "updatedAt": "2026-09-20T09:12:10Z",
      "preview": "Owner, 2026-09-20: *\"whats using them? give more info\"*.\n\n## Answer: NOTHING is using them\n\nMeasured 2026-09-20 — and the measurement **corrected this bean's own\nframing**, which called them \"folio workflows living in the platform\".\n\n### 1. Nothing triggers them\n\nAll eight are **`workflow_dispatch` only**. `publish.yml` also declares\n`workflow_call`, and **no workflow calls it**. They fire if, and",
      "file": "beans/defs/folio-assistant-52dz--folio-workflows-live-in-the-platform-repo-do-they.md"
    },
    {
      "id": "folio-assistant-52rd",
      "title": "goal-review axis 6: the CI-health tool covers the last 100 runs, which can be shorter than the review window",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T12:20:12Z",
      "updatedAt": "2026-09-30T00:27:10Z",
      "preview": "Found 2026-09-24 in a 1-day goal review. The rule concerned is `goal-review` §\"The six axes\", axis 6 (\"Runs in the window by workflow and outcome\"), and rule 1 (\"Could not determine is never rendered as clean\").\n\n**Measured:** `bun run cat check:ci-health` reported \"100 recent run(s) spanning 13.4h\" for a 24h window, plus 12.9h of Pages deployments. The first ~10.6h of the window had no CI verdict",
      "file": "beans/defs/folio-assistant-52rd--goal-review-axis-6-the-ci-health-tool-covers-the-l.md"
    },
    {
      "id": "folio-assistant-53rv",
      "title": "NETWORK-ACCESS AGENT: fetch what this environment cannot reach (FHIR packages for the mirror, WHO guideline PDFs from IRIS, published IG outputs) and commit them to GitHub",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T15:06:54Z",
      "updatedAt": "2026-10-23T18:10:00Z",
      "preview": "Owner, 2026-10-10: *\"make bean for agent with netwrok access.\"* The network policy of this session's cloud environment refuses the hosts below with 403. The owner says changing that policy is not theirs to do. So the work below waits for an agent whose environment CAN reach them, or a person on an ordinary machine. Every item ends in a commit to a GitHub repository, which this environment can read",
      "file": "beans/defs/folio-assistant-53rv--network-access-agent-fetch-what-this-environment-c.md"
    },
    {
      "id": "folio-assistant-55ao",
      "title": "Add a first-class `recommendation` block kind for document folios",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-08-28T15:04:51Z",
      "updatedAt": "2026-10-10T17:04:26Z",
      "preview": "Split out of `ehve`, which added the `document` content type and deliberately\nstopped short of this.\n\n## Why\n\nAn L1 health-policy guidance note exists to state **recommendations**. A\nrecommendation is the block readers cite, implementers trace to, and reviewers\nsign off individually — it wants a label, a stable identity and a place in the\n`uses[]` graph, which is everything a `theorem` has. It is ",
      "file": "beans/defs/folio-assistant-55ao--add-a-first-class-recommendation-block-kind-for-do.md"
    },
    {
      "id": "folio-assistant-57mn",
      "title": "qa-sweep loads contributions from cat-harness/ and registers 0 contributed checkers",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T23:57:45Z",
      "updatedAt": "2026-09-30T00:13:13Z",
      "preview": "Found while building #1492 (PR #1515). Owner chose a separate small PR (2026-09-29).\n\n**Measured:** qa-sweep.ts called loadContributions(INSTANCE_ROOT), and INSTANCE_ROOT is cat-harness/, which declares no dependencies. So a real sweep registered 0 contributed checkers, and folio-assistant-sci's proof-compile-cost and proof-no-cost-regression never ran. qa-checker-discovery.test.ts passed because ",
      "file": "beans/defs/folio-assistant-57mn--qa-sweep-loads-contributions-from-cat-harness-and.md"
    },
    {
      "id": "folio-assistant-58ro",
      "title": "Merge refused: #1977 owed CI not green on its head",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:42Z",
      "updatedAt": "2026-10-15T16:49:44Z",
      "preview": "PR #1977, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_HeadNotGreen: conflict declared, own CI missing-required.\n- Queue entry (`beans/queue/litlfred--folio-assistant--1977.json`, status `active`): STATUS UNKNOWN on t",
      "file": "beans/defs/folio-assistant-58ro--merge-refused-1977-owed-ci-not-green-on-its-head.md"
    },
    {
      "id": "folio-assistant-5a3l",
      "title": "DEPLOYMENT: topologies and operating modes are two axes, not one list of modes",
      "status": "in-progress",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:52:35Z",
      "updatedAt": "2026-10-04T15:12:14Z",
      "preview": "Opened 2026-09-19 from [issue #363](https://github.com/litlfred/folio-assistant/issues/363),\n\"self-sovereign compute + test harness deployments\", at the owner's direction:\n\"bean up to may strwperson and create issue to review these\".\n\n## The claim this epic rests on\n\n#363 lists roughly ten deployment and utilization scenarios — local git only,\nprivate GitHub, sovereign cloud, self-sovereign, devel",
      "file": "beans/defs/folio-assistant-5a3l--deployment-topologies-and-operating-modes-are-two.md"
    },
    {
      "id": "folio-assistant-5akx",
      "title": "KeyedBySchema and DirectoryStorageSchema were two spellings of one enum — route parsed in one and threw in the other",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T08:35:58Z",
      "updatedAt": "2026-10-08T01:15:00Z",
      "preview": "## What was measured\n\n`main@12b916e9a5`, probe calling both schemas on one `storage` value:\n\n    A. DirectoryStorageSchema accepts keyedBy route? true\n    B. resolveSubgraphSource THREW: ZodError |\n       Invalid option: expected one of \"commit\"|\"tip\"\n\n`DirectoryStorageSchema.keyedBy` (`schemas/cat-harness.ts`) gained `\"route\"` with bean `1j3q`.\n`KeyedBySchema` (`schemas/subgraph-source.ts`), whic",
      "file": "beans/defs/folio-assistant-5akx--keyedbyschema-and-directorystorageschema-were-two.md"
    },
    {
      "id": "folio-assistant-5blc",
      "title": "Digital Transformation Handbook (DTH): a voice, an L1 document subtype on Reference Architecture + DIIG concepts, and a source of methodologies / processes / glossary",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-qvxh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T18:16:53Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Owner, 2026-10-01 (during stage D, #1767), attaching 9789240116191-eng.pdf (DTH for health product catalogue): 'use for one voice for \"Digital Transformation Handbook\" a specific type of a L1 document that uses the Reference Architecture and DIIG concepts', then 'also as source of methodologies / processes / glossary'. Same session: commit 27078551 on main uploaded four WHO DTHs to uploads/ (prima",
      "file": "beans/defs/folio-assistant-5blc--digital-transformation-handbook-dth-a-voice-an-l1.md"
    },
    {
      "id": "folio-assistant-5ea6",
      "title": "PDF INLINE VIEWER: pinned pdf.js generic viewer on the site, embed on who-iris item pages, as skill + Tool node",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T18:40:22Z",
      "updatedAt": "2026-10-05T05:35:26Z",
      "preview": "Owner request 2026-10-04: lightweight inline PDF viewer (search, scroll, jump to page, print, download) for CDN-hosted PDFs, e.g. who-iris item pages. Owner chose option 2 (pdf.js generic viewer copied onto the site) and asked for it as a skill and a tool.\n\n## Todo\n- [x] vendor script: pinned pdf.js release, sha256-verified, pruned, installed into _site at build time (not committed)\n- [x] cross-or",
      "file": "beans/defs/folio-assistant-5ea6--pdf-inline-viewer-pinned-pdfjs-generic-viewer-on-t.md"
    },
    {
      "id": "folio-assistant-5ge1",
      "title": "MERGE GATE IS SPECIFIED AS BLOCKING, OWNER RULED WARN-ONLY: reconcile merge-gate-2026-10-02.md and nok9 with the 2026-10-02 ruling",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:32:19Z",
      "updatedAt": "2026-10-03T00:02:20Z",
      "preview": "## The conflict, both sides measured 2026-10-02\n\n**The owner ruled WARN:** asked how to handle agentic code review before merge,\nthe owner answered — *\"do ingesion and analsysi. then propose. dont want hard\ngate (at least not for now, lots of backlog on content nodes) but do want\nwarn.\"* Two reasons given, and the second is the binding one: a hard gate over\na content backlog blocks work that was a",
      "file": "beans/defs/folio-assistant-5ge1--merge-gate-is-specified-as-blocking-owner-ruled-wa.md"
    },
    {
      "id": "folio-assistant-5gqn",
      "title": "MERGE FRICTION: beans index.json should join oxka -merge set; harness.json must NOT",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T06:16:21Z",
      "updatedAt": "2026-10-07T04:37:00Z",
      "preview": "Measured 2026-09-27 while driving #1439: **three** merges of `origin/main` in\nabout forty minutes, and `docs/assets/beans/index.json` conflicted on the third\none. `oxka` fixed this for three files and marked them\n`linguist-generated=true -diff -merge` in `.gitattributes`. This file is a fourth\nwith the same shape and is not marked.\n\n| file | conflicts paid today | marked `-merge`? |\n|---|---|---|\n",
      "file": "beans/defs/folio-assistant-5gqn--merge-friction-beans-indexjson-should-join-oxka-me.md"
    },
    {
      "id": "folio-assistant-5hox",
      "title": "REMOVE moved QA files from main — only on the owner's explicit go, after the branch holds a hash-verified copy",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-129h",
        "folio-assistant-4l4d",
        "folio-assistant-f3bh",
        "folio-assistant-lb8h"
      ],
      "createdAt": "2026-10-01T08:00:47Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "Arc `3fva`, proposal §4 item 3.7 and decision D4. **Never on an agent's own initiative** (`deletion-requires-confirmation`).\n\nPreconditions:\n- every reader is migrated;\n- the gates have been green on the branch for 7 days (D4 default);\n- the `qa-reports:main/<head>` tree is byte-identical to main's `test/results` for every moved path, checked by blob hash;\n- attestations stay in place (D2 default)",
      "file": "beans/defs/folio-assistant-5hox--remove-moved-qa-files-from-main-only-on-the-owners.md"
    },
    {
      "id": "folio-assistant-5ki9",
      "title": "Merge refused: #2082 owed CI not green on its head",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-qvxh",
      "blocking": [
        "folio-assistant-70zt"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:42:21Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "PR #2082, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_HeadNotGreen: conflict clean, own CI red.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2082.json`, status `active`): Owner-approved 2026-10-04 ~14:00Z (",
      "file": "beans/defs/folio-assistant-5ki9--merge-refused-2082-owed-ci-not-green-on-its-head.md"
    },
    {
      "id": "folio-assistant-5o5c",
      "title": "Root-dependent platform outputs judged on a foreign content root (translation:obsolete, state:visualizer, processes:render)",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-21T15:37:07Z",
      "updatedAt": "2026-10-23T09:00:00Z",
      "preview": "Measured on litlfred/smart-immunizations#66 (run 39619275196, every layer at main, 2026-10-21). Three gates fail on a content root for platform artefacts that only the DECLARING checkout produces, so no data PR can make them pass everywhere — committing what smart-immunizations' root builds makes folio-assistant's own run stale, and the reverse.\n\nSame family as cat-tools-x5e0 (a content index's ga",
      "file": "beans/defs/folio-assistant-5o5c--root-dependent-platform-outputs-judged-on-a-foreig.md"
    },
    {
      "id": "folio-assistant-5p4m",
      "title": "CI: remove the two 1-s roll-up jobs (typescript, e2e) — 7fu5 leftover, owner swaps required checks",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T19:39:28Z",
      "updatedAt": "2026-10-08T01:15:00Z",
      "preview": "Issue #2456. Owner approved 2026-10-07 ~19:40Z (\"1y, 2y, 3y, 4y\"). Measurements in the issue body.\n\n_2026-10-07T19:39:38Z_ — Claimed by claude/ci-runner-budget (session https://claude.ai/code/session_013WbQekVypi9A6YQbLDXMmJ).\n\n## Done on claude/ci-runner-budget (PR #2457), 2026-10-07\n\n- Removed jobs `typescript` and `e2e` (commit 35a8229de93). Nothing outside the workflow read the names except th",
      "file": "beans/defs/folio-assistant-5p4m--ci-remove-the-two-1-s-roll-up-jobs-typescript-e2e.md"
    },
    {
      "id": "folio-assistant-5qq3",
      "title": "REGEN SCOPE: the browser jobs' artefacts are outside regen's fast set, and a stale one only surfaces in CI",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2upx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T18:53:17Z",
      "updatedAt": "2026-10-03T18:39:06Z",
      "preview": "Found 2026-09-30 on PR #1633, by CI rather than by `regen`.\n\n`End-to-end + accessibility (hard)` failed on `render:bpmn:check` with three\nstale drawings — `bootstrap/processes/{discussion,initialize-harness,log-message}.svg`\n— on a tree where `bun run cat regen` had just reported a fixed point.\n\n## This is NOT the same defect as `check:X` (the prefix-convention false clean)\n\nWorth separating, beca",
      "file": "beans/defs/folio-assistant-5qq3--regen-scope-the-browser-jobs-artefacts-are-outside.md"
    },
    {
      "id": "folio-assistant-5qy8",
      "title": "QA SIDECAR LOCATION CONTRADICTION: the folio_init template commits *.qa.json while AGENTS.md puts QA on the qa-reports branch",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:10:09Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Recorded from the qou work-plan analysis, 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). Not started: recorded so the gap has an owner. The owner ruled 2026-10-04 for qou: use the cat-harness qa-reports branch. The folio_init template (cat-harness/templates/) still writes a layout that commits sidecars on main. Reconcile the template with skills/sdlc/sdlc-core/qa-rep",
      "file": "beans/defs/folio-assistant-5qy8--qa-sidecar-location-contradiction-the-folio-init-t.md"
    },
    {
      "id": "folio-assistant-5rmf",
      "title": "NAVBAR QR ICON GONE: the LHS top row's QR code for the current page no longer appears, though its generator still loads",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T06:51:27Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Owner, 2026-10-06 (https://claude.ai/code/session_012qoycyCSGidZqW245vXhze), verbatim:\n\n> LHS top navbar used to have a QR code icon that would make a QR code for the currently viewed page and show it inside the LHS navbar.\n\n## Measured\n- The generator is still shipped. `cat-harness/docs/_includes/head_custom.html:181` documents *\"Site UI: a QR of the current page in the sidebar header\"*, and line",
      "file": "beans/defs/folio-assistant-5rmf--navbar-qr-icon-gone-the-lhs-top-rows-qr-code-for-t.md"
    },
    {
      "id": "folio-assistant-5ulq",
      "title": "STRICT IN NAME ONLY: 9 workflow instances against 755 merges, and no gate reads beans/workflows at all",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:49:21Z",
      "updatedAt": "2026-10-12T09:36:00Z",
      "preview": "## Measured 2026-10-02 at `871b1da1c`\n\n| | |\n|---|---|\n| instance files in `beans/workflows/` | **9** |\n| first-parent merge commits on `origin/main` since 2026-09-20T18:00Z | **755** |\n| gates or workflows referencing `beans/workflows` | **0** (grep over `.github/workflows/` and `cat-harness/scripts/check-*.ts`) |\n| bean `vlhk`, which made the rule mandatory | `status: completed`, archived |\n\n`AG",
      "file": "beans/defs/folio-assistant-5ulq--strict-in-name-only-9-workflow-instances-against-7.md"
    },
    {
      "id": "folio-assistant-5uuf",
      "title": "FOLIO PREVIEW BEFORE-SIDE: no main-site publish, so before pictures and 'view on main' are empty; stacked PRs compare with the wrong base",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T18:06:56Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Found by ojcx's real run, 2026-09-23 (litlfred/folio-test#6). The visual diff's \"before\" picture, and the review page's \"view on main\" link, both read the published main site at the root of `gh-pages`. Two gaps follow:\n- **A folio has no main-site publish.** Neither `init-folio` nor `folio-staging.yml` publishes `main`'s document site to the `gh-pages` root. So every before picture reads *\"Its pag",
      "file": "beans/defs/folio-assistant-5uuf--folio-preview-before-side-no-main-site-publish-so.md"
    },
    {
      "id": "folio-assistant-5uyl",
      "title": "Extract the immunizations L1 graph from DAK Component 1 into smart-immunizations/library",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ioa4",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T08:58:14Z",
      "updatedAt": "2026-10-21T18:48:00Z",
      "preview": "## Done when\n- [x] the DAK PDF is ingested by folio-assistant and its entry placed under smart-immunizations/library/\n- [x] a generic extractor reads Component 1 (§1.1 interventions, §1.2 cited guidance) and resolves each (n) against the reference list\n- [x] the graph validates with smart-kg tools/validate.mjs at WHO main AND the Zod validator in smart-base\n- [x] every cited reference with a retri",
      "file": "beans/defs/folio-assistant-5uyl--extract-the-immunizations-l1-graph-from-dak-compon.md"
    },
    {
      "id": "folio-assistant-5vo9",
      "title": "ADJUDICATION AS A TYPED SUBPROCESS: one judgement contract, reusable in every BPMN",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T06:15:42Z",
      "updatedAt": "2026-10-09T15:38:00Z",
      "preview": "Formalize 'use judgement' as a declared subprocess with a typed I/O contract, so a non-deterministic step is marked as one rather than left implicit. Owner's spec 2026-09-23. A CONCRETE INSTANCE ALREADY EXISTS (processes/adjudication.bpmn) — this generalises it rather than starting over.\n\n## The owner's specification, 2026-09-23, verbatim in substance\n\n> need formalized adjudication process so the",
      "file": "beans/defs/folio-assistant-5vo9--adjudication-as-a-typed-subprocess-one-judgement-c.md"
    },
    {
      "id": "folio-assistant-5xfr",
      "title": "qou's pin bump must rename folio.config.json AND add qaAxes in the same commit, or it silently loses both",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T14:37:58Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "## What is true TODAY, measured, because I got it wrong first\n\nI reported in session chat that \"qou is running without that axis as of this\nmerge\", after fencing `detangler-archimedean-wall` behind `qaAxes`. **That was\nwrong, and the reason is the pin.**\n\n`qou/.folio-assistant-pin` → `df28d02` (2026-09-07). Read at that commit:\n\n- `folioOptionalAxes()` exists and reads `join(findContentRepoRoot(),",
      "file": "beans/defs/folio-assistant-5xfr--qous-pin-bump-must-rename-folioconfigjson-and-add.md"
    },
    {
      "id": "folio-assistant-5xzc",
      "title": "QA: block ids in the folio/ graph are unique and stable across render, move and re-ingest — the precondition every review view keys on",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [
        "folio-assistant-jwox",
        "folio-assistant-v26p"
      ],
      "blockedBy": [],
      "createdAt": "2026-09-22T21:02:54Z",
      "updatedAt": "2026-09-29T18:14:49Z",
      "preview": "Owner: *\"blocks are in the knoledge graph folio/. QA, to manage IDs\"*.\n\n**Why first.** Every other child keys on the block id. A diff matches blocks\nacross `main` and STAGING by id, a review comment anchors to an id, and a heat\nmap aggregates by id. If ids drift, the diff reads everything as removed and\nre-added, and every comment orphans. That is how this whole epic fails.\n\n**Measured 2026-09-22.",
      "file": "beans/defs/folio-assistant-5xzc--qa-block-ids-in-the-folio-graph-are-unique-and-sta.md"
    },
    {
      "id": "folio-assistant-5yhm",
      "title": "TERMINOLOGY: identification, mapping and adjudication — a glossary term is CHECKED against an existing terminology, never only minted",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T04:51:06Z",
      "updatedAt": "2026-10-02T08:01:23Z",
      "preview": "Owner, 2026-09-25: *\"extracting exsiting glossary needs compaision to existing\ntermonology/coding. there needs to be a whole set of skills on terminiology\nindetificatio. mapping. ajdudication. bean up as todo. we will integrate, for\nexample, OCL at some point as a Tool\"*.\n\n## RE-SCOPED 2026-09-29 against what has since landed on `main`\n\nThis bean was written when the glossary only extracted. Three",
      "file": "beans/defs/folio-assistant-5yhm--terminology-identification-mapping-and-adjudicatio.md"
    },
    {
      "id": "folio-assistant-5zs1",
      "title": "Agent memory target: OpenAI Codex CLI (not implemented — owner 2026-10-06)",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-31ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:35:16Z",
      "updatedAt": "2026-10-06T18:35:16Z",
      "preview": "Owner 2026-10-06: bean up, DO NOT implement yet. Target format: .codex/agents/<agent>.toml developer_instructions; repo-wide AGENTS.md (32 KiB summed chain). Generated by the shared memory assembler into a marked region, with a --check gate and a per-target budget that drops lowest-priority nodes and reports them. Research: see parent bean 31ni.\n\n_2026-10-20_ — Owner re-asked (session https://clau",
      "file": "beans/defs/folio-assistant-5zs1--agent-memory-target-openai-codex-cli-not-implement.md"
    },
    {
      "id": "folio-assistant-603s",
      "title": "LANDING: the LHS navbar is one themed section per instance, scanned from the root, rendered in dependency order",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T12:32:20Z",
      "updatedAt": "2026-10-04T19:55:08Z",
      "preview": "Owner, 2026-09-20, verbatim — the structure is specific enough that paraphrase\nwould lose the parts that constrain the design:\n\n> then landing page rendering is now cleaer... scan the root of the repo, look\n> for <harness>.config.json as named instances. do their rendering (in\n> depdendcy ordering). on LHS navbar, there is global section (w/ themed color)\n> for each harness. when collapsed on LHS ",
      "file": "beans/defs/folio-assistant-603s--landing-the-lhs-navbar-is-one-themed-section-per-i.md"
    },
    {
      "id": "folio-assistant-61ca",
      "title": "B5-fix (#1168): a GitHub workflow names the BPMN it implements; 9 <implements workflow> and <job> flipped",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T17:22:12Z",
      "updatedAt": "2026-09-24T17:47:57Z",
      "preview": "## Why\n9 `<cat-harness.processes:implements workflow=…>` are arrow-direction findings: the diagram names its implementation. Owner decision 2026-09-24: \"Workflow names its BPMN\".\n\n## Plan\n- Each `.github/workflows/*.yml` carries `# bpmn: cat-harness/processes/<x>.bpmn`; each job implementing a node carries `# bpmn-node: <Task_Id>`.\n- `check-workflow-coverage.ts`, `prose-code-pairs.ts`, `pair-claim",
      "file": "beans/defs/folio-assistant-61ca--b5-fix-1168-a-github-workflow-names-the-bpmn-it-im.md"
    },
    {
      "id": "folio-assistant-61n5",
      "title": "qa-results parity test fails intermittently under bun run cat gates (2 of 4 local runs), never alone or in CI",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T07:09:46Z",
      "updatedAt": "2026-09-24T12:40:45Z",
      "preview": "The test \"every family in the committed result matches the export's own field\" in cat-harness/scripts/tests/qa-results.test.ts failed in 2 of 4 local `bun run cat gates` runs on 2026-09-23, on diffs that don't touch kg-export (the a1lq and 423d work). It passed 3 of 3 plain `bun test` runs, passes when run alone, and passed in CI every time.\n\nIt compares the committed kg-export.qa-results.json aga",
      "file": "beans/defs/folio-assistant-61n5--qa-results-parity-test-fails-intermittently-under.md"
    },
    {
      "id": "folio-assistant-61t6",
      "title": "fsh-guts checks treat a separated subtree as one frozen item described by its note",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-3tza",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T20:21:29Z",
      "updatedAt": "2026-10-08T04:30:00Z",
      "preview": "cf210f4 deposited fsh-guts/separated/{smart-base,smart-trust,smart-immunizations}/ (~7.7k files) on cat/cat-harness/fsh-guts and every PR's CI went red (export @context lacked `data`, render-pipeline tests and the page walked every file, materialized-fixity judged a frozen copy's index.json, bean refs to hupw). 611a3fd held the cutover back until #2320 merges. Platform must treat separated/<name>/",
      "file": "beans/defs/folio-assistant-61t6--fsh-guts-checks-treat-a-separated-subtree-as-one-f.md"
    },
    {
      "id": "folio-assistant-61tg",
      "title": "TOPOLOGY: self-sovereign — own infrastructure, inward-facing, wallets and DAK intake",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:55:37Z",
      "updatedAt": "2026-09-19T09:01:53Z",
      "preview": "**Strawperson.** From [#363](https://github.com/litlfred/folio-assistant/issues/363):\n\"self-soveringn mode: like soveregion cloud but hosted on own infrastructure, in\nL4-L5 context may have data stores like hapi. not designed for external facing\nservices. more for managing wallets. have incoming DAK content. bean up to may\nstrwperson and create issue to review these.\"\n\n## Strawperson position, to ",
      "file": "beans/defs/folio-assistant-61tg--topology-self-sovereign-own-infrastructure-inward.md"
    },
    {
      "id": "folio-assistant-6306",
      "title": "METHODOLOGY NODES for the three W3C sources: PROV-O (QA provenance), ODRL (permissions), JSON-LD (KG serialisation)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-scfh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:12:46Z",
      "updatedAt": "2026-10-01T09:20:34Z",
      "preview": "#1744 merged red: library-ref.test.ts 'the PLATFORM's library holds ONLY sources its methodologies cite' fails on w3c-2013-prov-o, w3c-2018-odrl-model-2-2, w3c-2020-json-ld-1-1. Owner chose option C (#1614): write three real methodology nodes in cat-harness/methodologies/, each grounded in the held source and in how the platform actually uses the standard.\n\n## Done when\n- [x] prov-o node, evidence",
      "file": "beans/defs/folio-assistant-6306--methodology-nodes-for-the-three-w3c-sources-prov-o.md"
    },
    {
      "id": "folio-assistant-63es",
      "title": "DEPLOY-ONLY CHECKS: a built-site check that runs only on main lets a PR stay green and break every publish",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:31:51Z",
      "updatedAt": "2026-10-01T07:06:44Z",
      "preview": "Follow-on to #1726 / #1730. Owner 2026-10-01: build the early catch.\n\ncheck:escaped-markup and check:maintained-artefacts ran only in docs-site.yml (the main deploy). A code span wrapped so a line began '<slide>' (introduced in #1615) broke every publish for ~6h while each PR's 'stage' stayed green.\n\n## Measured\n- Ran both checks on real staging trees from gh-pages: pass on this branch, #1615 and ",
      "file": "beans/defs/folio-assistant-63es--deploy-only-checks-a-built-site-check-that-runs-on.md"
    },
    {
      "id": "folio-assistant-63q4",
      "title": "Bibliography: Reference KG nodes, a path-limited bibliography viewer (like the glossary), exports in BibTeX / CSL-JSON / RIS / Dublin Core, per asset and per subgraph",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-14T17:45:00Z",
      "updatedAt": "2026-10-23T20:44:00Z",
      "preview": "## The ask, owner 2026-10-14 (verbatim)\n\n> what is the general bibliography support? look at who-iris - its dublin core recores are a basis for a bibliography - there should be abibliogrpahy viewere that allows view/export in multiple formats of bib items in the folio. those citations be from library/ contents or extracted from a paper reference in the library or fiolo/. you should also be able to",
      "file": "beans/defs/folio-assistant-63q4--bibliography-reference-nodes-viewer-and-exports.md"
    },
    {
      "id": "folio-assistant-63wl",
      "title": "Placement PR3: BPMN and DMN move up to their owners; harness processes regroup by concern",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [
        "folio-assistant-apcg"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:00Z",
      "updatedAt": "2026-10-02T16:25:17Z",
      "preview": "Placement proposal §2 (owner rulings 2026-09-30 §6; process: review → resolve issues → staged PRs). Parent of PR0/PR1 is `9umr`; PR2–PR9 sit under the separation epic because D4 (owner, 2026-10-01, option 3) interleaves them with the split stages into one ordered sequence. Every PR: references move with the subject; generated trees regenerated, never hand-edited; `beans/**` not rewritten; kg-qa si",
      "file": "beans/defs/folio-assistant-63wl--placement-pr3-bpmn-and-dmn-move-up-to-their-owners.md"
    },
    {
      "id": "folio-assistant-65oe",
      "title": "library:viz is not reproducible across environments: refScan.filesRead embeds a count of the files on disk",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T15:40:27Z",
      "updatedAt": "2026-10-04T06:08:20Z",
      "preview": "## The defect\n\n`cat-harness/docs/assets/library/index.json` ends with\n\n    \"refScan\": { \"filesRead\": 2663, \"unreadable\": [] }\n\n`filesRead` is a COUNT OF THE FILES THE SCAN READ ON DISK. It is therefore a\nproperty of the checkout, not of the library, and it is committed. Any two\nenvironments whose trees differ by even one scanned file disagree, so\n`library:viz:check` reports stale whenever the last",
      "file": "beans/defs/folio-assistant-65oe--libraryviz-is-not-reproducible-across-environments.md"
    },
    {
      "id": "folio-assistant-65zi",
      "title": "MIGRATE req:* statements to carry successCriteria, then make the field required (#2405 decision 3)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T11:04:33Z",
      "updatedAt": "2026-10-09T13:07:00Z",
      "preview": "Issue: https://github.com/litlfred/folio-assistant/issues/2405 — owner decision 3 (https://github.com/litlfred/folio-assistant/issues/2405#issuecomment-6035163987): successCriteria was added OPTIONAL on RequirementStatementFields (bootstrap-tools/schemas/requirement.ts, PR litlfred/folio-assistant#2407); check:requirements WARNS on a statement without it. Measured on the branch: 31 statements acro",
      "file": "beans/defs/folio-assistant-65zi--migrate-req-statements-to-carry-successcriteria-th.md"
    },
    {
      "id": "folio-assistant-676g",
      "title": "kg:validate cannot own a NESTED instance's path, so 15 instances' committed QA sidecars are consumer-validated by nothing",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T16:50:03Z",
      "updatedAt": "2026-10-02T06:44:57Z",
      "preview": "## What was measured\n\n`kg:validate` resolves declared directories from ONE instance root, so a sidecar\nin a nested instance is refused rather than validated. Measured 2026-09-27, from\nthe repository root:\n\n    bun run cat-harness/scripts/kg-validate.ts cat-harness/test/results/kg-qa/processes/adjudication.kg-qa.json\n      ✓ … [qa]\n\n    bun run cat-harness/scripts/kg-validate.ts bootstrap/test/resu",
      "file": "beans/defs/folio-assistant-676g--kgvalidate-cannot-own-a-nested-instances-path-so-1.md"
    },
    {
      "id": "folio-assistant-680p",
      "title": "IG render: load from the KG client-side to cut .html bloat",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T16:11:22Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "Owner, 2026-10-01, verbatim: \"note, other goals of jsutthedoc rendering is to reduce the .html bloat.... lots of it can be loaded client side from the KG\".\n\nThe Publisher writes every view as a full static HTML page, though its own DAK view pages already fetch their file in the browser. A just-the-docs page should carry identity and layout, and fetch repeated or bulky content at view time from the",
      "file": "beans/defs/folio-assistant-680p--ig-render-load-from-the-kg-client-side-to-cut-html.md"
    },
    {
      "id": "folio-assistant-68k7",
      "title": "resolveDirectories climbs the checkout's PARENT: is that intended for the ROOT instance?",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T19:48:10Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "**Owner ruling, 2026-09-30: leave open until the call site is named.**\n\n## Why this is its own bean\n\nIt was Box 3 of `8zsb`, and **`8zsb` is `completed`**. A completed bean's\nunchecked box is not reachable by `beans list`, so the question was on its way\nto being invisible — which is `8zsb`'s own lesson (*a finding needs somewhere\nto live that nobody has to already know about*) turned on the bean t",
      "file": "beans/defs/folio-assistant-68k7--resolvedirectories-climbs-the-checkouts-parent-is.md"
    },
    {
      "id": "folio-assistant-68op",
      "title": "GATE NAME DESCRIBES ONE OF TWO FAILURE MODES: 'viewer pages keep the navbar they had' goes red when the sidecar is ABSENT, and the same run says 0 pages regressed",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T01:08:12Z",
      "updatedAt": "2026-10-07T11:50:39Z",
      "preview": "The step name in `code-quality-gates.yml` names the REGRESSION branch of\n`check:viewer-nav`. The check has two failure modes, and the other one -\nthe sidecar is absent, so the audit cannot see its subject - fails under\nthe same name. A reader then goes looking for a page that lost its rail,\nand the same run tells them none did.\n\n## Measured 2026-10-03 (on PR #1819, heads c975c7da7b9 and 28746eb6a8",
      "file": "beans/defs/folio-assistant-68op--gate-name-describes-one-of-two-failure-modes-viewe.md"
    },
    {
      "id": "folio-assistant-6b8u",
      "title": "EXTRACTION: MD_MIN_TEXT_LEN is a threshold in CHARACTERS, so the same table cell is translatable in Arabic and not in English",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T08:56:25Z",
      "updatedAt": "2026-09-27T08:06:12Z",
      "preview": "Found while deriving `.po` catalogues for #206 (bean `tbdg`). Measured\n2026-09-26 on `main` + this branch.\n\n`MD_MIN_TEXT_LEN = 3` in `content/pipeline/pot-extract.ts` gates every one of the\nfour emission paths (heading, paragraph, list-item, blockquote, table-cell). It is\na minimum in **characters**, used as a proxy for \"is there translatable text\nhere\". A character count is not script-neutral, so",
      "file": "beans/defs/folio-assistant-6b8u--extraction-md-min-text-len-is-a-threshold-in-chara.md"
    },
    {
      "id": "folio-assistant-6bhf",
      "title": "SECURITY SUB-KG: an external identifier reaches join() unvalidated in three HTTP handlers, and the containment helper that fixes it already exists in one script",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:38:20Z",
      "updatedAt": "2026-09-26T14:31:39Z",
      "preview": "Owner, 2026-09-25, verbatim:\n\n> add lots of precautions/double checking/fails safe on rm -fr... is variable\n> there? injection hazard. that is needed on ALL I/O. bean as ceybeesquity sub\n> KG in tools. first is injection et. related skills already man y in folio and\n> smart-base. consolidate.\n\nOwner chose scope **2 + 3**: consolidate the scattered pieces **and** audit every\nI/O site. This bean is ",
      "file": "beans/defs/folio-assistant-6bhf--security-sub-kg-an-external-identifier-reaches-joi.md"
    },
    {
      "id": "folio-assistant-6brk",
      "title": "FLAKE: check-declaration-filename's corpus scan runs 4.2s against a 5000ms test budget on a clean main — any corpus growth tips it",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T06:21:41Z",
      "updatedAt": "2026-09-24T19:53:28Z",
      "preview": "`check-declaration-filename.test.ts` scans the whole markdown and workflow\ncorpus. **Measured 2026-09-24, directly, three runs per tree:**\n\n| tree | ms per `checkDeclarationFilename()` |\n|---|---|\n| clean `main` | **4476, 4198, 3927** |\n| `main` + ~150 lines of markdown (PR #1188) | **4927, 4216, 4249** |\n\nThe test budget is **5000 ms**. So on a clean `main`, before anybody adds\nanything, the scan",
      "file": "beans/defs/folio-assistant-6brk--flake-check-declaration-filenames-corpus-scan-runs.md"
    },
    {
      "id": "folio-assistant-6dvy",
      "title": "Witnessed values (:val): prose bug, just-the-docs substitution, namespacing by source",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:08:52Z",
      "updatedAt": "2026-09-30T15:42:28Z",
      "preview": "Owner 2026-09-30: fix the platform; first analyze consistency with the just-the-docs pipeline, and how to namespace values by source (paper, dataset e.g. CODATA with provenance via ingestion, FHIR IG metadata).\n\n## Done when\n- [x] prose :val resolves names with underscores (render-latex), tested and calibrated\n- [x] consistency analysis across PDF / just-the-docs / blueprint / FHIR IG, recorded (b",
      "file": "beans/defs/folio-assistant-6dvy--witnessed-values-val-prose-bug-just-the-docs-subst.md"
    },
    {
      "id": "folio-assistant-6eiw",
      "title": "Library titles for non-PDF entries (pptx deck, CODATA table)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T12:55:31Z",
      "updatedAt": "2026-10-12T09:12:00Z",
      "preview": "## Why\n\nBean `w6fu` (PR #1849) gave PDF library entries a verified title: a title is\nused only when two independent sources agree, or when an editorial\n`title_correction` exists. Two entries are not PDFs, so that resolver never\nreaches them, and they still show placeholder titles:\n\n| entry | format | what shows now | evidence in the file |\n|---|---|---|---|\n| `cat-harness/library/kg-folio-asst-202",
      "file": "beans/defs/folio-assistant-6eiw--library-titles-for-non-pdf-entries-pptx-deck-codat.md"
    },
    {
      "id": "folio-assistant-6g6o",
      "title": "CI: PR-time Liquid undefined-variable and post-merge regen checks block before merge",
      "status": "in-progress",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ksek",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T08:43:02Z",
      "updatedAt": "2026-10-23T08:43:02Z",
      "preview": "Rule: a check that today runs only after merge gets a PR-time half wherever it can run on a PR, counted by merge-guard. PR: https://github.com/litlfred/folio-assistant/pull/2633 (branch claude/pr-time-postmerge-checks, head 7d2ea91). What it does: liquid-undefined.yml is called (workflow_call) as a job of Feature Staging's own run after stage hands off the Jekyll source, so a red check makes the P",
      "file": "beans/defs/folio-assistant-6g6o--ci-pr-time-liquid-undefined-variable-and-post-merg.md"
    },
    {
      "id": "folio-assistant-6gme",
      "title": "Remaining single-instance kinds have no viewer: scenarios, policies, UML, test plan, tool releases, vocab mapping, voice vendors, waivers, substrate snapshots, basic CDN site, Lean packages, bootstrap-tools skills",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-46ob",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T16:53:28Z",
      "updatedAt": "2026-10-23T08:00:00Z",
      "preview": "## Parent\n\nfolio-assistant-46ob\n\nMeasured live: Scenarios ×3, and one row each for Policies, UML, Test plan, Tool releases, Vocab mapping, Voice vendors, Waivers, Substrate snapshots, Basic CDN site (C@T Harness), Lean packages (folio-assistant-sci; a doc-gen4 viewer exists as the `lean-html-docs` skill), Skills (Bootstrap tools only — other harnesses' skills link).\n\nTriage each: link an existing ",
      "file": "beans/defs/folio-assistant-6gme--remaining-single-instance-kinds-have-no-viewer-sce.md"
    },
    {
      "id": "folio-assistant-6h47",
      "title": "RENDER STAGE 3: the dynamic-state export has a position but no filename — the owner left it open on purpose",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T19:59:52Z",
      "updatedAt": "2026-10-03T07:43:33Z",
      "preview": "Owner, 2026-09-20, settling where the README render sits in the pipeline:\n\n> dynamic content then hets get json/jsonld export avaiable under\n> cat-harness/state.jsonld or so (whatever matches the dyanmic state\n> vsualizesrs)\n\n**\"or so (whatever matches …)\" is an explicit uncertainty, and it was not\nclosed by guessing.** `scripts/render-pipeline.ts` declares the step\n(`kg-dynamic`), fixes its POSIT",
      "file": "beans/defs/folio-assistant-6h47--render-stage-3-the-dynamic-state-export-has-a-posi.md"
    },
    {
      "id": "folio-assistant-6hf2",
      "title": "A: data-modelling guidance — dependents point at the general node; references are typed KG refs",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T19:53:34Z",
      "updatedAt": "2026-09-23T20:12:11Z",
      "preview": "## Done when\n- [x] data-modelling.md states both rules with the owner's examples and the existing typed-ref helpers\n- [x] skill prose that names its callers is removed (confirm-harness, root-readme, discussion, log-message, bootstrap package manifest)\n- [x] gates green, PR open\n\n## Summary of Changes\n\nMerged in #1172 (aabdc87): data-modelling.md steps 8 (dependents point at the general node; the g",
      "file": "beans/defs/folio-assistant-6hf2--a-data-modelling-guidance-dependents-point-at-the.md"
    },
    {
      "id": "folio-assistant-6lb8",
      "title": "FOLIO BOARD: a resizable Miro-style board, notes that move and attach, and semantic zoom to avatars",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T10:37:35Z",
      "updatedAt": "2026-10-05T04:57:13Z",
      "preview": "## The ask, owner 2026-09-20 (verbatim, in the order it arrived)\n\n> landing folio should really be resizable, switchiing over to content avatars\n> if content no longer lgeible. liek miro board. content vieweing panes are\n> resizzble. but ALWAYS collapsable to linearly rendablee/just the docs. the\n> todos/miro board is a static content overlays, so new content type that sits\n> under todos/ but scem",
      "file": "beans/defs/folio-assistant-6lb8--folio-board-a-resizable-miro-style-board-notes-tha.md"
    },
    {
      "id": "folio-assistant-6lre",
      "title": "CI WATCH READS A PARTIAL CHECK SET AS GREEN: 1 of 13 registered, verdict PASS — ask the check SUITES, not only the runs",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T16:15:00Z",
      "updatedAt": "2026-10-06T14:57:00Z",
      "preview": "Found while using the tool, not while reading it. Sibling of `2c2b`, which\nshipped `ci:watch` for issue #1624.\n\n## The defect, measured\n\n`bun run cat ci:watch 29b10a68923` at 16:13:58:\n\n```\n16:13:58  29b10a68923  PASS — 1 check(s) completed clean\n```\n\nexit **0**. At that instant `get_check_runs` on the same commit returned\n`total_count: 1` — the `.jsonld siblings` job — and **nothing else had been",
      "file": "beans/defs/folio-assistant-6lre--ci-watch-reads-a-partial-check-set-as-green-1-of-1.md"
    },
    {
      "id": "folio-assistant-6mk7",
      "title": "A refused packages.fhir.org did not lead the agent to fhir-cache-seed-npm: symptom-to-Tool lookup is missing, and the mirror the skill names does not exist",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T06:31:37Z",
      "updatedAt": "2026-10-06T16:00:00Z",
      "preview": "Owner, 2026-10-06: *\"why didnt you know about the tool already? what KG process broke down?\"*\n\n## What happened\nSession https://claude.ai/code/session_01EcBv3uwKYcnNbCC6BcPG92 needed SUSHI clean on three IG repositories (owner preference). SUSHI failed: packages.fhir.org is refused by the egress proxy. The agent told the owner \"SUSHI can't run in this container\" and moved on. The owner pointed at ",
      "file": "beans/defs/folio-assistant-6mk7--a-refused-packagesfhirorg-did-not-lead-the-agent-t.md"
    },
    {
      "id": "folio-assistant-6o1z",
      "title": "crdm-detect corpus: #187 and #199 are the same artefact, labelled opposite",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-ahvw",
      "blocking": [
        "folio-assistant-vjbl"
      ],
      "blockedBy": [],
      "createdAt": "2026-09-21T16:40:00Z",
      "updatedAt": "2026-09-21T16:40:00Z",
      "preview": "**A specific, checkable contradiction in the eval corpus — not a judgement call\nabout intent.** `vjbl` already names #187 as a hard case *\"turning on intent\nrather than wording\"*. Measured while working `9gtc`, it is sharper than that:\n\n| issue | label | what it is |\n|---|---|---|\n| [#187](https://github.com/litlfred/folio-assistant/issues/187) | `isFeature: false` — *\"a documentation deliverable ",
      "file": "beans/defs/folio-assistant-6o1z--crdm-detect-corpus-187-and-199-are-the-same-artefa.md"
    },
    {
      "id": "folio-assistant-6pfo",
      "title": "Staging previews on gh-pages carry metadata that exists only at runtime — publish it as a KG graph",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T12:28:52Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Owner, 2026-09-19: *\"metadata on ghpages staging should be avalabale in KG\"*.\n\nQueued, not started — raised mid-turn while the preview cleanup was running,\nand the standing instruction is to queue rather than pivot.\n\n## The ask, as I read it\n\nEvery staging preview under `STAGING/<slug>` on `gh-pages` has facts attached\nto it: which branch it was built from, which commit, which pull request and\niss",
      "file": "beans/defs/folio-assistant-6pfo--staging-previews-on-gh-pages-carry-metadata-that-e.md"
    },
    {
      "id": "folio-assistant-6ptx",
      "title": "COORDINATION: eight sessions woke into the same 2435-commit gap and all eight re-surveyed it independently",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T15:44:18Z",
      "updatedAt": "2026-09-26T17:32:56Z",
      "preview": "## Measured 2026-09-25, from the session API\n\n`list_sessions` returned 30 sessions, of which **eight were RUNNING at the same\nminute** (15:38–15:39Z). Their own `task_summary` fields, verbatim:\n\n```\nrebasing from main; 2369 commits (PR #477→#1306); facts before plan\nreviewing PR #542 impact; fast-forward reset blocked; surveying origin/main\nre-fetching main after date change; will propose next ste",
      "file": "beans/defs/folio-assistant-6ptx--coordination-eight-sessions-woke-into-the-same-243.md"
    },
    {
      "id": "folio-assistant-6qk5",
      "title": "QA REVIEW MODE: translation QA joins the audited review record under test/results",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:55:36Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "From [#363](https://github.com/litlfred/folio-assistant/issues/363): \"qa review\nmode: test results go under things like test/results and same for trnslations\nb/c Q&A is part of an audited review process\".\n\n## Half of this has landed; the bean is the other half\n\nMeasured 2026-09-19 against `harness.json`: `test/results/` **is** declared, as\nthe `qa` graph, holding three kinds distinguished by their",
      "file": "beans/defs/folio-assistant-6qk5--qa-review-mode-translation-qa-joins-the-audited-re.md"
    },
    {
      "id": "folio-assistant-6rmv",
      "title": "B10e (#1168): instance references are owner/repo everywhere",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T14:59:54Z",
      "updatedAt": "2026-09-30T19:28:44Z",
      "preview": "Owner 2026-09-30: owner/repo everywhere (over the recommended instance names). 137 instance values (136 names, 1 owner/repo) across AssetSource.instance, ThemeRef, voices, role refs, session-context, tool-invocation, site-indexes. Needs the instance→repo mapping from each <instance>.json.\n## Done when\n- [ ] every instance-reference field is RepoFullName-typed and every value converted\n\n\n\n## Scope ",
      "file": "beans/defs/folio-assistant-6rmv--b10e-1168-instance-references-are-ownerrepo-everyw.md"
    },
    {
      "id": "folio-assistant-6xaz",
      "title": "pdf-structure infers a TOC from a worked EXAMPLE and ships it as the document's own structure",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T00:12:09Z",
      "updatedAt": "2026-10-10T16:40:52Z",
      "preview": "Measured 2026-09-19 ingesting `uploads/WPR-RDO-2020-003-eng.pdf` (WHO WPRO 'Publication and Information Products Style Guide', 33pp, no embedded outline).\n\n`scripts/pdf-structure.py` inferred 13 sections and wrote 11 of them named after **a different publication**: 'FACILITY LEVEL: Improving hospital planning and management', '1.1 Accountability', '2.1 Goal – Hospitals as a path to UHC'. Those com",
      "file": "beans/defs/folio-assistant-6xaz--pdf-structure-infers-a-toc-from-a-worked-example-a.md"
    },
    {
      "id": "folio-assistant-6xdf",
      "title": "PUBLIC COMMENT: a PR body that merely MENTIONS a change-set id re-links an already-incorporated change-set to it, and the record writer drops $schema",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T14:36:04Z",
      "updatedAt": "2026-10-07T09:44:54Z",
      "preview": "Measured 2026-10-06 on litlfred/smart-ra#24 (a submodule-pin staging PR whose body named CS-236 and CS-237 in prose). The public-comment workflow (pull_request_target, platform pinned at 7a2ff7e) committed 5f4ce41 to smart-ra main: both change-sets' pr moved from #9 (the merged PR that made the change) to #24, history gained 'PR #24 is making the change', and both files LOST their \"$schema\": \"chan",
      "file": "beans/defs/folio-assistant-6xdf--public-comment-a-pr-body-that-merely-mentions-a-ch.md"
    },
    {
      "id": "folio-assistant-6ztw",
      "title": "Node kinds: generic pages at /<locale>/<declaring>/<kind>/[<harness>/[<path>]] (#2195 PR 2)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T22:30:10Z",
      "updatedAt": "2026-10-06T05:52:19Z",
      "preview": "Issue #2195 PR 2. Generic dashboard per kind (subclasses included, filters by kind and harness, status tiles from enum fields), per-harness dashboard, per-node page; en only; generated by node-kind:pages, checked in CI. Next: PR 3 change-set override + pages-resolve QA; folio builds (smart-ra) run the generator.\n\n\n## Summary of Changes\n\nMerged as #2242 (`3c54172` on main); PR 3 (#2243, `7a2ff7e`) ",
      "file": "beans/defs/folio-assistant-6ztw--node-kinds-generic-pages-at-localedeclaringkindhar.md"
    },
    {
      "id": "folio-assistant-70c7",
      "title": "docs/assets/qa was undeclared: 134 committed files no consumer scans",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T06:33:39Z",
      "updatedAt": "2026-09-23T19:25:46Z",
      "preview": "## Summary of Changes\n\nClosed 2026-09-23 **on evidence, not authorship**, in the owner's \"go through remaining beans\" sweep. A read-only check against `main` called it landed, and it was re-verified before closing:\n\nThe witnesses now live in the declared `qa` graph at `cat-harness/test/results/witnesses/`. `cat-harness/docs/assets/qa/` holds only `index.json`, which `gen-docs-pages.ts` writes, and",
      "file": "beans/defs/folio-assistant-70c7--docs-assets-qa-was-undeclared-134-committed-files-.md"
    },
    {
      "id": "folio-assistant-70lx",
      "title": "Separation stage 1a: stage cat-harness-tools/ as a sibling instance and git mv the unambiguous code",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [
        "folio-assistant-iai8",
        "folio-assistant-w2gr"
      ],
      "blockedBy": [
        "folio-assistant-pyds"
      ],
      "createdAt": "2026-10-01T06:58:00Z",
      "updatedAt": "2026-10-16T06:55:00Z",
      "preview": "Stage 1a of the split plan: stage `cat-harness-tools/` as a sibling instance in this repo and `git mv` the unambiguous code (≈1,340 renames). Owner D1 (2026-10-01): ALL cat-harness code moves; dependents' code may import cat-harness-tools. D4 (2026-10-01): 1a runs NOW, before placement PR2.\n\nPlans (session scratchpad, 2026-10-01; to be committed with stage 0): `cat-harness-split-plan.md` (stages 0",
      "file": "beans/defs/folio-assistant-70lx--separation-stage-1a-stage-cat-harness-tools-as-a-s.md"
    },
    {
      "id": "folio-assistant-70zt",
      "title": "SVG rendering of DIIG Fig. 1.1.1 (seven phases of planning and implementing a digital health enterprise)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-qvxh",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-5ki9"
      ],
      "createdAt": "2026-10-03T10:55:02Z",
      "updatedAt": "2026-10-04T12:41:46Z",
      "preview": "Owner, 2026-10-03 (issue #1984, relayed from session_015Q15h1fg2Hh9MJXfAqr4h7): \"use one DIIG seven phase figure as source. need SVG rendering maybe as bean\".\n\nThe figure is DIIG §1.1 Fig. 1.1.1, smart-base/library/9789240010567-eng, PDF p.17 (the phase list is on p.16). vector-labels.json records 82 drawings on that spread, and no raster figure. It is vector-drawn, so its home is the vector-figur",
      "file": "beans/defs/folio-assistant-70zt--svg-rendering-of-diig-fig-111-seven-phases-of-plan.md"
    },
    {
      "id": "folio-assistant-72a8",
      "title": "5hox readers: the six gates + tests that still read committed test/results/ on main after #1801",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T09:07:28Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Measured 2026-10-04 on main 12b916e with the qa:verify-moved inventory removed (1,223 files): 10 of 228 gates red (issue #1763 comment 5978225547). Owner, 2026-10-04: \"lets move the qa-reports off main\", then \"Yes, do the readers\". Pattern: #1801's compute-and-judge (a gate's own results absent -> recompute and judge), or fetch from cat/cat-harness/qa-reports. Agent/human verdicts must never be si",
      "file": "beans/defs/folio-assistant-72a8--5hox-readers-the-six-gates-tests-that-still-read-c.md"
    },
    {
      "id": "folio-assistant-72gk",
      "title": "todos visualiser: 5 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-10-09T12:52:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/todos/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **The items are not on the page.** `assets/todos/index.json` carries 3 items, each with a summary, status, priority, target page and `viewHref`/`editHref`: \"The h",
      "file": "beans/defs/folio-assistant-72gk--todos-visualiser-5-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-750a",
      "title": "Work-state kinds have no viewer: bean defs, bean notes, workflow state, memory, sweep marks, boards, merge queue, surveys, todo feedback/items, interaction",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-46ob",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T16:53:28Z",
      "updatedAt": "2026-10-21T17:27:00Z",
      "preview": "## Parent\n\nfolio-assistant-46ob\n\nMeasured live: Bean definitions ×3, Bean notes ×3, Workflow state ×3, Memory ×2, Sweep marks ×1, Boards ×1, Board positions ×1, Merge queue ×1, Session surveys ×1, Todo feedback ×1, Todo items ×1, Interaction ×1.\n\nSeveral are parts of a graph that already has a viewer (bean defs and notes are inside Beans; workflow state is the BPMN instances the Processes viewer c",
      "file": "beans/defs/folio-assistant-750a--work-state-kinds-have-no-viewer-bean-defs-bean-not.md"
    },
    {
      "id": "folio-assistant-792f",
      "title": "state:mount rewrites the .gitignore state-mounts block from STALE layer mounts, dropping graphs the pinned layers declare (seen: /merge-reviews/**)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-22T15:00:02Z",
      "updatedAt": "2026-10-22T17:07:00Z",
      "preview": "`bun run cat state:mount -- --id beans` rewrites the `# BEGIN/END state mounts` block of the root `.gitignore` and drops `/merge-reviews/**`. This was seen twice on 2026-10-22, both times in a checkout at main `6be6532`'s ancestors. The diff each time was:\n\n```\n-/merge-reviews/**\n```\n\nEvery agent that mounts beans then has a dirty tree it did not mean to make, and the stop hook asks it to commit. ",
      "file": "beans/defs/folio-assistant-792f--statemount-id-one-drops-merge-reviews-from-the-git.md"
    },
    {
      "id": "folio-assistant-79t3",
      "title": "A repo's type set is the markers it carries, closed under the dependency tree",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T21:28:21Z",
      "updatedAt": "2026-09-23T06:15:45Z",
      "preview": "## The idea, as stated 2026-09-18\n\n**A repo declares itself an instance of a content type by carrying a file named\nafter that type.** The filename is the assertion; the file's JSON-LD `@type` is\nthe resolvable reference to what that type *means*. Several markers coexist, so\na repo is a **set** of types, not one: `smart-base` is a DAK *and* a SUSHI\nproject. Each marker stays owned by whoever define",
      "file": "beans/defs/folio-assistant-79t3--a-repos-type-set-is-the-markers-it-carries-closed.md"
    },
    {
      "id": "folio-assistant-7bg9",
      "title": "INGESTION: a licence check subprocess, and the marker coverage the ingest family is missing",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T15:25:27Z",
      "updatedAt": "2026-09-30T10:26:57Z",
      "preview": "Owner, 2026-09-20: *\"liscence check task (subprocess) is part of document/asset\ningestion pipeline\"*.\n\nQueued rather than started, per the standing instruction to queue new topics in\nparallel and not pivot.\n\n## The gap is real, and the shape already fits\n\nMeasured 2026-09-20 against `origin/main` at `dc78e7ccf`:\n\n    cat-harness/processes/document-ingestion.bpmn\n      \"Document ingestion — uploads",
      "file": "beans/defs/folio-assistant-7bg9--ingestion-a-licence-check-subprocess-and-the-marke.md"
    },
    {
      "id": "folio-assistant-7deg",
      "title": "LIBRARIAN: an avatar for knowledge content, and Dublin Core introduced in folio-assist-core",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T06:23:14Z",
      "updatedAt": "2026-10-10T08:00:00Z",
      "preview": "## The ask, owner 2026-09-20 (verbatim)\n\n> also need avator of librarian for knwoledge content specific stuff in\n> folio-asst-core where dubln core skill should be introduced for first time.\n\n## Two things, and they are separable\n\n1. **A librarian avatar** for knowledge-content-specific material in\n   `folio-assist-core`.\n2. **A Dublin Core skill**, introduced there for the first time.\n\n## What ex",
      "file": "beans/defs/folio-assistant-7deg--librarian-an-avatar-for-knowledge-content-and-dubl.md"
    },
    {
      "id": "folio-assistant-7dek",
      "title": "render-kg-to-cdn: one general publish-to-CDN step; gh-pages is one Tool with its own subprocess",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-hx65"
      ],
      "createdAt": "2026-10-01T06:58:00Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "Owner, 2026-09-30: gh-pages is \"one specific tool of general 'publish to CDN'\"; render a KG (or a list of subgraphs) to a CDN at a publication root URL, independent of staging vs release; output = push status + message; \"tools can describe their own specific subprocesses if needed to not bog down general skills\" (placement ruling 6). Owner, 2026-10-01: a gh-pages branch must exist before Pages can",
      "file": "beans/defs/folio-assistant-7dek--render-kg-to-cdn-one-general-publish-to-cdn-step-g.md"
    },
    {
      "id": "folio-assistant-7e59",
      "title": "INGEST: decision-making methodologies — skill takes decision context as input, outputs ranked applicable methods with criteria and rationale. Source: qou bd0c2cb7 (3 arxiv PDFs: 2508.21620 probabilistic/bandits, 2509.06388 MCDM/AHP/SAW, 2607.20636 sequential/social). Covers all methodology families with when-to-use criteria.",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T15:38:03Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "## Body added by a gate fix, not by this bean's author\n\n**This is not the author's scoping.** `check:bean-bodies` was red on `main`\nwith `[empty-body]: \"todo\" with front matter and nothing else — a sibling\nreading the store learns nothing about it`, and `check:bean-parents` was red\nbecause this bean carried no `parent:`. Both were fixed here as part of\nclearing `main`'s red gates, on the owner's \"",
      "file": "beans/defs/folio-assistant-7e59--ingest-decision-making-methodologies-skill-takes-d.md"
    },
    {
      "id": "folio-assistant-7eak",
      "title": "Dublin Core renderings: DC XML + JSON(-LD) per record, as a skill and tool in the rendering pipeline, published to gh-pages; who-iris links to both",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7deg",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T08:54:51Z",
      "updatedAt": "2026-10-09T17:42:54Z",
      "preview": "## The ask, owner 2026-09-30 (verbatim)\n\n> do we render the proper xml for dublin core?  it should be in rendering ppiple as skill and tool.   i tihnk.  and then pushed to gh-pages\n> that is in cat-harness... bean up for now\n> (and who-iris should link to json and xml renderings)\n\n## What is true today (measured 2026-09-30, not yet investigated in depth)\n\n- Dublin Core terms are used as JSON-LD pr",
      "file": "beans/defs/folio-assistant-7eak--dublin-core-renderings-dc-xml-json-ld-per-record-a.md"
    },
    {
      "id": "folio-assistant-7fu5",
      "title": "CI: fold the four one-second jobs into one — fewer runner requests per run",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T16:14:26Z",
      "updatedAt": "2026-10-04T05:33:46Z",
      "preview": "Measured on main run 37133247484 (2026-10-03, #2010 merge): 21.7 min wall for a run whose longest job executes 174 s. Runner WAIT dominates: first job queued 4.5 min; the two 1-s aggregator jobs waited 9.6 and 3.8 min. Each run asks for 18 runners. Four jobs do ~1 s of work after a ~13 s checkout: lean-bare-import, python-imports, rust-wildcard, dependency-advisories.\n\nOwner chose option 1 (2026-1",
      "file": "beans/defs/folio-assistant-7fu5--ci-fold-the-four-one-second-jobs-into-one-fewer-ru.md"
    },
    {
      "id": "folio-assistant-7h1c",
      "title": "publish-verify scope misses our own SKOS code-lists document",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T05:40:40Z",
      "updatedAt": "2026-09-24T11:55:19Z",
      "preview": "Found 2026-09-24 while working `wg7r`. `publish-verify`'s `isOurs` counts a JSON-LD document as ours only when its `@context` names our content context or binds one of our namespaces. `<stub>-code-lists.jsonld` (glossary-export) binds only `skos`, `dcterms`, `owl` and `rdf`, so the verifier counts it **out of scope (not ours)**, even though its `@id` sits under our published base and we author eve",
      "file": "beans/defs/folio-assistant-7h1c--publish-verify-scope-misses-our-own-skos-code-list.md"
    },
    {
      "id": "folio-assistant-7h3u",
      "title": "smart-trust replica wears folio-assistant's chrome, not the WHO IG's branding",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T20:04:11Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "**Owner, 2026-09-30:** *\"does not make css/branding/style of\nworldhealthorganization.github.io/smart-trust from\ngithub.com/worldhealthorganization/smart-trust\"*\n\nObserved at <https://litlfred.github.io/folio-assistant/smart-trust/>: dark\nbackground, folio-assistant's left rail and its purple **▾ Folio** handle. The\npublished WHO IG it replicates uses the HL7 IG-publisher template with WHO\nbranding",
      "file": "beans/defs/folio-assistant-7h3u--smart-trust-replica-wears-folio-assistants-chrome.md"
    },
    {
      "id": "folio-assistant-7how",
      "title": "REGEN READS A STALE QA TREE: generators that read gitignored */test/results write wrong pages unless qa:working-copy ran first",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T09:15:31Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Measured 2026-10-06 on #2267 (coordinator) and reported independently by session A, from #2268.\n\n**What happens.** Since #2080 (5hox), the QA results tree is computed and not committed. Some generators read it from disk, at least `uml:overview` and `readme:subgraphs`. A container's local copy can be partial or stale. On #2267 only `kg-qa` was present, so `bun run cat regen` rewrote the QA overview",
      "file": "beans/defs/folio-assistant-7how--regen-reads-a-stale-qa-tree-generators-that-read-g.md"
    },
    {
      "id": "folio-assistant-7jdm",
      "title": "Merge refused: #2055 owed CI not green on its head",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:41Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "PR #2055, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_HeadNotGreen: conflict declared, own CI missing-required.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2055.json`, status `waiting-on-author`): Covered ",
      "file": "beans/defs/folio-assistant-7jdm--merge-refused-2055-owed-ci-not-green-on-its-head.md"
    },
    {
      "id": "folio-assistant-7ji4",
      "title": "id-lookup page has no rail: find why and fix",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T15:23:55Z",
      "updatedAt": "2026-10-07T11:50:40Z",
      "preview": "Left over from lnoy (#2185): of the 95 navbar-less pages, id-lookup is the one not covered by the thin-page linked rail. Not investigated.\n\n_2026-10-06T19:13:41Z_ — Claimed by claude/7ji4-id-lookup-rail — pushed to main so sibling sessions see it before this branch has a PR (bean 35nj).\n\n## Evidence\n- Root cause:\n  1. `cat-harness-tools/id-lookup/index.html` was missing `<meta name=\"folio-navbar\" ",
      "file": "beans/defs/folio-assistant-7ji4--id-lookup-page-has-no-rail-find-why-and-fix.md"
    },
    {
      "id": "folio-assistant-7jkp",
      "title": "cat-openapi: two ingest tools — OpenAPI into the KG from SOURCE (a repo) or from RENDERED (a published spec/site); smart-trust's example comes from WHO smart-trust-network-gateway",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T18:50:39Z",
      "updatedAt": "2026-10-11T06:23:23Z",
      "preview": "Owner, 2026-10-04, verbatim: *\"note for openapi bean: source code for openapi in example for smart-trust is from here. should be bale to ingest either https://github.com/WorldHealthOrganization/smart-trust-network-gateway\"* and *\"(two different tools for openapi... ingest into KG from source or from rendered)\"*.\n\n## What this asks\n- smart-trust's OpenAPI example has its source in WorldHealthOrgani",
      "file": "beans/defs/folio-assistant-7jkp--cat-openapi-two-ingest-tools-openapi-into-the-kg-f.md"
    },
    {
      "id": "folio-assistant-7mog",
      "title": "The navbar stylesheets share 3 rules and 0 drift — a guard, not a merge (this bean's first premise was WRONG)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T17:39:39Z",
      "updatedAt": "2026-09-29T20:52:40Z",
      "preview": "The owner chose \"1 2\" on 2026-09-24: land the low-risk version first, then single-source the CSS. This is the 2.\n\n## What shipped as 1 (PR #1264)\n\n`nav_footer_custom.html` is a single `{% include %}` and composes no markup.\nThe sidebar's navbar is RENDERED by `lib/navbar.ts`. To keep the look\nbyte-for-byte, `docs-ui.css` gained the renderer's class names as ADDITIONAL\nSELECTORS on rules it already",
      "file": "beans/defs/folio-assistant-7mog--one-stylesheet-for-the-navbar-docs-uicss-aliases-1.md"
    },
    {
      "id": "folio-assistant-7mwa",
      "title": "Retire qa:resolve-conflicts and the test/results .gitattributes entries; move the 14 per-instance test/results dirs and the folio_init template",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-oqe3",
        "folio-assistant-tfqf"
      ],
      "createdAt": "2026-10-01T08:00:46Z",
      "updatedAt": "2026-10-23T13:53:00Z",
      "preview": "Arc `3fva`, proposal §4 items 3.5 and 3.6. Blocked on the gates and readers beans.\n\nThere is nothing left to conflict, so `qa:resolve-conflicts` (`520m`) and the `oxka`/`eqxp` entries in `gitattributes.test.ts` are retired, with the reason recorded in `prepare-merge`.\n\nThe per-instance `test/results/` dirs (`folio-assistant-sci`, `fhir-harness`, `smart-*`, `who-*`, `agent-skills`, `large-datasets`",
      "file": "beans/defs/folio-assistant-7mwa--retire-qaresolve-conflicts-and-the-testresults-git.md"
    },
    {
      "id": "folio-assistant-7po1",
      "title": "WORKFLOWS: bootstrap keeps the bare minimum, cat-harness/workflows elaborates, and workflows/state owns beans+todos",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T13:18:23Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Owner, 2026-09-20, verbatim — three separate instructions in one message:\n\n> workflows/ is declared under the id cat-harness-workflows, content should be\n> at graph cat-harness/workflows except the bare minimum declarations (what is\n> bpmn, how use) under bootstrap/,\n> cat-harness/workflows is for more elboration on use of bpmn and such\n> cat-harness/workflows/state should describe beans and todos",
      "file": "beans/defs/folio-assistant-7po1--workflows-bootstrap-keeps-the-bare-minimum-cat-har.md"
    },
    {
      "id": "folio-assistant-7pp6",
      "title": "A column-0 pseudo-tag in a published markdown source is caught only AFTER merge — five hand-fixes and no gate",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:29:56Z",
      "updatedAt": "2026-10-07T11:50:39Z",
      "preview": "## The class, and why a sixth hand-fix is the wrong answer\n\nA markdown source line whose first character is `<` followed by a non-HTML name\nmakes kramdown open a **raw HTML block**. With no closing tag the rest of the\npage stays raw, so headings, lists and tables after it render as literal text.\nThe usual cause is an inline code span **wrapped across a line break**, leaving\nits continuation at col",
      "file": "beans/defs/folio-assistant-7pp6--a-column-0-pseudo-tag-in-a-published-markdown-sour.md"
    },
    {
      "id": "folio-assistant-7ppv",
      "title": "resolveCanonicalLean is O(refs x tree) without a cache, and its two index builders walk .lake/ while listPackageLeanFiles excludes it",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T09:37:16Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "Found 2026-09-27 while moving the resolver from `content/pipeline/qa-utils.ts`\ninto `content/pipeline/lean-formal-ref.ts` (PR #1465). **The code is unchanged**\n— it moved verbatim — so this is a pre-existing cost, not a regression, and it\nis filed because it was measured rather than because the move introduced it.\n\n## What is measured\n\n`resolveCanonicalLean(ref, repoRoot, cache?)` takes an OPTIONA",
      "file": "beans/defs/folio-assistant-7ppv--resolvecanonicallean-is-orefs-x-tree-without-a-cac.md"
    },
    {
      "id": "folio-assistant-7pvn",
      "title": "folio-assistant-core imports cat-harness (and cat-harness-tools) as packages, not by ../../",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-f6gq",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T15:29:13Z",
      "updatedAt": "2026-10-14T16:30:00Z",
      "preview": "Second layer of f6gq; needs pxtk. cat-harness needs `exports` (or deep-import-safe layout) and a pin agreeing with core's index.config.json.\n\n## Done when\n- [x] core's 228 cross-repository imports become package imports — 260 measured and rewritten in litlfred/folio-assistant-core#80; merged as core a2342ad, on cat-harness-tools#198 (f246be6, exports derived from declared code subgraphs). Downstre",
      "file": "beans/defs/folio-assistant-7pvn--folio-assistant-core-imports-cat-harness-as-a-package.md"
    },
    {
      "id": "folio-assistant-7s52",
      "title": "staging-review hands a reader URLs the AGENT cannot open — but the publish ref is a git branch",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T06:33:57Z",
      "updatedAt": "2026-09-30T14:44:36Z",
      "preview": "Issue: https://github.com/litlfred/folio-assistant/issues/849\n\n`staging-review` already owns the publish ref, and already names the failure:\nbean `rptk`, a contrast defect that survived two days *\"because the gate that\nswept the page never opened the view\"*. It composes URLs for a reader and stops\nthere.\n\nTHE AGENT CANNOT OPEN THEM. Measured this session, all three routes:\n`curl` -> 403 CONNECT tu",
      "file": "beans/defs/folio-assistant-7s52--staging-review-hands-a-reader-urls-the-agent-canno.md"
    },
    {
      "id": "folio-assistant-7sf1",
      "title": "Move MEMORY.md into the kg graph, with correct skill/task pairings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-8jt6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T00:04:29Z",
      "updatedAt": "2026-10-09T19:25:00Z",
      "preview": "Queued 2026-09-19 while the `skill-not-a-document` split was in flight; not\nstarted. Requested as: *\"move MEMORY.md into kg and make sure in right skill /\ntask pairings\"*.\n\n## What is there now\n\n`.claude/agents/` defines three subagents carrying `memory: project`, each with\na `MEMORY.md` under `.claude/agent-memory/<agent>/`:\n\n- `platform-boundary-guard` — folio-vs-platform boundary, adapter vs pr",
      "file": "beans/defs/folio-assistant-7sf1--move-memorymd-into-the-kg-graph-with-correct-skill.md"
    },
    {
      "id": "folio-assistant-7te5",
      "title": "who-iris's 12 generated pages are counted as authored — gen-iris-pages marks nothing it writes",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T06:25:09Z",
      "updatedAt": "2026-10-07T11:50:39Z",
      "preview": "Found by running bean `06e3`'s who-iris exercise end to end, 2026-10-04 (PR #2049).\n\n## The measurement\n\n`check:docs-populated` reports for who-iris:\n\n> `✓ who-iris   who-iris/docs/kg-to-portal.html — 1491 words of prose`\n> `  14 authored, 0 generated  ·  who-iris/docs, who-iris/site`\n\nThe true split of those 14 pages is **2 authored, 12 generated**:\n\n| writer | pages |\n|---|---|\n| `who-iris/scrip",
      "file": "beans/defs/folio-assistant-7te5--who-iriss-12-generated-pages-are-counted-as-author.md"
    },
    {
      "id": "folio-assistant-7uao",
      "title": "27 QA witnesses record a stale auditor scriptHash while claiming freshness: fresh",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T02:43:27Z",
      "updatedAt": "2026-10-09T14:26:00Z",
      "preview": "Found 2026-10-03 while regenerating after a merge, not by looking for it: a\n`docs:pages` run rewrote 27 witness files, and the ONLY change in each was the\n`scriptHash` of the auditor that produced it.\n\n## The measurement\n\n`auditorHash` is `sha256` of one file and nothing else —\n`cat-harness/scripts/kg-audit.ts:2380`:\n\n```ts\nconst auditorHash = sha256(readFileSync(join(AUDITOR_ROOT, \"scripts\", \"kg-",
      "file": "beans/defs/folio-assistant-7uao--27-qa-witnesses-record-a-stale-auditor-scripthash.md"
    },
    {
      "id": "folio-assistant-7w1a",
      "title": "METHODOLOGIES TABLE MISRENDERS: a truncated cell cuts a code span open and the whole table prints as text",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:58:58Z",
      "updatedAt": "2026-09-24T18:58:58Z",
      "preview": "Owner 2026-09-24, with a screenshot: \"bean: table misrenders https://litlfred.github.io/folio-assistant/methodologies/ — need QA audit report\".\n\n## Cause\ngen-methodologies-viz.ts short() cuts applies-when at 150 chars. The madr row is cut inside a code span, (see `kepner-tregoe…, and the unmatched backtick pairs with a later one on the line, swallowing the cell pipes. kramdown then renders the who",
      "file": "beans/defs/folio-assistant-7w1a--methodologies-table-misrenders-a-truncated-cell-cu.md"
    },
    {
      "id": "folio-assistant-7wgs",
      "title": "Record when a materialized copy is last READ, so cache:index can rank eviction by use",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T20:03:49Z",
      "updatedAt": "2026-10-09T19:15:00Z",
      "preview": "Follow-up from bean `54rk`. `cache:index` has a last-read column and it says `not recorded` for all 276 copies, because nothing records reads.\n\nOwner, 2026-09-23, choosing among \"say not recorded\", \"add a lastReadAt field\" and \"use the file's access time\": **say not recorded**, and open this bean for recording reads later.\n\n**Why not file access time:** it is disabled on many mounts (noatime) and ",
      "file": "beans/defs/folio-assistant-7wgs--record-when-a-materialized-copy-is-last-read-so-ca.md"
    },
    {
      "id": "folio-assistant-7wou",
      "title": "TERMINOLOGY / mapping: check a candidate term against an existing terminology — three states, exact AND concept",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5yhm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T04:51:47Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Under `5yhm`, and **the live one** after the 2026-09-29 re-scope. The owner's\nsentence, unchanged: *\"extracting exsiting glossary needs compaision to\nexisting termonology/coding.\"*\n\n## What exists, and the one thing that does not\n\n[`vocabulary-authority`](../../cat-harness/skills/kg/kg-core/vocabulary-authority.md)\nsettles WHICH vocabulary owns a fact — SKOS for meaning, DC for resources,\nFHIR for",
      "file": "beans/defs/folio-assistant-7wou--terminology-mapping-check-a-candidate-term-against.md"
    },
    {
      "id": "folio-assistant-7x5n",
      "title": "SEPARATION ARC: one workplan consolidating five stalled sessions' GOAL 1 work (S0–S8)",
      "status": "in-progress",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:14:10Z",
      "updatedAt": "2026-10-09T17:47:24Z",
      "preview": "Consolidates the handovers of five stalled sessions (iirv, w2gr/9umr, cjvs/vke6, fnx4/eayu, d33q) into one arc. Plan, status bars, gap analysis (G1–G14), migration checklist and delegation rules: cat-harness/docs/proposals/separation-arc-2026-10-01.md. Stories S0–S8 are children; each story points at the existing beans it absorbs and owns no new code of its own.\n\nStrategy adopted from sibling bean",
      "file": "beans/defs/folio-assistant-7x5n--separation-arc-one-workplan-consolidating-five-sta.md"
    },
    {
      "id": "folio-assistant-7x7g",
      "title": "external-schemas visualiser: 8 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:14Z",
      "updatedAt": "2026-10-09T14:36:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/external-schemas/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **44 of the 53 operative terms say nothing.** Every DCMI term (22) and every BPMN term (22) reads \"derived from the corpus; what this repository does w",
      "file": "beans/defs/folio-assistant-7x7g--external-schemas-visualiser-8-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-7x8o",
      "title": "TRANSLATIONS: 8 pairs may carry less than their source — but 7 of the original 9 were the extractor's hard wrap, not the translators (see lvk9)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T08:57:09Z",
      "updatedAt": "2026-10-11T06:23:24Z",
      "preview": "Found while deriving `.po` catalogues for #206 (bean `tbdg`). Measured\n2026-09-26.\n\n`derive-po.ts` refuses 18 of 25 (page, locale) pairs because the published\ntranslation does not have the same SHAPE as its source. **9 of those 18 are\nartefacts of the extractor** (beans `6b8u` and `ig4a`) and disappear once the\nthreshold is script-neutral. These are the **other 9**, which are still mismatched\nwith",
      "file": "beans/defs/folio-assistant-7x8o--translations-9-published-pages-carry-less-than-the.md"
    },
    {
      "id": "folio-assistant-7xmc",
      "title": "MERGE ROUND TRIM: write the owner-approved trimmed merge-main procedure into merge-conflict-patterns / prepare-merge",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T05:11:08Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Owner ruling 2026-10-05: 'trim duplicated steps'. Measured 2026-10-04 on PR #1898's merge rounds: one round cost ~45 min — merge:main incl. its regen 5–10 min; skill:register 1–2 min; a standalone regen after merge:main 4–5 min (redundant, same tree); full local gates ~24 min (1429 s, bun test on 3–4 cores; CI shards 4 ways in ~5 min); fresh-checkout regen no-op 4–5 min (duplicates CI's clean chec",
      "file": "beans/defs/folio-assistant-7xmc--merge-round-trim-write-the-owner-approved-trimmed.md"
    },
    {
      "id": "folio-assistant-7zz1",
      "title": "STANDALONE: whole-checkout tests move to a declared test home in the top-level folio-assistant instance",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T09:15:40Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Owner ruling 2026-10-06 ~08:50Z, relayed by the coordinating session (session_012qoycyCSGidZqW245vXhze) and recorded on 0r7u: \"Top-level instance\". The parent folio-assistant checkout, which holds every layer, gets a DECLARED test home: a directory in the top-level instance's declaration, never a literal path in a runner. Basis: whatever names every layer belongs at the top, so each layer stays st",
      "file": "beans/defs/folio-assistant-7zz1--standalone-whole-checkout-tests-move-to-a-declared-te.md"
    },
    {
      "id": "folio-assistant-8107",
      "title": "LMA systems for SE (2404.04834v4): the SDLC landscape review — which stages folio-assistant covers and which it does not",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:15:27Z",
      "updatedAt": "2026-10-09T17:24:00Z",
      "preview": "Ingest + critical analysis. 30pp systematic review, He/Treude/Lo. The cross-cutting frame: use its SDLC stage map as the gap checklist against this repo's processes/.\n\n## Closed 2026-10-09\n\nIngested arXiv:2404.04834v4 (\"Large Language Model-Based Multi-Agent Systems for Software Engineering: Literature Review, Vision and the Road Ahead\", 30pp, He, Treude, Lo) into `library/arxiv-2404.04834v4/` wit",
      "file": "beans/defs/folio-assistant-8107--lma-systems-for-se-240404834v4-the-sdlc-landscape.md"
    },
    {
      "id": "folio-assistant-81qz",
      "title": "STALE FOLIO PATH IN PLATFORM: audit-wiring.ts's docblock says it walks content/quantum-observable-universe/",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:52:13Z",
      "updatedAt": "2026-10-04T15:52:33Z",
      "preview": "Recorded from the qou orphaned-content census, 2026-10-04 (ORPH report; session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91, issue #2106). The census flagged cat-harness/content/pipeline/audit-wiring.ts as walking one folio's tree. Re-measured: the CODE already resolves the paper through requirePaper(--paper) and folioDir. Only the docblock named qou's path (stale since qou moved conte",
      "file": "beans/defs/folio-assistant-81qz--stale-folio-path-in-platform-audit-wiringtss-docbl.md"
    },
    {
      "id": "folio-assistant-81t5",
      "title": "TOOL 8/13: ingest-extract-structure — document ingestion (15 files, 7 entry points)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-d308",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T04:34:56Z",
      "updatedAt": "2026-09-26T00:00:00Z",
      "preview": "Group 8 of 13 in `d308`. **15 files, 7 entry points.**\n\n`pdf-extract`, `pdf-ocr`, `pdf-pages`, `pdf-structure`, `pdf-tables`,\n`split-pdf-by-chapter`, `extract-candidates`, `tabular-records`,\n`archive-contents`, `ingest-document`, `scan-repo-content`,\n`smart-base-transform`, `_pdf_doc_id`, `_pypdf_compat`, `_tech_meta`,\n`pypdf_safe`.\n\n**BPMN:** `ingest-extract-structure · Task_ExtractText · Task_Oc",
      "file": "beans/defs/folio-assistant-81t5--tool-813-ingest-extract-structure-document-ingesti.md"
    },
    {
      "id": "folio-assistant-81tw",
      "title": "BOOTSTRAP-TOOLS STAGED AGAIN: the tools that render and validate bootstrap/ leave cat-harness, toward litlfred/bootstrap-tools",
      "status": "scrapped",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T23:13:27Z",
      "updatedAt": "2026-09-30T08:46:25Z",
      "preview": "**Owner, 2026-09-29:** *\"we will https://github.com/litlfred/bootstrap-tools use this for the tools that render bootstrap/ but were put in cat-harness. for now create dir bootstrap-tools/ for staging split out into repo. make sure IRIs updated\"* — then, choosing scope: *\"1 2 ... need Zod usage in bootstrap tools as part of validation in rendering pipeline. will also need SEMVER skills in bootstrap",
      "file": "beans/defs/folio-assistant-81tw--bootstrap-tools-staged-again-the-tools-that-render.md"
    },
    {
      "id": "folio-assistant-81vy",
      "title": "DEPLOYMENT AWARENESS: the agent must know its UI surface — gh-pages, local server, MCP or chat-only — because it decides which tools apply",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T17:17:15Z",
      "updatedAt": "2026-10-09T13:33:00Z",
      "preview": "Owner, 2026-09-20, verbatim:\n\n> agent should be aware of how ui is deployed (e.g. ghpages , no XSS, etc),\n> local server, w/ or w/o mcp, chat discussion only.  part of skills to know\n> which tools\n\n## What this adds to the parent epic\n\n`5a3l` establishes that **topology** (where things live) and **operating\nmode** (what the harness is doing) are orthogonal, and that named scenarios\nare their produ",
      "file": "beans/defs/folio-assistant-81vy--deployment-awareness-the-agent-must-know-its-ui-su.md"
    },
    {
      "id": "folio-assistant-82qs",
      "title": "Locale selector back in the LHS navbar's top row",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T14:39:33Z",
      "updatedAt": "2026-10-06T05:55:27Z",
      "preview": "Owner, 2026-10-05: 'we lost locale selector in top navbar LHS again'. Cause (measured): docs-ui.css ~5729 hides .fa-lang-mini whenever .fa-nav-icons exists; the icon row took the launcher and the light/dark bulb but never a language control. Fix: a globe beside the bulb in the row's after-hook (opens the launcher on the language view), plus an e2e asserting a visible language control in .side-bar ",
      "file": "beans/defs/folio-assistant-82qs--locale-selector-back-in-the-lhs-navbars-top-row.md"
    },
    {
      "id": "folio-assistant-872t",
      "title": "The Python half's WHEEL BUILD is unchecked — rsi6's lesson applied to only one of the two halves",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T09:53:40Z",
      "updatedAt": "2026-10-09T11:36:00Z",
      "preview": "Split out of `1s5s` 2026-09-26, while wiring the Python half into\n`check:published-packages`. Recorded rather than decided, because the answer\ncosts something on every CI run and nobody has been asked.\n\n## The asymmetry\n\n`rsi6`'s finding was that **a package that ships and is not built lands green\nand broken** — measured, not predicted: PR #914 bumped `typescript` 5.9.3 →\n7.0.2, passed ten checks,",
      "file": "beans/defs/folio-assistant-872t--the-python-halfs-wheel-build-is-unchecked-rsi6s-le.md"
    },
    {
      "id": "folio-assistant-87mi",
      "title": "Merge refused: #2043 owed CI not green on its head",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:41Z",
      "updatedAt": "2026-10-15T16:49:44Z",
      "preview": "PR #2043, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_HeadNotGreen: conflict declared, own CI red.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2043.json`, status `waiting-on-author`): STATUS UNKNOWN on the",
      "file": "beans/defs/folio-assistant-87mi--merge-refused-2043-owed-ci-not-green-on-its-head.md"
    },
    {
      "id": "folio-assistant-88mg",
      "title": "CONSOLIDATION: one voice over bootstrap and cat-harness docs, with skills and docs sharing content rather than restating it",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-2upx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T16:21:35Z",
      "updatedAt": "2026-10-08T04:53:00Z",
      "preview": "Owner, 2026-09-21: a thorough analysis of the existing documentation AND skills, consolidated, in ONE voice. All of the documentation eventually; **bootstrap and cat-harness first**.\n\n**Two structural asks:**\n- **Reuse content between `skills/` and `docs/`** so both consolidate, with the docs pointing at the skill for rendering where the skill was written correctly.\n- **Some documentation will nee",
      "file": "beans/defs/folio-assistant-88mg--consolidation-one-voice-over-bootstrap-and-cat-har.md"
    },
    {
      "id": "folio-assistant-89cl",
      "title": "STATE BRANCH P5: adjust skills and processes — content-context-and-state-graphs, directory-conventions, todo-manager, bean-coordination, continual-progress, workflow-state, process-state",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:58:10Z",
      "updatedAt": "2026-10-09T15:08:00Z",
      "preview": "Proposal section 4.1. AFTER the decisions and Phase 3, not before: a skill describing a branch that does not exist yet is a rule nobody can follow.\n\n## Done when\n- [x] each skill in section 4.1 adjusted\n- [x] workflow-state-in-beans.md section 0 addendum\n- [x] AGENTS.md beans section pointers updated\n\nProposal: cat-harness/docs/proposals/state-branch-2026-10-02.md\n\n## Closed 2026-10-09\n\n- Branch: ",
      "file": "beans/defs/folio-assistant-89cl--state-branch-p5-adjust-skills-and-processes-conten.md"
    },
    {
      "id": "folio-assistant-89wq",
      "title": "Four QA checkers are unconditional n/a stubs — 8949 sidecar entries indistinguishable from a correct decline, two of them proof-build-green / proof-no-axiom-growth",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T10:37:00Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Measured 2026-09-27 against this branch's `cat-harness/`, and cross-checked\nagainst qou's committed sidecars at platform pin `37a36ce`.\n\n## Four exported checkers whose entire body is `return { result: \"n/a\", hits: [] }`\n\nFound by parsing every `export function check*` in\n`cat-harness/content/pipeline/qa-checkers*.ts` and keeping those with exactly\none `return` statement, which returns `n/a`:\n\n| c",
      "file": "beans/defs/folio-assistant-89wq--four-qa-checkers-are-unconditional-na-stubs-8949-s.md"
    },
    {
      "id": "folio-assistant-8ao5",
      "title": "Re-seed FHIR AST caches for smart-trust and smart-base after main merge",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:04:19Z",
      "updatedAt": "2026-10-02T16:45:00Z",
      "preview": "Re-seed the FHIR AST cache orphan branches on litlfred/smart-trust (fhir-ast/smart.who.int.trust) and litlfred/smart-base (fhir-ast/smart.who.int.base) from the current main. The previous seeds were from an earlier commit and may be stale after main merge.\n\n## Done when\n- [x] smart-trust re-seeded — `fhir-ast/smart.who.int.trust` @ `2bc91d0`, 678 resources, 671 edges, 677 fsh-index entries, source",
      "file": "beans/defs/folio-assistant-8ao5--re-seed-fhir-ast-caches-for-smart-trust-and-smart-base.md"
    },
    {
      "id": "folio-assistant-8c6v",
      "title": "MERGE PATTERNS GAP: the 17 generated docs/*.md pages have no declared merge-conflict pattern, so merge:main refuses them although their own front matter says do-not-hand-edit",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T08:55:15Z",
      "updatedAt": "2026-10-03T11:20:40Z",
      "preview": "Found 2026-10-03 while measuring PR #1888's merge with `main` for session\n`folio-assistant-a8`: of its 55 conflicts, 53 classified to a declared pattern\nand **2 refused**, and both were the same page in its two forms —\n`cat-harness/content/docs/publication-workflow/every-workflow-in-the-repo.md`\n(authored source) and `cat-harness/docs/process/publication-workflow.md` (its generated\nmirror). The mi",
      "file": "beans/defs/folio-assistant-8c6v--merge-patterns-gap-the-17-generated-docsmd-pages-h.md"
    },
    {
      "id": "folio-assistant-8ez4",
      "title": "STATE BRANCH P0: agree ONE storage field and ONE branch-store library with arc 3fva before either lands",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:58:09Z",
      "updatedAt": "2026-10-06T06:26:35Z",
      "preview": "Arc 3fva proposes ContentDirectory.storage {branch, keyedBy: commit} for qa-reports. State needs keyedBy: tip (one living tree, splice-write, never -f). One field, one library — a second field over the same question is two answers free to disagree.\n\n## Done when\n- [x] 3fva owner session consulted (PR #1764, comment 2026-10-02)\n- [ ] field shape agreed: 3fva's {branch, keyedBy} widened to commit|ti",
      "file": "beans/defs/folio-assistant-8ez4--state-branch-p0-agree-one-storage-field-and-one-br.md"
    },
    {
      "id": "folio-assistant-8fq9",
      "title": "Placement PR7: tests regroup by concern group, retargeted to cat-harness-tools/",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:01Z",
      "updatedAt": "2026-10-16T06:55:00Z",
      "preview": "Placement proposal §2 (owner rulings 2026-09-30 §6; process: review → resolve issues → staged PRs). Parent of PR0/PR1 is `9umr`; PR2–PR9 sit under the separation epic because D4 (owner, 2026-10-01, option 3) interleaves them with the split stages into one ordered sequence. Every PR: references move with the subject; generated trees regenerated, never hand-edited; `beans/**` not rewritten; kg-qa si",
      "file": "beans/defs/folio-assistant-8fq9--placement-pr7-tests-regroup-by-concern-group-retar.md"
    },
    {
      "id": "folio-assistant-8i57",
      "title": "Document ingestion page has no theme section: Process_IngestTheme is called but documented nowhere",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T17:22:04Z",
      "updatedAt": "2026-09-24T18:01:26Z",
      "preview": "## Why\n`document-ingestion.bpmn` calls `Process_IngestTheme` (`ingest-theme.bpmn`) behind `Gateway_ThemeSource`, and its links pointed at `#ingest-the-theme` and `#a-theme-source` — neither anchor exists. `content/docs/document-ingestion/document-ingestion.ts` has sections for extract / derive / build-KG / gate but none for the theme. Once links are derived from `asset.source` (B5-fix), the theme ",
      "file": "beans/defs/folio-assistant-8i57--document-ingestion-page-has-no-theme-section-proce.md"
    },
    {
      "id": "folio-assistant-8iqc",
      "title": "Library QA after ingestion: titles, bibliographic metadata, placeholder blocks and summary backlog are never judged",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T16:39:43Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "Issue [#1794](https://github.com/litlfred/folio-assistant/issues/1794).\n\nA library entry is never judged after ingestion or the KG build. Measured on main (59 entries): 24 titles equal the slug, at least 5 are implausible (who-pub-tps-931 is 'Abies', OCR noise off a scanned cover), 0 of 59 carry author or year, and who-pub-tps-931 shows 121 'Page N (no content carried)' blocks over 25,714 OCR word",
      "file": "beans/defs/folio-assistant-8iqc--library-qa-after-ingestion-titles-bibliographic-me.md"
    },
    {
      "id": "folio-assistant-8iqt",
      "title": "recordUntainted writes agent verdicts into the DERIVED block-qa file, not the attestation store",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T19:22:21Z",
      "updatedAt": "2026-10-06T06:09:21Z",
      "preview": "Found by the d6bw agent, 2026-10-01.\n\n`recordUntainted` (the untainted-verification writer) still writes an agent verdict into the derived block-qa report. Since 8wj1/2gst, judgements live in the declared `attestations` graph (`test/attestations/`, `qa-attestations/v1`). The verdict reaches the store only when a later writer runs and auto-moves it (owner ruling 2). So nothing is lost today. But on",
      "file": "beans/defs/folio-assistant-8iqt--recorduntainted-writes-agent-verdicts-into-the-der.md"
    },
    {
      "id": "folio-assistant-8j9e",
      "title": "A merge silently drops a gitignored-but-tracked file: green locally, red in CI (#2000)",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T13:33:34Z",
      "updatedAt": "2026-10-08T01:15:00Z",
      "preview": "Related: `blgm` (the merge pipeline tools: `merge-base.ts` is where the check belongs). Filed under epic `nok9` because a bean can only have an epic, milestone or feature as its parent.\n\nA merge can silently delete a file that `main` tracks but `.gitignore` covers, and nothing catches it until CI fails on a fresh checkout. Every local check stays green, because regen rewrites the file on disk and ",
      "file": "beans/defs/folio-assistant-8j9e--a-merge-silently-drops-a-gitignored-but-tracked-fi.md"
    },
    {
      "id": "folio-assistant-8jt6",
      "title": "MEMORY & TODOS: notes an agent or a person carries, attached to the graph",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:43:44Z",
      "updatedAt": "2026-10-05T04:57:14Z",
      "preview": "Notes that a participant carries, attached to a node of the graph.\n\n`h32d` is the schema both halves share; `5oai` is the relation that lets one\nattach to a content block and move between them. The 2x2 that governs this is\nmemory-vs-workflow and human-vs-agent: todos are human memory, `MEMORY.md` is\nagent memory, beans are agent workflow, and human workflow is deliberately\nempty.\n\n`4kiw` and `0j8h",
      "file": "beans/defs/folio-assistant-8jt6--memory-todos-notes-an-agent-or-a-person-carries-at.md"
    },
    {
      "id": "folio-assistant-8jur",
      "title": "FHIR / IG kinds have no viewer: IG AST, OpenAPI, external schemas, L1 extraction, themes",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-46ob",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T16:53:28Z",
      "updatedAt": "2026-10-22T16:50:00Z",
      "preview": "## Parent\n\nfolio-assistant-46ob\n\nMeasured live: IG AST ×1 (WHO SMART Trust), Openapi ×1 (WHO SMART Trust), External schemas ×1 (SMART Base), L1 extraction ×1 (SMART Base), Themes ×2 (SMART Base, WHO IRIS).\n\nThe fhir-harness `ig-ast-delta` skill already renders IG ASTs; cat-harness has an `external-schemas` visualiser (check why SMART Base's directory is not covered). Coordinate with the fhir-harne",
      "file": "beans/defs/folio-assistant-8jur--fhir-ig-kinds-have-no-viewer-ig-ast-openapi-extern.md"
    },
    {
      "id": "folio-assistant-8lcl",
      "title": "Separation stage 1b: Zod moves to cat-harness-tools; generated JSON Schema stays in cat-harness",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [
        "folio-assistant-y9r6"
      ],
      "blockedBy": [
        "folio-assistant-f8wp"
      ],
      "createdAt": "2026-10-01T06:58:01Z",
      "updatedAt": "2026-10-16T06:55:00Z",
      "preview": "Stage 1b of the split plan: the 205 Zod `schemas/*.ts` move to `cat-harness-tools/schemas/`; `cat-harness/schemas/` gets **generated** JSON Schema (one per declared node kind, `$id` under `iriBase`), as bootstrap does (`xsqm` ruling 1). `bunfig.toml` preload follows.\n\nOrder: D4 option 3 (owner, 2026-10-01) — after placement PR8, which regroups the same `schemas/` tree and moves the 28 above-harnes",
      "file": "beans/defs/folio-assistant-8lcl--separation-stage-1b-zod-moves-to-cat-harness-tools.md"
    },
    {
      "id": "folio-assistant-8mlt",
      "title": "CREDENTIALS (iv): rename BOOTSTRAP_PAGES_TOKEN -> PUBLISH_SITE_BOOTSTRAP (bootstrap-tools) and MERGE_MAIN_TOKEN -> PUSH_BRANCH_TRIGGERING_CI (merge-main.yml)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T06:31:23Z",
      "updatedAt": "2026-10-23T08:15:00Z",
      "preview": "From the proposal cat-harness/docs/proposals/credentials-needs-and-supply.md §4.3 (D2=A). Edit the secret references and the error and help messages in bootstrap-tools/.github/workflows/publish-bootstrap.yml and .github/workflows/merge-main.yml. With the App (D1=A), add the create-github-app-token mint step and expose the job variable under the capability name. Both secrets are unset, so the renam",
      "file": "beans/defs/folio-assistant-8mlt--credentials-iv-rename-bootstrap-pages-token-publis.md"
    },
    {
      "id": "folio-assistant-8npa",
      "title": "Working-notes graph kind: a folio's derivation notes, scoping docs and ledgers as declared context, not rendered content",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-8jt6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T16:54:09Z",
      "updatedAt": "2026-10-09T14:01:00Z",
      "preview": "Downstream need from litlfred/qou (migration story S-REST-1, qou bean qou-pjfi; analysis docs/audits/2026-10-04-workplan-and-migration/REST_report.md in qou).\n\nqou has 512 non-audit docs/ files: 117 math-heavy derivation notes, cheat sheets, scoping docs and recorded refutations, none named by a block. No existing kind fits:\n- `docs` is renderable and would publish working notes as site pages;\n- `",
      "file": "beans/defs/folio-assistant-8npa--working-notes-graph-kind-a-folios-derivation-notes.md"
    },
    {
      "id": "folio-assistant-8pyz",
      "title": "site.data.* undefined renders as empty with no warning: make undefined Liquid variables in IG-site builds a reported finding",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T15:38:22Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "Owner, 2026-10-09, reviewing the smart-* deployments: *\"is a warning made when referenced variable DNE? (QA reports)\"*. It is not, for `site.data.*`.\n\n## What was measured (2026-10-09, gh-pages of litlfred/smart-immunizations @ 51454a6)\n\n`testing.html` carries four links of the form\n`https://raw.githubusercontent.com///main/testing/docker/logic/.env` — the source\n(`input/pagecontent/testing.md`) r",
      "file": "beans/defs/folio-assistant-8pyz--sitedata-undefined-renders-as-empty-with-no-warnin.md"
    },
    {
      "id": "folio-assistant-8pzh",
      "title": "smart-base: extract smart-kg L1 instance documents (publication, section, recommendation) from ingested guideline PDFs",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-qvxh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T06:16:07Z",
      "updatedAt": "2026-10-21T21:27:30Z",
      "preview": "Owner, 2026-10-02 (#1767), option 2 of the smart-kg fold-in: feed smart-kg. smart-kg's README says 'Not built yet: no PDF extractor, so publication and recommendation nodes must currently be authored by hand.' folio-assistant's ingest pipeline already produces sections, outline and page text for each library entry. Build a smart-base tool that turns one ingested guideline (e.g. who-iris/library/97",
      "file": "beans/defs/folio-assistant-8pzh--smart-base-extract-smart-kg-l1-instance-documents.md"
    },
    {
      "id": "folio-assistant-8qyc",
      "title": "REGEN DUPLICATED WORK + BARRIERS: skill:register:check re-runs sub-checks regen also asks; un-barrier read-only checks; narrow inputs",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-xpcu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T05:24:07Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "## Why\nOwner goal 2026-10-05: minimise regen time while staying sound (never a false green). Measured (stream B, main, --jobs 1 --no-cache): 117 pairs, 637 s serial. skill:register:check (107 s, barrier) re-runs ~9 checks regen also asks separately; kg:audit:check (80 s) may be a subset of kg:audit:all:check (198 s); several none/barrier pairs (check:published-instance-exports 49 s, subgraph:jsonl",
      "file": "beans/defs/folio-assistant-8qyc--regen-duplicated-work-barriers-skillregistercheck.md"
    },
    {
      "id": "folio-assistant-8rff",
      "title": "MERGE PATTERNS GAP: three generated families have no declared merge-conflict pattern, so merge:main refuses them and merge:overlap counts them as authored",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T17:46:34Z",
      "updatedAt": "2026-10-03T00:30:58Z",
      "preview": "Found by merge:overlap's first live run (bean blgm, PR #1895, 2026-10-02): 32 open PRs; 109 pairs overlapped on authored paths, and 19 of those overlapped ONLY on these three generated families. None is named in cat-harness/scripts/merge-conflict-patterns.ts PATTERNS or in .gitattributes, so they classify as authored.\n\n| family | writer | check in CI | overlap count (pair-path hits) |\n|---|---|---",
      "file": "beans/defs/folio-assistant-8rff--merge-patterns-gap-three-generated-families-have-n.md"
    },
    {
      "id": "folio-assistant-8unf",
      "title": "SESSION LOGS ARE NOT EPICS: todo-manager and session-intent tell every session to mint a 'Session:' milestone",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:09:14Z",
      "updatedAt": "2026-10-04T15:30:37Z",
      "preview": "Evidence: qou work-plan analysis 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). In qou, 292 of 353 epic-typed beans are 'Session:' logs. Cause: todo-manager Core Directive 1 and session-intent step 4b both say `beans create \"Session: <Branch/Goal>\" --type milestone`, and the Status Display sample shows `[epic-123] Session: <branch>`. The same skill's §WHICH parent sa",
      "file": "beans/defs/folio-assistant-8unf--session-logs-are-not-epics-todo-manager-and-sessio.md"
    },
    {
      "id": "folio-assistant-8v0y",
      "title": "A bean that RESTATES a live skill's contract is unchecked — kn0t drifted in four places and one turned a measurement into an impression",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:07:00Z",
      "updatedAt": "2026-09-24T05:54:13Z",
      "preview": "Issue [#1190](https://github.com/litlfred/folio-assistant/issues/1190).\n\nA bean that carries a **skill's contract** instead of pointing at it. `AGENTS.md`'s\nbanner already states the rule — *where a skill and a copy disagree, the skill wins\nand the copy is wrong* — and nothing could read it.\n\n## The defect, already paid for\n\n`kn0t` held a second copy of\n[`fhir-harness/skills/fhir-ig-base/ig-publis",
      "file": "beans/defs/folio-assistant-8v0y--a-bean-that-restates-a-live-skills-contract-is-unc.md"
    },
    {
      "id": "folio-assistant-8wj1",
      "title": "QA READERS F4: block and translation read-modify-write writers stop dropping agent verdicts when the prior is absent — the block-qa D2 split",
      "status": "completed",
      "type": "task",
      "priority": "critical",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:47:13Z",
      "updatedAt": "2026-10-23T13:35:00Z",
      "preview": "Arc `3fva`, from reader audit `gxvk` (`cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md`, §5.2 family F4). Refines `oqe3` (`translation:block-qa:check`) and `2ae2` (`qa-agent-write`). As of 2026-10-06 this is not blocked on `16ei`: it completed (qa-store landed; CI publishes `main/` and `pr/` entries and the prune runs on schedule), so the block is withdrawn.\n\n**CRITICAL (C11), and it mus",
      "file": "beans/defs/folio-assistant-8wj1--qa-readers-f4-block-and-translation-read-modify-wr.md"
    },
    {
      "id": "folio-assistant-8xtj",
      "title": "INSTANCE NAMES: folio-assist-core published every core term to a path no term names — fixed, plus the 247-reference residue a sweep must not touch",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T19:01:42Z",
      "updatedAt": "2026-10-08T01:15:00Z",
      "preview": "Owner, 2026-09-20 (session_017PqeiS4JYySSWGAYLedmus): *\"fix stub name mismatxhes.\"*\n\n**The load-bearing one is fixed; this bean is the residue**, which needs\nper-site judgement rather than a sweep.\n\n## Fixed already — it was breaking a published artefact\n\n`CORE_NS` is `…/folio-assistant-core/ns#`, so every `fac:` term names that\nstem. Both `docs-site.yml` and `feature-staging.yml` published that l",
      "file": "beans/defs/folio-assistant-8xtj--instance-names-folio-assist-core-published-every-c.md"
    },
    {
      "id": "folio-assistant-8xx6",
      "title": "BPMN re-render for translated labels",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T15:07:07Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "The \"next\" recorded on bean `t8g3`. Re-render BPMN diagrams so translated\nlabels appear, handling text overflow.\n\n**Now unblocked.** Its own input list was partly broken: `schemas/translation-tools.ts`\nlisted `processes/publication-workflow.bpmn` in the `dak` entry's\n`bpmnDiagrams`, and **that file has never existed** — `docs/publication-workflow.md`\nis a PAGE embedding three diagrams. An unresolv",
      "file": "beans/defs/folio-assistant-8xx6--bpmn-re-render-for-translated-labels.md"
    },
    {
      "id": "folio-assistant-8zsb",
      "title": "bun test reads the CHECKOUT PATH: 2 tests fail in any worktree not named folio-assistant",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T17:53:09Z",
      "updatedAt": "2026-09-30T19:49:03Z",
      "preview": "## What was measured\n\n`bun test` on `origin/main` `da684477383`, run four times, varying **only the\ndirectory the checkout sits in**. Same commit, same `node_modules`, same\ncommand.\n\n| checkout path | basename | parent | result |\n|---|---|---|---|\n| `/home/user/folio-assistant` | `folio-assistant` | `/home/user` | pass |\n| `/tmp/probe-main/folio-assistant` | `folio-assistant` | `/tmp/probe-main` |",
      "file": "beans/defs/folio-assistant-8zsb--bun-test-reads-the-checkout-path-2-tests-fail-in-a.md"
    },
    {
      "id": "folio-assistant-94zs",
      "title": "REGEN --changed: ask only the pairs a merge touched, and narrow the fixpoint's later passes",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-xpcu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T05:12:20Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Owner, 2026-10-05: \"maximize efficiency, get regen time as minimal as possible\".\n\n## What\n1. `bun run cat regen --changed <base>`: changed paths = `git diff --name-only <base>...HEAD` plus the working tree. Ask only pairs whose declared inputs/outputs (globs) or script import closure intersect them. Undeclared and `{tracked}` pairs always run. `--explain` names each skip. Default stays the full ru",
      "file": "beans/defs/folio-assistant-94zs--regen-changed-ask-only-the-pairs-a-merge-touched-a.md"
    },
    {
      "id": "folio-assistant-95ir",
      "title": "Library scanners FILTER OUT a declared-but-absent directory, so a partial checkout reports a clean pass",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T16:29:50Z",
      "updatedAt": "2026-09-23T21:40:48Z",
      "preview": "Found by review 2026-09-20, on this branch's own fan-out work (`a02m`).\n\n`check-tabular-stubs.ts:137`, `check-l1-complete.ts:756` and `:936` each end\ntheir directory resolution with a `.filter(existsSync)`. So a library the\ndeclaration names and the tree does not carry is not a finding — it is not\neven a line of output. The check then passes over the libraries that DO exist\nand reports a clean run",
      "file": "beans/defs/folio-assistant-95ir--library-scanners-filter-out-a-declared-but-absent.md"
    },
    {
      "id": "folio-assistant-95sk",
      "title": "FOLIO AS CONVENTION (R24, R27–R29): the folio on any harness, materialised assets and reader documents in folio/, cross-library references — wait on the split",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T17:59:01Z",
      "updatedAt": "2026-09-23T17:59:01Z",
      "preview": "Carried over from `j2if` on 2026-09-23, on the owner's choice \"Move to split, close\". The source of truth for the wording is `cat-harness/docs/architecture/folio-board-requirements.md` §\"The folio is a convention, not a page — R24 to R29\". Quoted here so this bean can be read on its own:\n\n| | requirement | state 2026-09-23 |\n|---|---|---|\n| **R24** | the folio visualisation is `cat-harness`'s, and",
      "file": "beans/defs/folio-assistant-95sk--folio-as-convention-r24-r27r29-the-folio-on-any-ha.md"
    },
    {
      "id": "folio-assistant-96y4",
      "title": "smart-immunizations has no BPMN: IMMZ.A-I exist only as SVG images, and its personas only as HTML",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T14:06:52Z",
      "updatedAt": "2026-10-21T12:40:00Z",
      "preview": "Measured 2026-10-10 on litlfred/smart-immunizations main (86898e6): its nine processes IMMZ.A–I exist only as SVG images (`input/images/immz-*-business-process.svg`) and a pagecontent table. `input/business-processes/` is empty and there are no `.bpmn` files. The personas are HTML tables only; `input/fsh/actors/` is empty.\n\nSo the recommendation-scenario extraction can reference a process only by ",
      "file": "beans/defs/folio-assistant-96y4--smart-immunizations-has-no-bpmn-immza-i-exist-only.md"
    },
    {
      "id": "folio-assistant-9791",
      "title": "QA SUMMARY: 'passing' counts only script-checkable criteria — agent-judged criteria never run are not said (heat map reads it as QA passed)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T18:10:15Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "Found while doing tw61, 2026-09-23. On a freshly scaffolded document folio, a sweep records 46 criteria per block, and every recorded one passes or is n/a. `publish-block-qa` then says **\"passing\"**. But about 15 criteria that need an agent's judgement were never run: voice traps, exposition clarity, adversarial review. They appear in the sweep output as `[needs-agent]` and nowhere in the verdict ",
      "file": "beans/defs/folio-assistant-9791--qa-summary-passing-counts-only-script-checkable-cr.md"
    },
    {
      "id": "folio-assistant-99vu",
      "title": "site.data.fhir from the FHIR AST, not sushi-config: one source for the site's IG variables and its artefact pages",
      "status": "scrapped",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T15:38:22Z",
      "updatedAt": "2026-10-09T15:43:21Z",
      "preview": "Owner, 2026-10-09: *\"site.data.fhir should come fhir AST or so...\"*.\n\n## Today (measured 2026-10-09, litlfred/fhir-harness HEAD)\n\n`fhir-harness/scripts/ig-site-data.ts` (bean `bamf`) fills `site.data.fhir` from\n`sushi-config.yaml`, else `fhir-artifact-index/index.json`, and writes only\n`ig.{id,url,name,title,version,status,publisher,fhirVersion}`, `packageId` and\n`canonical`; everything else is li",
      "file": "beans/defs/folio-assistant-99vu--sitedatafhir-from-the-fhir-ast-not-sushi-config-on.md"
    },
    {
      "id": "folio-assistant-9c7h",
      "title": "Move fsh-guts/ to its own special branch cat/cat-harness/fsh-guts (separation prerequisite); retarget its tools",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T21:20:17Z",
      "updatedAt": "2026-10-04T12:52:02Z",
      "preview": "Owner, 2026-10-02, verbatim: \"bean: as pre-requistie as part of separation, fsh-guts content gets its own named branch, cat/cat-harness/fsh-guts and the contents of fsh-guts/ dir goes there. will need to update the tools associated to this, like with other special named branches.\"\n\nBranch name updated 2026-10-02 per the owner's naming ruling, `cat/<harness>/<name>` (note on `fs43`). The owner aske",
      "file": "beans/defs/folio-assistant-9c7h--move-fsh-guts-to-its-own-special-branch-cat-fsh-gu.md"
    },
    {
      "id": "folio-assistant-9cc0",
      "title": "ROOT TYPECHECK IS RED ON MAIN: tsconfig sweeps a separately-published sub-package whose vitest dep is not installed at the root",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T11:06:36Z",
      "updatedAt": "2026-09-26T12:54:56Z",
      "preview": "## What is failing\n\n`bunx tsc --noEmit` exits **2** on `main`:\n\n    cat-harness/schemas/block-qa-schema/tests/parity.test.ts(26,40):\n    error TS2307: Cannot find module 'vitest' or its corresponding type declarations.\n\n**Measured on pristine `origin/main` at `a7b5f021498c786a90198196e18eb3d6c27a61ce`\nin a clean detached worktree with `bun install --frozen-lockfile` — not on a\nbranch, not in a dir",
      "file": "beans/defs/folio-assistant-9cc0--root-typecheck-is-red-on-main-tsconfig-sweeps-a-se.md"
    },
    {
      "id": "folio-assistant-9f05",
      "title": "Merge refused: #2063 not signed (merge:guard checks 3 and 4)",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-d33q",
      "blocking": [
        "folio-assistant-0qjq"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:41Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "PR #2063, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_NotReady: conflict clean, own CI green.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2063.json`, status `active`): STATUS UNKNOWN on the 13:40Z all-PR r",
      "file": "beans/defs/folio-assistant-9f05--merge-refused-2063-not-signed-mergeguard-checks-3.md"
    },
    {
      "id": "folio-assistant-9fdi",
      "title": "Task_Review needs theme-ui-review, which NO role carries — and the ruling to re-lane it contradicts the diagram's own no-call reason",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T16:30:53Z",
      "updatedAt": "2026-09-23T11:30:00Z",
      "preview": "Found 2026-09-23 by stream 3/3 of the #956 consolidation, while applying the\nowner's ruling on the `role-carries-activity-skill` findings. **Five of the six\nwere closed by that ruling. This is the sixth, and it is stuck for a reason the\nquestion did not know about.**\n\n## What was fixed, and what this is\n\n`ingestion-agent` now carries `theme-art-intake`, which cleared five findings in\none line — th",
      "file": "beans/defs/folio-assistant-9fdi--task-review-needs-theme-ui-review-which-no-role-ca.md"
    },
    {
      "id": "folio-assistant-9gkj",
      "title": "Merge refused: #2094 owed CI not green on its head",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-1xhc",
      "blocking": [
        "folio-assistant-wekz"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:43Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "PR #2094, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_HeadNotGreen: conflict declared, own CI missing-required.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2094.json`, status `active`): ACK: Owner-approved",
      "file": "beans/defs/folio-assistant-9gkj--merge-refused-2094-owed-ci-not-green-on-its-head.md"
    },
    {
      "id": "folio-assistant-9gyz",
      "title": "QA-review schemas: Finding, Decision and AuditNote are three entities, not one",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T20:09:07Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "## Progress — 2026-09-18\n\nStep 1 landed on `claude/festive-galileo-s7ibx0` ([PR #280](https://github.com/litlfred/folio-assistant/pull/280)), two commits.\n\n**`schemas/qa-review.ts`** — `Finding`, `Decision`, `AuditNote` as three\nentities. The two severity vocabularies are kept as orthogonal axes:\n`critical | major | minor` is what kind of breakage (a machine can assign it),\n`blocking | suggestion ",
      "file": "beans/defs/folio-assistant-9gyz--qa-review-schemas-finding-decision-and-auditnote-a.md"
    },
    {
      "id": "folio-assistant-9hfi",
      "title": "smart-immunizations codings.html: CodeSystems and ValueSets show 'not rendered: list-simple-*.xhtml'",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T05:56:52Z",
      "updatedAt": "2026-10-06T18:30:00Z",
      "preview": "Owner, 2026-10-06: on https://litlfred.github.io/smart-immunizations/codings.html both lists render as placeholders:\n\n    CodeSystems ✎ 📣\n    ⟦not rendered: list-simple-codesystems.xhtml⟧ — the IG Publisher renders it from a source this build does not hold; no renderer was given to this build.\n    ValueSets ✎ 📣\n    ⟦not rendered: list-simple-valuesets.xhtml⟧ — (same)\n\nThe owner asked \"what to do",
      "file": "beans/defs/folio-assistant-9hfi--smart-immunizations-codingshtml-codesystems-and-va.md"
    },
    {
      "id": "folio-assistant-9hlq",
      "title": "Provision gh-pages before Pages is switched on, in every publishing route (#2417)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0mpw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T12:06:33Z",
      "updatedAt": "2026-10-08T04:30:00Z",
      "preview": "Issue #2417. FR-1..FR-4: pages-bootstrap unprovisioned state + --provision; getting-started.bpmn Provision gh-pages task; skills getting-started/repo-conversion/remote-mount name the step. Owner rulings 2026-10-01 and 2026-10-07.\n\n## Completed on landed evidence\nLanded on main in PR #2417 (commit fa491d3d5a0c, \"Provision gh-pages before Pages is switched on, in every publishing route (#2417)\").\n- ",
      "file": "beans/defs/folio-assistant-9hlq--provision-gh-pages-before-pages-is-switched-on-in.md"
    },
    {
      "id": "folio-assistant-9hxd",
      "title": "CREDENTIALS (iii): credentials/ declaration (needs, profile, registry) for bootstrap-tools and folio-assistant",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T06:31:22Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "From the proposal cat-harness/docs/proposals/credentials-needs-and-supply.md §2.3–2.4 (D3=A). Register three graph kinds: credential-needs (context), credential-profile (context), credential-registry (state). Write the needs for every secret in §1.1. The profile is personal-github with the App (D1=A). Declare sign-artefact as a need with no supply yet (D4=A). bootstrap-tools carries its own file, ",
      "file": "beans/defs/folio-assistant-9hxd--credentials-iii-credentials-declaration-needs-prof.md"
    },
    {
      "id": "folio-assistant-9io2",
      "title": "lake-cache family to cat/folio-assistant-sci/lake-cache/ (declaration, 8 mirrors, folio-repo renames)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T00:51:43Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "The last special branch still declared under the interim `cat-<name>` scheme. Owner, 2026-10-02: special branches are `cat/<harness>/<name>`; and (confirmed 2026-10-02, Parcel B brief) folio-assistant-sci is the lake-cache harness. So the family becomes `cat/folio-assistant-sci/lake-cache/<pkg>-<slug>`.\n\nSplit out of 9c7h on 2026-10-03 because it touches 8 CI and script files that run INSIDE folio",
      "file": "beans/defs/folio-assistant-9io2--lake-cache-family-to-catfolio-assistant-scilake-ca.md"
    },
    {
      "id": "folio-assistant-9k2i",
      "title": "CROSS-PAPER synthesis + adversarial pass ON folio-assistant: what transfers, what is refuted, what gap remains",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:15:27Z",
      "updatedAt": "2026-10-09T18:05:00Z",
      "preview": "Depends on the five per-paper beans. Must keep measured / recommended / claimed apart, as methodologies/merge-queue.md does. Adversarial in both directions: attack the papers' claims, and attack this repo's processes with them.\n\n## Closed 2026-10-09\n\nSynthesized the five foundational agentic SE papers (arXiv:2404.04834v4, arXiv:2507.23348v1, arXiv:2607.00053v1, arXiv:2601.04544v1, arXiv:2402.02172",
      "file": "beans/defs/folio-assistant-9k2i--cross-paper-synthesis-adversarial-pass-on-folio-as.md"
    },
    {
      "id": "folio-assistant-9mmu",
      "title": "GENERIC ORPHAN DETECTION: one detector for an artefact that names a subject that is gone, across graph kinds",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:10:08Z",
      "updatedAt": "2026-10-09T18:05:00Z",
      "preview": "Recorded from the qou work-plan analysis, 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). Not started: recorded so the gap has an owner. Orphan selectors exist per artefact family (s8nu found four for one question). qou showed orphans in beans (parents gone), branches (work not on main), and block sidecars. Proposed: one kg:audit criterion family over every declared g",
      "file": "beans/defs/folio-assistant-9mmu--generic-orphan-detection-one-detector-for-an-artef.md"
    },
    {
      "id": "folio-assistant-9ofm",
      "title": "STATE BRANCH P3: migrate every reader and writer of beans/, todos/, issue-marks/, health results to the branch",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:58:10Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "Proposal section 4 table, one row per change: .beans.yml, workflow/store.ts WORKFLOW_DIR, claim-bean.ts, beans-fallback.ts, beans-landed.ts, gen-docs-pages.ts, state-visualizer.ts, test/health/run.ts, todos.ts, render-pipeline.ts, issue-marks readers, folio_init templates.\n\n## Done when\n- [ ] every row green against the branch\n\nProposal: cat-harness/docs/proposals/state-branch-2026-10-02.md\n\n_2026",
      "file": "beans/defs/folio-assistant-9ofm--state-branch-p3-migrate-every-reader-and-writer-of.md"
    },
    {
      "id": "folio-assistant-9rnf",
      "title": "DISCOVERY: publishedPairs scans the site root only, so a translated page in a subdirectory is invisible to every catalogue tool",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T04:59:40Z",
      "updatedAt": "2026-09-27T08:07:02Z",
      "preview": "## The gap\n\n`publishedPairs` in `cat-harness/content/pipeline/derive-po.ts` reads the site\ndirectory with a single `readdirSync`, so it sees pages at the root and nothing\nbelow it. Measured on `main` at `c6960465301`:\n\n| | |\n|---|---|\n| published translated pages | **14** |\n| of those, found by discovery | 13 (top level) |\n| **invisible** | **1** — `guides/agent-onboarding.md`, in ar, es, fr, ru, ",
      "file": "beans/defs/folio-assistant-9rnf--discovery-publishedpairs-scans-the-site-root-only.md"
    },
    {
      "id": "folio-assistant-9rq1",
      "title": "ONE NAVBAR: every navbar capability is a harness feature, drawn by one mechanism on every layout (.side-bar, .fa-nav rail, viewer pages)",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T05:37:13Z",
      "updatedAt": "2026-10-21T21:32:00Z",
      "preview": "Owner, 2026-10-05, choosing how to fix the missing harness icon row on who-iris pages (#2147): '1... this should be a common navbar funcationliatyt in harness. should be a bean about this'.\n\n## The gap this names\nThe navbar's capabilities are defined per LAYOUT, not per harness. The harness icon row (mountNavIconRow in docs-ui.js) binds only just-the-docs's .side-bar and reads data that only head_",
      "file": "beans/defs/folio-assistant-9rq1--one-navbar-every-navbar-capability-is-a-harness-fe.md"
    },
    {
      "id": "folio-assistant-9rrb",
      "title": "CATALOGUE DISCOVERY: derive-po held a list of five page names, so #1404's four new pages took drift from 1 to 21 unseen",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T14:13:00Z",
      "updatedAt": "2026-10-07T05:05:00Z",
      "preview": "Found 2026-09-26, minutes after #1369 merged, by watching what happened next.\n\n#1369 took `translation-drift` from 25 findings to 1. **PR #1404 then merged four\nmore translated pages across five locales with no catalogues, and the gate went to\n21.** The tool that had just catalogued 24 pairs could not see any of them, because\nits CLI held a list:\n\n```ts\nconst pages = [\"accessibility\", \"content-typ",
      "file": "beans/defs/folio-assistant-9rrb--catalogue-discovery-derive-po-held-a-list-of-five.md"
    },
    {
      "id": "folio-assistant-9scf",
      "title": "folio visualiser: 5 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:14Z",
      "updatedAt": "2026-10-09T14:40:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/folio/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **Horizontal scroll at phone width.** At 390 px the document is 769 px wide (`scrollWidth` 769). The node table's *declared in*, *links* and *prose* columns start",
      "file": "beans/defs/folio-assistant-9scf--folio-visualiser-5-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-9udd",
      "title": "LSI: cross-document link proposals need a minimum cosine and a hub penalty",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ansc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T21:51:12Z",
      "updatedAt": "2026-09-29T23:23:22Z",
      "preview": "who-iris corpus: of the 15 strongest LSI cross-document pairs, 4 are real, 3 partial, 8 spurious; WPRO p3 is the nearest cross-document unit for 56 units and HQ p78 for 46 (hubs); median best Handbook->HQ cosine 0.195 — 'nearest' mostly means 'least unlike'. Done when: any cross-document proposal (graph-search --latent, lsi_query across graphs, future uses[] candidates) applies a floor and a hub p",
      "file": "beans/defs/folio-assistant-9udd--lsi-cross-document-link-proposals-need-a-minimum-c.md"
    },
    {
      "id": "folio-assistant-9umr",
      "title": "Concern subgraphs: cat-harness skills live in one declared subgraph per semantic concern (first: KG + library out of folio-core)",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T08:12:08Z",
      "updatedAt": "2026-10-21T17:24:00Z",
      "preview": "Owner 2026-09-29: 'declared sub-graphs of cat-harness based on semantic concern (see sibling work on bootstrap definitions as named subset). dont need a separate facet. built into location.' Ruled 2026-09-30: **eight groups, KG + library move first**.\n\nA Subgraph is bootstrap's term (cat-harness/schemas/graph.ts): 'a named subset of Node Instances: a Declaration's directory entry, with its id, its",
      "file": "beans/defs/folio-assistant-9umr--concern-subgraphs-cat-harness-skills-live-in-one-d.md"
    },
    {
      "id": "folio-assistant-9v4m",
      "title": "TEST INTERFERENCE: a profile-gate test fails in the full suite and passes in isolation on the same commit",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T03:40:20Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "Measured 2026-09-26 on `985d0bada2a` (branch claude/brave-hypatia-r820sf, diff = two bean .md files only).\n\n## What happened\n\n`bun run cat gates` failed with ONE test failure:\n\n    (fail) the sweep's profile gate, end to end > a paper-only criterion is n/a'd in a document folio, under its OWN outcome [5769.02ms]\n\nThe same test, by name, **passes in isolation** — both with the branch's changes appl",
      "file": "beans/defs/folio-assistant-9v4m--test-interference-a-profile-gate-test-fails-in-the.md"
    },
    {
      "id": "folio-assistant-9v5a",
      "title": "QA BACKFILL: per-content-block adversarial QA over the existing corpus, plus the methodology research it rests on",
      "status": "completed",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T22:27:08Z",
      "updatedAt": "2026-10-10T08:00:00Z",
      "preview": "Owner, 2026-10-02: *\"Split into TWO epics: gates, and QA backfill\"*. This is the\nsecond half. `nok9` keeps the merge-GATE half.\n\n## Why the cut is here and not elsewhere\n\n`nok9` as written mixed two things with different cadences:\n\n- **Gates** block a merge. They are a merge-pipeline change, they run on a diff,\n  and they are judged per PR. `nok9`'s children A, B, C and E are these.\n- **Backfill**",
      "file": "beans/defs/folio-assistant-9v5a--qa-backfill-per-content-block-adversarial-qa-over.md"
    },
    {
      "id": "folio-assistant-9wb0",
      "title": "PUBLICATION IS A STATE, NOT A BOOLEAN: every asset carries id + version and sits in draft; formal publication is an undefined process",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:29:44Z",
      "updatedAt": "2026-10-09T16:40:00Z",
      "preview": "Owner ruling, 2026-09-23: *\"all assets get a version and are in 'draft' publication. formal publication process needs to be deinfed/neeeds tools/depends on instance\"*.\n\nCorrects §3.1 as `snjh` shipped it. Not a gap in that work — a different model.\n\n## What §3.1 got wrong, precisely\n\nIt models `publishable?: boolean` with three states, and REFUSES id and version unless `publishable: true`:\n\n    re",
      "file": "beans/defs/folio-assistant-9wb0--publication-is-a-state-not-a-boolean-every-asset-c.md"
    },
    {
      "id": "folio-assistant-9x01",
      "title": "available_locales claims a locale with no translated page behind it, and nothing checks the two against each other",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T14:26:44Z",
      "updatedAt": "2026-09-26T20:14:52Z",
      "preview": "Found while fixing an e2e fixture (bean `6bhf`, PR #1408), not while looking for\nit — so the measurement below is narrow on purpose and the sweep is part of the\nwork.\n\n## The contradiction\n\n`cat-harness/docs/process/crdm-methodology.md` declares\n\n    available_locales: [\"en\",\"fr\"]\n\nand there is **no `cat-harness/docs/fr/crdm-methodology.md`**. It is also absent\nfrom `docs/_data/translations.json`,",
      "file": "beans/defs/folio-assistant-9x01--available-locales-claims-a-locale-with-no-translat.md"
    },
    {
      "id": "folio-assistant-9x9r",
      "title": "check:head-has-run passes on ANY run naming the sha — two unrelated push runs satisfy it while the gate workflow never fired",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T19:38:43Z",
      "updatedAt": "2026-09-25T18:14:49Z",
      "preview": "Measured 2026-09-24, on PR #1309's head. The script printed a ✓, and the gate\nset had never fired.\n\n## The pass condition is strictly weaker than the defect it detects\n\n`runsForHead` asks the Actions API for every run whose `head_sha` is this\ncommit, and line 191 decides:\n\n```ts\nreturn runs.length > 0 ? { state: \"has-run\", runs } : { state: \"no-run\" };\n```\n\nAny run. Any workflow, any event. The he",
      "file": "beans/defs/folio-assistant-9x9r--checkhead-has-run-passes-on-any-run-naming-the-sha.md"
    },
    {
      "id": "folio-assistant-9y9j",
      "title": "JSON-LD VOICE: the rules every emitted JSON-LD document is written and reviewed against, cited to the held W3C texts",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-scfh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T16:24:38Z",
      "updatedAt": "2026-10-01T17:29:04Z",
      "preview": "Owner, 2026-10-01: 'make sure that these issues are part of the one voice for jsonld'; then chose option 1 — a new voice, with 'jsonld' added as a voice target, owned by cat-harness, each rule cited (check:voices enforces citations).\n\nRules (from jcet and the PROV measurement, each to be cited verbatim to a held source):\n1. object properties are links (@type @id), never literals — measured: 100 ac",
      "file": "beans/defs/folio-assistant-9y9j--json-ld-voice-the-rules-every-emitted-json-ld-docu.md"
    },
    {
      "id": "folio-assistant-9zok",
      "title": "bun run cat gates can NEVER pass translation:catalogue:check — it scrapes a command whose $base is a shell variable defined on an earlier line of the workflow",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T18:56:04Z",
      "updatedAt": "2026-10-07T04:51:03Z",
      "preview": "## The defect\n\n`AGENTS.md` makes `bun run cat gates` the STRICT pre-push command, and its whole\nargument for existing is that `gates.ts` derives its list from\n`.github/workflows/code-quality-gates.yml` so it *\"cannot drift from what CI\nactually runs\"*. For one gate the derivation is lossy in a way that makes the\ngate unpassable locally, for everyone, always.\n\n`code-quality-gates.yml:1341-1348` is ",
      "file": "beans/defs/folio-assistant-9zok--bun-run-gates-can-never-pass-translationcataloguec.md"
    },
    {
      "id": "folio-assistant-a0s3",
      "title": "B8 (#1168): string-to-reference sweep — typed refs on ~25 bare-string fields; delete SkillDefinition.roles and front-matter package:",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:12:05Z",
      "updatedAt": "2026-09-30T10:42:13Z",
      "preview": "Mechanical sweep from the string-to-reference analysis (#1168 comment 5803006038). SkillNameSchema / ProcessIdSchema / TaskRefSchema / BeanIdSchema / BLOCK_KINDS enum / ThemeRefSchema / KgRefSchema on the listed fields; kg-export ActorDef.roles and role toJsonLd skills as @id links; resolve memory roles/agents. Delete SkillDefinition.roles (inverse of RoleDef.skills, 0 instances) and skill front-m",
      "file": "beans/defs/folio-assistant-a0s3--b8-1168-string-to-reference-sweep-typed-refs-on-25.md"
    },
    {
      "id": "folio-assistant-a13a",
      "title": "TERMINOLOGY / identification: say what a term IS, per asset kind — and what is not",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5yhm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T04:51:47Z",
      "updatedAt": "2026-09-29T22:01:05Z",
      "preview": "**SCRAPPED 2026-09-29 — superseded on `main` before this bean was ever\ncommitted.** Not deleted: a scrapped bean stops the next agent re-entering a\ndead end, and this one would read as an obvious gap to anybody who had not\nchecked.\n\nWritten 2026-09-25 to ask \"what IS a term, per asset kind, and what is not\",\non the reading that `glossary-page.ts`'s rule was implicit. It is not implicit\nany more. `",
      "file": "beans/defs/folio-assistant-a13a--terminology-identification-say-what-a-term-is-per.md"
    },
    {
      "id": "folio-assistant-a1ku",
      "title": "Generate a paper's leanblueprint layout (blueprint/src) from its manifest, and wire it into the folio blueprint.yml",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T13:39:21Z",
      "updatedAt": "2026-09-30T15:42:28Z",
      "preview": "Owner 2026-09-30: after #1591, 'fix the platform (1), then the blueprint wiring (3)'. Parent work: yxob / 6dvy (#1492).\n\n## Why\nThe folio blueprint.yml runs docgen-action with blueprint: true, which needs <paper>/lean/blueprint/src/ (web.tex, print.tex, content.tex, macros/, plastex.cfg). Nothing generates it: blueprint-export.ts writes content only, and the one blueprint/src in the tree (cat-harn",
      "file": "beans/defs/folio-assistant-a1ku--generate-a-papers-leanblueprint-layout-blueprintsr.md"
    },
    {
      "id": "folio-assistant-a4of",
      "title": "S1 bookkeeping truth: close merged beans, reconcile fnx4 boxes, fold w2gr 3b into 70lx",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:14:33Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "G2+G3 of the arc plan.\n\n## Done when\n- [x] y5si, ybp4 completed with PR evidence (#1599, #1687)\n- [x] ejye, 7dek completed (#1758, #1760); ~~ybwt~~ carried on its own bean, see the 2026-10-06 summary. Its one open box is code work, not bookkeeping\n- [x] fnx4 boxes ticked for slices merged in #1721\n- [x] w2gr step 3b list recorded on 70lx so the move happens once\n\n\n## The sweep, measured 2026-10-03",
      "file": "beans/defs/folio-assistant-a4of--s1-bookkeeping-truth-close-merged-beans-reconcile.md"
    },
    {
      "id": "folio-assistant-a7t8",
      "title": "ingest-document's 'run the remaining arms' line double-nests the pdf-images output",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T20:13:04Z",
      "updatedAt": "2026-09-30T00:28:36Z",
      "preview": "Hit while ingesting the SWOT paper, 2026-09-22.\n\n## What happened\n\n`bun run cat ingest <pdf>` stages, then prints:\n\n> Next: run the remaining arms with `-o ingest-staging/<slug>`, then: ... --promote\n\nFollowing that literally:\n\n```\npython3 cat-harness/scripts/pdf-images.py -o cat-harness/ingest-staging/gurel-tat-2017-swot-analysis <pdf>\n  wrote cat-harness/ingest-staging/gurel-tat-2017-swot-analys",
      "file": "beans/defs/folio-assistant-a7t8--ingest-documents-run-the-remaining-arms-line-doubl.md"
    },
    {
      "id": "folio-assistant-a8wy",
      "title": "VECTOR FIGURE ARM: extract positioned labels from vector-only figures — 69 of 87 caption pages",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2yyh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:04:22Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "Sibling of `m4xy` under the same epic, and the second of its two open arms, and the narrow one: **the labels, and\nnothing above them.** `pdf-images.py` recovers the raster layer; a WHO\nconceptual figure is drawn in path operators and text, so there is no image\nobject and that arm places nothing. `9789240120747-eng` declares six captioned\nfigures and places zero images, and `check-l1-complete` repo",
      "file": "beans/defs/folio-assistant-a8wy--vector-figure-arm-extract-positioned-labels-from-v.md"
    },
    {
      "id": "folio-assistant-a98i",
      "title": "translate-kg-viewer --extract refreshes every .pot but never syncs the .po stubs",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:11:21Z",
      "updatedAt": "2026-10-07T05:09:00Z",
      "preview": "MEASURED 2026-09-19 while adding one string to `scripts/kg-viewer-strings.ts`.\n\n`bun run cat translate-kg-viewer --extract` rewrites all five `translations/<loc>/kg-viewer.pot` files and refreshes each TranslationNode manifest. It does **not** touch the `.po` stubs beside them. So a new msgid leaves every catalogue one entry short, and nothing in the tool says so — it prints `po: 0/39, manifest re",
      "file": "beans/defs/folio-assistant-a98i--translate-kg-viewer-extract-refreshes-every-pot-bu.md"
    },
    {
      "id": "folio-assistant-a9tx",
      "title": "IG PUBLISHER FORK: requirements for an agent working a local experimental fork, and what the AST must carry",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [
        "folio-assistant-h3tx"
      ],
      "blockedBy": [],
      "createdAt": "2026-09-22T19:07:23Z",
      "updatedAt": "2026-10-23T20:40:00Z",
      "preview": "> **Taking this over? Start at §\"HANDOVER — start here (2026-10-01)\" at the end of this bean.** Earlier sections are history; the order list in §\"Prepared for the agent with network\" is superseded.\n\nRequirements for an agent working a **local experimental fork** of the IG\nPublisher, and what the AST it emits must carry.\n\nScope this round: **requirements only, no Java.**\n\n## Why a fork rather than ",
      "file": "beans/defs/folio-assistant-a9tx--ig-publisher-fork-requirements-for-an-agent-workin.md"
    },
    {
      "id": "folio-assistant-aazi",
      "title": "WORKFLOW-STATEMGMT RENDERING: a status dashboard atop the root README, and beans/todos mapped to their BPMNs",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T17:11:46Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Owner, 2026-09-20, verbatim:\n\n> if a harness is working/active KG repo (not static read only)repo root READM\n> should show at top a  current status of all intiated/partially iniated/etc.\n> quick dashboard (#todos, #beans) for each initiated harness.  todo on render\n> of active KG, beans and todos mapped to thier bpamns rendered nicely as well\n> for project managemtn / visualizaitons.   available a",
      "file": "beans/defs/folio-assistant-aazi--workflow-statemgmt-rendering-a-status-dashboard-at.md"
    },
    {
      "id": "folio-assistant-abmq",
      "title": "MERGE GATE (c): RED FLAG taxonomy, verdict sidecar shape, and the recorded override path",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:29:16Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Child (c) of the merge-gate epic. Design: `cat-harness/docs/proposals/merge-gate-2026-10-02.md` §6.\n\nA RED FLAG is a finding the reviewer asserts **would block the merge** (amended 2026-10-03; it asserted \"blocks the merge\" until the warn-only ruling below). It reuses the two existing axes in `schemas/qa-review.ts`: `FindingSeverity` (critical | major | minor: what kind of breakage) and `FindingWe",
      "file": "beans/defs/folio-assistant-abmq--merge-gate-c-red-flag-taxonomy-verdict-sidecar-sha.md"
    },
    {
      "id": "folio-assistant-afu3",
      "title": "SEARCH PINNED: the magnifier stays on screen at every scroll position (#1732)",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T00:56:04Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "Owner, 2026-10-01: the search magnifier should ALWAYS be on screen, mid-page included. Issue #1732, follow-up to #1715/#1720. Branch claude/search-pinned.\n\n## Completed on landed evidence\n\n- Implementation landed on `main` in PR #1732 (commit `49828a5686a3`): search magnifier pinned to stay visible on screen across all scroll positions.\n- Verified on `origin/main`.",
      "file": "beans/defs/folio-assistant-afu3--search-pinned-the-magnifier-stays-on-screen-at-eve.md"
    },
    {
      "id": "folio-assistant-ahab",
      "title": "Translated pages carry 225 unresolved links — 43 distinct, five near-copies each, and the English sources do not carry them",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T10:40:05Z",
      "updatedAt": "2026-09-26T17:29:28Z",
      "preview": "Found 2026-09-26 while re-deriving `hloc`'s premise. `hloc` records the `docs/`\nunresolved-link count as **120** after `mi97` took it from 246. Re-measured\ntoday with `scanSubgraphs()` it is **340** — higher than the pre-`mi97` figure.\n\nThat is not an `mi97` regression. It is a different population, and it splits:\n\n| source | links |\n|---|---|\n| translated pages — `docs/{ar,es,fr,ru,zh}/` | **225*",
      "file": "beans/defs/folio-assistant-ahab--translated-pages-carry-225-unresolved-links-43-dis.md"
    },
    {
      "id": "folio-assistant-ahvw",
      "title": "PROCESS: how an agent decides what it is doing, and what governs each step",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:43:44Z",
      "updatedAt": "2026-10-20T09:52:00Z",
      "preview": "How an agent works out what it is doing, and what governs the step it is on.\n\n`hylg` makes the workflow interpreter descend into call activities, so a\nsubprocess gives increasing context rather than a flat step name. `3190` makes\ncoding conventions a process-SCOPED context kind, so a rule applies where it\nbelongs instead of everywhere.\n\n`xfoh` and `vjbl` are the measurement half: CRDM detection ha",
      "file": "beans/defs/folio-assistant-ahvw--process-how-an-agent-decides-what-it-is-doing-and.md"
    },
    {
      "id": "folio-assistant-ajx9",
      "title": "WHO IG CHROME: the blue bar, DRAFT watermark and publish box, ingested from the template chain rather than transcribed",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T19:56:03Z",
      "updatedAt": "2026-09-26T03:54:14Z",
      "preview": "Owner, 2026-09-23, chose \"All three, fetch HL7's base template\" and \"smart-base, inherited\".\n\nFinishes what 0818 left open: the WHO visual styling, a different question from the menu it shipped.\n\n## The template chain is three layers, and the three items do not come from one of them\n\n    smart-trust local-template  ->  who.template.root 0.5.0  ->  fhir.base.template 1.0.0\n\n- BLUE BAR is WHO's: --n",
      "file": "beans/defs/folio-assistant-ajx9--who-ig-chrome-the-blue-bar-draft-watermark-and-pub.md"
    },
    {
      "id": "folio-assistant-akjg",
      "title": "DOCS-POPULATED HAS NO SUBJECT TEST: the gate passes smart-trust on docs/category/Other.md — length and authorship have teeth, 06e3 §4(b) processes/roles/tasks half was never built",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T13:50:38Z",
      "updatedAt": "2026-10-03T14:22:22Z",
      "preview": "`check:docs-populated` (`scripts/check-docs-populated.ts`, 2026-10-02, gated at\n`code-quality-gates.yml:1846`) implements half of `06e3` §4(b) and reports the\nother half as if it were not asked.\n\nOwner, `06e3` §4(b), both halves in one sentence:\n\n> does the page reference the harness's **processes, roles and tasks**, and does\n> it say something about them that the index does not?\n\nBuilt: **length*",
      "file": "beans/defs/folio-assistant-akjg--docs-populated-has-no-subject-test-the-gate-passes.md"
    },
    {
      "id": "folio-assistant-amom",
      "title": "MODE: test/swarm — a stack of models over shared or independent work queues",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:55:37Z",
      "updatedAt": "2026-09-19T08:55:37Z",
      "preview": "From [#363](https://github.com/litlfred/folio-assistant/issues/363): \"test/swarm\nmode: may have a stack of models, to queue work on (a cross-model swarm mode).\nshared or indepedent work queues.\"\n\n## What exists\n\n`skills/sdlc/sdlc-core/swarm-management.md` and `docs/swarm-management.md`. The rule\nrecorded in `AGENTS.md` is that a swarm is **asked for every time, per swarm,\nwith agent count, model l",
      "file": "beans/defs/folio-assistant-amom--mode-testswarm-a-stack-of-models-over-shared-or-in.md"
    },
    {
      "id": "folio-assistant-ansc",
      "title": "LSI: Latent Semantic Indexing methodology, KG index tool, need-an-LSI audit, and epic filing (#1482)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T17:34:06Z",
      "updatedAt": "2026-09-29T23:50:43Z",
      "preview": "Issue #1482. Methodology node, applicability analysis, options, prototype on three WHO IRIS docs, QA audit for needing an LSI kg, then epic filing of beans/PRs/branches. Branch claude/brave-hawking-511rrx.\n\n\n## Todo\n- [x] Methodology node methodologies/lsi.md (sources located, unreachable: egress 403)\n- [x] Engine content/pipeline/lsi.ts (log-entropy + seeded randomized SVD)\n- [x] CLI scripts/lsi.",
      "file": "beans/defs/folio-assistant-ansc--lsi-latent-semantic-indexing-methodology-kg-index.md"
    },
    {
      "id": "folio-assistant-apcg",
      "title": "Placement PR6: library/ingestion split — basic flow stays in the harness, l1-document-ingestion goes to core",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-63wl",
        "folio-assistant-b8de",
        "folio-assistant-tlat"
      ],
      "createdAt": "2026-10-01T06:58:01Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "Placement proposal §2 (owner rulings 2026-09-30 §6; process: review → resolve issues → staged PRs). Parent of PR0/PR1 is `9umr`; PR2–PR9 sit under the separation epic because D4 (owner, 2026-10-01, option 3) interleaves them with the split stages into one ordered sequence. Every PR: references move with the subject; generated trees regenerated, never hand-edited; `beans/**` not rewritten; kg-qa si",
      "file": "beans/defs/folio-assistant-apcg--placement-pr6-libraryingestion-split-basic-flow-st.md"
    },
    {
      "id": "folio-assistant-apui",
      "title": "INGEST: one pipeline entry point — uploads/ to library/ through a single documented path",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-16T06:43:50Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "## What\n\n`uploads/` and `library/` are two stages of ONE pipeline, but there is no single\nentry point that takes a file across. Today the move is done by\n`scripts/migrate-uploads-to-library.py` plus whatever the ingesting agent\nremembers to run.\n\n## Why it matters more than it looks\n\n**The corpus-grep checklist searches `library/` only.** Anything still in\n`uploads/` is invisible to every \"has the",
      "file": "beans/defs/folio-assistant-apui--ingest-one-pipeline-entry-point-uploads-to-library.md"
    },
    {
      "id": "folio-assistant-ar1s",
      "title": "Root de-pollution before the repo split: tooling configs into cat-harness-tools; root keeps only what git, agents, licences and instantiation require",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:19:05Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Owner ruling 2026-10-06 (session_012qoycyCSGidZqW245vXhze): 'this needs to be addressed before repo split'. Most root files are monorepo tooling, not the platform.\n\n## Target root\npackage.json + bun.lock (minimal workspace stub — bun needs both at the workspace root), .gitignore/.gitattributes/.gitmodules, AGENTS.md/CLAUDE.md/GEMINI.md, .mcp.json, .beans.yml, LICENSE/NOTICE/LICENSE-CONTENT.md/THIR",
      "file": "beans/defs/folio-assistant-ar1s--root-de-pollution-before-the-repo-split-tooling-co.md"
    },
    {
      "id": "folio-assistant-atlf",
      "title": "BEANS PAGE LIGHT MODE: the selected type chip rendered black on black — it read an undefined --fa-wp-bg",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:45:39Z",
      "updatedAt": "2026-10-02T20:43:21Z",
      "preview": "Owner screenshot 2026-10-02 of https://litlfred.github.io/folio-assistant/beans/ with type: epic selected: the active chip is a blank black pill in light mode.\n\n## Cause\nwork-plan.css .fa-workplan-type-btn.is-active set color: var(--fa-wp-bg, #0d0d0d). Nothing defines --fa-wp-bg, so the fallback #0d0d0d painted on the light scheme's ink #0b0b0b.\n\n## Done when\n- [x] use --fa-wp-surface (defined in ",
      "file": "beans/defs/folio-assistant-atlf--beans-page-light-mode-the-selected-type-chip-rende.md"
    },
    {
      "id": "folio-assistant-ax6r",
      "title": "Workflow index page is hand-maintained: generate every-workflow-in-the-repo from the process KG, strip drift; aggregate across KGs",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T20:42:54Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "Owner, 2026-10-02: \"why is the page hand maintained? cat-harness/content/docs/publication-workflow/every-workflow-in-the-repo.md — it should be dynamic loaded from json(ld) KG. the page itself is also a mess. lots of content drift, editorializing, PM status updates and such … once separated, this will need to be aggregated across KGs\".\n\nToday the page is a hand-written table: every new BPMN needs ",
      "file": "beans/defs/folio-assistant-ax6r--workflow-index-page-is-hand-maintained-generate-ev.md"
    },
    {
      "id": "folio-assistant-ay3x",
      "title": "VECTOR FIGURE ARM: render vector drawings, and the role threshold nobody may pick from this corpus",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2yyh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T07:19:35Z",
      "updatedAt": "2026-10-03T17:46:33Z",
      "preview": "Issue: https://github.com/litlfred/folio-assistant/issues/877 — the deferred\nhalf of the owner's 2026-09-23 ruling on `m4xy`: **captions now, arm later.**\nThe caption half shipped in #1012.\n\n## What is deferred, and what is NOT\n\n**Deferred:** an arm that renders vector drawing groups to raster so a reader\ngets the figure itself rather than a description of it.\n\n**Not deferred, and already done:** ",
      "file": "beans/defs/folio-assistant-ay3x--vector-figure-arm-render-vector-drawings-and-the-r.md"
    },
    {
      "id": "folio-assistant-b5f0",
      "title": "INSTANTIATION: what it means to instantiate a harness — the config file, the slot, and the process that cannot be started",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T15:23:54Z",
      "updatedAt": "2026-10-21T19:38:00Z",
      "preview": "Owner, 2026-09-20, across three messages:\n\n> \"migration to cat-harness.config.json as an instance declaration in root.\n> also need bootstrap.config.json to declare its instance data upon\n> initialization. this should be part of ALL harness initializations. (not\n> dependency, but initiation = create UI/start workflow beans todos, install\n> directories etc. to a working state). this is a 'Working KG",
      "file": "beans/defs/folio-assistant-b5f0--instantiation-what-it-means-to-instantiate-a-harne.md"
    },
    {
      "id": "folio-assistant-b7wh",
      "title": "INGEST arXiv:2607.14456v1 (specialist BPMN-compiled agents) as evidence + a skill on the processes subgraph",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:25:37Z",
      "updatedAt": "2026-09-24T00:15:16Z",
      "preview": "Owner, 2026-09-23: *\"ingest into library for use as evidence and skills as\nsubgraph on processes in cat-harness\"*.\n\nBorman, Wandabwa, Yu, Kannangara, Liu, Leontjeva and Ng, **\"Beyond Generalist\nLLMs: Specialist Agentic Systems for Structured Code Workflow Execution\"**,\nCommonwealth Bank of Australia. Workshop paper at SCALE, ICML 2026 (PMLR 306);\narXiv:2607.14456v1 [cs.SE], 16 July 2026. Open acce",
      "file": "beans/defs/folio-assistant-b7wh--ingest-arxiv260714456v1-specialist-bpmn-compiled-a.md"
    },
    {
      "id": "folio-assistant-b8de",
      "title": "Merge refused: #1898 owed CI not green on its head",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [
        "folio-assistant-apcg"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:43Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "PR #1898, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_HeadNotGreen: conflict clean, own CI red.\n- Queue entry (`beans/queue/litlfred--folio-assistant--1898.json`, status `blocked`): The vqlp HOLD IS LIFTED. The owner",
      "file": "beans/defs/folio-assistant-b8de--merge-refused-1898-owed-ci-not-green-on-its-head.md"
    },
    {
      "id": "folio-assistant-b8ip",
      "title": "smart-base binary artefacts: 907 MB of preview copies on gh-pages, release carries only package.tgz, downloads page promises 19 assets",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T06:29:45Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "Owner, 2026-10-02: *\"see what happens on smart-base with binary artefacts on release. add to skills/tools\"*.\n\n**Measured** with `ig-binary-audit` on `litlfred/smart-base` `gh-pages` `64ed896d`:\n- **Size:** 5,029.7 MB in all, of which 966.5 MB is Publisher binaries.\n- **Previews:** 907.1 MB of those binaries (94 %) sit in 29 `branches/` previews.\n- **Largest single file:** `full-ig.zip` takes 644.7",
      "file": "beans/defs/folio-assistant-b8ip--smart-base-binary-artefacts-907-mb-of-preview-copi.md"
    },
    {
      "id": "folio-assistant-b91x",
      "title": "Decide: keep beans (hmans) or move to Beads (gastownhall/beads)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-8jt6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:03:47Z",
      "updatedAt": "2026-09-23T22:32:13Z",
      "preview": "Raised 2026-09-23 while writing cat-harness/docs/prior-art.md (bean vq8o). hmans/beans has had no commit since 2026-04-06 (v0.4.2, pre-1.0); Beads is very active (v1.3.0, atomic claim, leases) but stores in Dolt and has had a retracted release and data-loss/merge issues after its SQLite->Dolt migration (gastownhall/beads #2251, #4259, #4356). No importer between the two exists. Owner decision; not",
      "file": "beans/defs/folio-assistant-b91x--decide-keep-beans-hmans-or-move-to-beads-gastownha.md"
    },
    {
      "id": "folio-assistant-b94c",
      "title": "Cross-platform support: detect Linux-specific assumptions and provide a Windows path",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T16:15:47Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "Issue [#735](https://github.com/litlfred/folio-assistant/issues/735). CRDM\nPhase 1 (needs assessment) — requester @costateixeira, sign-off @litlfred.\n\n## What\n\nA stated cross-platform policy, a mechanical check that detects Linux-specific\nassumptions across scripts, tooling, docs and content pipelines, and a Windows\npath wherever the check fires. Where Windows cannot be supported, a **declared**\ne",
      "file": "beans/defs/folio-assistant-b94c--cross-platform-support-detect-linux-specific-assum.md"
    },
    {
      "id": "folio-assistant-b963",
      "title": "COLD START: the entry documents named scripts/ for the whole split, and nothing checks a command path",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T18:05:19Z",
      "updatedAt": "2026-10-10T06:15:00Z",
      "preview": "## The register — the shapes have NAMES, not numbers\n\n*2026-09-20T23:1xZ, on the owner's instruction (\"2 resolve\").*\n\nThe ordinals collided: this bean numbered **shapes** in discovery order, while\n`7iog` called itself \"a fourth class beyond `b963`'s three\" — numbering\nsomething else entirely, the **readers** `check:command-paths` had at the\ntime. Two incompatible schemes, one word. And by the time",
      "file": "beans/defs/folio-assistant-b963--cold-start-the-entry-documents-named-scripts-for-t.md"
    },
    {
      "id": "folio-assistant-ba9e",
      "title": "Generated README subdirectory counts: 207 volatile integers across 54 READMEs — move them to the _data layer",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T22:34:28Z",
      "updatedAt": "2026-10-04T12:13:31Z",
      "preview": "Child of `y7b3` part 2, which the owner left as \"decide later\" on 2026-09-30\nwith three options on the table (band the count, drop it, keep it exact).\n**Owner chose a fourth on 2026-10-02: pull the count dynamically from the KG\nJSON-LD rather than freeze it into committed markdown.**\n\n## Why that is the right answer and the other three are not\n\nThe repository had already reached this conclusion fr",
      "file": "beans/defs/folio-assistant-ba9e--generated-readme-subdirectory-counts-207-volatile.md"
    },
    {
      "id": "folio-assistant-bamf",
      "title": "fhir-harness declares and populates FHIR IG Jekyll data (site.data.fhir.*) for the just-the-docs pipeline",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:16:18Z",
      "updatedAt": "2026-09-30T20:09:40Z",
      "preview": "Owner 2026-09-30: IG pages use Liquid site.data.fhir.* (IG Publisher convention, e.g. {{site.data.fhir.ig.version}}). Those should be available in the just-the-docs pipeline, with fhir-harness RESPONSIBLE for declaring and populating the FHIR metadata Jekyll data.\n\n## Measured 2026-09-30 (issue #1564 analysis)\n- Nothing in folio-assistant resolves site.data.fhir.*: only the IG Publisher does. dak-",
      "file": "beans/defs/folio-assistant-bamf--fhir-harness-declares-and-populates-fhir-ig-jekyll.md"
    },
    {
      "id": "folio-assistant-bbv3",
      "title": "Page bytes: the fa-translation-index island is fetched once, not inlined 2356 times (22.34 MB); kg-render.js carries R4's two client-side obligations",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T17:50:36Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "## What and why\n\n`#fa-translation-index` was a `<script type=\"application/json\">` island in the `<head>`\nof every page. **Measured on a local build of this repo's docs site, 2026-10-02: 2356\npages carried it, 9482 B each, 22.34 MB in total, ONE distinct payload** (sha1 over the\npayloads). It is now published once at `assets/harness/site.json` and fetched.\n\n`folio-board-requirements.md` §R4 forbade",
      "file": "beans/defs/folio-assistant-bbv3--page-bytes-the-fa-translation-index-island-is-fetc.md"
    },
    {
      "id": "folio-assistant-bbza",
      "title": "S5-b: tool implementations land on their layer — folio-specific to core, maths to sci (23 rows)",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:16:24Z",
      "updatedAt": "2026-10-16T06:55:00Z",
      "preview": "Story S5 (txue), with 70lx. Rows: cat-harness/docs/proposals/placement-audit-2026-10-01.json (PR #1778) — pr '(tool placement; S5 70lx carries implementations)': cat-harness -> sci 18, -> core 3, -> fhir-harness 1; smart-base -> fhir-harness 1. MCP rulings: generic MCP skills -> cat-harness/skills/tools/mcp/, folio-specific MCP -> folio-assistant-core/skills/tools/mcp/ and folio-assistant-core/too",
      "file": "beans/defs/folio-assistant-bbza--s5-b-tool-implementations-land-on-their-layer-foli.md"
    },
    {
      "id": "folio-assistant-beaf",
      "title": "Post-70lx re-pin: matched cat-harness + tools pins and root runner paths",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T05:48:27Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "cat-harness e29c6429 (70lx stage 1a) moved scripts/ and the rest of its code to cat-harness-tools (d8d42ab). The index on #2518 (head 90148ed) still pins the pre-move pair, and its root `cat` names cat-harness/scripts/run-script.ts, so no checkout can run cat-harness main. Related: folio-assistant-txue (S5 code out of cat-harness).\n\nStacked on #2518 as branch claude/post-70lx-repin (#2518 is drive",
      "file": "beans/defs/folio-assistant-beaf--post-70lx-re-pin-matched-cat-harness-tools-pins-an.md"
    },
    {
      "id": "folio-assistant-bejf",
      "title": "QA panel result links: one helper, addressed on qa-reports by the deployed commit's key",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T18:02:27Z",
      "updatedAt": "2026-10-06T05:23:39Z",
      "preview": "Issue #2217 (arc #1763). docs-ui.js qaBuildPanel links every QA result as hard-coded blob/main/ + an INSTANCE-relative path: wrong path today, wrong branch by declaration (every qa directory declares storage). One helper, decided per directory by the store's declaration; gen-docs-pages stamps sidecarLinks; docs-ui renders them; check:qa-result-links gates it.\n\n## Done when\n- [x] helper + unit test",
      "file": "beans/defs/folio-assistant-bejf--qa-panel-result-links-one-helper-addressed-on-qa-r.md"
    },
    {
      "id": "folio-assistant-bf5l",
      "title": "WRONG DIRECTION on main: cat-harness/schemas/intake.ts imports folio-assistant-core, and two of three checks cannot see it",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T04:01:42Z",
      "updatedAt": "2026-09-26T13:50:15Z",
      "preview": "`cat-harness/schemas/intake.ts:28`:\n\n```ts\nimport { ProvenanceSchema } from \"../../folio-assistant-core/schemas/materialization.js\";\n```\n\n`cat-harness` declares `needs: ['bootstrap']`. `folio-assistant-core` declares\n`needs: ['cat-harness']`. So the code adds a **harness → core** edge against a\ndeclared **core → harness** dependency. The declarations alone have no cycle;\nthe declarations plus the ",
      "file": "beans/defs/folio-assistant-bf5l--wrong-direction-on-main-cat-harnessschemasintakets.md"
    },
    {
      "id": "folio-assistant-bgrz",
      "title": "translation-status visualiser: 6 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-10-09T12:36:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/translation-status/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. [x] **Horizontal scroll at phone width.** At 390 px the document is 509 px wide (`scrollWidth` 509). The *fuzzy* and *untranslated* columns start off",
      "file": "beans/defs/folio-assistant-bgrz--translation-status-visualiser-6-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-bh4q",
      "title": "Content JSON-LD: stop relying on @base from the remote context (JSON-LD 1.1 §4.1.3)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-scfh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T18:30:16Z",
      "updatedAt": "2026-10-02T13:36:37Z",
      "preview": "## Why\nMeasured 2026-10-01 (bean jcet, item 2): emitted content .jsonld reference `https://litlfred.github.io/folio-assistant/ns/content/v1.jsonld` by URL, and relative @ids resolve to `https://litlfred.github.io/folio/…` only because jsonld.js 8.3.3 applies `@base` from a remote context. JSON-LD 1.1 §4.1.3 (held: w3c-2020-json-ld-1-1 sec-033-413-base-iri) says `@base` in a remote context is ignor",
      "file": "beans/defs/folio-assistant-bh4q--content-json-ld-stop-relying-on-base-from-the-remo.md"
    },
    {
      "id": "folio-assistant-biz4",
      "title": "An untracked _kg/ at the container root silently inflates local detangle counts — 229 becomes 1443, and the gate reads as a code defect",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-xd1g"
      ],
      "createdAt": "2026-09-26T11:26:16Z",
      "updatedAt": "2026-09-27T09:37:00Z",
      "preview": "Found 2026-09-26 while establishing whether `kg:detangle:check` was `hloc`'s\nfailure or `main`'s. It was neither — it was the container.\n\n## The measurement\n\n`bun run cat gates` in this checkout rewrote\n`cat-harness/test/results/detangle/cat-harness/schemas.detangle.json`:\n\n```\n-  \"size\": 229,       +  \"size\": 1443,\n-  \"internal\": 125,   +  \"internal\": 709,\n-  \"cohesion\": 0.82,  +  \"cohesion\": 0.9",
      "file": "beans/defs/folio-assistant-biz4--an-untracked-kg-at-the-container-root-silently-inf.md"
    },
    {
      "id": "folio-assistant-bjzs",
      "title": "PER-INSTANCE GATES: kg:audit, render:bpmn and check:workflow-refs run at the root only, so 15 nested instances are counted and none is audited",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-d308",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T04:14:07Z",
      "updatedAt": "2026-10-09T20:12:00Z",
      "preview": "Split out of `sa8y` 2026-09-26. It was `sa8y`'s last genuinely open item and the\nonly one of its four; the other three are done and `sa8y` closed on the wording\nfix that is its actual subject. It gets its own bean because it is a different\nsubject — `sa8y` is about a finding's **wording**, this is about a gate's\n**range** — and because a wording bean carrying an infrastructure item is how\n`sa8y` c",
      "file": "beans/defs/folio-assistant-bjzs--per-instance-gates-kgaudit-renderbpmn-and-checkwor.md"
    },
    {
      "id": "folio-assistant-bkea",
      "title": "VALIDATOR: cat-openapi-config/v1 is a declared family with no resolvable validator — check:kind-validators red",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T17:22:58Z",
      "updatedAt": "2026-10-09T21:41:00Z",
      "preview": "**Claimed** 2026-10-09 by Antigravity session (branch `claude/bkea-openapi-config-validator`): adding openapi config validator node for `cat-openapi-config/v1`.\n\n\n`check:kind-validators` is red in the composed index checkout (folio-assistant#2518, 2026-10-09): `cat-openapi-config/v1` is a declared `$schema` family with **no resolvable validator**.\n\n## What was measured\n\n    openapi: 1 $schema fami",
      "file": "beans/defs/folio-assistant-bkea--validator-cat-openapi-configv1-is-a-declared-famil.md"
    },
    {
      "id": "folio-assistant-bkje",
      "title": "ACTOR FACTS: a declared actor fact with no consuming process",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T03:12:36Z",
      "updatedAt": "2026-10-09T18:53:30Z",
      "preview": "**The parent of three, from the owner 2026-09-20.** Full argument:\n[`cat-harness/docs/proposals/actor-facts-and-their-processes.md`](../../cat-harness/docs/proposals/actor-facts-and-their-processes.md).\n\nAn actor fact that no process reads is the same defect as a skill bound to\nno role — found four times here, fixed once, and the missing CONSUMER was\nnever added:\n\n| when | where | what |\n|---|---|",
      "file": "beans/defs/folio-assistant-bkje--actor-facts-a-declared-actor-fact-with-no-consumin.md"
    },
    {
      "id": "folio-assistant-blgm",
      "title": "MERGE PIPELINE TOOLS: merge:train, merge:overlap, merge:leftover replace the steward's scratch scripts",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T17:22:14Z",
      "updatedAt": "2026-10-09T20:12:00Z",
      "preview": "Owner approved 2026-10-02. Three commands for the merge steward, replacing scratch scripts train.sh / train2.sh / ch-impact.sh / verify.sh.\n\n- merge:train — build a train branch from a base SHA and members (PR numbers or branches): merge-base.ts --no-regen per member, refuse undeclared conflicts, one regen plus check:l1-complete --write, smart-kg-l1 --entry where stale, kg:audit:all:check; merge o",
      "file": "beans/defs/folio-assistant-blgm--merge-pipeline-tools-mergetrain-mergeoverlap-merge.md"
    },
    {
      "id": "folio-assistant-bnjs",
      "title": "RENDERED IMPACT: a Change Set lists the rendered files it changes — each renderer maps changed inputs to changed outputs through its dependency cone, and review approves against that list",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T07:13:23Z",
      "updatedAt": "2026-10-06T16:54:17Z",
      "preview": "Owner, 2026-10-06 (#971): \"for a Change Set (generalize/apply concept from Ref Arch) and Issue -> create PR with change set. see a list of rendered justthedocs files (fhir IG, whatever) that changed due to the described changeset. use that as part of review process of changeset PR approval. updates skills and processes.\" Then: \"each renderer should be able to give you from list of input changed fi",
      "file": "beans/defs/folio-assistant-bnjs--rendered-impact-a-change-set-lists-the-rendered-fi.md"
    },
    {
      "id": "folio-assistant-bnuy",
      "title": "PUBLISHED-PACKAGES: an unanswerable git reads as 'no packages' — [] where every neighbour refuses",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2upx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T14:54:32Z",
      "updatedAt": "2026-09-30T15:20:46Z",
      "preview": "Found 2026-09-30 while fixing the `maxBuffer` class (this branch, `claude/magical-dijkstra-19yvml`).\n\n`manifests()` in `cat-harness/scripts/check-published-packages.ts`:\n\n```ts\nconst r = spawnSync(\"git\", [\"ls-files\", \"-z\", \"--\", glob], { ... });\nif (r.error !== undefined || r.status !== 0) return [];\n```\n\n**`[]` means \"git looked and there are none\".** It is returned here for\n\"git could not answer",
      "file": "beans/defs/folio-assistant-bnuy--published-packages-an-unanswerable-git-reads-as-no.md"
    },
    {
      "id": "folio-assistant-bo44",
      "title": "WRITER-ONLY GATES: nine check scripts always write their sidecar and cannot fail on its content — the general form of uju6/i2kp",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:00:46Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "Arc `3fva`, proposal §4 item 0.3 and §4.3. The handover (session 01NtKBtj6Yk4kSTVMX3z2Tgy) named this sweep \"the general form\", and nobody has run it.\n\n`uju6` classified 4 of 103 `check:*` scripts. It looked for misspelled writers, not for scripts that write their own sidecar, and so it missed `check:source-licence` (`i2kp`, #1751, draft #1753).\n\nMeasured at `61b1e747`: these writers have no judge",
      "file": "beans/defs/folio-assistant-bo44--writer-only-gates-nine-check-scripts-always-write.md"
    },
    {
      "id": "folio-assistant-bp43",
      "title": "render:bpmn:check is permanently red: two renderers own bootstrap/processes/ and disagree",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T18:57:28Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "`main` has been red on **End-to-end + accessibility (hard)** since at least\n`de4a49ecfbe` (2026-09-30). The failing step is `render:bpmn:check`, and it\ncannot go green on its own.\n\n## What is actually true\n\nThere are **two** `render-bpmn.ts`, and they overlap on three files while\ndisagreeing about their contents.\n\n| renderer | files its `--check` reports | writes the generated-by note |\n|---|---|-",
      "file": "beans/defs/folio-assistant-bp43--renderbpmncheck-is-permanently-red-two-renderers-o.md"
    },
    {
      "id": "folio-assistant-bqrg",
      "title": "stripLeanComments is implemented six times — converge on lean-lexer.ts",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T22:52:21Z",
      "updatedAt": "2026-09-25T16:22:38Z",
      "preview": "## Measured 2026-09-18, on `claude/festive-galileo-s7ibx0`\n\n```\ngrep -rn \"stripLeanComments\" --include=*.ts . | grep -v node_modules\n```\n\nSix independent implementations of a Lean comment stripper:\n\n| file | line | shape |\n|---|---|---|\n| `content/pipeline/lean-lexer.ts` | 23 | **canonical** — extracted this session from `lean-atlas-ingest.ts` |\n| `content/pipeline/qa-checkers-extended.ts` | 2925 ",
      "file": "beans/defs/folio-assistant-bqrg--stripleancomments-is-implemented-six-times-converg.md"
    },
    {
      "id": "folio-assistant-bsay",
      "title": "A declaration that points at nothing, where nothing can fail: three live cases and the gate that reports two of them and exits 0",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T06:13:41Z",
      "updatedAt": "2026-09-27T07:07:40Z",
      "preview": "## The three cases, measured on `8cce91e4eab`\n\n### 1. A banner naming a page that does not exist -- detected by NOTHING\n\n`SAME_BASENAME_DIFFERENT_DOCUMENT[\"kg-navigation\"]` in `gen-skill-docs.ts`\nnamed a twin published as `local-kg-navigation`. That page does not exist and\ncannot: the `local-` prefix comes from `.claude/skills/local/`, which holds\nthree skills and `kg-navigation` is not one. So th",
      "file": "beans/defs/folio-assistant-bsay--a-declaration-that-points-at-nothing-where-nothing.md"
    },
    {
      "id": "folio-assistant-byql",
      "title": "Fold detangle and kg-navigation into cat-harness — views of the harness, not layers of their own",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T17:02:35Z",
      "updatedAt": "2026-09-23T17:02:35Z",
      "preview": "Owner, 2026-09-23, on the 3 undetermined edges j79e's classifier reported (detangle.json and kg-navigation.json declare no `needs`): *\"Make them visualization of an existing harness\"*, then from the options offered chose **Fold into cat-harness**: move both under cat-harness as declared directories and drop their instance files.\n\nThis reverses the 2026-09-20 ruling that kg-navigation be a top-leve",
      "file": "beans/defs/folio-assistant-byql--fold-detangle-and-kg-navigation-into-cat-harness-v.md"
    },
    {
      "id": "folio-assistant-bzre",
      "title": "BPMN ARROW CROSSES THE DIAGRAM: document-ingestion's gap-to-derive edge routes under every task instead of back along the lane",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-p5wm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T20:00:15Z",
      "updatedAt": "2026-09-23T20:41:46Z",
      "preview": "Owner, 2026-09-23, on the rendered `document-ingestion` diagram: **\"bad\narrow\"**, then the rule: **\"keep rectilinear if possible, no overlapping.\"**\n\n## What is wrong\n\nThe `gap` flow from *Record the gap as a bean* back to *Derive content from the\nassets* is drawn as ONE LONG DIAGONAL crossing the full width of the process,\npassing beneath every task in the lane. It is an ordinary loop-back and it",
      "file": "beans/defs/folio-assistant-bzre--bpmn-arrow-crosses-the-diagram-document-ingestions.md"
    },
    {
      "id": "folio-assistant-bzwk",
      "title": "LAYERING: core's block kinds and voices name the 'paper' content adapter, which only folio-assistant-sci declares; without sci BLOCK_KINDS is empty and no voice loads",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-11T05:50:58Z",
      "updatedAt": "2026-10-14T14:00:00Z",
      "preview": "Found 2026-10-11 while moving litlfred/smart-ra onto remote mounts (bean n3h9).\n\n## Measured\n- Mounted closure: smart-base, fhir-harness, folio-assistant-core, cat-harness, cat-harness-tools, bootstrap, bootstrap-tools, each at its main of 2026-10-10. In it, `cat-harness-tools/content/pipeline/qa-sweep.ts folio` stops before sweeping with: `VoiceLoadError: voice technical-writer/voice.json: applie",
      "file": "beans/defs/folio-assistant-bzwk--layering-cores-block-kinds-and-voices-name-the-pap.md"
    },
    {
      "id": "folio-assistant-bzyu",
      "title": "TRANSLATION: the gettext pipeline, translated renders, and their QA",
      "status": "completed",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:43:43Z",
      "updatedAt": "2026-10-21T19:35:00Z",
      "preview": "Everything from a `.pot` template to a rendered page that declares its own\n`lang`, and the QA that says the rendering is right.\n\nThe through-line is that a translation is the SAME KIND of thing as the page it\ntranslates, differing by a field the file declares — never by its directory's\nname. These items are the parts of that claim that are not yet true: diagrams\nwhose labels never reach a catalogu",
      "file": "beans/defs/folio-assistant-bzyu--translation-the-gettext-pipeline-translated-render.md"
    },
    {
      "id": "folio-assistant-c1lo",
      "title": "ACCESSIBILITY: every translated page renders <html lang=\"en-US\"> — the layout ignores the page's lang, and Arabic gets no dir=\"rtl\"",
      "status": "scrapped",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T11:56:26Z",
      "updatedAt": "2026-09-30T12:45:37Z",
      "preview": "Found 2026-09-30 building the site locally (bean c592) and reading the rendered HTML, not the markdown.\n\nMeasured on a preview-site build of this branch: fr/index.html, ar/index.html and ar/glossary/index.html all open with <html lang=\"en-US\">, and no page carries dir=\"rtl\". The markdown declares lang: fr / lang: ar in front matter; the just-the-docs layout never reads it. Pre-existing and site-wi",
      "file": "beans/defs/folio-assistant-c1lo--accessibility-every-translated-page-renders-html-l.md"
    },
    {
      "id": "folio-assistant-c1m4",
      "title": "NAMED SUBGRAPH CONTRACT: one JSON-LD pair per subgraph (index = pointers, hydrated = inline), directory IRIs, build-time framing, central @context; harness as a subgraph",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T20:42:54Z",
      "updatedAt": "2026-10-03T11:30:46Z",
      "preview": "Owner, 2026-10-02: \"check the materialization on remote KGs and their subgraphs. in particular is it easy to pull in all the nodes of a named subgraph (e.g. all of folio-assistant/cat-harness/skills/sdlc)? I think skills/ and skills/sdlc are content (sub)graph nodes. their json(ld) should have all the nodes within dir/subgraph. this should be consistent behavior/expectation. update skills/schemas/",
      "file": "beans/defs/folio-assistant-c1m4--named-subgraph-contract-one-json-ld-pair-per-subgr.md"
    },
    {
      "id": "folio-assistant-c3d7",
      "title": "CLAIM STOMPING: 97 of 100 claims record no holder, so beans:claim reports '✓ claimed' for work a sibling is doing",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:08:51Z",
      "updatedAt": "2026-09-26T03:53:36Z",
      "preview": "Found while acting on the owner's decision (2026-09-25) to *\"add the\nre-read-before-claim rule\"*. **The rule is already implemented** — `35nj` built\n`bun run cat beans:claim`, which reads the default branch first and has an\n`already-claimed` outcome that refuses and names the holder. This bean is the\nhole that makes it vacuous for almost the whole store.\n\n## Measured 2026-09-25, on `origin/main`\n\n",
      "file": "beans/defs/folio-assistant-c3d7--claim-stomping-97-of-100-claims-record-no-holder-s.md"
    },
    {
      "id": "folio-assistant-c4lg",
      "title": "Remote mount follow-ups: init-folio --link remote, and pin skill_fetch REFERENCE_PACKAGES",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0mpw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T08:34:18Z",
      "updatedAt": "2026-10-23T14:13:00Z",
      "preview": "The two items still unticked on `0mpw`, recorded as their own task so the parent's open state rests on an open child (`check:bean-rollup`).\n\n## Done when\n- [x] `init-folio --link remote` is implemented (today `--link` accepts `submodule | sibling`). — **`litlfred/cat-harness#422` merged `764f4bdce1` (`2026-10-23T09:57:53Z`, `LinkModeSchema`); `litlfred/cat-harness-tools#573` (`12873c3a5d`) is 100%",
      "file": "beans/defs/folio-assistant-c4lg--remote-mount-follow-ups-init-folio-link-remote-and.md"
    },
    {
      "id": "folio-assistant-c4rz",
      "title": "Migrate the feedback store into the declared todos/ graph",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-8jt6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T23:02:16Z",
      "updatedAt": "2026-09-29T20:52:42Z",
      "preview": "## What landed already (2026-09-18, `claude/festive-galileo-s7ibx0`)\n\nThe author's correction: *\"TodoItem = Todo is a human actor state management.\nit is content. should be moved into KG with declared dir like todos/\"*, then\n*\"should be tagged by Roles, processes, tasks, user identification (e.g. as\ntool github user)\"*.\n\nDone: three graph kinds (`todos`, `todo-items`, `todo-feedback`),\n`schemas/to",
      "file": "beans/defs/folio-assistant-c4rz--migrate-the-feedback-store-into-the-declared-todos.md"
    },
    {
      "id": "folio-assistant-c592",
      "title": "GLOSSARY PER LOCALE: glossary-page.ts reads the translated .po catalogues and renders each locale's terms",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-lqo9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T09:07:22Z",
      "updatedAt": "2026-09-30T11:56:26Z",
      "preview": "The one unchecked item of epic lqo9's Done when, split out 2026-09-30 so the epic's open work is a bean rather than a line: 'Labels and definitions are extracted to .pot like BPMN labels [done] ... and render per locale (next step: needs the glossary page to read the .po, which is a change to glossary-page.ts)'.\n\nSurfaced by check:bean-rollup once lqo9's last two children (ftu0, x5o1) closed: an e",
      "file": "beans/defs/folio-assistant-c592--glossary-per-locale-glossary-pagets-reads-the-tran.md"
    },
    {
      "id": "folio-assistant-c5fm",
      "title": "Instantiate folio-assistant-core: config at root so the navbar lists it; declare its docs/",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T14:53:55Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "Issue #2196. Owner 2026-10-05 asked whether folio-assistant-core/ is staged and why it is missing from the navbar Harnesses list between WHO IRIS and C@T Harness. Rule: gen-navbar-include.ts lists harnesses with instantiated===true; harness-tiles.ts sets instantiated from <name>.config.json at the root. Core has a declaration but no config.\n\n\n## 2026-10-05 progress (PR #2197)\n- Added folio-assista",
      "file": "beans/defs/folio-assistant-c5fm--instantiate-folio-assistant-core-config-at-root-so.md"
    },
    {
      "id": "folio-assistant-c65n",
      "title": "VALIDATE incremental IG rebuild on smart-immunizations: BCG schedule test change — AST rebuild, cone, just-the-docs incremental re-render, before/after screenshots",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T06:29:03Z",
      "updatedAt": "2026-10-09T13:16:00Z",
      "preview": "Owner request 2026-10-06: on a feature branch of litlfred/smart-immunizations, change one BCG schedule (IMMZD18SBCG) as a test and measure (1) AST rebuild time, (2) dependency-cone calculation time, (3) just-the-docs iterative re-render time, then show before/after screenshots of impacted content pages (index pages excluded).\n\n## Todo\n- [x] baseline just-the-docs site of smart-immunizations (befor",
      "file": "beans/defs/folio-assistant-c65n--validate-incremental-ig-rebuild-on-smart-immunizat.md"
    },
    {
      "id": "folio-assistant-c8uq",
      "title": "QA READERS F5: corpus walkers that pass on an empty corpus (orphan-verdict sweep, validate orphan check, reviewer permission)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-16ei"
      ],
      "createdAt": "2026-10-01T08:47:14Z",
      "updatedAt": "2026-10-06T06:09:22Z",
      "preview": "Arc `3fva`, from reader audit `gxvk` (`cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md`, family F5). Blocked on `16ei`. **CRITICAL: two silent passes.**\n\nThese gates walk the QA corpus and judge what they find. Once the corpus is gone, they find nothing and call it clean.\n\n## Readers\n- **C6** `cat-harness/content/pipeline/orphan-verdict-sweep.ts:76,98` (`check:orphan-verdicts`, CI `code-",
      "file": "beans/defs/folio-assistant-c8uq--qa-readers-f5-corpus-walkers-that-pass-on-an-empty.md"
    },
    {
      "id": "folio-assistant-cauv",
      "title": "Wire wireframe-design-review into CRDM (wiregen.md:24 instruction)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-14T17:30:00Z",
      "updatedAt": "2026-10-20T09:30:00Z",
      "preview": "The owner, 2026-09-23 (`methodologies/wiregen.md:24`): *\"make methodology/utilize/integrate into existing processes ... wireframe is part of design process for adjudication\"*. `Process_WireframeDesignReview` was called by no BPMN in the CRDM workflow (#203), so a feature request that changed a rendered surface was implemented with no design the requester had chosen. Approved by the owner on 2026-1",
      "file": "beans/defs/folio-assistant-cauv--wire-wireframe-design-review-into-crdm-wiregenmd2.md"
    },
    {
      "id": "folio-assistant-ce65",
      "title": "Tool nodes exist for 11 of 138 skills — audit which uncovered skills describe an action",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T20:21:01Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "Opened 2026-09-18, after the work rather than before it — the same unclaimed-work\nfailure as `1dfh`, recorded rather than backfilled quietly. Twice in one session\nis a pattern, not an accident: both times I went from a one-line instruction\n(\"do schemas/tool.ts\") straight to building.\n\n## Done in #279\n\n`schemas/tool.ts`, `schemas/tool-types.ts`, four Tool nodes in `tools/`,\n`check:tools` gated in C",
      "file": "beans/defs/folio-assistant-ce65--tool-nodes-exist-for-11-of-138-skills-audit-which.md"
    },
    {
      "id": "folio-assistant-ceud",
      "title": "CI: a push to a PR branch fired NO workflow at all — a PR that looks untested rather than red",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T17:30:00Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Measured 2026-09-24, working PR #1241.\n\n`6603c3fbc4d` was pushed to `claude/cool-fermi-htir5p`, an open PR branch.\n**No workflow fired for it at all** — not `code-quality-gates`, not\n`jsonld-gen-check`, not `feature-staging`. The latest run of every workflow\nstayed on the previous SHA, `f1fb1556576`, for 35 minutes.\n\n## What was ruled out\n\n- **The push landed.** `git ls-remote origin claude/cool-f",
      "file": "beans/defs/folio-assistant-ceud--ci-a-push-to-a-pr-branch-fired-no-workflow-at-all.md"
    },
    {
      "id": "folio-assistant-cflw",
      "title": "Generated artefacts collide: 218 sidecars rewritten by one auditor edit",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T06:19:28Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "_2026-09-19T06:19:44Z_ — MEASURED 2026-09-19, on main at d4b9f7479, by appending one comment line to scripts/kg-audit.ts and running `bun run cat kg:audit`:\n\n  218 sidecars rewritten. Zero verdicts changed.\n\nCause: `auditor.script_hash` was stored in every one of the 214 kg-qa sidecars. That is not 214 facts. `kg-audit.ts` computes `auditorHash` ONCE per run (one line, before any subject is audite",
      "file": "beans/defs/folio-assistant-cflw--generated-artefacts-collide-218-sidecars-rewritten.md"
    },
    {
      "id": "folio-assistant-chq5",
      "title": "STUCK-CHECK TRAP: a parent token in the agent's lane, a live position two lanes away — and one instance commits an absolute path",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T11:10:26Z",
      "updatedAt": "2026-10-09T13:35:00Z",
      "preview": "Found 2026-09-21 while measuring `v49e`'s join. **This bean was written once\nwith the opposite conclusion and rewritten after a roast.** The wrong version\nis kept below as the worked example, because the mistake it made is precisely\nthe mistake the check this bean asks for would make.\n\n## What is actually true\n\nTwo `running` CRDM instances. **Both are waiting on a human, correctly.**\n\n| instance |",
      "file": "beans/defs/folio-assistant-chq5--stuck-check-trap-a-parent-token-in-the-agents-lane.md"
    },
    {
      "id": "folio-assistant-cis1",
      "title": "CI BOTTLENECK 1: cache mounted layer trees in mount-from-lock and decouple static gates from Publish-time pages",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-cisp",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T20:27:00Z",
      "updatedAt": "2026-10-15T21:05:30Z",
      "preview": "## Problem\n\n1. `.github/mount-from-lock.sh` / `scripts/mount-from-lock.ts` fetches all 11 layer repositories sequentially from GitHub in every job (~15 jobs per workflow run).\n2. In `folio-assistant` `code-quality-gates.yml`, static repository gates and unit tests wait for `QA working copy` (~3–4 min) and `Publish-time pages` (~2–3 min) sequentially before starting.\n\n## Remedy\n\n- Support a local c",
      "file": "beans/defs/folio-assistant-cis1--ci-bottleneck-1-cache-mounted-layer-trees-in-mount.md"
    },
    {
      "id": "folio-assistant-cis2",
      "title": "CI BOTTLENECK 2: cache base (main) test and standalone ratchet summaries keyed by base SHA in layer-ci",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-cisp",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T20:27:00Z",
      "updatedAt": "2026-10-15T21:05:30Z",
      "preview": "## Problem\n\nIn `cat-harness`, `cat-harness-tools`, `folio-assistant-core`, `fhir-harness`, `who-iris`, etc., every PR push runs four full test jobs (`bun test (head)`, `bun test (base)`, `standalone (head)`, `standalone (base)`), re-measuring the unchanged `base` commit from scratch on every push.\n\n## Remedy\n\nCache the `base` JSON ratchet output (`base.json` / `standalone-base.json`) via `actions/",
      "file": "beans/defs/folio-assistant-cis2--ci-bottleneck-2-cache-base-main-test-and-standalon.md"
    },
    {
      "id": "folio-assistant-cis3",
      "title": "CI BOTTLENECK 3: cancel orphaned in_progress/queued workflow runs when a PR closes or merges",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-cisp",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T20:27:00Z",
      "updatedAt": "2026-10-15T21:05:30Z",
      "preview": "## Problem\n\nWhen a PR is merged or closed while its `pull_request` workflows (`Code-quality gates`, `PR checks`, `Feature Staging`) are still `in_progress` or `queued`, GitHub Actions leaves them running for 5–10 minutes alongside the new `push` to `main`, starving the concurrent runner pool.\n\n## Remedy\n\nAdd automatic cancellation of `in_progress` and `queued` `pull_request` workflow runs for a PR",
      "file": "beans/defs/folio-assistant-cis3--ci-bottleneck-3-cancel-orphaned-in-progress-queued.md"
    },
    {
      "id": "folio-assistant-cis4",
      "title": "CI BOTTLENECK 4: avoid duplicate full site builds between Code-quality gates and Feature Staging",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-cisp",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T20:27:00Z",
      "updatedAt": "2026-10-15T21:05:30Z",
      "preview": "## Problem\n\nOn `folio-assistant` and layer repositories, every PR push triggers both `Code-quality gates` (which builds the QA working copy, publish-time pages, and Jekyll site) and `Feature Staging (GitHub Pages)` (which independently mounts all layers, runs `derive-at-publish`, and builds the site again).\n\n## Remedy\n\nCache the mounted layers and derived build artifacts across workflows on the sa",
      "file": "beans/defs/folio-assistant-cis4--ci-bottleneck-4-avoid-duplicate-full-site-builds-b.md"
    },
    {
      "id": "folio-assistant-cis5",
      "title": "CI BOTTLENECK 5: cache ~/.fhir/packages and global fsh-sushi across FHIR IG workflows",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-cisp",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T20:27:00Z",
      "updatedAt": "2026-10-15T21:05:30Z",
      "preview": "## Problem\n\nIn `smart-base`, `smart-immunizations-uganda`, `smart-hiv`, `smart-ra`, and `fhir-harness`, `npm install -g fsh-sushi` and SUSHI's FHIR IG dependency downloads (`~/.fhir/packages`) run uncached when the AST cache misses.\n\n## Remedy\n\nCache `~/.fhir/packages` and the `fsh-sushi` install directory via `actions/cache` in the FHIR IG build workflows.",
      "file": "beans/defs/folio-assistant-cis5--ci-bottleneck-5-cache-fhir-packages-and-global-fsh.md"
    },
    {
      "id": "folio-assistant-cis6",
      "title": "CI BOTTLENECK 6: run per-instance tsc --noEmit in parallel in typecheck:instances",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-cisp",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T20:27:00Z",
      "updatedAt": "2026-10-15T21:05:30Z",
      "preview": "## Problem\n\n`cat-harness-tools/scripts/typecheck-instances.ts` spawns `tsc --noEmit -p <cfg>` sequentially in a `for` loop across all instances (`bootstrap-tools`, `cat-harness-tools`, `cat-harness`, `folio-assistant-core`, etc.).\n\n## Remedy\n\nSpawn all per-instance `tsc --noEmit` processes concurrently (`Promise.all` with `Bun.spawn`), buffer each instance's stdout/stderr so output remains grouped",
      "file": "beans/defs/folio-assistant-cis6--ci-bottleneck-6-run-per-instance-tsc-noemit-in-par.md"
    },
    {
      "id": "folio-assistant-cisp",
      "title": "CI SPEED & RUNNER EFFICIENCY: 6 bottlenecks across index, layer PR checks, staging and FHIR IG builds",
      "status": "completed",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T20:27:00Z",
      "updatedAt": "2026-10-15T21:05:30Z",
      "preview": "## Context\n\nMeasured across `folio-assistant`, `cat-harness-tools`, `cat-harness`, and the `smart-*` / `fhir-harness` repositories on 2026-10-15: six bottlenecks dominate CI wall-clock time and concurrent runner consumption:\n\n1. **`folio-assistant-cis1`** — Serial critical path in `folio-assistant` (`QA working copy` → `Publish-time pages` → downstream shards) and uncached 11-layer fetches in `mou",
      "file": "beans/defs/folio-assistant-cisp--ci-speed-runner-efficiency-6-bottlenecks-across-in.md"
    },
    {
      "id": "folio-assistant-cjvs",
      "title": "190 dangling refs in the KG: 137 ts-import, 28 md-link, 25 bpmn-skill",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T06:33:48Z",
      "updatedAt": "2026-10-01T07:11:26Z",
      "preview": "`bun run cat kg:detangle`, measured 2026-09-26 on `main`:\n\n```\nDetangle — 697 nodes, 2828 edges, 190 dangling\n```\n\nBreakdown, from the tool's own JSON rather than from prose:\n\n| via | count |\n|---|---|\n| `ts-import` | 137 |\n| `md-link` | 28 |\n| `bpmn-skill` | 25 |\n\nA dangling ref is a link-shaped value that does not dereference — bean `blv9`\n— at scale, in the graph the whole separation effort is ",
      "file": "beans/defs/folio-assistant-cjvs--190-dangling-refs-in-the-kg-137-ts-import-28-md-li.md"
    },
    {
      "id": "folio-assistant-ckej",
      "title": "CONJECTURE REGISTER: a register node per open problem, and a formal|identification field on conjecture() (folio-assistant-sci)",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:10:08Z",
      "updatedAt": "2026-10-04T15:10:08Z",
      "preview": "Recorded from the qou work-plan analysis, 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). Not started: recorded so the gap has an owner. ConjectureBlock carries only an optional lean field. Proposed: a conjectures graph kind (holds: state) under the paper adapter, status lifecycle as DMN, source block, Lean stub, critical-path theorems that assume it (lean-formal-grap",
      "file": "beans/defs/folio-assistant-ckej--conjecture-register-a-register-node-per-open-probl.md"
    },
    {
      "id": "folio-assistant-clzd",
      "title": "check:import-direction — cat-harness imports nothing above it; content adapters declared by their instance (#1737)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:00Z",
      "updatedAt": "2026-10-01T06:58:00Z",
      "preview": "Landed in #1737 (merge `bf8f5c80c27` on main, 2026-10-01; branch `claude/laughing-thompson-vjcmlx`): cat-harness imports nothing above it — content adapters are declared by their own instance (`schemas/cat-harness.ts`), and `scripts/check-import-direction.ts` (new, 337 lines) reads every instance's `needs` and fails an upward import. CI step in `code-quality-gates.yml`. This is the gate `p11x` ask",
      "file": "beans/defs/folio-assistant-clzd--checkimport-direction-cat-harness-imports-nothing.md"
    },
    {
      "id": "folio-assistant-cmsl",
      "title": "DEDUPE: 11 directories declared twice — and both obvious fixes are measurably wrong",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T19:18:36Z",
      "updatedAt": "2026-10-01T17:41:20Z",
      "preview": "Owner asked 2026-09-21: *\"we need to dediplicate. options? auto stub prefix?\"*\nBoth options were put to them, both were chosen, and **both turned out to be\nmeasurably wrong**. Recorded here so the next agent does not re-derive it.\n\n## The measurement\n\n**63 declared entries across 52 distinct directories; 11 declared twice.**\nEvery duplicate has one shape: `cat-harness` declares another instance's\n",
      "file": "beans/defs/folio-assistant-cmsl--dedupe-11-directories-declared-twice-and-both-obvi.md"
    },
    {
      "id": "folio-assistant-cn8y",
      "title": "Page follows the remembered locale; mark source-language fallbacks in a translated navbar",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T05:39:33Z",
      "updatedAt": "2026-09-27T05:39:33Z",
      "preview": "Owner 2026-09-27: an English page sat inside a French navbar. 'user selects locale in icon, then only those pages exist (if translated) otherwise source language fallback'. Chose: page follows too, and fallback items tagged (EN).\n\n## Summary of Changes\n\n- `docs-ui.js` `followRememberedLocale`: with a STORED `fa-locale`, a page that has a version in that locale (by its own `availableLocales`) is re",
      "file": "beans/defs/folio-assistant-cn8y--page-follows-the-remembered-locale-mark-source-lan.md"
    },
    {
      "id": "folio-assistant-cnhh",
      "title": "LHS navbar: glyph-marked harness rows lose child indent (#2151)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-p5wm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T05:36:04Z",
      "updatedAt": "2026-10-05T14:40:27Z",
      "preview": "Owner 2026-10-05: 'alignment of harnesses is off'. Issue #2151. itemHtml infers fa-nav-kind from glyphPath, so #2122's glyph harness marks got the kind-row padding. Make kind a declared NavItem field.\n\n\n\n## Completed by PR #2152 (2026-10-05)\n\nLands with #2152 (owner: \"finish and merge\" #2152, 2026-10-05), rendered-verified with Playwright screenshots on the PR. Its parent p5wm was closed on main b",
      "file": "beans/defs/folio-assistant-cnhh--lhs-navbar-glyph-marked-harness-rows-lose-child-in.md"
    },
    {
      "id": "folio-assistant-cp3v",
      "title": "TOC extractor: benchmark methods against PDF outlines and add a font-metric (layout) method (#2302)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T17:14:06Z",
      "updatedAt": "2026-10-12T18:26:29Z",
      "preview": "Issue #2302. The outline-less fallback (infer_headings) is regex-on-text only. Build a benchmark that hides each PDF's embedded outline and scores candidate extractors against it, compare methods (current regex, PyMuPDF font-metric layout, contents-page parse, Grobid/Nougat evaluated), and land the best rule-based method.\n\n- [x] benchmark harness + metric\n- [x] font-metric method\n- [x] comparison ",
      "file": "beans/defs/folio-assistant-cp3v--toc-extractor-benchmark-methods-against-pdf-outlin.md"
    },
    {
      "id": "folio-assistant-cpmo",
      "title": "SMART-BASE CROSSWALKS: the v1 to v2 ConceptMaps exist, are draft, and one is incomplete",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2yyh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T09:06:44Z",
      "updatedAt": "2026-10-03T15:59:20Z",
      "preview": "The owner, 2026-09-22: *\"See smart-base for more info on classications and mappings better 1 and 2...\"*, then chose to have the crosswalks ingested.\n\n## Summary of Changes\n\n`smart-base/fhir-artifact-index/` — the published IG's artefact index, reconstructed by `ingest:ig` from `smart.who.int.base` v0.3.0 (FHIR 4.0.1), the same shape `smart-trust` and `smart-immunizations` are on.\n\n**225 artefacts ",
      "file": "beans/defs/folio-assistant-cpmo--smart-base-crosswalks-the-v1-to-v2-conceptmaps-exi.md"
    },
    {
      "id": "folio-assistant-cpss",
      "title": "The deliberately-red drift gate masked 104 checks from inside a `set -e` batch — moved to last, and enforced",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T18:09:12Z",
      "updatedAt": "2026-09-27T05:14:00Z",
      "preview": "Measured while fixing an unrelated finding (bean `9x01`), so the population below\nis exact and the recommendation is not.\n\n## What is unreachable\n\n`.github/workflows/code-quality-gates.yml`, job `gates`: **46 steps**, and the\nstep named *\"gates that were registered and never run\"* is **step 40**. A job\nstops at its first failing step, and that step's batch contains\n`translation:drift:check`, which",
      "file": "beans/defs/folio-assistant-cpss--six-gates-in-the-code-quality-job-cannot-fire-the.md"
    },
    {
      "id": "folio-assistant-cruz",
      "title": "who-iris imports folio-assistant-core as a package — platform.ts switches from the mount path in one edit",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-f6gq",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T15:29:13Z",
      "updatedAt": "2026-10-16T12:18:00Z",
      "preview": "Top layer of f6gq; needs 7pvn. who-iris PR 18 (2026-10-09) re-pointed platform.ts to ./folio-assistant-core, the remote mount, as the interim; this replaces those six imports with @litlfred/folio-assistant-core.\n\n## Done when\n- [x] platform.ts imports @litlfred/folio-assistant-core, pinned at the commit index.config.json mounts, with the pin check\n- [x] who-iris's gates and tests pass from a fresh",
      "file": "beans/defs/folio-assistant-cruz--who-iris-imports-folio-assistant-core-as-a-package.md"
    },
    {
      "id": "folio-assistant-ctp3",
      "title": "INGEST Doc-Researcher (arXiv:2510.21603v1) as a methodology subgraph in folio-assistant-core",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:14:08Z",
      "updatedAt": "2026-09-24T00:15:16Z",
      "preview": "Owner's request, 2026-09-23: *\"ingest methdolofy subgraph. develop processes skills etc.\napply to folio-asst-core\"*, then *\"it is part of f-a-c subgraph\"*.\n\nDong et al., **\"Doc-Researcher: A Unified System for Multimodal Document Parsing and\nDeep Research\"** (arXiv:2510.21603v1, Huawei, 24 October 2025). Open access.\n\n## What went in\n\nFour new declared directories on `folio-assistant-core`, each d",
      "file": "beans/defs/folio-assistant-ctp3--ingest-doc-researcher-arxiv251021603v1-as-a-method.md"
    },
    {
      "id": "folio-assistant-cw35",
      "title": "GATES DECIDE PUBLICATION: a held bitstream whose copyright or restrictions gate is not permitted is not redistributed",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-kupb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:01:44Z",
      "updatedAt": "2026-09-24T18:01:44Z",
      "preview": "From the `v048` roast, objections 3 + 4. The owner placed this under `kupb` on 2026-09-24, knowing it keeps GOAL 3 open.\n\n**Measured:** every held bitstream carries `copyright: unknown` and `restrictions: unknown`, yet the public who-iris pages link the PDFs via raw.githubusercontent and jsDelivr. `gen-iris-pages.ts` reads gates only to COUNT them (l.1062). `refusedGates` / `unansweredGates` (`fol",
      "file": "beans/defs/folio-assistant-cw35--gates-decide-publication-a-held-bitstream-whose-co.md"
    },
    {
      "id": "folio-assistant-cxcn",
      "title": "QA READERS F7: tests stop reading the committed QA corpus (15 tests in 6 files fail when it is absent)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-16ei"
      ],
      "createdAt": "2026-10-01T08:47:14Z",
      "updatedAt": "2026-10-02T08:02:57Z",
      "preview": "Arc `3fva`, from reader audit `gxvk` (`cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md`, §5.5 family F7). Blocked on `16ei`. Do it last: the fixtures follow the APIs that the other reader beans settle.\n\nMeasured on the same 21 test files: with the corpus present, 8 tests fail, none of them about a missing file. With it moved aside, 20 fail. **15 tests fail only when the corpus is absent,",
      "file": "beans/defs/folio-assistant-cxcn--qa-readers-f7-tests-stop-reading-the-committed-qa.md"
    },
    {
      "id": "folio-assistant-cy4p",
      "title": "BPMN ENGINE: a Tool node, with downcompilation per coding agent",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T17:04:01Z",
      "updatedAt": "2026-10-23T13:35:00Z",
      "preview": "**Uncaptured owner requirement, found 2026-09-19T17:0x** while checking\n[#363](https://github.com/litlfred/folio-assistant/issues/363) for replies.\nThe ask was made at 09:20 and had reached no bean in eight hours — the\n`issue-working` re-check is what surfaced it, which is the case that skill\nexists for.\n\nOwner, [#363 comment](https://github.com/litlfred/folio-assistant/issues/363#issuecomment-574",
      "file": "beans/defs/folio-assistant-cy4p--bpmn-engine-a-tool-node-with-downcompilation-per-c.md"
    },
    {
      "id": "folio-assistant-cydz",
      "title": "IG personas cross-link to BPMN swimlanes, with a lane/persona QA check",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T16:13:16Z",
      "updatedAt": "2026-10-10T16:47:37Z",
      "preview": "Owner 2026-10-10: personas/roles should cross-link to the swimlanes in the processes, following cat-harness's role=swimlane QA (related: sqtq, u5va).\n\nMeasured on smart-immunizations main (86898e6):\n- 8 personas live only as rows of an HTML table on personas.md. There are NO ActorDefinitions.\n- The lanes exist only inside 10 Visio SVGs, as v:val of visHeadingText.\n- Match: HW is inside 'Vaccinatio",
      "file": "beans/defs/folio-assistant-cydz--ig-personas-cross-link-to-bpmn-swimlanes-with-a-la.md"
    },
    {
      "id": "folio-assistant-cz17",
      "title": "Migrate dak.json in: the DAK type is ours, and its Logical Model is pending upstream",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T21:36:56Z",
      "updatedAt": "2026-10-06T06:33:19Z",
      "preview": "## The correction this starts from\n\n`dak.json` is **ours**, as part of L2 in `smart-base` — not a third-party file\nwe merely read. An earlier design note in bean `79t3` listed it alongside\n`sushi-config.yaml` as \"not ours to rename\"; that is wrong for `dak.json` and\nstill right for `sushi-config.yaml`, whose name the SUSHI tool owns.\n\nSo `dak.json` is a marker we migrate **in**, not around.\n\n## La",
      "file": "beans/defs/folio-assistant-cz17--migrate-dakjson-in-the-dak-type-is-ours-and-its-lo.md"
    },
    {
      "id": "folio-assistant-cztn",
      "title": "WIRE THE HAND-OVER SCREEN into every site where one agent's, tool's or person's text reaches another model",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ieum",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T19:29:00Z",
      "updatedAt": "2026-10-07T21:38:21Z",
      "preview": "Owner 2026-10-07: 'work: Connecting the hand-over screen to the places that hand work between agents'. #2390 shipped screenHandover/fenceUntrusted with ONE caller (the chat prompt). This bean: measure the hand-over sites from the code (not guessed), wire the screen or the fence into each, refuse-never-repair per H3/H9.\n\n## Done when\n- [x] sites listed, each with what flows, structured or free text",
      "file": "beans/defs/folio-assistant-cztn--wire-the-hand-over-screen-into-every-site-where-on.md"
    },
    {
      "id": "folio-assistant-d308",
      "title": "CODE DISPENSATION: 868 code files → 13 Tool nodes, each bound to a BPMN task",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T04:08:50Z",
      "updatedAt": "2026-10-23T13:47:00Z",
      "preview": "Owner, 2026-09-20, which is the framing and not a paraphrase of it:\n\n> i dont want platform code. there should be NO code, only skills/tools in the\n> KG. the code needs to do something. please analyze and create a table\n> categorizing and dispensation options. can be part of large general\n> processes for now, writing a paper. associate them to a task in a large\n> process as to where where they wou",
      "file": "beans/defs/folio-assistant-d308--code-dispensation-864-code-files-12-tool-nodes-eac.md"
    },
    {
      "id": "folio-assistant-d313",
      "title": "IG API: rename the DAK API surface in fhir-harness to a generic IG API",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T09:23:38Z",
      "updatedAt": "2026-10-03T17:36:11Z",
      "preview": "Part of the layering in `nsbb` (bare FHIR IG pipeline is the base; DAK is an overlay).\n\nOwner, 2026-10-03: \"can we rename dakapi hub to someting more ig generic. split up/generifize code. relabel?\" — and chose the name \"IG API\".\n\n## What\nfhir-harness's one rule is that it knows nothing of WHO, yet `dak-views.ts`, the `dak-*.liquid`/`.js` templates, the `dakApiHub` index field and ~30 sites in `gen",
      "file": "beans/defs/folio-assistant-d313--ig-api-rename-the-dak-api-surface-in-fhir-harness.md"
    },
    {
      "id": "folio-assistant-d33q",
      "title": "MERGE AUTO-RESOLVE: merge:main resolves only DECLARED conflict patterns, proves the result with the gate set, and is the merge-base.bpmn sub-process",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:57:14Z",
      "updatedAt": "2026-10-08T05:42:00Z",
      "preview": "Issue #1707 (bean y7b3 measured it). Owner 2026-10-01: '1 + new skills/tools for each common churn/conflict pattern' and 'put in merge process bpmn'. Settles 520m's open question (may a resolver cover every generated artefact?) as: yes, one declared pattern at a time.\n\n## Measured (y7b3)\n300 main-into-branch merges: 235 conflicted, 147 (63%) only on generated files.\n\n## Built\n- cat-harness/scripts",
      "file": "beans/defs/folio-assistant-d33q--merge-auto-resolve-mergemain-resolves-only-declare.md"
    },
    {
      "id": "folio-assistant-d3yq",
      "title": "TESTING THEME: an engineering grumpy-cat theme and an avatar for testing surfaces",
      "status": "scrapped",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-tfo1",
        "folio-assistant-xffc"
      ],
      "createdAt": "2026-09-20T06:09:59Z",
      "updatedAt": "2026-09-23T10:30:00Z",
      "preview": "## The ask, owner 2026-09-20 (verbatim)\n\n> also when talking about testing specifically, we need avatar and then cats =\n> computable adjudication and agentic test harness.       caaat-harness\n>     ca&at-harness\n>  _c&t-harness\n>  c@t-harness\n> cat-harness\n> cat-harness\n>\n> this time grumpy cat will be engineering themed.  i will provide 3 layouts in\n> a moment\n\n## What it asks for\n\n1. An **avatar",
      "file": "beans/defs/folio-assistant-d3yq--testing-theme-an-engineering-grumpy-cat-theme-and.md"
    },
    {
      "id": "folio-assistant-d4lb",
      "title": "B6b-2 (#1168): folio-intake/v1 rebuilt from existing schemas; adapter writes it; strict MaterializationSchema",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:42:45Z",
      "updatedAt": "2026-09-24T19:50:21Z",
      "preview": "## Owner decisions 2026-09-24\n- \"B C, look to existing standards to restructure schema\" → then \"reduce reuse recycle\" → then \"Yes, red until you fill gates\".\n\n## Facts (measured)\n- No code writes `folio-intake/v1`: the 4 files under who-iris/uploads/*/intake.json are hand-authored. The registry's `writtenBy: scripts/library-graph.ts` is wrong — it only reads them.\n- `adapters/document/index.ts` wr",
      "file": "beans/defs/folio-assistant-d4lb--b6b-2-1168-folio-intakev1-rebuilt-from-existing-sc.md"
    },
    {
      "id": "folio-assistant-d4m4",
      "title": "MCP COMMANDS: the root .mcp.json named two moved scripts, and check:command-paths never read it",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T08:30:24Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "Found 2026-09-30. Issue #1542. The session host reported `sage` and `google-drive` as failing to connect: `ENOENT` on `scripts/sage-mcp.sh` and `scripts/google-drive-mcp.sh`. Both wrappers moved to `cat-harness/scripts/` in the split.\n\n`check:command-paths` reads the `command` fields in `.claude/settings.json`, from bean `b963`'s \"nobody types these\" reader, but not in `.mcp.json`. So the class th",
      "file": "beans/defs/folio-assistant-d4m4--mcp-commands-the-root-mcpjson-named-two-moved-scri.md"
    },
    {
      "id": "folio-assistant-d5f1",
      "title": "INGEST: narrative description per image, localized, including images extracted from PDFs",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-16T06:43:50Z",
      "updatedAt": "2026-10-21T19:42:00Z",
      "preview": "## What\n\nGenerate a narrative description for every image, localized to the folio's\nlanguages.\n\n## The half that is easy to miss\n\n**This applies to an image EXTRACTED FROM A PDF, not only to an uploaded one.**\nMost images in this corpus arrive inside a paper, and a figure nobody has\ndescribed is a figure no grep and no agent can reach.\n\n## Provenance is not optional\n\nEvery description carries its ",
      "file": "beans/defs/folio-assistant-d5f1--ingest-narrative-description-per-image-localized-i.md"
    },
    {
      "id": "folio-assistant-d6bw",
      "title": "Skills, processes and docs: QA lives on qa-reports — update every skill, BPMN and page that says test/results is committed",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-16ei"
      ],
      "createdAt": "2026-10-01T08:00:47Z",
      "updatedAt": "2026-10-01T18:03:20Z",
      "preview": "Arc `3fva`, proposal §4 Phase 4. Can be dispatched once qa-store lands. Edit the SKILL, not AGENTS.md. AGENTS.md gets a pointer only.\n\n- Skills:\n  - `qa-witness`\n  - `prepare-merge` §\"Conflicts in test/results/\"\n  - `audit-coverage`\n  - `directory-conventions`\n  - `content-context-and-state-graphs`\n  - `skill-registration`\n  - `ci-health`\n  - `untainted-verification`\n  - `qa-report-signing`\n  - `t",
      "file": "beans/defs/folio-assistant-d6bw--skills-processes-and-docs-qa-lives-on-qa-reports-u.md"
    },
    {
      "id": "folio-assistant-db80",
      "title": "methodologies visualiser: 8 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-10-09T14:21:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/methodologies/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **DIIG contradicts itself.** Its **Origin** says \"Ingested at `smart-base/library/9789240010567-eng/`; every citation below resolves to a section there\" (",
      "file": "beans/defs/folio-assistant-db80--methodologies-visualiser-8-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-dc64",
      "title": "Dashboards are dark-only and ignore the colour-scheme setting",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:14Z",
      "updatedAt": "2026-09-24T18:14:31Z",
      "preview": "The state dashboards (beans, todos, translation status) render dark regardless of the reader's scheme, because the attribute that switches them is set only by a script those pages do not load.\n\nObserved on: `beans`, `todos`, `translation-status` (see each `cat-harness/docs/wireframes/<kind>/intent.md`). Per-page detail is in each visualiser's task under the epic.\n\n## Done when\n\n- [x] A reader's st",
      "file": "beans/defs/folio-assistant-dc64--dashboards-are-dark-only-and-ignore-the-colour-sch.md"
    },
    {
      "id": "folio-assistant-de9k",
      "title": "BUG: three committed kg-qa sidecars on main hold git conflict markers, and every reader treats them as empty",
      "status": "completed",
      "type": "bug",
      "priority": "critical",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:47:14Z",
      "updatedAt": "2026-10-06T06:10:00Z",
      "preview": "Arc `3fva`, found by reader audit `gxvk` (`cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md` §4.1, **C1**). **Live on `main` today, and not blocked on `16ei`.**\n\n## The defect, measured\nThree committed `kg-qa/v1` sidecars on `origin/main` (`cdb0a018`) hold git conflict markers (`<<<<<<<< HEAD:` … `>>>>>>>> pr1-content-up:`):\n- `cat-harness/test/results/bootstrap/kg-qa/skills/initializatio",
      "file": "beans/defs/folio-assistant-de9k--bug-three-committed-kg-qa-sidecars-on-main-hold-gi.md"
    },
    {
      "id": "folio-assistant-dft1",
      "title": "CI: draft PRs run only the fast tier; the full tier runs once the PR is ready for review",
      "status": "in-progress",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ksek",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T16:21:05Z",
      "updatedAt": "2026-10-23T18:04:05Z",
      "preview": "Owner, 2026-10-23 (\"1y\"). No PR workflow skipped drafts, and drafts were most of the runner queue: about 59 queued runs that day on the account's shared runners, and 14 of cat-harness's 18 open PRs were drafts. Agents still need quick feedback on a draft, so a draft runs the cheap tier: typecheck, lint, and whatever each workflow already treats as fast or \"prepare\". The expensive tier (sharded tes",
      "file": "beans/defs/folio-assistant-dft1--ci-draft-prs-run-only-the-fast-tier-the-full-tier-.md"
    },
    {
      "id": "folio-assistant-dlqu",
      "title": "SPEED-UP 4: CI sharding, BPMN render cache and shallow checkout",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T17:42:24Z",
      "updatedAt": "2026-10-03T02:35:39Z",
      "preview": "Owner approved 2026-10-01 late (~17:30, session_01ToWZR4RgTRCWeSsgxsSQfT) as speed-up 4 of 4 for the merge treadmill (S2 `0mf0`, epic `7x5n`). Siblings: input-hash skip, parallel checks, CI merge:main (`d33q` part B).\n\n## What\nThree CI changes to `.github/workflows/code-quality-gates.yml` (and the other gate workflows):\n1. **Sharding** — split the long `gates` job (and `bun test`) into parallel sh",
      "file": "beans/defs/folio-assistant-dlqu--speed-up-4-ci-sharding-bpmn-render-cache-and-shall.md"
    },
    {
      "id": "folio-assistant-dm4j",
      "title": "todos/index.html serves ZERO notes without JavaScript — the one page most about notes is the only one with no linear floor",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T17:41:46Z",
      "updatedAt": "2026-10-20T18:50:00Z",
      "preview": "Found while measuring the linear floor for `qj9a`, 2026-10-02, on\n`origin/gh-pages`. Parent topic: `qj9a`; the floor itself is bean `0jtj`.\n\n## The defect\n\n`todos/index.html` — the dedicated notes dashboard — carries **no\n`fa-todo-listing` section and zero `fa-todo-listing-item` elements** in its\nserved bytes. It is one of the eight generated JS shells in\n`cat-harness/test/first-paint-scheme.e2e.t",
      "file": "beans/defs/folio-assistant-dm4j--todosindexhtml-serves-zero-notes-without-javascrip.md"
    },
    {
      "id": "folio-assistant-dmx1",
      "title": "DISTRIBUTED GRAPH KINDS: each harness declares the subgraph types it owns; no central registry (owner ruling 2026-10-04)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T17:04:22Z",
      "updatedAt": "2026-10-05T11:39:15Z",
      "preview": "Owner, 2026-10-04, verbatim: *\"there should not be a central registry for declaring mount tools and subgraph types\"*.\n\n## What exists, measured 2026-10-04\n- `cat-harness/schemas/graph-kind-registry.ts` declares **57** graph kinds centrally. They include harness-specific ones: the FHIR kinds (`fhir-artifact-index`, `ig-metadata-index`, and, added today on #2082, `ig-pages` and `ig-ast`) and cat-ope",
      "file": "beans/defs/folio-assistant-dmx1--distributed-graph-kinds-each-harness-declares-the.md"
    },
    {
      "id": "folio-assistant-do70",
      "title": "SIBLINGS: seven generated artefacts go stale when a catalogue or a BEAN changes, and no gate names its remedy — reuse skills:register's converging chain",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T10:05:01Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "Found 2026-09-26 by paying the cost, then reading PR #1361 and finding the\nmechanism already built for a sibling problem.\n\n## What it cost, measured on one change\n\nAdding 10 `.po` catalogues (#206, PR #1369) left **six** generated artefacts\nstale. I discovered them one at a time, from failing gates, across three full\n`bun run cat gates` runs:\n\n| gate that went red | what regenerates it |\n|---|---|",
      "file": "beans/defs/folio-assistant-do70--translation-siblings-adding-a-po-catalogue-stales.md"
    },
    {
      "id": "folio-assistant-doxj",
      "title": "CI wall time: split Repository gates off the critical path, cache Chromium",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T05:46:34Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "Owner goal 2026-10-05 \"CI build speedup\" (session_01VfkKocGaQW7Msro2t5S66U): make code-quality-gates.yml wall time as short as possible without dropping or weakening any gate. Follows `dlqu` (SPEED-UP 4).\n\n## Measured before\nmain run 37253911158 (98ab8cd, green): ~9m20s wall. Critical path = `Repository gates (hard)` 8m33s, of which `check:cat-harness-standalone` alone is 4m09s (added by #1977). N",
      "file": "beans/defs/folio-assistant-doxj--ci-wall-time-split-repository-gates-off-the-critic.md"
    },
    {
      "id": "folio-assistant-doy3",
      "title": "tipLocations/resolveTipLocation read only legacy storage — a source-declared branch subgraph is invisible to branch-store's CLI and StateStore",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T15:53:53Z",
      "updatedAt": "2026-10-06T06:26:35Z",
      "preview": "Found 2026-10-03 while building nij4 (#1997), measured on a fixture: a directory declared `source: { kind: \"branch\", keyedBy: \"tip\" }` makes `declaredSubgraph(...).source` a branch, but `tipLocations(root)` returns [] for it and `resolveTipLocation(id)` throws 'declares no storage'. Both walk `resolveDirectories` and read `d.storage` only, while `declaredSubgraph` folds config override → source → ",
      "file": "beans/defs/folio-assistant-doy3--tiplocationsresolvetiplocation-read-only-legacy-st.md"
    },
    {
      "id": "folio-assistant-dp1j",
      "title": "KG AFFORDANCES: browse, materialise, instantiate, copy-into-my-folio — as processes and skills, gated by write capability",
      "status": "in-progress",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T17:13:19Z",
      "updatedAt": "2026-10-23T20:52:00Z",
      "preview": "Owner, 2026-09-20, verbatim:\n\n> in genreal when browsing a conformant KG, user can borwse, try to\n> materialise assets, instantate (and make use of tooling), copy assets into\n> their own folio to edit/comment-todos on, etc... bpmn process aroiund folio,\n> doc ignestion in cat-harness.  as skills., bean up\n\n## What this names: the VERBS of a conformant KG\n\nEvery visualiser bean so far has been abou",
      "file": "beans/defs/folio-assistant-dp1j--kg-affordances-browse-materialise-instantiate-copy.md"
    },
    {
      "id": "folio-assistant-dqir",
      "title": "MERGE GUARD: merge:guard is the single way a steward lands a PR; a required merge-guard status backs it",
      "status": "scrapped",
      "type": "feature",
      "priority": "normal",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T13:53:48Z",
      "updatedAt": "2026-10-03T14:17:51Z",
      "preview": "Owner ruling 2026-10-03 (option 1): build an enforced merge guard, as a DRAFT PR for the owner to review.\n\nThree PRs were merged unfinished by the Merge Manager steward via a direct `PUT pulls/<n>/merge` with the owner's token:\n- #1937 into a stale base (claude/quirky-davinci-ixuymr, after #1764 merged), on a head newer than its ready: comment, with needs-merge-human present, and its own pull_requ",
      "file": "beans/defs/folio-assistant-dqir--merge-guard-mergeguard-is-the-single-way-a-steward.md"
    },
    {
      "id": "folio-assistant-dt15",
      "title": "SEARCH: a collapsible magnifier at the top of the display window, full width when open (#1715)",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T22:54:34Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "Owner, 2026-09-30: \"search that should be a collsaible icon/avatar on top of display window... that when open is full span width of all avaioblae\". Issue #1715. Supersedes the navbar/corner design of rx6k. Branch claude/search-collapsible.\n\n_2026-10-16T10:30:00Z_ — Closed: issue #1715 closed as completed and PR #1720 merged 2026-10-01, which shipped the collapsible magnifier (owner choice, https:/",
      "file": "beans/defs/folio-assistant-dt15--search-a-collapsible-magnifier-at-the-top-of-the-d.md"
    },
    {
      "id": "folio-assistant-duez",
      "title": "beans visualiser: 7 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:14Z",
      "updatedAt": "2026-10-09T14:31:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/beans/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **Epic labels are unreadable on a phone.** At 390 px the label column is about 120 px wide and clamps to two lines, so rows read \"KG: the knowledge…\", \"PROCESS: h",
      "file": "beans/defs/folio-assistant-duez--beans-visualiser-7-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-dv8v",
      "title": "B6b-1 (#1168): the 8 generated writtenBy families get Zod schemas",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:07:58Z",
      "updatedAt": "2026-09-24T18:51:25Z",
      "preview": "## Owner decision 2026-09-24\n\"B: type all 9 now\". The graph-kind registry (@general) named the script writing each untyped family. Typing them removes the backwards pointer and the finding it recorded.\n\n## Families\nfolio-bean-index/v1, folio-translation-status/v1, folio-schema-graph/v1, folio-library-index/v1, folio-library-entry/v1, folio-voices-index/v1, folio-graph-projection/v1, folio-qa-index",
      "file": "beans/defs/folio-assistant-dv8v--b6b-1168-the-9-writtenby-families-get-zod-schemas.md"
    },
    {
      "id": "folio-assistant-dvcx",
      "title": "`bun test` carries the SAME deliberate-red assertion as the declared drift gate, and the matcher cannot see it",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T10:33:16Z",
      "updatedAt": "2026-09-27T10:44:51Z",
      "preview": "## What\n\n`check:red-gate-is-last` (bean `cpss`) makes one thing structural: a gate that is\nred **by decision** must be the last step of its job, so the set it masks is\nempty by construction rather than by a passing run.\n\nIts declaration had **one** entry, `translation:drift:check`. There were **two**\ngates carrying that assertion, and the second could not be declared.\n\n`cat-harness/content/pipelin",
      "file": "beans/defs/folio-assistant-dvcx--bun-test-carries-the-same-deliberate-red-assertion.md"
    },
    {
      "id": "folio-assistant-dx5j",
      "title": "Nothing indexes a defect to the beans and PRs describing it — three duplicate-work collisions in one window",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T14:32:59Z",
      "updatedAt": "2026-09-26T17:52:18Z",
      "preview": "## What was measured, 2026-09-26\n\nThree duplicate-work collisions in one working window, each found only because\nsomebody happened to read a sibling's PR:\n\n| defect | named as | and also as | how it was found |\n|---|---|---|---|\n| CI's gates job masked its own steps | `om30` (#1390) | `m5gx` (#1401) | #1401 opened a near file-for-file duplicate ~3h after #1390 |\n| the fast gate set was hardcoded |",
      "file": "beans/defs/folio-assistant-dx5j--nothing-indexes-a-defect-to-the-beans-and-prs-desc.md"
    },
    {
      "id": "folio-assistant-dxje",
      "title": "STICKIES ONE COMPONENT (#1925): one sticky for landing + todo, faded theme, compact icon row underneath, confirmed discard to fsh-guts",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-6lb8",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T21:16:11Z",
      "updatedAt": "2026-10-04T19:55:09Z",
      "preview": "Issue #1925. Owner ruling 2026-10-02: \"dont treat stickies differently. combine best of each. lower faded avatar/theme looks nicer. upper smaller same size closed looks niceer. icons are a mess on both. make compact underneath. [x] is what? send to fsh-guts? make sure confirmed by user\"\n\n## Done when\n- one renderer for landing and todo stickies; same size closed; faded avatar/theme on all\n- one ic",
      "file": "beans/defs/folio-assistant-dxje--stickies-one-component-1925-one-sticky-for-landing.md"
    },
    {
      "id": "folio-assistant-dxqm",
      "title": "UNREACHABLE DECLARED ARTEFACTS: a declared executable artefact nothing can reach reads exactly like a decision nobody takes — measured on merge-priority.dmn (kg-qa says pass, no caller can evaluate it) and merge-queue.ts (only importer is its own test)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T05:49:00Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "`1xhc` one level deeper. The epic's line is *a gate that does not fire is\nindistinguishable from one that passed*. This is: **a declared executable\nartefact that nothing can reach is indistinguishable, from outside, from a\ndecision nobody takes.**\n\nTwo instances found by the merge steward 2026-10-04, both past all 217 CI gates:\n\n1. **`cat-harness/scripts/merge-queue.ts`** — docblock says *\"a libra",
      "file": "beans/defs/folio-assistant-dxqm--unreachable-declared-artefacts-a-declared-executab.md"
    },
    {
      "id": "folio-assistant-dzzn",
      "title": "merge-main declares subgraph indexes and content-addressed payloads",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T11:15:17Z",
      "updatedAt": "2026-10-06T05:23:38Z",
      "preview": "Issue #2176. `merge:main` refuses on `cat-harness/docs/subgraph/**` and `docs/payload/sha256/**` (no declared pattern). Payloads conflict as rename/rename with conflict-marked stage blobs, so plain take-base would `git rm` the branch's added payload (refused by `droppedInMerge`) and write marked bytes under a content-addressed name.\n\n## Todo\n- [x] owned-tree strategy: take MERGE_HEAD's blob, else ",
      "file": "beans/defs/folio-assistant-dzzn--merge-main-declares-subgraph-indexes-and-content-a.md"
    },
    {
      "id": "folio-assistant-e0hw",
      "title": "Merge refused: #2102 not signed; conflicts with main in generated paths",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-whlc",
      "blocking": [
        "folio-assistant-4ak5"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:07:55Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "PR #2102 (two bean notes on 4ak5 and yj6r; no code), opened 15:01Z on 2026-10-04. Handed back on intake by the Merge Manager.\n\n## Refused\n- `merge:steward`: Rule_NotReady. Green, but there is no ready marker and no `ready-to-merge` label (merge:guard checks 3 and 4), and it conflicts with main in generated paths only (most likely the regenerated `beans/notes/README.md`).\n- Awaiting the owner's exp",
      "file": "beans/defs/folio-assistant-e0hw--merge-refused-2102-not-signed-conflicts-with-main.md"
    },
    {
      "id": "folio-assistant-e8m3",
      "title": "ARCHIVING IS A THIRD TERMINAL PATH, and it bypasses the scrapped-with-reasons rule",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T15:44:18Z",
      "updatedAt": "2026-09-26T17:06:07Z",
      "preview": "## Measured 2026-09-25, window `2133f720eb` → `origin/main` `0a2150d3f6`\n\n`beans/defs/` has an **`archive/` subdirectory**, and it is now the larger half\nof the store:\n\n```\nactive  (beans/defs/*.md)          327   todo 123 · in-progress 120 · completed 82 · scrapped 2\narchive (beans/defs/archive/*.md)  631   (219 at the window's open edge, +412)\n```\n\nIn this five-day window **131 beans left the to",
      "file": "beans/defs/folio-assistant-e8m3--archiving-is-a-third-terminal-path-and-it-bypasses.md"
    },
    {
      "id": "folio-assistant-eayu",
      "title": "who-iris separation: generic DSpace code to the platform; IRIS-specific code flagged",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T22:52:49Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "## Why\nOwner ruling 2026-09-30, verbatim: \"dspace scripts generic in folio-assistant. iris specific tools for now ok in who-iris/ but make sure fails QA finding\".\n\nwho-iris/ is a staged instance that will move to its own CONTENT repository (litlfred/who-iris). kg-separation / bootstrap FR-7: a content repository holds no code. who-iris-tools is NOT authorised.\n\n## Done when\n- every code file under",
      "file": "beans/defs/folio-assistant-eayu--who-iris-separation-generic-dspace-code-to-the-pla.md"
    },
    {
      "id": "folio-assistant-ec2a",
      "title": "LSI over blocks and Lean declarations: extend lsi-indexing with folio and lean-decl graph kinds and a cross-graph query",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:10:08Z",
      "updatedAt": "2026-10-12T16:00:00Z",
      "preview": "Recorded from the qou work-plan analysis, 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). Not started: recorded so the gap has an owner. lsi-indexing covers library, skills, beans, docs only. qou's 141 duplicate groups are mostly the same Lean declaration filed twice; a cross-graph index would let lsi:near say 'this bean is about block Y / declaration Z'. Block indexe",
      "file": "beans/defs/folio-assistant-ec2a--lsi-over-blocks-and-lean-declarations-extend-lsi-i.md"
    },
    {
      "id": "folio-assistant-edx7",
      "title": "NAVBAR IS A COMMON FIXTURE: 0 of 47 generated viewer pages carry the LHS rail — hw9g fixed mounted instances, not these",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-p5wm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T13:30:28Z",
      "updatedAt": "2026-09-24T12:00:24Z",
      "preview": "Owner, 2026-09-23, naming three pages and then the rule:\n\n> navbar should be on sub pages like\n> https://litlfred.github.io/folio-assistant/cat-harness/catalogue/who-iris/\n>\n> or https://litlfred.github.io/folio-assistant/cat-harness/docs-auto/index/docs/who-iris-docs/\n> or library\n>\n> etc... **common fixture unless explicty removed in harness visualtion.**\n\nThe last line is the requirement, and i",
      "file": "beans/defs/folio-assistant-edx7--navbar-is-a-common-fixture-0-of-47-generated-viewe.md"
    },
    {
      "id": "folio-assistant-ehh6",
      "title": "RENDERED IMPACT, measured on smart-ra#26: a dispatched staging run finds its PR; a file the site reads nothing from reaches no page; the review page shows the measurement",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:25:34Z",
      "updatedAt": "2026-10-06T21:25:11Z",
      "preview": "Found by the real staging run on litlfred/smart-ra#26 (run 37507489070, bean dpi-h-ra-7ss8).\n\nA. folio-staging.yml reads the PR only from a pull_request event. smart-ra runs staging by dispatch only (owner decision 2026-10-06), so PR=n/a, no bot comment, no review-comment ingestion, no qa-reports fetch, though GitHub lists the run under #26.\nB. document-rendered-impact.ts puts every unplaced file ",
      "file": "beans/defs/folio-assistant-ehh6--rendered-impact-measured-on-smart-ra26-a-dispatche.md"
    },
    {
      "id": "folio-assistant-ei4q",
      "title": "LHS NAVBAR OVERLAPS CONTENT ON DESKTOP: opening the rail should shrink the content width, not cover it",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T06:51:27Z",
      "updatedAt": "2026-10-08T08:05:00Z",
      "preview": "Owner, 2026-10-06 (https://claude.ai/code/session_012qoycyCSGidZqW245vXhze), verbatim:\n\n> on desktop open up the LHS navbar will shrink content width so they dont overlap\n\n## Behaviour wanted\n- **Desktop (wide):** an open LHS navbar takes its own column, and the main content reflows narrower beside it. Nothing is hidden under the rail.\n- **Phone:** the rail stays an overlay drawer (no room to shri",
      "file": "beans/defs/folio-assistant-ei4q--lhs-navbar-overlaps-content-on-desktop-opening-the.md"
    },
    {
      "id": "folio-assistant-eief",
      "title": "CSVW skill + ingestion tools: tabular metadata as far as it can be determined",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T12:02:21Z",
      "updatedAt": "2026-10-10T17:04:26Z",
      "preview": "The owner's decision on `ulqj` is CSVW. This is the build.\n\n> \"make csvw a skill and associated tool in document ingestion. part of\n> csv/excel processing is extract tabular metadata (tables, rows, headers,\n> cols, data types, location on sheet, row, col, etc) as best as can. generic\n> workflows, specific tools and skill depending on format\"\n\n## The shape the owner asked for\n\n**Generic workflow, f",
      "file": "beans/defs/folio-assistant-eief--csvw-skill-ingestion-tools-tabular-metadata-as-far.md"
    },
    {
      "id": "folio-assistant-ejug",
      "title": "TERMINOLOGY / OCL as a Tool node — confirm the acronym first",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5yhm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T04:51:48Z",
      "updatedAt": "2026-09-30T16:09:45Z",
      "preview": "Under `5yhm`. Owner, 2026-09-25: *\"we will integrate, for example, OCL at some\npoint as a Tool\"*.\n\n**CONFIRMED by the owner 2026-09-29:** *\"OCL = open concept lab, will be used\nfor WHO smart guidelines tetrminolgy mgnt as a tool\"*. Open Concept Lab\n(openconceptlab.org), not the Object Constraint Language, and the use case is\nnamed: **terminology management for WHO SMART Guidelines**.\n\nThat settles",
      "file": "beans/defs/folio-assistant-ejug--terminology-ocl-as-a-tool-node-confirm-the-acronym.md"
    },
    {
      "id": "folio-assistant-ejye",
      "title": "Placement PR0: mechanisms only — checkout aggregates, roles/actors/capabilities extended by id, group sub-subgraphs for every kind",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-9umr",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-hx65"
      ],
      "createdAt": "2026-10-01T00:03:29Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "PR0 of the approved placement proposal (owner rulings 2026-09-30, bean 9umr's eight groups). Mechanisms only, NO content moved: (0a) the checkout root instance needs every staged instance and declares the 7 checkout-level state graphs; corpus-wide tools resolve over the checkout overlay; cat-harness's scope:repository mirrors removed; a check refuses a new mirror. (0b) a higher instance extends a ",
      "file": "beans/defs/folio-assistant-ejye--placement-pr0-mechanisms-only-checkout-aggregates.md"
    },
    {
      "id": "folio-assistant-ekp9",
      "title": "HAND-CHECK: which beans restate a skill rather than record an outcome — the ground truth `check:bean-restates-skill` is measured against",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:09:53Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "Read each bean that shares substantial prose with a skill, decide whether the sharing is a\nlegitimate **outcome record** or a **live restatement** that can drift, and record the verdict.\nGround truth for the sibling session's `check:bean-restates-skill`.\n\nIssue: #1187. Worked example of the correct post-repair shape: `kn0t` on `main`, repaired in #1185.\n\n## Why — the defect, already paid for\n\n`kn0",
      "file": "beans/defs/folio-assistant-ekp9--hand-check-which-beans-restate-a-skill-rather-than.md"
    },
    {
      "id": "folio-assistant-eof6",
      "title": "SEARCH INDEX AS A RELEASE ARTIFACT: build it on release, never on staging refresh",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T09:02:08Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Owner, 2026-09-20: 'as part of rendeing pipleine, can we tarball or so as binary archives the justthedocs search (and only aviaable on release, not refresh on staging?)'\n\nYES — BUT NOT FOR THE REASON A TARBALL USUALLY WINS, and the distinction decides the design.\n\n**Compression buys nothing on the wire.** GitHub Pages already serves text with `Content-Encoding: gzip`, so a plain `search-data.json`",
      "file": "beans/defs/folio-assistant-eof6--search-index-as-a-release-artifact-build-it-on-rel.md"
    },
    {
      "id": "folio-assistant-eojz",
      "title": "LANDING: the site's landing instance is resolved from a site.landing flag, not the generator's directory (#1904)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T22:49:23Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Issue #1904. Owner ruling 2026-10-02, verbatim: \"Flag it, with a default (recommended). The chosen instance's own `<name>.config.json` carries `\"site\": { \"landing\": true }`. If exactly one harness is instantiated, it is the landing page and no flag is needed. That covers smart-trust. If there are several and none is flagged, a gate fails. If more than one is flagged, then neutral hub with listing ",
      "file": "beans/defs/folio-assistant-eojz--landing-the-sites-landing-instance-is-resolved-fro.md"
    },
    {
      "id": "folio-assistant-eowd",
      "title": "REGEN CANNOT REPAIR translate-bpmn:check: its derived writer 'translate-bpmn' needs --extract, so regen reports a stale template as 'a real defect'",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T09:25:14Z",
      "updatedAt": "2026-09-30T10:10:12Z",
      "preview": "Found 2026-09-30 while adding a step to document-ingestion.bpmn (bean 7bg9).\n\nregen-after-merge.ts writerFor() derives a check's writer by dropping ':check': translate-bpmn:check → translate-bpmn. But 'bun run cat translate-bpmn' with no flags only reports; the writing mode is '--extract'. So after any diagram edit, bun run cat regen prints:\n  ✗ translate-bpmn:check STILL fails after `bun run cat ",
      "file": "beans/defs/folio-assistant-eowd--regen-cannot-repair-translate-bpmncheck-its-derive.md"
    },
    {
      "id": "folio-assistant-epbt",
      "title": "B6c (#1168): prose may name a file as explanation, references go in data — rule + advisory stale-name criterion",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:07:57Z",
      "updatedAt": "2026-09-24T18:25:14Z",
      "preview": "## Owner decision 2026-09-24\n\"Rule + stale check\": keep explanations; state the rule in data-modelling.md; add an advisory (minor, not gated) kg-audit criterion that flags a file named in a general node's prose that no longer resolves.\n\n## Measured\n22 diagrams' <bpmn:documentation> name 29 implementation files; GraphKindDef's field docs name 4 modules.\n\n## Done when\n- data-modelling.md states the ",
      "file": "beans/defs/folio-assistant-epbt--b6c-1168-prose-may-name-a-file-as-explanation-refe.md"
    },
    {
      "id": "folio-assistant-eqly",
      "title": "validate: a block on disk listed in no section, or listed and absent, is not a validation finding",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:52:13Z",
      "updatedAt": "2026-10-05T07:18:00Z",
      "preview": "Recorded from the qou orphaned-content census, 2026-10-04 (ORPH report; session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91, issue #2106). qou: 3 of 3,676 block manifests are in no chapter section and render nowhere, each with .md, .ts and a QA sidecar (e.g. prop:atomic-q-reeb-universal-rho). cat-harness validate.ts has no rule for 'on disk, in no section' or 'in a section, not on disk",
      "file": "beans/defs/folio-assistant-eqly--validate-a-block-on-disk-listed-in-no-section-or-l.md"
    },
    {
      "id": "folio-assistant-eqxp",
      "title": "MERGE FRICTION, one week on: the top churners have changed and four more pass 1swy's test",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T23:35:24Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Follow-on to `1swy` / `oxka`, which added the first `.gitattributes` and, more\nimportantly, the TEST for what may go in it. Nothing here revises that test —\nit applies it to a corpus that has moved.\n\n## Why re-measure at all\n\n`oxka` measured over three days ending 2026-09-24 and marked the three files it\nfound. Measured again 2026-09-30 over `origin/main`'s last 200 commits, **the\ntop of the table",
      "file": "beans/defs/folio-assistant-eqxp--merge-friction-one-week-on-the-top-churners-have-c.md"
    },
    {
      "id": "folio-assistant-esz4",
      "title": "Every special branch carries a README declaring what it is, how and when it was generated — and it is KG, not just prose",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T08:19:43Z",
      "updatedAt": "2026-10-12T10:15:00Z",
      "preview": "Owner, 2026-10-03: *\"make sure each of the special branches has a read me file\nexplaining what they are how they are generated when they were generated, etc.\nlike cat/cat-harness/beans branch. that should be in KG too\"*.\n\n## Measured state, 2026-10-03\n\n`special-branches.json` on `main` declares **8** entries. Five exist as\n`cat/<harness>/<name>` heads on the remote:\n\n| branch | README |\n|---|---|\n",
      "file": "beans/defs/folio-assistant-esz4--every-special-branch-carries-a-readme-declaring-wh.md"
    },
    {
      "id": "folio-assistant-ey1c",
      "title": "MERGE PIPELINE ASYMMETRY: merge-main regenerates a PR branch, but nothing regenerates main after a PR merges into it",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T01:05:37Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "`.github/workflows/merge-main.yml` runs `bun run cat merge:main` on an opted-in **PR branch**\nwhen `main` moves, and that command resolves declared conflicts and regenerates. There is\nno counterpart in the other direction: **after a PR merges into `main`, nothing regenerates\n`main`.**\n\nSo any merge that changes a counted or enumerated directory can leave `main` red, and the\nonly reason it usually ",
      "file": "beans/defs/folio-assistant-ey1c--merge-pipeline-asymmetry-merge-main-regenerates-a.md"
    },
    {
      "id": "folio-assistant-f017",
      "title": "SPEED-UP 1: input-hash skip — a check whose declared inputs are unchanged since its last green run is skipped and says so",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T17:42:23Z",
      "updatedAt": "2026-10-06T20:20:00Z",
      "preview": "Owner approved 2026-10-01 late (~17:30, session_01ToWZR4RgTRCWeSsgxsSQfT) as speed-up 1 of 4 for the merge treadmill (S2 `0mf0`, epic `7x5n`). Siblings: parallel checks, CI merge:main (`d33q` part B), CI sharding + BPMN cache + shallow checkout.\n\n## What\nEach verify/write pair that `bun run cat regen` / `bun run cat gates` runs records a hash of its declared INPUTS (the files it reads plus its own",
      "file": "beans/defs/folio-assistant-f017--speed-up-1-input-hash-skip-a-check-whose-declared.md"
    },
    {
      "id": "folio-assistant-f16o",
      "title": "GH-PAGES MIGRATION (xp5j child): the 5 producers write through route-family keying, and the steward opens windows",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-1xhc",
      "blocking": [
        "folio-assistant-xp5j"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T16:18:18Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "A child of `xp5j` in all but the field: the beans CLI refuses a task as a parent, so this is a sibling under `1xhc` that **blocks** `xp5j`. Split out of PR #2063 on the owner's ruling of 2026-10-04 (*\"Withdraw, land now\"*, answered to session_01BccmnVFbtRpKxM39kyVw9q, which took over #2063 from the stalled session_01GgRQnL9LTo1Hf6QWSB7w9n). #2063 lands the declaration: the named-ref steward recast",
      "file": "beans/defs/folio-assistant-f16o--gh-pages-migration-xp5j-child-the-5-producers-writ.md"
    },
    {
      "id": "folio-assistant-f1e1",
      "title": "Identity of the person typing, outside a GitHub environment — needs WAY more work",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:50:25Z",
      "updatedAt": "2026-10-21T17:56:00Z",
      "preview": "Owner 2026-10-06: 'this needs WAY more work when not in GitHub environment'.\n\nWhat landed (bean ar1s P1, this session): interaction preferences are keyed by GitHub handle (+ optional published aliases); the session-start sweep resolves the handle through the authentication Tool's own resolver (`bun run cat auth:login` -> githubIdentity, part of auth_whoami, issue #1207) and matches it with the Cla",
      "file": "beans/defs/folio-assistant-f1e1--identity-of-the-person-typing-outside-a-github-env.md"
    },
    {
      "id": "folio-assistant-f1qz",
      "title": "INGEST W3C ODRL 2.2, PROV-O, JSON-LD 1.1 into cat-harness/library (#1614 sources 4-6)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-scfh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:40:55Z",
      "updatedAt": "2026-10-01T11:29:42Z",
      "preview": "Issue #1614 item 4: methodology literature the KG / folio-asst deck relies on and no library holds. ODRL Information Model 2.2 (REC 2018-02-15; actor permissions, before/after check), PROV-O (REC 2013-04-30; QA/QC reports as provenance, bun run cat prov:qaqc), JSON-LD 1.1 (REC 2020-07-16; every manifest is JSON-LD). w3.org is blocked from the container; the REC publication snapshots are in each WG",
      "file": "beans/defs/folio-assistant-f1qz--ingest-w3c-odrl-22-prov-o-json-ld-11-into-cat-harn.md"
    },
    {
      "id": "folio-assistant-f227",
      "title": "WORK TRACEABILITY: a declared bean -> block label | Lean declaration -> PR link, and a derived trace table",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:10:07Z",
      "updatedAt": "2026-10-09T21:14:00Z",
      "preview": "Recorded from the qou work-plan analysis, 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). Not started: recorded so the gap has an owner. No relation in schemas/types.ts joins a bean to the block or declaration it is about. Proposed: front-matter targets: on a bean, validated against the content graph; trace:build joining bean -> PRs/commits -> touched block files -> l",
      "file": "beans/defs/folio-assistant-f227--work-traceability-a-declared-bean-block-label-lean.md"
    },
    {
      "id": "folio-assistant-f233",
      "title": "KG DATA MODELLING: skeleton (topology index) vs content-addressed payloads; no monolithic JSON-LD",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T20:42:54Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Owner, 2026-10-02 (\"bean up #1: add to data modeling/schema design for the KG skills\"): \"do not emit single, monolithic JSON-LD files. Instead, split the build into a lightweight skeleton and heavy material assets. The Skeleton (Topology Subgraph): JSON-LD Framing to generate a highly compressed 'index' graph … only topological relationships and critical metadata (node URIs, types, labels) require",
      "file": "beans/defs/folio-assistant-f233--kg-data-modelling-skeleton-topology-index-vs-conte.md"
    },
    {
      "id": "folio-assistant-f327",
      "title": "DIFF RENDERER: structural diff for DAK artefacts — a decision-table row, data element, indicator or FHIR profile element compared as fields, not text",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:00:13Z",
      "updatedAt": "2026-10-16T09:55:00Z",
      "preview": "Child of d903 (renderer 4 of the five it listed). A text diff of a decision table is unreadable, which is the case that proved a single 'the diff' wrong.\n\nNeeds, before it can be built:\n- the structured shape of each DAK artefact on BOTH sides. The ChangeSet reads manifests as text and never executes them; a field diff needs the parsed artefact (FHIR JSON, a DMN table, a data dictionary row);\n- a ",
      "file": "beans/defs/folio-assistant-f327--diff-renderer-structural-diff-for-dak-artefacts-a.md"
    },
    {
      "id": "folio-assistant-f3bh",
      "title": "SUBGRAPH-READMES skips stored directories (5hox follow-up)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [
        "folio-assistant-5hox"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-02T13:58:10Z",
      "updatedAt": "2026-10-02T17:56:38Z",
      "preview": "Found by the 5hox prep (2026-10-02). subgraph-readmes (in bootstrap-tools) lists results/ when a working copy is present and omits it when absent, so after 5hox a contributor who ran qa:fetch gets a different cat-harness/test/README.md from CI. The generator should skip any directory whose declaration carries storage (16ei).\n\n## Done when\n- [x] the generated README is identical with and without a ",
      "file": "beans/defs/folio-assistant-f3bh--subgraph-readmes-skips-stored-directories-5hox-fol.md"
    },
    {
      "id": "folio-assistant-f4gj",
      "title": "MEASURED: fsh-cone is a second route to logic-layer edges, but delivers 0 of 458 as merged — skill's P3 blocker holds as measurement, is too strong as inference",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:17:32Z",
      "updatedAt": "2026-10-01T08:02:22Z",
      "preview": "## Brief\n\n**The question.** `fhir-harness/skills/fhir-ig-base/ig-publisher-reduction.md` §\"P3 is\nBLOCKED on more than a fork\" infers, from 458 export artefacts carrying no dependency\nedges, that **P3 depends on `ig-publisher-fork` delivering the logic-layer edges**.\n`cat-harness/content/pipeline/fsh-cone.ts` — merged on `main`, from archived bean `267x` —\nbuilds a dependency graph from IG **source",
      "file": "beans/defs/folio-assistant-f4gj--measured-fsh-cone-is-a-second-route-to-logic-layer.md"
    },
    {
      "id": "folio-assistant-f6gq",
      "title": "PACKAGE IMPORTS ACROSS LAYERS: replace ../ climbs between repositories with package imports, bottom-up (separation lesson 5)",
      "status": "completed",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T15:29:13Z",
      "updatedAt": "2026-10-16T14:35:00Z",
      "preview": "Owner, 2026-10-09: \"go with option 1 and option 2 now\" — option 1 (who-iris resolves core through its in-checkout mount, who-iris PR 18) now, option 2 (package imports) as the target, built bottom-up.\n\nWhy: kg-separation lesson 5 says every cross-repository import MUST be a package import, never a `../` climb; nothing tracked it. Measured 2026-10-09, imports that climb into another repository: boo",
      "file": "beans/defs/folio-assistant-f6gq--package-imports-across-layers-separation-lesson-5.md"
    },
    {
      "id": "folio-assistant-f6r1",
      "title": "TRANSLATION CATALOGUES: 19 of 27 are provably not derivable, 8 undetermined — and the roundtrip test that says otherwise fails on known-good catalogues",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T09:59:36Z",
      "updatedAt": "2026-09-26T10:42:14Z",
      "preview": "Asked whether `main`'s 27 uncatalogued translations could be resolved by\nDERIVING their `.po` catalogues, rather than by recording their absence (which\nthe owner ruled out, bean `ngxj`) or by fresh authoring.\n\n**Answer: 19 provably not, 8 undetermined, 0 demonstrated derivable.** The\nundetermined 8 are undetermined *because the test that would decide them is\ninvalid* — see below. Three states, and",
      "file": "beans/defs/folio-assistant-f6r1--translation-catalogues-19-of-27-are-provably-not-d.md"
    },
    {
      "id": "folio-assistant-f8wp",
      "title": "Placement PR8: schemas regroup and move with their importers; library sources by group; residual gate",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [
        "folio-assistant-8lcl"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:01Z",
      "updatedAt": "2026-10-16T06:55:00Z",
      "preview": "Placement proposal §2 (owner rulings 2026-09-30 §6; process: review → resolve issues → staged PRs). Parent of PR0/PR1 is `9umr`; PR2–PR9 sit under the separation epic because D4 (owner, 2026-10-01, option 3) interleaves them with the split stages into one ordered sequence. Every PR: references move with the subject; generated trees regenerated, never hand-edited; `beans/**` not rewritten; kg-qa si",
      "file": "beans/defs/folio-assistant-f8wp--placement-pr8-schemas-regroup-and-move-with-their.md"
    },
    {
      "id": "folio-assistant-fc8y",
      "title": "state-drift.test.ts is intermittently red in a whole-file run, green in isolation",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T06:33:25Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Measured 2026-10-04 on `claude/beans-off-main-9ofm` (PR #2052), over an unmodified `driftOf`:\n\n- `bun test cat-harness/scripts/tests/state-drift.test.ts` → 18 pass, **1 fail**: *\"a file added on the BRANCH is drift too\"*, failing its `expect(row.state).toBe(\"drift\")`.\n- the same test with `-t` → pass.\n- the same whole file, re-run immediately → 19 pass.\n\nSo it is order- or state-dependent, not a w",
      "file": "beans/defs/folio-assistant-fc8y--state-drifttestts-is-intermittently-red-in-a-whole.md"
    },
    {
      "id": "folio-assistant-ff09",
      "title": "DOGFOOD test plan #1: certify the crdm-detect skill against a plan built from its existing 27-case run",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-3o5b"
      ],
      "createdAt": "2026-10-01T08:00:47Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Arc `3fva`, proposal §3.3 and §4 item 5.6. Blocked on the TEST PROCESS bean.\n\nThe skill it certifies is the one #203 asked for (CRDM: recognise a feature\nrequest and run a requirements process). #203 stays open until the owner\nauthorises closing it; this bean is where the work plan reaches it.\n\n`test/results/crdm-detect-eval.test-run.json` already holds 27 cases with precision and recall, plus a s",
      "file": "beans/defs/folio-assistant-ff09--dogfood-test-plan-1-certify-the-crdm-detect-skill.md"
    },
    {
      "id": "folio-assistant-ffu4",
      "title": "work-plan-restructure skill: taxonomy as data, a dry-run plan file, an owner gate, a reversible batched apply",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:09:14Z",
      "updatedAt": "2026-10-04T15:30:37Z",
      "preview": "Evidence: qou work-plan analysis 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). qou: 5,371 beans, 141 duplicate groups, ~307 open machine-generated template beans, 292 session-log epics. lsi-indexing says never apply in bulk; there is no sanctioned middle path between bulk and one bean at a time.\n\n## Done when\n- [x] skill text in cat-harness kg (sdlc-core), registere",
      "file": "beans/defs/folio-assistant-ffu4--work-plan-restructure-skill-taxonomy-as-data-a-dry.md"
    },
    {
      "id": "folio-assistant-ffv7",
      "title": "ASK DOWNSTREAM: would a kg-to-portal consumer read SPDX (SBOM or licence ids)? D1 of the SPDX proposal waits on it",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T10:44:28Z",
      "updatedAt": "2026-10-03T10:44:28Z",
      "preview": "Owner, 2026-10-03, after the SPDX 3 analysis (bean `sd5v`) found that **nothing\nconsumes an SPDX document** today: *\"Ask a consumer first\"*, then *\"leave a bean\nto ask downstream user feedback\"*.\n\n## Why this exists\n\nThe applicability proposal\n(`cat-harness/docs/proposals/spdx-3-applicability-2026-10-03.md`) rated a\nrelease SBOM and an SPDX `kg-to-portal` manifest as worth building **if** a\nconsum",
      "file": "beans/defs/folio-assistant-ffv7--ask-downstream-would-a-kg-to-portal-consumer-read.md"
    },
    {
      "id": "folio-assistant-fgkb",
      "title": "smart-base: clear qou/uploads once the bytes have a home",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2yyh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T08:35:28Z",
      "updatedAt": "2026-10-10T06:02:54Z",
      "preview": "Issue #877. The eight PDFs are in `litlfred/qou` as https://github.com/litlfred/qou/commit/a3d2266a1b08018af5f8f88c222c1e7b45e6a36c — a mathematics repository, which is not their home.\n\n**`deletion-requires-confirmation` governs and this is not the agent's call.** What follows is the report the skill requires: what would go, with sizes, and the evidence that nothing would be lost. Nothing has been",
      "file": "beans/defs/folio-assistant-fgkb--smart-base-clear-qouuploads-once-the-bytes-have-a.md"
    },
    {
      "id": "folio-assistant-fhov",
      "title": "ci:watch reports PASS on a THIN check set: 1 of 11 checks looks identical to all green",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T19:07:23Z",
      "updatedAt": "2026-09-30T19:48:42Z",
      "preview": "Found by the tool's own author, one session after building it, while using it\nto decide a merge. That is the interesting part: `check-verdict.ts` was written\nthis session **specifically** to stop CI state being misread, and it handled\nthe zero case on purpose while leaving the one case wide open.\n\n## Measured\n\nPR #1671, head `a3e27f6b0e1`, 2026-09-30:\n\n```\n$ bun run cat ci:watch a3e27f6b0e1\n19:05:",
      "file": "beans/defs/folio-assistant-fhov--ciwatch-reports-pass-on-a-thin-check-set-1-of-11-c.md"
    },
    {
      "id": "folio-assistant-fjwi",
      "title": "Where can the registration-chain check go in CI? Every placement today is masked or red on arrival",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T10:24:13Z",
      "updatedAt": "2026-09-26T11:23:18Z",
      "preview": "Split out of `v625` rather than blocking it: the command itself, its flags and\nits QA sidecar all landed, so the parent has work that can proceed. What cannot\nproceed without a decision is **whether the chain gets a CI gate, and where** —\nbecause every placement available today is either masked or red on arrival.\n\n## Why the obvious placement does not work\n\n`skill:register:check` runs the five `--",
      "file": "beans/defs/folio-assistant-fjwi--where-can-the-registration-chain-check-go-in-ci-ev.md"
    },
    {
      "id": "folio-assistant-fkqa",
      "title": "Agent memory target: Antigravity (agy) — implement now",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-31ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:35:25Z",
      "updatedAt": "2026-10-07T12:00:21Z",
      "preview": "Owner 2026-10-06: implement the Antigravity target now (other vendors beaned, not implemented). Antigravity reads AGENTS.md / GEMINI.md and workspace rules under .agents/rules/*.md (older .agent/rules), with activation modes (always-on, model-decided, @-mention, glob) and a size cap reported as ~12,000 chars — format UNVERIFIED (vendor docs blocked from the build container; research in 31ni). No p",
      "file": "beans/defs/folio-assistant-fkqa--agent-memory-target-antigravity-agy-implement-now.md"
    },
    {
      "id": "folio-assistant-fm9n",
      "title": "Data dictionary web annex: in the KG, loaded dynamically (not the full workbook)",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T16:13:16Z",
      "updatedAt": "2026-10-10T16:47:37Z",
      "preview": "Owner 2026-10-10: dictionary.html should carry the data dictionary as a web annex. It should be in the KG and loaded dynamically, not as the full Excel. Existing infra:\n- cat-harness-tools/scripts/tabular-records.py (stdlib xlsx reader, writes library/<slug>/tabular.jsonld: sheets, headers, shape);\n- CSVW (tabular-csvw.test.ts);\n- docs/assets/js/kg-render.js (three-state fetch + render);\n- docs/as",
      "file": "beans/defs/folio-assistant-fm9n--data-dictionary-web-annex-in-the-kg-loaded-dynamic.md"
    },
    {
      "id": "folio-assistant-fmdl",
      "title": "SPEED-UP: resolution-across-needs.test.ts spawns each kg-audit twice, serially — 92 s of the slowest shard",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T08:20:52Z",
      "updatedAt": "2026-10-03T08:20:52Z",
      "preview": "Follow-up to `ksg3` (and `dlqu`): after both, the longest job in Code-quality\ngates is `TypeScript — bun test, shard 2/4` at 223 s (shard 3/4: 68 s), measured\non #1950's run at `12ae9dc75`.\n\n92 s of that shard is ONE file, `cat-harness/scripts/tests/resolution-across-needs.test.ts`\n(per-file times from the shard's log). A shard moves whole files, so no\nrebalancing can shorten it — the file itself ",
      "file": "beans/defs/folio-assistant-fmdl--speed-up-resolution-across-needstestts-spawns-each.md"
    },
    {
      "id": "folio-assistant-fnqn",
      "title": "INGEST: WPRO style guide specimen pages (Lorem ipsum, font, table and graph samples) read as prose",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T21:51:12Z",
      "updatedAt": "2026-09-29T23:40:09Z",
      "preview": "wpr-rdo-2020-003-eng pp. 29-31 (Lorem-ipsum cover samples, cosine ~1.0), pp. 14-15 (font specimens), pp. 20-22 (table/graph samples), p. 28 (Latin filler) are the source's own specimens, not prose — yet they feed summaries (x80s), translation and every index as ordinary text. Done when: a section/block can be marked specimen/non-prose (the way image roles mark decorative images) and these pages ca",
      "file": "beans/defs/folio-assistant-fnqn--ingest-wpro-style-guide-specimen-pages-lorem-ipsum.md"
    },
    {
      "id": "folio-assistant-fnx4",
      "title": "KG SUBSCRIPTIONS: subscribe to an external KG, materialise chosen subgraphs, assets and harnesses; known substrates; visualizer",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T22:54:31Z",
      "updatedAt": "2026-10-02T22:49:41Z",
      "preview": "Issue #1719. Proposal: `cat-harness/docs/proposals/kg-subscriptions.md`.\n\nOwner, 2026-09-30: subscribe to external KGs (bootstrap-conformant, with at least one harness); materialise some or all subgraphs and assets; instantiate harnesses so they reach the navbar; list known substrates in cat-harness; a visualizer; an MVP inside the folio separation.\n\n## Done when\n- [x] 1 schema: `subscriptions` on",
      "file": "beans/defs/folio-assistant-fnx4--kg-subscriptions-subscribe-to-an-external-kg-mater.md"
    },
    {
      "id": "folio-assistant-foaq",
      "title": "fsh-guts:viz renders untracked local mount files, so a regen from a dirty mount stales CI",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T18:00:42Z",
      "updatedAt": "2026-10-07T11:50:40Z",
      "preview": "Measured 2026-10-04 on #2103 (e33c7280eb): `merge:main`'s regen ran `fsh-guts:viz` against the LOCAL fsh-guts mount, which held workflow-engine logs written \"capture undetermined, so local only\" (`fsh-guts/logs/*.json` from `workflow_complete`). The viewer page `cat-harness/docs/fsh-guts/index.md` gained 43 lines for those files; CI's clean mount (147 files) saw it as stale and `fsh-guts:viz:check",
      "file": "beans/defs/folio-assistant-foaq--fsh-gutsviz-renders-untracked-local-mount-files-so.md"
    },
    {
      "id": "folio-assistant-fpmn",
      "title": "CONNECTED AGENT: run W7 (incremental rebuild, CQL and FML probes) and the W8 full builds on smart-immunizations, with tx.fhir.org",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-a9tx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T16:45:00Z",
      "updatedAt": "2026-10-23T17:01:00Z",
      "preview": "Follows bean `folio-assistant-qzex` (round 2 done). It runs on the owner's machine,\nbecause cloud sessions cannot reach tx.fhir.org or packages.fhir.org. **You only build\nand push.** The cloud thread \"Publisher AST\" does the diffs and the review\n(`ig-ast.ts diff`, `ig-ast-delta-review.bpmn`).\n\nThe rules are as in qzex and a9tx:\n- do not edit Publisher or library code;\n- no GitHub Actions;\n- open n",
      "file": "beans/defs/folio-assistant-fpmn--connected-agent-run-w7-incremental-rebuild-and-w8.md"
    },
    {
      "id": "folio-assistant-fq5u",
      "title": "DOWNSTREAM TOOLS IN QA: a run record per downstream tool, and QA goes stale when its inputs change — LSI first",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T23:46:01Z",
      "updatedAt": "2026-09-30T17:25:23Z",
      "preview": "**Owner, 2026-09-29:** *\"also how do we know tools like LSI are run succesfully... not primary to pieple, but downstream. should be part of QA process (dependences = stall QA)\"* — then chose **\"Generalize after #1483\"**.\n\n## What exists (measured 2026-09-29)\n- LSI (latent semantic index) is draft PR #1483 / issue #1482 / bean `ansc`, branch `claude/brave-hawking-511rrx`, NOT merged. It adds kg:aud",
      "file": "beans/defs/folio-assistant-fq5u--downstream-tools-in-qa-a-run-record-per-downstream.md"
    },
    {
      "id": "folio-assistant-fs43",
      "title": "ARC: state graphs on a declared 'state' branch — beans, workflow instances, todos, issue-marks off main; 'which ref holds this graph' becomes a declaration",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:57:54Z",
      "updatedAt": "2026-10-21T19:15:00Z",
      "preview": "Owner 2026-10-02: a special branch for state-based KG content (todos, beans), declared as a sub-graph, as a general practice for managing a KG and its generated content (rendered content = sub-graph linking back to the primary content graph). Review processes and adjust.\n\nProposal, inventory, workplan and decisions D1-D4: cat-harness/docs/proposals/state-branch-2026-10-02.md.\nGeneralises arc 3fva ",
      "file": "beans/defs/folio-assistant-fs43--arc-state-graphs-on-a-declared-state-branch-beans.md"
    },
    {
      "id": "folio-assistant-ftu0",
      "title": "GLOSSARY: WHO guideline terms — 'quality of the evidence' (77) vs 'certainty of the evidence' (1) as prefLabel/altLabel, and who owns the glossary",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-lqo9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T21:51:12Z",
      "updatedAt": "2026-09-30T00:27:36Z",
      "preview": "The Handbook itself names the alternatives (sec-153: quality of the evidence / certainty / confidence in the estimates of effect) — the evidence for the altLabel is that sentence, not a cosine. Other checked pairs: health care / health-care / healthcare (6/14/2); peer vs external review (24/25 — possibly different concepts, do not merge). No -isation drift (all 9 are proper names). Neither who-iri",
      "file": "beans/defs/folio-assistant-ftu0--glossary-who-guideline-terms-quality-of-the-eviden.md"
    },
    {
      "id": "folio-assistant-fwtz",
      "title": "docs-site must rebuild when the bean branch moves (ref + concurrency)",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T06:29:09Z",
      "updatedAt": "2026-10-23T16:40:00Z",
      "preview": "Arc fs43 §4 `site` row, second half. `docs-site.yml` now MOUNTS the tip-keyed graphs before the generators run (PR #2052), so the build reads the work plan wherever it lives. What is missing is the TRIGGER: after the cutover a bean edit is a push to `cat/cat-harness/beans` and nothing rebuilds the site.\n\nAdding `branches: [main, cat/cat-harness/beans]` is NOT the fix on its own, and that is the fi",
      "file": "beans/defs/folio-assistant-fwtz--docs-site-must-rebuild-when-the-bean-branch-moves.md"
    },
    {
      "id": "folio-assistant-fx5r",
      "title": "The PR endpoint keeps serving a merged PR's pre-merge view, and merge_pull_request reports success on it",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T18:09:14Z",
      "updatedAt": "2026-09-26T12:12:45Z",
      "preview": "## What happened, 2026-09-25\n\nI reported merging PR #1317. **It had been merged an hour earlier, by somebody\nelse.** Every check I made before saying so came from the PR endpoint, and the\nPR endpoint was serving a view from before the merge — with nothing marking it\nstale.\n\n## The measurements, in the order they misled me\n\nPR #1317's true state, read later from the same endpoint:\n\n```\nstate=closed",
      "file": "beans/defs/folio-assistant-fx5r--the-pr-endpoint-keeps-serving-a-merged-prs-pre-mer.md"
    },
    {
      "id": "folio-assistant-fz39",
      "title": "DOCUMENT SITE: Markdown tables render as raw pipe text — build-document-site has no GFM (needs remark-gfm; owner decides)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T18:00:43Z",
      "updatedAt": "2026-09-23T21:53:32Z",
      "preview": "Found by the ojcx rehearsal, 2026-09-23. A document folio's `table` block, with its rows written as a Markdown table in `<block>.md`, renders in the staging site as a paragraph of raw `| a | b |` text, not as a `<table>`.\n\n**Cause:** `cat-harness/scripts/build-document-site.ts` runs `remark().use(remarkHtml)` without GitHub-flavoured Markdown, so pipe tables, strikethrough and task lists are not p",
      "file": "beans/defs/folio-assistant-fz39--document-site-markdown-tables-render-as-raw-pipe-t.md"
    },
    {
      "id": "folio-assistant-fz79",
      "title": "skills:docs refuses at cat-harness + cat-harness-tools main: skill-instructions/glossary-terms.md and review-comments.md are produced by no source",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-ml9h",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T17:19:46Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "Found by lane A running skill:register in an index composed from cat-harness, cat-harness-tools and sci main (2026-10-10). The chain stops at skills:docs: two pages in cat-harness/docs/reference/skill-instructions/ carry a 'Generated from' banner naming a source that publishes nothing. The script cannot tell a deleted skill from an undeclared directory (bean 3x2o) and removes nothing.\n\n## Done whe",
      "file": "beans/defs/folio-assistant-fz79--skillsdocs-refuses-at-cat-harness-cat-harness-tool.md"
    },
    {
      "id": "folio-assistant-g196",
      "title": "Every preview stores a full copy of the site because per-preview facts are baked into every page",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T12:53:43Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "**In one sentence:** every staging preview stores a full ~37.5 MB copy of the\nsite because three per-preview facts are baked into all ~530 pages, so git's\ncontent-hash deduplication has nothing to grip — and moving those facts into one\nsmall data file read in the browser would turn 530 differing files into one.\n[View this bean](https://github.com/litlfred/folio-assistant/blob/main/beans/defs/folio",
      "file": "beans/defs/folio-assistant-g196--every-preview-stores-a-full-copy-of-the-site-becau.md"
    },
    {
      "id": "folio-assistant-g2sv",
      "title": "folio-assistant-sci.json declares no skills directory, so its ~70 paper-adapter skills are reachable only through known-skills.ts",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-9umr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:09:14Z",
      "updatedAt": "2026-10-04T15:30:37Z",
      "preview": "Evidence: qou work-plan analysis 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). folio-assistant-sci/skills/ holds the paper adapter, but folio-assistant-sci/folio-assistant-sci.json has no kg entry for it: present but undeclared, the inverse of dh4f.\n\n## Done when\n- [x] the directory is declared as a kg graph per directory-conventions\n- [x] skill_list / LOCAL_PACKAGE",
      "file": "beans/defs/folio-assistant-g2sv--folio-assistant-scijson-declares-no-skills-directo.md"
    },
    {
      "id": "folio-assistant-g3h7",
      "title": "MAIN RED: external-schema registry lists opengroup-archimate-3.0 but no instance declares a use of it; the committed external-schemas page has 26 rows for 27 specs",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-ml9h",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T16:55:29Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "Found on folio-assistant#2531, 2026-10-10. cat-harness-tools/test/coordinator/external-schemas-viz-checkout.test.ts fails 2 tests at main's own pins (cat-harness a89998b, cat-harness-tools a9e699c) — reproduced locally with main's index.lock, so every folio-assistant PR's bun test shard 3 is red.\n\n- 'every specification has a declared user': undeclared = [opengroup-archimate-3.0]\n- 'every row's li",
      "file": "beans/defs/folio-assistant-g3h7--main-red-external-schema-registry-lists-opengroup.md"
    },
    {
      "id": "folio-assistant-g43f",
      "title": "WORKTREE-CONTAMINATED SWEEPS: two more root-walking checks descend into .claude/worktrees and redden bun test for every concurrent session — vpek's general question, answered yes",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T14:13:37Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Bean `vpek` fixed one instance of this — `eslint.config.mjs` not ignoring\n`.claude/worktrees/**` — and left the general question open on purpose:\n\n> - [ ] The **general** question is answered rather than only this instance:\n>       are there other tools that walk the tree from the repository root and\n>       would find a worktree there? … Whether any of them has this problem is\n>       **not deter",
      "file": "beans/defs/folio-assistant-g43f--worktree-contaminated-sweeps-two-more-root-walking.md"
    },
    {
      "id": "folio-assistant-g4o0",
      "title": "SEARCH BAND: search + locale selector in the fa-glass-band; no overlap, magnifier right, one-click toggle",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T15:09:32Z",
      "updatedAt": "2026-10-06T05:23:38Z",
      "preview": "Owner, 2026-10-05 (two screenshots): the open search draws its 'Search everywhere' status line on top of the input; the magnifier jumps left when open; opening search pushes the locale selector to the next line. Wanted: status line below the input, magnifier on the right in both states, one button toggles, text preserved, locale selector on the same line, both controls in the fa-glass-band, Folio ",
      "file": "beans/defs/folio-assistant-g4o0--search-band-search-locale-selector-in-the-fa-glass.md"
    },
    {
      "id": "folio-assistant-g4oc",
      "title": "Upstream DAK post-processing defects: view-page tabs, stale schemas/ copies, dead hub links",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T17:05:28Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "Owner, 2026-10-01: keep folio-assistant's consistent tab bar on the DAK view pages and record the Publisher-side defects as upstream issues. **Issues are disabled on both `litlfred/smart-base` and `litlfred/smart-trust`** (the API answers 410), so they are recorded here until the owner says where they go.\n\nMeasured on `litlfred/smart-trust` `gh-pages` at `9bd9643`, a build of `main` at `25771f6`. ",
      "file": "beans/defs/folio-assistant-g4oc--upstream-dak-post-processing-defects-view-page-tab.md"
    },
    {
      "id": "folio-assistant-g5kt",
      "title": "REGEN FIXPOINT CAP IS SILENT: a run that does not converge prints CAP REACHED and exits 0, and the 3-pass default is below the measured need",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T07:15:24Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "Follow-on to 14ve, which fixed 'one pass only'. Two defects remain in the same loop.\n\n1. SILENT NON-CONVERGENCE (the 1xhc shape). regen-after-merge.ts computes `settled` and prints '— CAP REACHED: the last pass still ran a writer, so the tree may not be settled', then exits on `unrepaired + no-writer` ONLY. `settled` is never consulted. So a run that genuinely could not reach a fixed point exits 0",
      "file": "beans/defs/folio-assistant-g5kt--regen-fixpoint-cap-is-silent-a-run-that-does-not-c.md"
    },
    {
      "id": "folio-assistant-g5o5",
      "title": "kg-skills glossary stale on main since 2c295f8ac06 — and CI reads the MERGE, which is why no local probe saw it",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T14:02:57Z",
      "updatedAt": "2026-09-26T14:28:14Z",
      "preview": "## What was measured, 2026-09-26, on PR #1405\n\nCI step 15 of the `gates` job — `glossary page and SKOS` — failed on `ba7af05f6a1`:\n\n    ✗ stale: cat-harness/docs/glossary/skills/index.md\n    ✗ stale: cat-harness/docs/assets/glossary/cat-harness--kg-skills.skos.jsonld\n    ✗ stale: folio-assistant-core/glossary/generated/cat-harness/kg-skills.glossary.json\n    Run `bun run cat glossary:page` and com",
      "file": "beans/defs/folio-assistant-g5o5--checkglossary-calls-kg-skills-stale-in-ci-and-curr.md"
    },
    {
      "id": "folio-assistant-g8jp",
      "title": "who-iris cutover: litlfred/who-iris becomes the (temporary) authoritative source; folio-assistant reads it by remote subscription",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T19:12:02Z",
      "updatedAt": "2026-10-07T21:06:27Z",
      "preview": "Owner rulings 2026-10-06: 'go ahead and move who-iris/ repo over to litlfred/who-iris where it is (temporary) authoritative source. but i still want to see remote subscription under litlfred/folio-assistant'; 'i dont want git submodules!'; 'fix gaps and go' (code deps: option 1 — the who-iris repo pins the monorepo as a package, github:litlfred/folio-assistant#<sha>, switching to litlfred/cat-harn",
      "file": "beans/defs/folio-assistant-g8jp--who-iris-cutover-litlfredwho-iris-becomes-the-temp.md"
    },
    {
      "id": "folio-assistant-g9r2",
      "title": "who-iris replica: top-centre handle covers the INGESTED COPY banner and a link; 3 replica pages scroll sideways at 390",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T23:07:47Z",
      "updatedAt": "2026-09-30T16:12:46Z",
      "preview": "Measured 2026-09-29 on a local build of main 35402147f.\n\n1. **The handle is back over the replica's own banner.** 2vne (owner 2026-09-27) moved the ▾ Folio handle back to top-centre as a short pill. On `who-iris/collection-collection-hq-publications.html` at 390×844 it covers the \"INGESTED COPY — not WHO\" text, which is 269z's original defect. At 1280×800 its box contains the centre of the \"folio-",
      "file": "beans/defs/folio-assistant-g9r2--who-iris-replica-top-centre-handle-covers-the-inge.md"
    },
    {
      "id": "folio-assistant-ga3q",
      "title": "WAIVER: a human can waive a confirmation right, scoped to a session or a process run",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T18:51:21Z",
      "updatedAt": "2026-10-09T13:22:00Z",
      "preview": "The owner, 2026-09-20, while the `bbbl` decision was being implemented:\n\n> *\"human can waive cinfirmation rights (e.g. for session, for process run)\"*\n>\n> *\"context depedndent, should be in memories.  (update skills)\"*\n\n## What this changes\n\nSeveral rules here stop an agent and hand a decision back: merging to `main`,\nremoving a durable artefact, spawning a swarm, closing a bean whose evidence\nthe",
      "file": "beans/defs/folio-assistant-ga3q--waiver-a-human-can-waive-a-confirmation-right-scop.md"
    },
    {
      "id": "folio-assistant-ga6u",
      "title": "S3 drain in-flight PRs: #1756, #1747, #1753, #1581, #1735",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-hx65"
      ],
      "createdAt": "2026-10-01T08:14:33Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "## Done when\n- [x] #1756 merged (fnx4 slices 5+6)  — merged 2026-10-02T23:12:43Z, merge commit\n  `edc167d24a`. Its head carried 20 check runs: 14 success, 6 skipped, **0 failure**.\n- [x] #1747 merged (cmsl step 3)  — closed as superseded 2026-10-01T12:17:13Z (owner decision on the PR); its content landed via #1769 (merged 2026-10-01T12:17:11Z), the remainder went to cmsl (completed)\n- [x] #1753 me",
      "file": "beans/defs/folio-assistant-ga6u--s3-drain-in-flight-prs-1756-1747-1753-1581-1735.md"
    },
    {
      "id": "folio-assistant-gdni",
      "title": "merge:guard check 2 attributes a ready flip to the steward by time proximity",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T19:57:42Z",
      "updatedAt": "2026-10-07T11:50:40Z",
      "preview": "Measured 2026-10-04: `merge:guard` check 2 refused the Merge Manager (session 019gRX6w) on **#2107** (ready flip 18:22:19Z) and **#1918** (ready flip 16:42:20Z) with \"[defect] marked ready … beside a comment signed by the MERGING session\". In both cases the PR's own session flipped it ready; the Merge Manager's comment near that time was an ACK / queue / hand-back note, not the flip. The owner's t",
      "file": "beans/defs/folio-assistant-gdni--mergeguard-check-2-attributes-a-ready-flip-to-the.md"
    },
    {
      "id": "folio-assistant-ghgn",
      "title": "ORPHANED VIEWER PAGES: the schema-viewer and UML generators never remove the page of a retired instance (detangle's is still published)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-88mg",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T05:40:27Z",
      "updatedAt": "2026-09-24T19:38:13Z",
      "preview": "Found 2026-09-24 while retiring `bootstrap-tools` (bean 319n). `gen-schema-viz.ts` and `gen-uml-overview.ts` write one page per instance but never remove the page of an instance that no longer exists. So a retired instance keeps a published page that nothing links to.\n\n- `bootstrap-tools`: its two orphans (`cat-harness/docs/cat-harness/schemas/bootstrap-tools/index.html` and `cat-harness/docs/uml/",
      "file": "beans/defs/folio-assistant-ghgn--orphaned-viewer-pages-the-schema-viewer-and-uml-ge.md"
    },
    {
      "id": "folio-assistant-giiw",
      "title": "ARABIC (RTL) DISPLAY: the unverified-translation notice is English set right-to-left — reordered and clipped; audit the rest of the chrome under dir=rtl",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T07:58:59Z",
      "updatedAt": "2026-10-06T16:54:18Z",
      "preview": "Owner, 2026-10-06, from a screenshot of the staging preview of #2261 (Arabic selected): \"note bean up arabic display issues\".\n\n## Observed (screenshot, AR active in the language selector)\n- The one-line notice reads \"…matically and has — **Unverified translation** ⚠\": the English sentence is laid out right-to-left, so its start ('⚠ Unverified translation —') sits at the RIGHT end, and the one-line",
      "file": "beans/defs/folio-assistant-giiw--arabic-rtl-display-the-unverified-translation-noti.md"
    },
    {
      "id": "folio-assistant-gkv6",
      "title": "NAVBAR ROW COUNTS: beans and todos icons carry count badges, as fsh-guts does",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T15:14:38Z",
      "updatedAt": "2026-10-06T05:55:27Z",
      "preview": "Owner, 2026-10-05: \"why no count on beans and todos on LHS top navbar as badges like fsh-guts has?\" Find how fsh-guts draws the count badges, then make the shared row (navbar-row.js) show the bean and todo counts. Must work in both FULL and LITE row modes.\n\n_2026-10-05T15:53:58Z_ — Claimed by claude/vibrant-darwin-r6im60 — pushed to main so sibling sessions see it before this branch has a PR (bean",
      "file": "beans/defs/folio-assistant-gkv6--navbar-row-counts-beans-and-todos-icons-carry-coun.md"
    },
    {
      "id": "folio-assistant-gl5v",
      "title": "remote-KG trust gate in materialize-remote and dependency resolution",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-ieum",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T22:03:25Z",
      "updatedAt": "2026-10-08T03:00:00Z",
      "preview": "## Landed evidence\n- Completed as part of epic `folio-assistant-ieum` on main (commit `8ebfc9773ddef96fd58e50d8ab8826d2323ae3d7`, PR #2504).\n- `schemas/mount-trust.ts` and `mount:remote` trust gate verified on origin/main.",
      "file": "beans/defs/folio-assistant-gl5v--remote-kg-trust-gate-in-materialize-remote-and-dep.md"
    },
    {
      "id": "folio-assistant-gm9g",
      "title": "render:bpmn:check on bootstrap/processes/*.svg — two generators, one artefact; FIXED by #1663, and my 'flap' diagnosis retracted",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T18:57:39Z",
      "updatedAt": "2026-09-30T19:10:33Z",
      "preview": "**A regression from `oqdr`'s fix**, which is `completed` and covered exactly\nthese three files from the opposite direction: *\"rendered by nothing since the\nsplit\"*. They are now rendered by **two** generators that disagree.\n\n## Measured\n\n`End-to-end + accessibility (hard)` failed on PR #1664, at `render:bpmn:check`:\n\n```\n✗ bootstrap/processes/discussion.svg is stale\n✗ bootstrap/processes/initializ",
      "file": "beans/defs/folio-assistant-gm9g--main-is-red-renderbpmncheck-judges-bootstrapproces.md"
    },
    {
      "id": "folio-assistant-gnnj",
      "title": "merge-guard check 5 stops waiting on Feature Staging (owner ruling 2026-10-05)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T07:36:45Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Owner ruling 2026-10-05, option 1 of the staging-speed report (session_01VfkKocGaQW7Msro2t5S66U): merge-guard check 5 no longer WAITS on Feature Staging. Previews keep publishing on their own schedule; #1956's push limits stay as they are.\n\n## Measured (feature-staging.yml, 06:00-07:10Z 2026-10-05)\nBuild 225-407 s; runner queue 4-49 s; deploy step (the #1956 gate wait + push) up to 2483 s (41 min)",
      "file": "beans/defs/folio-assistant-gnnj--merge-guard-check-5-stops-waiting-on-feature-stagi.md"
    },
    {
      "id": "folio-assistant-gnqa",
      "title": "library visualiser: 6 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-10-02T07:14:42Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/library/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **Five columns are off-screen even at desktop width.** The page action is now reachable: \"Pull out to folio\" moved to the first cell, so finding 1 of the earlie",
      "file": "beans/defs/folio-assistant-gnqa--library-visualiser-6-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-gp2f",
      "title": "PAGE WEIGHT: move per-page nav, harness bar, icons, scripts and IG chrome CSS into shared cached assets (#1885)",
      "status": "in-progress",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:39:55Z",
      "updatedAt": "2026-10-23T16:20:00Z",
      "preview": "Issue #1885.\n\nOwner rulings, 2026-10-02:\n- \"~230KB per IG page mostly navigation/styling overhead... can we condense into common styling/libraries? so page size is small?\"\n- \"1 do all.\"\n- \"first document workplan and /coordinate in case active work on pages happening\"\n- \"(in genreal update agent-agent coorindation/hadover skills - if you are working on a refactor of the platform, review active age",
      "file": "beans/defs/folio-assistant-gp2f--page-weight-move-per-page-nav-harness-bar-icons-sc.md"
    },
    {
      "id": "folio-assistant-gpbc",
      "title": "Graphs and Folders are one heading, with the count badge",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T14:39:33Z",
      "updatedAt": "2026-10-06T05:55:27Z",
      "preview": "Owner, 2026-10-05: 'graphs containing ONLY folders is weird. combine w/ badge of count.' mountSidebarRail wraps mountInstanceGraphs' 'Folders N' details in a second 'Graphs' details. Make one disclosure titled Graphs carrying the count.\n\n## Done when\n- [ ] one 'Graphs N' disclosure on the theme sidebar; the rail already has one\n- [ ] e2e updated\n\n_2026-10-05T15:25:10Z_ — Claimed by claude/vibrant-",
      "file": "beans/defs/folio-assistant-gpbc--graphs-and-folders-are-one-heading-with-the-count.md"
    },
    {
      "id": "folio-assistant-gpdo",
      "title": "COMPILED-ARTEFACT CACHING: .olean for mathlib, and the same shape for sushi/FHIR -> AST",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T09:01:32Z",
      "updatedAt": "2026-09-23T02:45:00Z",
      "preview": "Owner, 2026-09-20: 'noting cacheing olean stragety for \"compiled/compuable\" data sources whchich will apply to sushi/fhr assets -> AST in planned FHIR publication iterartive issue.'\n\nA THIRD KIND OF REMOTE CONTENT, and `materialization.ts` currently has two purposes (`working`, `archival`) with no room for it. A COMPILED artefact is neither:\n- it is DERIVED, so it is not archival — the source is e",
      "file": "beans/defs/folio-assistant-gpdo--compiled-artefact-caching-olean-for-mathlib-and-th.md"
    },
    {
      "id": "folio-assistant-gr0r",
      "title": "A link into the bean store breaks when the bean is ARCHIVED — the path moves, nothing re-points it",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:21:47Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Found 2026-09-25 while closing `mi97`'s bean-store box.\n\n`docs/translation-support.md` links four beans. Three are in `beans/defs/`;\n`folio-assistant-p2en` is `completed` and lives in `beans/defs/archive/`, so\nthe link written when it was open now points at nothing.\n\n**This is not a typo, it is a shape.** Completing a bean MOVES its file, and\nevery reference to that file — from a document, an issu",
      "file": "beans/defs/folio-assistant-gr0r--a-link-into-the-bean-store-breaks-when-the-bean-is.md"
    },
    {
      "id": "folio-assistant-gs0u",
      "title": "CodeAgent (2402.02172v5): agentic code review as a PRE-MERGE gate — extract, attack, and test against nok9",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:15:27Z",
      "updatedAt": "2026-10-09T17:27:00Z",
      "preview": "Ingest + critical analysis. 35pp. Bears on bean nok9 (MERGE GATE: agentic adversarial review) and the owner's 2026-10-02 ask: full code agentic review before merge to main.\n\n## Closed 2026-10-09\n\n- **Branch**: `claude/gs0u-codeagent-ingest`\n- **Commit**: `bc4905e4349b174dc6bf5215407cd05023eec861` (`feat(library): ingest arXiv:2402.02172v5 and integrate CodeAgent pre-merge review analysis (folio-as",
      "file": "beans/defs/folio-assistant-gs0u--codeagent-240202172v5-agentic-code-review-as-a-pre.md"
    },
    {
      "id": "folio-assistant-gtx4",
      "title": "FALSE PROVENANCE: qa-agent-write defaults agent_model to a stale literal, writing a model that did not do the work into committed sidecars",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:52:42Z",
      "updatedAt": "2026-10-07T11:50:39Z",
      "preview": "## The defect, verified first-hand 2026-10-02\n\n`cat-harness/src/qa-agent-write.ts:142-143`:\n\n```ts\nconst model = arg(\"model\") ?? \"claude-opus-4-8\";\nconst skill = arg(\"skill\") ?? \"local/qa-agent-drain\";\n```\n\n`:204-210` writes them straight into the committed sidecar:\n\n```ts\n  reviewer: {\n    kind: \"agent\",\n    id: skill,\n    agent_model: model,\n    agent_date: today,\n    agent_skill: skill,\n  },\n``",
      "file": "beans/defs/folio-assistant-gtx4--false-provenance-qa-agent-write-defaults-agent-mod.md"
    },
    {
      "id": "folio-assistant-gurh",
      "title": "MAIN RED 2026-10-01: Code-quality gates 12 consecutive failures since #1725, Docs site red — watchdog issue #1755",
      "status": "completed",
      "type": "bug",
      "priority": "critical",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:00:46Z",
      "updatedAt": "2026-10-06T06:09:22Z",
      "preview": "Arc `3fva`, proposal `cat-harness/docs/proposals/qa-reports-branch-and-test-process-2026-10-01.md` §4 item 0.1. Measured 2026-10-01 at about 07:50Z, main `61b1e747`.\n\nThe last green Code-quality run was `27067b3fcb0` (#1725, 07:11Z). Since then main has failed 12 times in a row. The handover's \"red from #1743\" is out of date: #1725 turned it green, and it went red again from `a43d3b4e297` on.\n\nFai",
      "file": "beans/defs/folio-assistant-gurh--main-red-2026-10-01-code-quality-gates-12-consecut.md"
    },
    {
      "id": "folio-assistant-gw8h",
      "title": "A scripts/ -> cat-harness/scripts/ rewrite doubled six hrefs and left the glossary stale — two red checks on every open PR, one cause",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T14:16:58Z",
      "updatedAt": "2026-09-26T14:33:46Z",
      "preview": "## Two red checks on `main`, in two different jobs, from one edit\n\nMeasured 2026-09-26 in a clean worktree of pristine `origin/main` at\n`f850f721a06`, so neither is any PR's:\n\n| job | check | failure |\n|---|---|---|\n| `TypeScript — tests, lint, types (hard)` | `bun test` | `the entanglement report > the dangling category exists and is computed, not skipped` — 6 dangling links |\n| `Repository gates",
      "file": "beans/defs/folio-assistant-gw8h--a-scripts-cat-harnessscripts-rewrite-doubled-six-h.md"
    },
    {
      "id": "folio-assistant-gxvk",
      "title": "READER AUDIT: every consumer of committed QA results, classified by how it must change when QA leaves main — with one fix bean per reader family",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:15:59Z",
      "updatedAt": "2026-10-06T06:09:22Z",
      "preview": "Owner request, 2026-10-01: \"do an audit report/analysis on readers and queue up fix them.\" Arc `3fva`.\n\nScope: every code path, workflow step, MCP tool, skill and test that READS a file under any `*/test/results/**` or `test/health/results/**`. Writers are in scope only where they also read the prior file.\n\nThe output is a report, `cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md`, plus o",
      "file": "beans/defs/folio-assistant-gxvk--reader-audit-every-consumer-of-committed-qa-result.md"
    },
    {
      "id": "folio-assistant-gyoj",
      "title": "Library viewer omits 3 of folio-assistant-sci's 4 library items",
      "status": "scrapped",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T09:08:04Z",
      "updatedAt": "2026-09-30T10:22:02Z",
      "preview": "Measured 2026-09-30 while linking methodology sources (bean qgjh). folio-assistant-sci/library/ holds four complete items — arxiv-2406.01940v2, arxiv-2601.22554v1, arxiv-2602.16554v1, milnorlink — each with manifest.jsonld and structure.json. The library projection (cat-harness/docs/assets/library/index.json, written by gen-library-viz.ts) lists only milnorlink for that instance, and its tile says",
      "file": "beans/defs/folio-assistant-gyoj--library-viewer-omits-3-of-folio-assistant-scis-4-l.md"
    },
    {
      "id": "folio-assistant-gz47",
      "title": "Audit every declared subgraph for literal paths in tests and consumers: check:declared-paths sees only cat-harness's own declarations and code",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-z9hh"
      ],
      "createdAt": "2026-10-03T08:51:59Z",
      "updatedAt": "2026-10-04T13:34:36Z",
      "preview": "Owner, 2026-10-03: \"audit other declared sub-graphs. may have same issue with tests or other consumers\". The trigger was fsh-guts (9c7h): five tests and one writer named `fsh-guts/` by path, and #1945 and #1948 moved them onto the declaration (`fshGutsDirectory`). The owner's 2026-10-03 content-source ruling makes the class general: ANY declared subgraph's source may move (directory → branch → gra",
      "file": "beans/defs/folio-assistant-gz47--audit-every-declared-subgraph-for-literal-paths-in.md"
    },
    {
      "id": "folio-assistant-gzkt",
      "title": "VOCAB DRIFT D4: library licence is an opaque @json literal, glossary licence is dcterms:license — one mapping row for both",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T08:07:15Z",
      "updatedAt": "2026-10-03T09:01:01Z",
      "preview": "Issue #1910 D4. Owner ruling 2026-10-03 (this session, selected option 'Yes, move it'): a library item's licence moves out of the opaque `@json` meta into `dcterms:license`, driven by the same vocab-mappings row the glossary uses. Unblocked: #1899 merged 2026-10-02T23:35Z.\n\n## Done when\n- [x] a library item's JSON-LD carries dcterms:license (IRI or literal as the glossary does), read from the voca",
      "file": "beans/defs/folio-assistant-gzkt--vocab-drift-d4-library-licence-is-an-opaque-json-l.md"
    },
    {
      "id": "folio-assistant-h1uq",
      "title": "WARN -> BLOCK NEEDS A NUMBER: no false-positive rate exists for any agentic reviewer, and only a warn-only phase can produce one",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T00:02:50Z",
      "updatedAt": "2026-10-09T18:14:00Z",
      "preview": "Split out of `5ge1` (the warn-only reconciliation), which is otherwise done.\nThe owner ruled the agentic merge review **warn-only** on 2026-10-02 and\nconfirmed it 2026-10-03: *\"warn only. proposal predates ruling, update it.\"*\nPromotion to a hard gate is explicitly left open (\"at least not for now\"), and\nthis bean is what that decision would have to read.\n\n## The gap, measured\n\n**No paper reports ",
      "file": "beans/defs/folio-assistant-h1uq--warn-block-needs-a-number-no-false-positive-rate-e.md"
    },
    {
      "id": "folio-assistant-h1wq",
      "title": "JUDGE the four typed-only kinds: health, todos, interaction, issue-marks",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T17:30:16Z",
      "updatedAt": "2026-09-24T17:40:31Z",
      "preview": "From `audit-coverage`'s `typed-only` finding. Four kinds declare a validator that\nparses their nodes, and nothing had an opinion about what those nodes SAY. The\nowner chose all four (2026-09-24), having been told the risk: `health` and\n`todos` already have machinery, so a criterion here could be a second answer to\na settled question.\n\n## Summary of Changes\n\n`cat-harness/scripts/check-harness-state",
      "file": "beans/defs/folio-assistant-h1wq--judge-the-four-typed-only-kinds-health-todos-inter.md"
    },
    {
      "id": "folio-assistant-h2s9",
      "title": "The sweep asks gh for mergeable, whose UNKNOWN means 'not computed yet' — and renders it as 'could not be read'",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T00:47:08Z",
      "updatedAt": "2026-10-07T05:12:00Z",
      "preview": "`sddf` fixed the sweep's advice by asking `gh pr view --json mergeable` before\nchoosing it. **That field is not a reliable discriminator**, and the first run\nafter the fix proved it.\n\n## Measured, on the first run carrying the fix\n\nRun 32 of `PRs without checks` (2026-09-21T23:41Z) — the first success after\nfive consecutive failures — commented on PR #731 with the **UNKNOWN** variant:\n\n> Its merge",
      "file": "beans/defs/folio-assistant-h2s9--the-sweep-asks-gh-for-mergeable-whose-unknown-mean.md"
    },
    {
      "id": "folio-assistant-h32d",
      "title": "Memory and todos: one schema, attachable to any KG node, stickies in the rendered folio",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-8jt6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T00:58:13Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "**Requirements capture, 2026-09-19.** Stated by the author; recorded verbatim in\nsubstance before any design, because it arrived as one long message and the\nauthor types with difficulty. Nothing here is my synthesis unless marked so.\n\nSupersedes the framing of `folio-assistant-7sf1` (move MEMORY.md into the kg\ngraph), which is now the narrow first slice of this.\n\n## 1. The model\n\n**Memory workflow",
      "file": "beans/defs/folio-assistant-h32d--memory-and-todos-one-schema-attachable-to-any-kg-n.md"
    },
    {
      "id": "folio-assistant-h3rw",
      "title": "Ingest three Lean-autoformalization papers into folio-assistant-sci (library + methodologies + skill pointers)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T21:44:37Z",
      "updatedAt": "2026-09-29T22:19:12Z",
      "preview": "Owner: 'review and ingest into skills and methodologies for lean formalziation as f-a-sci. as appropriate'. Papers: arXiv:2601.22554v1 (LeanArchitect), arXiv:2406.01940v2 (Process-Driven Autoformalization / FormL4), arXiv:2602.16554v1 (MerLean).\n\n## Todo\n- [x] Ingest the three PDFs into folio-assistant-sci/library (L1, images described, promoted)\n- [x] Declare folio-assistant-sci/methodologies/ an",
      "file": "beans/defs/folio-assistant-h3rw--ingest-three-lean-autoformalization-papers-into-fo.md"
    },
    {
      "id": "folio-assistant-h3tx",
      "title": "PHASE P4: the Publisher invoked for AST + QA only; a release still cut from a full build and saying so",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-a9tx"
      ],
      "createdAt": "2026-10-01T12:32:21Z",
      "updatedAt": "2026-10-23T14:20:00Z",
      "preview": "Phase P4 of `ig-publisher-reduction` (approved 2026-09-30 as written). Opened in the 2026-10-01 phased-transition review.\n\n**Exit criterion:** a release is still cut from a full build, and the artefact **says which** it came from.\n\n**Blocked by `a9tx`** (P3's prerequisite: AST measurements on a real IG; needs `packages.fhir.org`, unreachable from these sessions). Nothing to build before P3 lands, ",
      "file": "beans/defs/folio-assistant-h3tx--phase-p4-the-publisher-invoked-for-ast-qa-only-a-r.md"
    },
    {
      "id": "folio-assistant-h7ap",
      "title": "IG API hub: generic, in fhir-harness, rendered by the just-the-docs pipeline from the index (DAK API is configuration)",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-n3h9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T18:30:00Z",
      "updatedAt": "2026-10-23T18:42:00Z",
      "preview": "Owner, 2026-10-23, verbatim: \"dak-api we want to move to more like something like fhir-api in that it is not WHO DAK speicifc and should be in fhir-harness. I thought there was a bean for this already. Can you please investigate and pick up\" and \"This should be part of the just the docs, rendering pipeline changes\".\n\nRelated: d313 and izx8 (completed) renamed fhir-harness's rendering side to \"IG A",
      "file": "beans/defs/folio-assistant-h7ap--ig-api-hub-generic-in-fhir-harness-rendered-by-the-docs-pipeline.md"
    },
    {
      "id": "folio-assistant-h8ig",
      "title": "beans:claim must write the claim through the branch store — after the cutover claiming is impossible, not just unsafe",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T07:12:15Z",
      "updatedAt": "2026-10-09T16:17:00Z",
      "preview": "**This is the last hard blocker on the cutover (`p3ny`), and it was created by the fix for the previous one.**\n\n#2042 made `claim-bean` REFUSE once the bean graph is cut over, and that was the right call: pushing a claim to a default branch that no longer holds the store would land it where no reader looks, which is `35nj`'s measured failure (two sessions, 61 seconds apart, two PRs for one bean) w",
      "file": "beans/defs/folio-assistant-h8ig--beansclaim-must-write-the-claim-through-the-branch.md"
    },
    {
      "id": "folio-assistant-ha24",
      "title": "PHASE P1: IG navigation derived from sushi pages:/menu:, diffed against the Publisher's — per IG and combined",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:32:20Z",
      "updatedAt": "2026-10-09T17:41:03Z",
      "preview": "Phase P1 of `fhir-harness/skills/fhir-ig-base/ig-publisher-reduction.md` (approved 2026-09-30). Opened 2026-10-01 in the phased-transition review: closing `kn0t` had left the phase with no work-plan entry.\n\n**Exit criterion (the skill's words):** the derived navigation is diffed against the Publisher's, **one diff per IG**; each difference is **empty or explained entry by entry**; the per-IG diffs",
      "file": "beans/defs/folio-assistant-ha24--phase-p1-ig-navigation-derived-from-sushi-pagesmen.md"
    },
    {
      "id": "folio-assistant-hajp",
      "title": "INTERACTION: the asking rule is enforced by three layers, not remembered",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T19:31:09Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "The owner, 2026-09-20, after four questions that broke the rule:\n\n> *\"ask specific questiosn w/ context/ recommendations/pros/cons (see skills,\n> why not invoked?)\"*\n>\n> *\"fix skills so interaction modality would be triggered\"*\n>\n> *\"can we struture schema better to help enforce?\"*\n\n## The measurement\n\n`interaction-modality` §4.1 was STRICT and complete, and was broken the same day\nby the agent im",
      "file": "beans/defs/folio-assistant-hajp--interaction-the-asking-rule-is-enforced-by-three-l.md"
    },
    {
      "id": "folio-assistant-hcpz",
      "title": "seed:ready — per-layer seeding readiness gateway for kg-separation (Source settled?)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T17:22:19Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Owner approved 2026-10-02: 'seed:ready: check skills/process to harness / KG separation and align.' The steward applied stability criteria by hand before a seeding review (heavy-mover PRs landed; no open PR touches the next layer; at most 5 touch the layer; none moves files in it). This bean makes that a DMN-backed gateway in kg-separation.bpmn, evaluated by bun run cat seed:ready --layer <name>, ",
      "file": "beans/defs/folio-assistant-hcpz--seedready-per-layer-seeding-readiness-gateway-for.md"
    },
    {
      "id": "folio-assistant-he8h",
      "title": "QA-REPORTS: don't record a result when neither content nor result changed",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T18:45:22Z",
      "updatedAt": "2026-10-09T20:47:00Z",
      "preview": "## Why\n\nThe owner saw the same mechanical QA results repeated on the `cat/cat-harness/qa-reports`\nbranch (2026-10-05). Measured that day: `main/` holds 140 per-commit snapshots, and its\n`cat-harness/test/results/translation-qa` subtree has only **2 distinct trees** across\nthem (89 + 51 identical copies). 142 `pr/<n>` refs add more. Prune keeps everything on\nmain for 90 days, so nothing has gone ye",
      "file": "beans/defs/folio-assistant-he8h--qa-reports-dont-record-a-result-when-neither-conte.md"
    },
    {
      "id": "folio-assistant-hf2q",
      "title": "PROGRAMME PROGRESS: an epic burn-down and a math-progress heat map as a board feed",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-6lb8",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:10:08Z",
      "updatedAt": "2026-10-23T08:00:00Z",
      "preview": "Recorded from the qou work-plan analysis, 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). Not started: recorded so the gap has an owner. milestone-status.ts rolls up milestones; nothing draws an epic over time or chapter x {proved, sorry, axiom, conjecture open, active bean, verdict}. Depends on WORK TRACEABILITY and CONJECTURE REGISTER. Must follow board-diagram-inte",
      "file": "beans/defs/folio-assistant-hf2q--programme-progress-an-epic-burn-down-and-a-math-pr.md"
    },
    {
      "id": "folio-assistant-hfag",
      "title": "Merge pipeline: train process, queue state, reprioritisation, gates",
      "status": "completed",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T17:17:27Z",
      "updatedAt": "2026-10-23T08:35:00Z",
      "preview": "Owner, 2026-10-02: the merge pipeline gets its own top-level epic, marked as blocking the separation epic `7x5n`. Running the queue is NOT part of this epic; this epic is the finite build list below.\n\nUntil now the steward's ordering lived in prose (#1802's merge-manager SOP step 2, \"oldest first, unless the owner names an order\"), so nothing recorded WHY one PR jumped ahead of another, and a seco",
      "file": "beans/defs/folio-assistant-hfag--merge-pipeline-train-process-queue-state-repriorit.md"
    },
    {
      "id": "folio-assistant-hfiu",
      "title": "CI: a layer PR merges only after a green folio-assistant run with the change pinned",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ksek",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T08:43:02Z",
      "updatedAt": "2026-10-23T08:43:02Z",
      "preview": "Rule: a PR to a mounted layer (cat-harness, cat-harness-tools, folio-assistant-core, fhir-harness, bootstrap-tools, smart-*) does not merge until folio-assistant has run its PR gates with that layer pinned to the PR's commit (mount:remote --staging) and they are green. Otherwise the layer goes green alone and the re-pin turns folio-assistant main red. Status, 2026-10-23: another agent is building ",
      "file": "beans/defs/folio-assistant-hfiu--ci-a-layer-pr-merges-only-after-a-green-folio-assi.md"
    },
    {
      "id": "folio-assistant-hh7g",
      "title": "B10a (#1168): memory front matter agents: → references (kind agent), like todos",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T14:59:53Z",
      "updatedAt": "2026-09-30T15:07:20Z",
      "preview": "Owner 2026-09-30: Rename, like todos. 32 memory files; shared front-matter parser learns object lists; archived: \"true\" (11) → true.\n## Done when\n- [ ] no memory entry carries agents:; references: [{kind: agent, id}] read by agent-memory.ts\n- [ ] archived is a boolean everywhere\n\n\n\n## Done\n32 entries: agents: → references [{kind: agent, id}]; 11 archived: \"true\" → true. front-matter.ts gains mappi",
      "file": "beans/defs/folio-assistant-hh7g--b10a-1168-memory-front-matter-agents-references-ki.md"
    },
    {
      "id": "folio-assistant-hj9d",
      "title": "B3b (#1168): a skill names its input/output contracts; check-tools compares types",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T00:26:28Z",
      "updatedAt": "2026-09-24T00:49:16Z",
      "preview": "Part of s4sp (plan B3b). The 22 skills with contracts name them in front matter (input:/output:, instance path or https IRI); scripts/skill-contracts.ts is the one reader for check-tools, kg-export and kg-audit. schemaRef removed (22 JSON, schema, interface). check-tools compares JSON types of shared-name ports (mistypedContracts). kg-audit: skill-contract-resolves (critical), skill-contract-claim",
      "file": "beans/defs/folio-assistant-hj9d--b3b-1168-a-skill-names-its-inputoutput-contracts-c.md"
    },
    {
      "id": "folio-assistant-hloc",
      "title": "gen-skill-docs flattens packages but leaves 120 non-skill links addressing the source layout",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:21:48Z",
      "updatedAt": "2026-09-26T19:38:18Z",
      "preview": "Measured 2026-09-25, after `mi97` took `check:subgraphs`' unresolved-link count\nin `docs/` from **246** to **120**.\n\nThe 120 that remain are NOT published-tree addresses, which is what the\n`siteResolved` bucket assumes of them. Classified by target:\n\n| target kind | count |\n|---|---|\n| directory or generated path | 33 |\n| `.md` | 32 |\n| `.html` | 19 |\n| `.bpmn` | 17 |\n| `.ts` | 12 |\n| `.json` | 4 ",
      "file": "beans/defs/folio-assistant-hloc--gen-skill-docs-flattens-packages-but-leaves-120-no.md"
    },
    {
      "id": "folio-assistant-ho66",
      "title": "Separation stage 2: rehearse cat-harness + cat-harness-tools standalone (check:cat-harness-standalone)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [
        "folio-assistant-smbc"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:02Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "Stage 2 of the split plan: rehearse standalone. New `cat-harness-tools/scripts/rehearse-standalone.ts` (a copy of bootstrap-tools'): copies only the tracked files of `cat-harness/`, `cat-harness-tools/`, `bootstrap/`, `bootstrap-tools/` into an empty temp dir, `git init` each, links `node_modules`, then runs closure, `check:import-direction` scoped to the two instances, every generator's `--check`",
      "file": "beans/defs/folio-assistant-ho66--separation-stage-2-rehearse-cat-harness-cat-harnes.md"
    },
    {
      "id": "folio-assistant-hp54",
      "title": "FOLIO_INIT STATE SOURCE: folio_init resolves each state graph's declared source — branch-mounted beans/todos by default, declared either way; audit present-but-undeclared state dirs",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T17:07:20Z",
      "updatedAt": "2026-10-06T19:11:46Z",
      "preview": "Measured 2026-10-06: litlfred/smart-ra got beans/ and todos/ as plain in-checkout dirs on main from its install commit 79fcb9d, written by init-folio.ts, which never consults a declared subgraph source; the folio's instance json declares neither, and the directory checks compare declarations to disk, not the reverse. Owner chose 'fix the process'.\n\n## Done when\n- folio_init resolves each state gra",
      "file": "beans/defs/folio-assistant-hp54--folio-init-state-source-folio-init-resolves-each-s.md"
    },
    {
      "id": "folio-assistant-hs08",
      "title": "MIGRATION: the content/ -> folio/ rename has reached the declaration and NOTHING that reads a folio",
      "status": "in-progress",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T10:02:53Z",
      "updatedAt": "2026-10-23T20:32:00Z",
      "preview": "Owner, 2026-09-20: *\"content/ shouldnt be expected anymore. folio/ was\nrenamed as default/convention.\"* Then, on being shown a compatibility-fallback\ndesign: **\"no content/ fallback. excise!!!!!\"**\n\nMeasured on `0392892c`.\n\n## Where the rename HAS landed\n\n- `cat-harness/harness.json` declares `folio/` holding the `folio` graph, and\n  carries no `content` entry at all\n- the `folio` graph kind exist",
      "file": "beans/defs/folio-assistant-hs08--migration-the-content-folio-rename-has-reached-the.md"
    },
    {
      "id": "folio-assistant-hupw",
      "title": "SMART separation cutover: retire smart-trust, smart-base, smart-immunizations, smart-ig to fsh-guts/separated and repair main",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-n3ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T19:10:49Z",
      "updatedAt": "2026-10-09T17:07:12Z",
      "preview": "Stage 13 / F of n3ni. Owner 2026-10-06 (confirmed twice): 'cutover dirs should go to fsh-guts', then 'All three now'. Content lives in forks litlfred/smart-trust, litlfred/smart-base, litlfred/smart-immunizations (branch claude/seed-smart-base). smart-ig retired with them: it is only the waypoint between smart-base and the two IGs, and its needs:[smart-base] cannot resolve once smart-base is gone.",
      "file": "beans/defs/folio-assistant-hupw--smart-separation-cutover-retire-smart-trust-smart.md"
    },
    {
      "id": "folio-assistant-hx65",
      "title": "S0 main green: five red jobs on cdb0a018, submodule pins, orphan-sidecar ruling",
      "status": "completed",
      "type": "task",
      "priority": "critical",
      "parent": "folio-assistant-7x5n",
      "blocking": [
        "folio-assistant-7dek",
        "folio-assistant-ejye",
        "folio-assistant-ga6u",
        "folio-assistant-j7ql",
        "folio-assistant-rmi6"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:14:33Z",
      "updatedAt": "2026-10-01T15:09:20Z",
      "preview": "Failing on main cdb0a018 (gh api jobs): Repository gates #13 'workflow skill refs'; TypeScript #7 'bun test'; E2E #7 'playwright test'; Skill-registration chain #5 'registration chain is current'; Docs site #7 'Regenerate skill instruction pages'. Four merges landed before CI finished.\n\n## Done when\n- [x] each failing job named with step and cause (PR #1774 body; root cause: take-main merges 198a9",
      "file": "beans/defs/folio-assistant-hx65--s0-main-green-five-red-jobs-on-cdb0a018-submodule.md"
    },
    {
      "id": "folio-assistant-hxi9",
      "title": "regen input-hash cache must see the --against baseline",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-xpcu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T05:59:45Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Eight gates run `--check --against main` and judge against the latest main entry on the qa-reports branch. That entry moves on every main publish while the working tree does not, so the input-hash fingerprint (files only) could SKIP a pair whose verdict the moved baseline changes. Fix: hash the resolved baseline identity (entry key + verified payloadTree) into the fingerprint; an unresolvable base",
      "file": "beans/defs/folio-assistant-hxi9--regen-input-hash-cache-must-see-the-against-baseli.md"
    },
    {
      "id": "folio-assistant-hylg",
      "title": "Workflow interpreter descends into call activities — subprocesses give increasing context",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T20:26:42Z",
      "updatedAt": "2026-09-23T19:25:46Z",
      "preview": "## Progress — 2026-09-18\n\nMechanism landed on `claude/festive-galileo-s7ibx0` ([PR #282](https://github.com/litlfred/folio-assistant/pull/282)).\n\nBefore: a `callActivity` was an opaque box completed in one step, so decomposing\na diagram made it read better and gate LESS. `editing-hci-validation` asked for\none `CallActivity_Evidence` and skipped the ten gated steps of\n`evidence-retrieval`; `documen",
      "file": "beans/defs/folio-assistant-hylg--workflow-interpreter-descends-into-call-activities.md"
    },
    {
      "id": "folio-assistant-i1q7",
      "title": "REGEN BLIND SPOT: regen-after-merge 'repairs' translate-bpmn:bootstrap:check with a writer that does nothing without --extract",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:46:50Z",
      "updatedAt": "2026-10-01T18:34:23Z",
      "preview": "Found 2026-10-01 while merging `yhjr` into PR #1764.\n\n`bun run cat regen` reported `translate-bpmn:bootstrap:check STILL fails after bun run cat translate-bpmn:bootstrap — a real defect, not staleness`. It was staleness: `translate-bpmn:bootstrap` (`translate-bpmn.ts --instance ./bootstrap`) prints *\"Nothing to do. Pass --extract, --check, or --inject\"* and writes nothing. Running `translate-bpmn.",
      "file": "beans/defs/folio-assistant-i1q7--regen-blind-spot-regen-after-merge-repairs-transla.md"
    },
    {
      "id": "folio-assistant-i2cx",
      "title": "merge-guard: separation of ready-marker and merging session applies only while a Merge Manager is active",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T17:00:01Z",
      "updatedAt": "2026-10-06T18:32:53Z",
      "preview": "Owner ruling 2026-10-06: the merge guard's same-session separation (check 2) applies only if a Merge Manager is active; none is now; durable, not per session. Add --no-merge-manager to merge-guard.ts, tests, and merge-queue skill section incl. the cloud fallback (read the merge-guard commit status on the exact head when gh cannot run).\n\n## Summary of Changes\n\nLanded in #2306 (`0f462dd`), issue #23",
      "file": "beans/defs/folio-assistant-i2cx--merge-guard-separation-of-ready-marker-and-merging.md"
    },
    {
      "id": "folio-assistant-i2kp",
      "title": "check:source-licence has no --check, so it writes its own sidecar and no gate can fail on its content",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T07:11:24Z",
      "updatedAt": "2026-10-01T16:07:52Z",
      "preview": "Owner, 2026-10-01: **\"and fix 1xhc\"**. This is the fix, scoped and measured.\nHanded over mid-flight: the diagnosis is complete and verified, no code written.\n\n## Defect 1 — `check:source-licence` has no `--check` mode at all\n\n`cat-harness/scripts/check-source-licence.ts`: unless given `--json` it ALWAYS\ncalls `writeQaResult(...)`, and it exits non-zero only on `malformed`.\n\nSo CI runs `bun run cat",
      "file": "beans/defs/folio-assistant-i2kp--checksource-licence-has-no-check-so-it-writes-its.md"
    },
    {
      "id": "folio-assistant-i4i1",
      "title": "C: UML — Task implements Skill, Voice->Role, skill I/O schema edges, test->schemas, glossary links (+ Task, UserStory, Test glosses)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T19:53:34Z",
      "updatedAt": "2026-09-30T10:33:34Z",
      "preview": "See #1168 plan C. After B lands.\n\n\n\n## Done — #1550 (merged 2026-09-30, 0417c07)\nTask realises Skill; Voice → Role; Skill → JSON Schema input/output; Test Run → JSON Schema; every class links to its glossary term (generator refuses a missing one); 8 new platform glossary terms.",
      "file": "beans/defs/folio-assistant-i4i1--c-uml-task-implements-skill-voice-role-skill-io-sc.md"
    },
    {
      "id": "folio-assistant-i8wf",
      "title": "After the cutover, a merged PR carrying a beans/** change re-creates the directory on main and turns check:declared-dirs red",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T06:43:41Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Arc `fs43`, found by reasoning while preparing the cutover (PR #2052) and **not** yet measured, because the cutover has not happened.\n\nAfter `beans/` leaves `main`, any branch that still carries a `beans/**` change re-creates the directory on `main` when it merges. `tipPresence` then answers `not-cut-over` — *\"the graph has two copies and nothing says which is authoritative\"* — which is a finding,",
      "file": "beans/defs/folio-assistant-i8wf--after-the-cutover-a-merged-pr-carrying-a-beans-cha.md"
    },
    {
      "id": "folio-assistant-iai8",
      "title": "Separation stage 4: seed litlfred/cat-harness and litlfred/cat-harness-tools, one commit each, no history",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-70lx"
      ],
      "createdAt": "2026-10-01T06:58:02Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "Stage 4 of the split plan: seed both repositories, one commit each, **no history** (owner ruling 2026-09-30 for bootstrap, applied here: \"I dont want all the clutter in git history\"; the commit message names the folio-assistant source SHA).\n\n- both: remove `livesAt`; add `LICENSE`, `NOTICE`, `LICENSE-CONTENT.md`; version `0.1.0`\n- cat-harness-tools only: standalone `tsconfig.json`, `.gitignore`, `",
      "file": "beans/defs/folio-assistant-iai8--separation-stage-4-seed-litlfredcat-harness-and-li.md"
    },
    {
      "id": "folio-assistant-ibxa",
      "title": "REQUIREMENTS SUB-GRAPHS: proposals under docs/proposals/, filed to docs/requirements/ on ship; a bootstrap Requirement; test runs reference requirements",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2upx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T19:34:00Z",
      "updatedAt": "2026-09-23T20:42:41Z",
      "preview": "Issue #1164. Owner, 2026-09-23: CRDM proposal documents for harness feature work live under docs/proposals/ (a declared sub-graph of docs, folded in the navbar — general behaviour); when the feature ships they become docs/requirements/, filed against a requirements schema generalised from the DAK one with NO outside concept in bootstrap; the Test schema lists requirements as an array.\n\nOwner's cho",
      "file": "beans/defs/folio-assistant-ibxa--requirements-sub-graphs-proposals-under-docspropos.md"
    },
    {
      "id": "folio-assistant-id4s",
      "title": "QA READERS F2a: qa-results.ts core (writeQaResult, qaResultState) and the export comparisons read through qa-store",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-16ei"
      ],
      "createdAt": "2026-10-01T08:47:13Z",
      "updatedAt": "2026-10-06T06:09:22Z",
      "preview": "Arc `3fva`, from reader audit `gxvk` (`cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md`, family F2a). Refines `oqe3` item \"also: check-version-bump / check-published-instance-exports\". Blocked on `16ei`.\n\n## Readers\n- `cat-harness/scripts/qa-results.ts:171-184` `writeQaResult`: the prior `<stem>.qa-results.json`, to skip an unchanged write. It has 22 callers. Absent today: correct (it wr",
      "file": "beans/defs/folio-assistant-id4s--qa-readers-f2a-qa-resultsts-core-writeqaresult-qar.md"
    },
    {
      "id": "folio-assistant-ieum",
      "title": "ZERO-TRUST PIPELINE: every value a tool or agent receives is suspect — agent handover, skill input, per-tool risk assessment, release security gate, supply chain (software/tool/KG)",
      "status": "completed",
      "type": "epic",
      "priority": "normal",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T05:56:11Z",
      "updatedAt": "2026-10-08T02:20:00Z",
      "preview": "## The ask, owner 2026-10-07 — verbatim\n\n> need better security protection when agenet to agnt handover, and in general when utilizeing Iinput from a skill. ALL DATA IN PIPELINE MUST BE TREATED AS SUSPECT. ALL TOOLS ARE REPOSNSIBLE TO GUARD AGAINST CODE INJECTION, PROMPT ENGINEERING, VARIABLE TAMPERING, etc.\n>\n> different tools will have different securty risk assessments and best practices. all t",
      "file": "beans/defs/folio-assistant-ieum--zero-trust-pipeline-every-value-a-tool-or-agent-re.md"
    },
    {
      "id": "folio-assistant-ig4a",
      "title": "EXTRACTION: an indented code fence is not recognised, so list-item code blocks are extracted as prose — 74 code fragments offered to translators and 16 real strings hidden",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T08:56:47Z",
      "updatedAt": "2026-10-08T08:05:00Z",
      "preview": "Found while deriving `.po` catalogues for #206 (bean `tbdg`). Measured\n2026-09-26. Same family as `lrbx` — the extractor's segmentation is not the\nreader's — and a separate cause.\n\n`MD_CODE_FENCE_RE = /^(`{3,}|~{3,})/` is anchored at column 0 and is matched\nagainst `line`, not `stripped`:\n\n```ts\nconst fenceMatch = line.match(MD_CODE_FENCE_RE);\n```\n\nAn **indented** fence — the ordinary way to put a",
      "file": "beans/defs/folio-assistant-ig4a--extraction-an-indented-code-fence-is-not-recognise.md"
    },
    {
      "id": "folio-assistant-ih6x",
      "title": "RENDERED BPMN: 46 exclusive gateways drew as blank diamonds — isMarkerVisible was never set",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T09:00:59Z",
      "updatedAt": "2026-09-26T09:01:15Z",
      "preview": "Salvaged from #1340 (owner's choice, 2026-09-26), which fixed 7 shapes in 5 diagrams when the repo had 18. Re-measured on origin/main: 46 exclusive-gateway BPMNShapes across 25 of 74 .bpmn files carry no isMarkerVisible, and none is explicitly false. bpmn-js draws the X only when it is true, so each rendered as an empty diamond — the notation's way of NOT saying exclusive.\n\n## Done when\n- [x] ever",
      "file": "beans/defs/folio-assistant-ih6x--rendered-bpmn-46-exclusive-gateways-drew-as-blank.md"
    },
    {
      "id": "folio-assistant-iirv",
      "title": "cat-harness / cat-harness-tools separation",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:00Z",
      "updatedAt": "2026-10-09T17:46:42Z",
      "preview": "Owner, 2026-10-01: \"make sure workplan properly beaned and status trackable\" for the cat-harness / cat-harness-tools separation arc. This epic is the one place that answers \"where is the separation up to\": every stage of the split plan and every placement PR still to do is a child, ordered by `blocked_by`.\n\n**What it delivers:** `cat-harness/` becomes two repositories — litlfred/cat-harness (conte",
      "file": "beans/defs/folio-assistant-iirv--cat-harness-cat-harness-tools-separation.md"
    },
    {
      "id": "folio-assistant-in5a",
      "title": "A declared take-base pattern cannot settle a generated file whose value depends on the container that built it",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T05:55:03Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "The general rule behind `65oe`, recorded separately because `65oe` is the one\nfile and this is the class.\n\n## What happened\n\n`cat-harness/docs/assets/library/index.json` HAS a declared pattern —\n`site-data`, strategy `take-base`. It has had one all along. And it still\nconflicted on essentially every new commit on `main`, because its generator\nwrote `refScan.filesRead`: a count of json files read *",
      "file": "beans/defs/folio-assistant-in5a--a-declared-take-base-pattern-cannot-settle-a-gener.md"
    },
    {
      "id": "folio-assistant-ioa4",
      "title": "Immunizations L1 knowledge graph from DAK Component 1; smart-kg L1 schema to Zod in smart-base",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T08:57:58Z",
      "updatedAt": "2026-10-21T18:48:00Z",
      "preview": "User request 2026-10-06 (ritikarawlani): (1) use folio-assistant to extract an L1 knowledge graph for immunizations from DAK Component 1 (ISBN 9789240099456, IRIS 10665/380303), conforming to WorldHealthOrganization/smart-kg main (66a9b13), placed at litlfred/smart-immunizations/library; (2) make building a DAK's library always ingest the L1 references Component 1 names (skills + processes); (3) m",
      "file": "beans/defs/folio-assistant-ioa4--x.md"
    },
    {
      "id": "folio-assistant-is8n",
      "title": "Merge refused: #2071 owed CI not green on its head",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:42Z",
      "updatedAt": "2026-10-15T16:49:44Z",
      "preview": "PR #2071, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_HeadNotGreen: conflict declared, own CI red.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2071.json`, status `waiting-on-author`): STATUS UNKNOWN on the",
      "file": "beans/defs/folio-assistant-is8n--merge-refused-2071-owed-ci-not-green-on-its-head.md"
    },
    {
      "id": "folio-assistant-ivg9",
      "title": "PLAN REQUEST → requirements doc + work plan + sign-off gate; successCriteria on requirement statements (#2405)",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T09:36:38Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Issue: https://github.com/litlfred/folio-assistant/issues/2405. Owner approved 2026-10-07 ('implement as recommended'): https://github.com/litlfred/folio-assistant/issues/2405#issuecomment-6035163987. Decisions: (1) operation in folio-assistant-core, method in cat-harness (0r7u); (2) a plan request ALWAYS triggers requirements doc + work plan, content requests included; (3) successCriteria optiona",
      "file": "beans/defs/folio-assistant-ivg9--plan-request-requirements-doc-work-plan-sign-off-g.md"
    },
    {
      "id": "folio-assistant-iwtn",
      "title": "BOOTSTRAP SELF-DEFINITIONAL: ~130 mentions of harnesses above bootstrap across 16 files (bpmn, skills, bootstrap.json)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-88mg",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T19:19:45Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "Owner, 2026-09-23: *\"bootstrap = self definitional. no semantic leakage, no graph leakage.\"* The README, AGENTS.md and the new `schemas/graph.schema.json` now comply (pv51, with a test in `bootstrap-tools/schemas/graph.test.ts`). The rest of `bootstrap/` does not.\n\n**Measured 2026-09-23:** mentions of WHO, DAK, smart-guidelines, smart-base, cat-harness, folio or f-a-sci, or a `../` path, per file:",
      "file": "beans/defs/folio-assistant-iwtn--bootstrap-self-definitional-130-mentions-of-harnes.md"
    },
    {
      "id": "folio-assistant-ixmq",
      "title": "MERGE RELEASE: capture a person's merge decision on the queue entry, bound to the SHA, and read it back at landing",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-najo"
      ],
      "createdAt": "2026-10-04T13:21:37Z",
      "updatedAt": "2026-10-07T17:37:00Z",
      "preview": "The PR's own agent records a PERSON's merge decision on the PR's queue entry, bound to the commit it was given for, and the merge path reads it back.\n\nRequested by the owner 2026-10-04 (session https://claude.ai/code/session_01Ga3HjmX3ag9vTgZWDSmsFi): *\"fill in gaps in merge process and send to Merge Manager. Agent working on PR should be able to capture human merge decision and associate it to me",
      "file": "beans/defs/folio-assistant-ixmq--merge-release-capture-a-persons-merge-decision-on.md"
    },
    {
      "id": "folio-assistant-iym1",
      "title": "VACUITY IS GUARDED ONE SCRIPT AT A TIME: no cross-gate reader pins a corpus-walking gate non-empty",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T07:36:35Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "FOUND 2026-09-21 by the sweep that closed `a6kl`'s open question.\n\nAn empty corpus makes every count zero, and zero reads as a clean run. That is\n`6tkl`, and this repository has already paid for it three times — `6tkl` itself\n(`check-declared-assets` hardcoding two instances of eight), `pzdv` (two HARD\ngates green over zero titles and zero flagged lines), and `a6kl` (an L1 gate\nreporting `nothing ",
      "file": "beans/defs/folio-assistant-iym1--vacuity-is-guarded-one-script-at-a-time-no-cross-g.md"
    },
    {
      "id": "folio-assistant-izqr",
      "title": "BOOTSTRAP ON AN EMPTY REPO: seed main first, then bootstrap onto it",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T22:56:13Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Owner, 2026-09-22 (session_017nyJj3PsjvszpF3DyGeBgE), a side request, verbatim:\n\n> *\"when bootstrapo initailzies, if repo is empty, it should seed main then bootstrap\"*\n\n**Why it matters.** A brand-new GitHub repository has no commits and no `main`. Every later step assumes both:\n- a feature branch needs a base to branch from;\n- a PR needs a base branch to target;\n- staging compares against `main`",
      "file": "beans/defs/folio-assistant-izqr--bootstrap-on-an-empty-repo-seed-main-first-then-bo.md"
    },
    {
      "id": "folio-assistant-izx8",
      "title": "FHIR IG API: rename the DAK-named IG API parts in fhir-harness (dak-views, dak-api hub, templates) once #1766 lands",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-wm63",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T13:59:33Z",
      "updatedAt": "2026-10-04T12:41:46Z",
      "preview": "Owner, 2026-10-03, on #1766: \"2 but should be FHIR-IG-API, no DAK label/names\". So #1766 merges first and its DAK-named hits in fhir-harness are baselined in check:fhir-harness-exclusions (an explicit owner exception to the never-widen rule). The API SURFACE (per-artefact .schema.json / .displays.json / .openapi.json and a hub) is the generic FHIR IG API and stays in fhir-harness. Only the DAK nam",
      "file": "beans/defs/folio-assistant-izx8--fhir-ig-api-rename-the-dak-named-ig-api-parts-in-f.md"
    },
    {
      "id": "folio-assistant-j00t",
      "title": "Retire the unused contributes config field and its module loader path",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T11:38:54Z",
      "updatedAt": "2026-10-09T15:35:00Z",
      "preview": "Left behind by riit. Every contribution is now a node: block kinds, content adapters, QA checkers, pipeline plugins and Tool nodes. No instance declares a `contributes` module; measured 2026-10-05, no `<instance>.json` carries the field.\n\nThe loader still reads it:\n- `harness-config.ts` has `contributes: z.string().optional()` at :364 and imports the module at :1862.\n- `harness.config.example.json",
      "file": "beans/defs/folio-assistant-j00t--retire-the-unused-contributes-config-field-and-its.md"
    },
    {
      "id": "folio-assistant-j0zs",
      "title": "INJECTION: the gate reads `run:` only — `actions/github-script` blocks are JavaScript and carry the same laundering",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T13:59:53Z",
      "updatedAt": "2026-09-26T16:57:07Z",
      "preview": "Split out of `6bhf` rather than widened into it, because extending the scanner to\na second language changes what the gate CLAIMS to read, and that is a decision\nrather than a fix.\n\n## What is true today, measured 2026-09-26\n\n`check-workflow-injection.ts` grades `${{ }}` expressions inside `run:` blocks.\nIts docblock says so, and `scanWorkflows` enforces it. That was the right scope\nwhen the surfac",
      "file": "beans/defs/folio-assistant-j0zs--injection-the-gate-reads-run-only-actionsgithub-sc.md"
    },
    {
      "id": "folio-assistant-j1r2",
      "title": "Audio and visual assets carry translatable text — transcripts, captions, alt text, embedded labels",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T07:54:17Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "## What this is\n\nRaised by the repo owner, 2026-09-19:\n\n> \"narrative/audio/visual content with text should be translatable. its not so\n> much the node schema itself but its content (e.g. markdown, bpmn) should be\n> translatable.\"\n\nThe first half of that is already built. The second half — **audio and visual**\n— is not.\n\n## What already exists, so nobody rebuilds it\n\n`schemas/translation-tools.ts` ",
      "file": "beans/defs/folio-assistant-j1r2--audio-and-visual-assets-carry-translatable-text-tr.md"
    },
    {
      "id": "folio-assistant-j27s",
      "title": "PAGES CANCELLATION: batch staging-preview pushes to gh-pages so the main-site Pages build is not cancelled (#1868 option 1)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T08:07:15Z",
      "updatedAt": "2026-10-06T14:30:00Z",
      "preview": "Issue #1868, second problem (comment 2026-10-02T18:10Z): GitHub's pages-build keeps only the newest run and staging pushes land every few minutes, so main-site deploys are cancelled. Owner ruling 2026-10-03 (this session): option 1, push staging previews to gh-pages less often (batch / rate-limit).\n\n## Done when\n- [x] tracking issue for option 1 opened and linked from #1868 — done as #1956\n- [x] f",
      "file": "beans/defs/folio-assistant-j27s--pages-cancellation-batch-staging-preview-pushes-to.md"
    },
    {
      "id": "folio-assistant-j3ls",
      "title": "MOUNTED ROOT: harness tools run from a remote-mounted cat-harness take the MOUNT as their root, not the instance being worked on",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T18:20:00Z",
      "updatedAt": "2026-10-20T15:05:15Z",
      "preview": "Measured 2026-10-09 working who-iris's beans from who-iris's OWN repository\n(cat-harness, core, tools remote-mounted inside it per `index.lock.json`).\nEvery script below computes \"this instance\" as `import.meta.dir/..` (or\n`instanceRootFor(import.meta.dir)`), which in a separated instance's checkout is\nthe MOUNT — somebody else's tree at a pin — not the instance being worked on.\nThe split plan's b",
      "file": "beans/defs/folio-assistant-j3ls--tools-run-from-a-mounted-cat-harness-take-the-mount-as.md"
    },
    {
      "id": "folio-assistant-j5iq",
      "title": "merge-queue: document the author's side of the handover (the PR is the message)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T06:46:45Z",
      "updatedAt": "2026-10-04T10:56:33Z",
      "preview": "Owner, 2026-10-04: author sessions could not reliably reach the Merge Manager. Comments on #1959 (a merged, unrelated PR) and on #1800 reached nobody, and send_message cannot resolve the steward session from this account. Owner's ruling (option 1 of 3): add an author's-side section to merge-queue.md plus a pointer in prepare-merge. Beans and GitHub's native merge queue were evaluated and rejected ",
      "file": "beans/defs/folio-assistant-j5iq--merge-queue-document-the-authors-side-of-the-hando.md"
    },
    {
      "id": "folio-assistant-j66n",
      "title": "THEME INGESTION: a subprocess of document ingestion, and one Theme node with kind sticky|webpage|publication",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-kupb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T08:02:10Z",
      "updatedAt": "2026-09-23T12:00:00Z",
      "preview": "Owner: extract 'smiilar stylngs for a webpage theme and also for publiccation themes', and (this session) ONE node with a kind discriminator rather than three node kinds.\n\nTWO SOURCES, ONE ARTEFACT:\n- WEBPAGE theme from the IRIS item page's own assets (`client-theme.css`, `styles.e55b0c9926626404.css`, three SVG logos), which is what a DSpace deployment's theme IS.\n- PUBLICATION theme from the sty",
      "file": "beans/defs/folio-assistant-j66n--theme-ingestion-a-subprocess-of-document-ingestion.md"
    },
    {
      "id": "folio-assistant-j6t3",
      "title": "INSTALL SKILLS AS TOOLS AT RENDER TIME: 34 skills declare user_invocable, 4 are reachable — options for Claude Code, Antigravity and any MCP host",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T21:42:35Z",
      "updatedAt": "2026-09-30T11:02:04Z",
      "preview": "## What — the owner's ask, verbatim\n\n2026-09-21:\n\n> bean: develop otpions onhow could we \"install\" i guess at render time new\n> skills to antigravity, caludecode as tools to improve discussion clairty\n> between huamn and agent in dicsussion\n>\n> (e.g. so /coordinate work and /prepare-merge,  different model -> diffent\n> tools)\n\n## The gap, MEASURED rather than argued\n\n| | count |\n|---|---|\n| skills",
      "file": "beans/defs/folio-assistant-j6t3--install-skills-as-tools-at-render-time-34-skills-d.md"
    },
    {
      "id": "folio-assistant-j79e",
      "title": "DETANGLE: a candidate subgraph is MEASURED (cohesive, low-cut), not chosen by taste — and the same process runs on modules, Lean and paper layout",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T08:14:40Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Owner, 2026-09-20, defining the term after four carves had already been picked by judgement:\n\n> 'candidate subgraph = large collection of thematiactally related content that is diconnected (maybe some light detagling) from other parts of the KG. (part of larger process detangle knwoedlge graph. look in lean, paper layout for related. generalize, make subprocess, deangle heuristics...).'\n\nTHIS IS A",
      "file": "beans/defs/folio-assistant-j79e--detangle-a-candidate-subgraph-is-measured-cohesive.md"
    },
    {
      "id": "folio-assistant-j7ql",
      "title": "S4-b: fold agent-skills and large-datasets into cat-harness concern groups (38 rows)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-hx65"
      ],
      "createdAt": "2026-10-01T12:16:24Z",
      "updatedAt": "2026-10-02T08:59:13Z",
      "preview": "Story S4 (rfuq). Rows: cat-harness/docs/proposals/placement-audit-2026-10-01.json (PR #1778) — pr '(7x5n S4 subgraph ruling)': agent-skills MOVE 21; large-datasets MOVE 11 + CODE 4 (-> cat-harness-tools) + 2 (-> sci / who-iris). Owner: both become cat-harness subgraphs, DISSOLVED into the eight concern groups (Q5). Done in #1776: large-datasets core import 1->0. Remaining: drop needs: folio-assist",
      "file": "beans/defs/folio-assistant-j7ql--s4-b-fold-agent-skills-and-large-datasets-into-cat.md"
    },
    {
      "id": "folio-assistant-j820",
      "title": "PDF EXTRACTOR FRAGMENTS A COMPOSITE FIGURE: 383 placed images against 7 captioned figures, 335 from one page",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:14:17Z",
      "updatedAt": "2026-09-24T13:46:41Z",
      "preview": "Found 2026-09-23 while ingesting arXiv:2510.21603v1 (bean `ctp3`). Split out\nrather than worked around, because routing around it would have meant writing 383\nimage descriptions from nothing.\n\n## CORRECTED 2026-09-24 — the original diagnosis in this bean was WRONG\n\nEverything below the next heading was written on 2026-09-23 from counts and\nfile sizes. **Two file reads falsified it**, and the corre",
      "file": "beans/defs/folio-assistant-j820--pdf-extractor-fragments-a-composite-figure-383-pla.md"
    },
    {
      "id": "folio-assistant-j9cs",
      "title": "MOUNT TOOLS DECLARED ON STORAGE: a subgraph names the tool that mounts it; no central mounter (owner ruling 2026-10-04)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T17:04:23Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Owner, 2026-10-04, verbatim: *\"there should not be a central registry for declaring mount tools and subgraph types\"*.\n\n## What exists, measured 2026-10-04\n- `state:mount` (`branch-store.ts`) mounts every tip-keyed directory. It switches on `keyedBy` centrally: tip mounts, route is read by its generator's `--check`, and commit belongs to qa-store.\n- Family-keyed graphs are mounted by tools nobody d",
      "file": "beans/defs/folio-assistant-j9cs--mount-tools-declared-on-storage-a-subgraph-names-t.md"
    },
    {
      "id": "folio-assistant-jcet",
      "title": "STANDARDS MISMATCHES the W3C methodology nodes recorded: PROV_CONTEXT IRI, JSON-LD @base in an external context, ODRL conflict default",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-scfh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:32:06Z",
      "updatedAt": "2026-10-01T16:32:32Z",
      "preview": "Found while writing the three W3C methodology nodes (bean 6306, PR #1769), each quoted against the HELD spec in cat-harness/library/. None is fixed: each needs a decision, not a mechanical edit.\n\n1. **PROV_CONTEXT** (cat-harness/schemas/prov.ts:29) = \"http://www.w3.org/ns/prov-o\". That IRI is the PROV-O OWL ontology document; the namespace is http://www.w3.org/ns/prov# and W3C's JSON-LD context is",
      "file": "beans/defs/folio-assistant-jcet--standards-mismatches-the-w3c-methodology-nodes-rec.md"
    },
    {
      "id": "folio-assistant-jd1e",
      "title": "A CALLER UNDID g5kt: merge-base reported regen's three verdicts as one, so could-not-determine reached the author as a defect in their branch",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T13:11:35Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "Found while re-measuring my own four claims about the `merge:main` defect class\n(PR #2086). THREE OF THE FOUR did not survive measurement; this is the one that\ndid, and it was not where I said it was.\n\n## The defect\n\n`merge-base.ts` had ONE message for every non-zero `regen` exit:\n\n    if (regen.status !== 0) abort(\"the gate set could not reproduce the\n      resolution (regen reported unrepaired c",
      "file": "beans/defs/folio-assistant-jd1e--a-caller-undid-g5kt-merge-base-reported-regens-thr.md"
    },
    {
      "id": "folio-assistant-jg8s",
      "title": "DECIDED: a sheet is a grouping node IFF the source has sheets — model reality, do not force conformance",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [
        "folio-assistant-p67i"
      ],
      "blockedBy": [],
      "createdAt": "2026-09-20T13:05:11Z",
      "updatedAt": "2026-10-09T14:38:00Z",
      "preview": "## The owner's decision, 2026-09-20\n\nAsked to choose between *a sheet is a `table` block* (flat, cheap) and *a sheet\nis a grouping node* (nested, mirrors the paged path), the answer was **both**:\n\n> \"both, sheet in grouping and single sheet. should model reality. not force\n> conformance\"\n\nSo the shape follows the SOURCE, not a house style:\n\n| source | graph |\n|---|---|\n| multi-sheet workbook | `ma",
      "file": "beans/defs/folio-assistant-jg8s--decided-a-sheet-is-a-grouping-node-iff-the-source.md"
    },
    {
      "id": "folio-assistant-jh2j",
      "title": "TOOL 7/13: Task_Render — LaTeX / PDF rendering (16 files, 3 entry points)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-d308",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T04:34:56Z",
      "updatedAt": "2026-10-08T08:05:00Z",
      "preview": "Group 7 of 13 in `d308`. **16 files, 3 entry points.**\n\n`render-latex`, `generate-block-tex`, `generate-main-tex`, `latex-preflight`,\n`latex-overfull-report`, `audit-tex-source`, `validate-tex`, `latexmk-compile`,\n`render-changed-blocks`, `render-on-change`, `render-pre-commit`,\n`render-discovery`, `render-value`, `headless-render-qc`, `refresh-authors-note`,\n`scripts/render-tex/`.\n\n**BPMN:** `aut",
      "file": "beans/defs/folio-assistant-jh2j--tool-713-task-render-latex-pdf-rendering-16-files.md"
    },
    {
      "id": "folio-assistant-jj2w",
      "title": "Migrate smart-kg L1 schema to Zod in litlfred/smart-base, with FSH logical models + value sets generated from it",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ioa4",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T08:58:15Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "## Done when\n- [x] the L1 ontology and the graph-document shape are Zod modules in litlfred/smart-base, the single source\n- [x] generators write FSH Logical models, CodeSystems and ValueSets into input/fsh/, plus JSON Schema + ontology JSON; --check fails when stale\n- [x] SUSHI compiles the generated FSH\n- [x] the Zod validator matches validate.mjs on a passing graph and on negative cases\n\n## Prog",
      "file": "beans/defs/folio-assistant-jj2w--migrate-smart-kg-l1-schema-to-zod-in-litlfredsmart.md"
    },
    {
      "id": "folio-assistant-jni0",
      "title": "Library viewer: shared edit/feedback links, and the Document view for a folio's library (smart-ra review version)",
      "status": "scrapped",
      "type": "feature",
      "priority": "normal",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T05:05:39Z",
      "updatedAt": "2026-10-07T05:44:27Z",
      "preview": "Owner 2026-10-06/07: (1) 'do the document viewer TOC for smart-ra review version' — the frozen DPI-H review version in smart-ra library/ gets the #2303 Document view (TOC, pages, sections) on smart-ra's staging site, so the page/line a public comment cites opens there. (2) 'fix library viewer has no edit or feedback links' — every library entry/section gets the shared edit-links recipe (bean v433)",
      "file": "beans/defs/folio-assistant-jni0--library-viewer-shared-editfeedback-links-and-the-d.md"
    },
    {
      "id": "folio-assistant-jo87",
      "title": "QUEUED STREAM A: INGEST — uploads/ to a complete L1 library (slw1, 13 open beans)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T18:29:28Z",
      "updatedAt": "2026-10-10T16:40:52Z",
      "preview": "## What this is\n\nA **queued** stream: not claimed, not started. The owner asked on 2026-09-22\nthat as one active stream ends, the next be launched rather than leaving an\nagent idle — this is one of three such queue entries covering the 49 beans the\nthree-GOAL split parked.\n\nStatus is `todo` **deliberately**. It becomes `in-progress` when a session is\nactually launched against it, because the whole",
      "file": "beans/defs/folio-assistant-jo87--queued-stream-a-ingest-uploads-to-a-complete-l1-li.md"
    },
    {
      "id": "folio-assistant-jtfk",
      "title": "CI: build the QA working copy once per run, restore it in the 8 consumer jobs (48% of runner-seconds)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T19:39:27Z",
      "updatedAt": "2026-10-08T08:05:00Z",
      "preview": "Issue #2456. Owner approved 2026-10-07 ~19:40Z (\"1y, 2y, 3y, 4y\"). Measurements in the issue body.\n\n_2026-10-07T19:39:38Z_ — Claimed by claude/ci-runner-budget (session https://claude.ai/code/session_013WbQekVypi9A6YQbLDXMmJ).\n\n## Done on claude/ci-runner-budget (PR #2457), 2026-10-07\n\n- New job `qa-working-copy` runs `bun run cat qa:working-copy` once. `cat-harness/scripts/qa-working-copy-bundle.",
      "file": "beans/defs/folio-assistant-jtfk--ci-build-the-qa-working-copy-once-per-run-restore.md"
    },
    {
      "id": "folio-assistant-jut3",
      "title": "SMART-* VIA JUST-THE-DOCS: stop mounting IG Publisher HTML; render input/pages from post-processed JSON-LD + metadata through the Jekyll pipeline",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T19:10:00Z",
      "updatedAt": "2026-10-22T14:30:00Z",
      "preview": "## The owner's words, verbatim\n\nParaphrase would lose the sequencing and the scope, both of which constrain the\ndesign:\n\n> i want the smart-* mockups not to mount the existing rendered .html but use\n> the IG Publisher+postporcessed json/jsonld +metadataindexing to reproduce the\n> generated html in the justthedoc pipeline.\n>\n> i want the input/page(s)/ content to be rendered viajustthedocs pipeline",
      "file": "beans/defs/folio-assistant-jut3--smart-via-just-the-docs-stop-mounting-ig-publisher.md"
    },
    {
      "id": "folio-assistant-jwg8",
      "title": "CI: stop the line while a post-merge check is red on main",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ksek",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T08:43:03Z",
      "updatedAt": "2026-10-23T08:43:03Z",
      "preview": "Rule: while a post-merge check (Post-merge regen check and repair, the Docs-site Liquid check, or any push-to-main workflow) is red on folio-assistant main, only the PR that fixes it merges. Nothing else lands on a red main, because every merge onto red hides the next regression and emails the owner another failure. RELAXATION, owner, 2026-10-23: for the 2026-10-23 window only, any green PR may me",
      "file": "beans/defs/folio-assistant-jwg8--ci-stop-the-line-while-a-post-merge-check-is-red-o.md"
    },
    {
      "id": "folio-assistant-jwoc",
      "title": "PROV-O QA/QC report over workflow instances: the agentic engine's after-check (#1180 step 5)",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T05:31:23Z",
      "updatedAt": "2026-09-24T14:00:00Z",
      "preview": "Issue #1180, step 5 of `docs/proposals/odrl-prov-actor-model.md`: the agentic engine's after-check. The deterministic engine checks the ODRL policy before a task (t490, #1207); an agent swarm acts first, so the same policy is checked after, from a PROV-O log derived from workflow history. Advisory, as the owner chose.\n\n## Done when\n- [x] `scripts/prov-qaqc.ts`: one `prov:Activity` per activity/dec",
      "file": "beans/defs/folio-assistant-jwoc--prov-o-qaqc-report-over-workflow-instances-the-age.md"
    },
    {
      "id": "folio-assistant-jwox",
      "title": "CHANGESET: a block-level diff of the folio/ graph between main and a staging branch — added, removed, modified, moved, renamed",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [
        "folio-assistant-qbfi",
        "folio-assistant-txut"
      ],
      "blockedBy": [
        "folio-assistant-5xzc"
      ],
      "createdAt": "2026-09-22T21:02:54Z",
      "updatedAt": "2026-10-08T05:42:00Z",
      "preview": "**What.** A `ChangeSet` node computed between two refs (`origin/main` and the\nbranch that STAGING rendered). For each block it records one of: added,\nremoved, modified (prose / structure / metadata), moved (new parent or order),\nor renamed (via `renamedFrom`, child 01). It is keyed on folio/ graph ids,\n**not** on file paths.\n\n**Why not reuse `diff`.** The `diff` skill is `git diff origin/main..HEA",
      "file": "beans/defs/folio-assistant-jwox--changeset-a-block-level-diff-of-the-folio-graph-be.md"
    },
    {
      "id": "folio-assistant-jzba",
      "title": "CREDENTIALS (ii): secrets:check — declared needs vs workflow usage vs secret names vs expiry registry",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T06:31:22Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "From the proposal cat-harness/docs/proposals/credentials-needs-and-supply.md §6.2. Code in cat-harness-tools. Names only, never values. Findings per §6.2, including could-not-determine, which outranks clean (exit 2). Warns at 30 and 7 days before expiry. Feeds bun run health. Has the MCP and CLI parity of axis 6. Declares its own need, list-secret-names, supplied by the App. Not built yet.\n\n## Don",
      "file": "beans/defs/folio-assistant-jzba--credentials-ii-secretscheck-declared-needs-vs-work.md"
    },
    {
      "id": "folio-assistant-k3ml",
      "title": "CREDENTIALS (i): secrets skill — add/rotate/revoke per mechanism, GitHub App walkthrough for a personal account",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T06:31:22Z",
      "updatedAt": "2026-10-20T09:30:00Z",
      "preview": "From the proposal cat-harness/docs/proposals/credentials-needs-and-supply.md §6.3 (D1=A, the App). Write skills/sdlc/sdlc-core/secrets.md with the human steps per mechanism and the UI paths. Lead with the GitHub App setup on a personal account: register the App, generate its private key, install it on selected repositories, store HARNESS_BOT_ID as a variable and HARNESS_BOT_PRIVATE_KEY as a secret",
      "file": "beans/defs/folio-assistant-k3ml--credentials-i-secrets-skill-addrotaterevoke-per-me.md"
    },
    {
      "id": "folio-assistant-k3tw",
      "title": "GATE RED ON MAIN: docs/_data/translations.json is stale — the batch PRs add locale pages without regenerating the index",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T13:56:51Z",
      "updatedAt": "2026-09-26T14:36:43Z",
      "preview": "## What is red\n\n`bun test cat-harness/content/pipeline/translation-index.test.ts`\n→ `this repository's own corpus > the committed index is up to date and valid`\n\n```\nexpect(r.state, `run: bun run cat translation:index`).toBe(\"ok\")\nExpected: \"ok\"   Received: \"stale\"\n```\n\nIt runs inside the `TypeScript — tests, lint, types (hard)` job, so every open\nPR's merged tree is red on it, on top of the `t8g3",
      "file": "beans/defs/folio-assistant-k3tw--gate-red-on-main-docs-datatranslationsjson-is-stal.md"
    },
    {
      "id": "folio-assistant-k59d",
      "title": "MILESTONE CRITICAL PATHS GO STALE: p5wm and yg29 both advertise blockers that are completed or settled, and check:bean-bodies cannot see them",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T06:30:00Z",
      "updatedAt": "2026-10-09T19:25:00Z",
      "preview": "Found 2026-09-21 by the `goal-review` sweep of 2026-09-20T19:00Z →\n2026-09-21T06:25Z (session_01AYHimvYMmf8h8e9fFN6dW5), independently by **two**\ndelegated agents reading two different milestones. An instruction gap.\n\n## Measured\n\n| milestone | what its own body advertises | what the store says |\n|---|---|---|\n| `p5wm` (GOAL 2) | critical path `b5f0 → 603s → hfkl → 2krx → (6lb8 ‖ ivfw + 5y4b) → pb",
      "file": "beans/defs/folio-assistant-k59d--milestone-critical-paths-go-stale-p5wm-and-yg29-bo.md"
    },
    {
      "id": "folio-assistant-k660",
      "title": "QUEUED STREAM B: the authoring surface — content model, memory and voice (0lmb + 8jt6 + 2upx, 16 open beans)",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T18:29:28Z",
      "updatedAt": "2026-10-10T16:40:53Z",
      "preview": "## What this is\n\nA **queued** stream: not claimed, not started. One of three queue entries\ncovering the 49 beans the three-GOAL split parked, created 2026-09-22 when the\nowner asked that a finishing stream be given the next piece of work rather than\ngoing idle.\n\nStatus is `todo` deliberately — see the sibling entry under `slw1` for why a\nqueue entry that claims itself in advance is the exact defec",
      "file": "beans/defs/folio-assistant-k660--queued-stream-b-the-authoring-surface-content-mode.md"
    },
    {
      "id": "folio-assistant-k6g5",
      "title": "cat-harness-tools imports cat-harness and bootstrap-tools as packages, not by ../../",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-f6gq",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T15:29:13Z",
      "updatedAt": "2026-10-14T15:45:00Z",
      "preview": "Layer of f6gq beside core; needs pxtk. The largest: ~740 imports in 286 files.\n\n## Done when\n- [x] the imports become package imports — cat-harness-tools `b61b9fd`: 1,048 specifiers rewritten to `@litlfred/cat-harness/…` / `@litlfred/bootstrap-tools/…`; the only `../` left is a generated string (`adapters/mcp-server/server.ts:130`)\n- [x] the pin check — satisfied by the owner ruling below: the mou",
      "file": "beans/defs/folio-assistant-k6g5--cat-harness-tools-imports-as-packages.md"
    },
    {
      "id": "folio-assistant-k6tw",
      "title": "SKILL: render an IG through just-the-docs wearing the instance's existing theme (u3cd only reads kind=webpage; smart-trust's 7h3u theme is unused)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:31:04Z",
      "updatedAt": "2026-10-01T15:22:48Z",
      "preview": "Owner, 2026-10-01: *\"make skill to use existing themes on IG in just the docs rendering\"*.\n\nMeasured gap: staging smart-trust's IG site (bamf/u3cd) reports \"colour scheme: NONE — the instance declares no webpage theme\", although smart-trust declares a WHO theme (`themes/upstream/who.css`, bean 7h3u, issue #1682). `stage-ig-sites.ts` `webpagePalette` only reads themes of kind `webpage`.\n\n## Done wh",
      "file": "beans/defs/folio-assistant-k6tw--skill-render-an-ig-through-just-the-docs-wearing-t.md"
    },
    {
      "id": "folio-assistant-k74z",
      "title": "ETL TOOLS: map a value between metadata vocabularies by source and target content type",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:33:31Z",
      "updatedAt": "2026-10-02T17:49:13Z",
      "preview": "Owner, 2026-09-23, choosing to keep a glossary scheme's name in both skos:prefLabel and dcterms:title from one source (bean sl9u): 'this is going to be common pattern... need Tools for this type of ETL procedure depending on source / target content type and other metadata'.\n\n## The pattern\nOne value, several target vocabularies. Today every such mapping is a hand-written line in a generator (gloss",
      "file": "beans/defs/folio-assistant-k74z--etl-tools-map-a-value-between-metadata-vocabularie.md"
    },
    {
      "id": "folio-assistant-k7ro",
      "title": "Harness registry kinds have no viewer: typologies, validators, QA checkers, block kinds, content adapters, pipeline plugins, editor checkers, code lists",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-46ob",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T16:53:28Z",
      "updatedAt": "2026-10-15T19:33:06Z",
      "preview": "## Parent\n\nfolio-assistant-46ob\n\nRows (measured live): Graph typologies ×5, Validators ×5, QA checkers ×3, Block kinds ×3, Content adapters ×3, Code lists ×3, Pipeline plugins ×2, Editor checkers ×1. These are the harness's own registries — each node already has a schema and is in the KG export.\n\nLikely one generic registry viewer (a table per kind: id, summary, declaring instance, schema) rather ",
      "file": "beans/defs/folio-assistant-k7ro--harness-registry-kinds-have-no-viewer-typologies-v.md"
    },
    {
      "id": "folio-assistant-k8rc",
      "title": "The TypeScript prose backlog: 344 mentions, and the exemption does not cover all of them",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T20:25:00Z",
      "updatedAt": "2026-10-20T19:03:00Z",
      "preview": "The markdown half of this is done (`vzur`, #769). This is the `.ts` half, and\nit is **not** simply the same sweep one file type over — the exemption that\ncovers it is sound for most of the corpus and wrong for a subset.\n\n**Measured 2026-09-21 on `main` @ `83cc04b`:** 344 mentions of `harness.json`\nor `harness.config.json` in `.ts` files under `cat-harness/`, excluding\n`RETIRED_DECLARATION`'s own d",
      "file": "beans/defs/folio-assistant-k8rc--the-typescript-prose-backlog-344-and-two-of-them.md"
    },
    {
      "id": "folio-assistant-k9mv",
      "title": "SEED:READY upward paths — count declared paths that resolve only above the layer, not dependents discovery cannot see",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:14:25Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "`seed:ready`'s `sibling-discovery` criterion is re-aimed at what it said it protects against: **paths declared in a layer that resolve only in an instance above it**.\n\nOwner's choice, 2026-10-04, from three options (re-aim / make discovery see sibling clones / record only), after this measurement:\n\n- `seed:ready` failed `cat-harness` and `folio-assistant-core` on \"discovery misses 3 dependents in ",
      "file": "beans/defs/folio-assistant-k9mv--seedready-upward-paths-count-declared-paths-that-r.md"
    },
    {
      "id": "folio-assistant-k9yq",
      "title": "STICKY ART DEFAULT: square crop, faded, unless the todo names a layout; themes page shows square samples",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:37:44Z",
      "updatedAt": "2026-09-24T18:37:44Z",
      "preview": "Owner 2026-09-24: \"i want sticky themes to by default use the square avatar layout but mostly faded, if not specified. themes/ pages should show sticky as square\".\n\n## Summary of Changes\n- ThemedTodoFieldsSchema gains an optional `layout` (laptop|mobile|card); absent means the square card crop. todos.ts reads it from front matter.\n- docs-ui.js buildBackdrop: the square crop on every screen, no lon",
      "file": "beans/defs/folio-assistant-k9yq--sticky-art-default-square-crop-faded-unless-the-to.md"
    },
    {
      "id": "folio-assistant-kc7k",
      "title": "Docs site: cat-harness pages publish under /docs/cat-harness/, not the site root (#2188)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T14:02:31Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Owner ruling 2026-10-05: cat-harness docs move from the site root to /docs/cat-harness/, a clean break with no redirects, so they cannot collide with instance mounts, graph-kind directories, locales or exports at the root (108 root entries; architecture and skills already share a page and a directory stem). Issue #2188. Supersedes the open question in 8h42. Done when: the published site serves cat",
      "file": "beans/defs/folio-assistant-kc7k--docs-site-cat-harness-pages-publish-under-docscat.md"
    },
    {
      "id": "folio-assistant-kd85",
      "title": "LHS navbar: Graphs section starts closed (#2150)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-p5wm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T05:36:04Z",
      "updatedAt": "2026-10-05T14:40:26Z",
      "preview": "Owner 2026-10-05: 'also have the \"Graphs\" section start closed on LHS navbar'. Issue #2150. railModel declares graphs open:false; a group holding the current page opens; Jekyll sidebar opens Graphs when a folder link is the current page.\n\n\n\n## Completed by PR #2152 (2026-10-05)\n\nLands with #2152 (owner: \"finish and merge\" #2152, 2026-10-05), rendered-verified with Playwright screenshots on the PR.",
      "file": "beans/defs/folio-assistant-kd85--lhs-navbar-graphs-section-starts-closed-2150.md"
    },
    {
      "id": "folio-assistant-ke1w",
      "title": "The archive rung stages but can never promote, and no rung reads plain text at all",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T22:17:51Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Measured 2026-09-22 while trying to ingest the MADR source (`adr/madr`, MIT OR CC0-1.0) as evidence for the `madr` methodology.\n\n## The pipeline cannot terminate for an archive\n\n```\n$ bun run cat ingest cat-harness/uploads/adr-madr-2026-09-22.zip --library library\n  rung: archive  —  sniffed application/zip, entries listed as data, not extracted\n  ok  adr-madr-2026-09-22   7 file(s), 1 dir(s)  [zi",
      "file": "beans/defs/folio-assistant-ke1w--the-archive-rung-stages-but-can-never-promote-and.md"
    },
    {
      "id": "folio-assistant-kfkh",
      "title": "A clean merge produces a DUPLICATE front-matter key — three instances, no conflict marker on any of them",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T17:44:01Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Found 2026-09-25 while merging `main` into a PR branch. Distinct from `oxka`\n(completed), which is the same territory from the opposite side: that one is\nabout generated files conflicting on **nearly every merge**, and `.gitattributes`\nnow marks three of them `-diff -merge`. This is about hand-authored files\nmerging with **no conflict at all** and producing a duplicate key.\n\n`-merge` is not the re",
      "file": "beans/defs/folio-assistant-kfkh--a-clean-merge-produces-a-duplicate-front-matter-ke.md"
    },
    {
      "id": "folio-assistant-kg83",
      "title": "SMART-* SEPARATION stage D: smart-base consolidated — theme, chrome re-key, retire smart-l1/smart-dak, DAK code into smart-base, L1/DAK kinds",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-n3ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T16:38:40Z",
      "updatedAt": "2026-10-04T07:07:45Z",
      "preview": "Stage D of cat-harness/docs/proposals/smart-separation-2026-10-01.md (#1767). Owner 2026-10-01: go ahead with stage D, pause merge of #1783; stacked on stage C.\n\nOwner decisions (2026-10-01, structured questions):\n- Old layers: retire smart-l1 and smart-dak; KEEP smart-ig (the IG-publication layer the DAK feeds). smart-trust / smart-immunizations keep needs: smart-ig.\n- Q4 chrome: re-key chrome.js",
      "file": "beans/defs/folio-assistant-kg83--smart-separation-stage-d-smart-base-consolidated-t.md"
    },
    {
      "id": "folio-assistant-kgho",
      "title": "ci-health.yml fires WEEKLY, so a red main during active work waits up to seven days for the tracking issue",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T23:20:08Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "Owner ruling 2026-09-30, after `1hjm` established that the merge queue cannot be\nenabled here: **\"Automate the response instead.\"**\n\n## Why the response and not prevention\n\n`nytj` argued that five merge-skew defect classes shared ONE remedy — the queue\ntests the combined state, so none needs its own guard. `1hjm` removed that\nremedy, leaving the argument without a conclusion and the class unguarde",
      "file": "beans/defs/folio-assistant-kgho--ci-healthyml-fires-weekly-so-a-red-main-during-act.md"
    },
    {
      "id": "folio-assistant-kjbb",
      "title": "gen-skill-docs/gen-processes-viz: a literal endraw tag in source text closes the page's raw block early",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-2upx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:00:11Z",
      "updatedAt": "2026-10-07T05:11:00Z",
      "preview": "Both generators wrap emitted text in one Liquid raw block. A skill or BPMN documentation string containing the literal raw-block closing tag ends that block early; what follows is parsed as Liquid and can break the Pages build (it broke staging once, per a9tx §HANDOVER). Fix: one shared helper that escapes the closing tag inside the wrapped text, used by both generators, with a test.\n\n## Done when",
      "file": "beans/defs/folio-assistant-kjbb--gen-skill-docsgen-processes-viz-a-literal-endraw-t.md"
    },
    {
      "id": "folio-assistant-kn0t",
      "title": "PHASED TRANSITION: IG Publisher reduced to AST + QA, in five phases with a stated exit criterion each",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T19:07:23Z",
      "updatedAt": "2026-10-01T08:02:22Z",
      "preview": "Reduce the IG Publisher to **AST + QA**, in phases with a stated exit criterion\neach, so that publication and iteration stop depending on a full build.\n\n## The plan is the SKILL. This bean is the work-plan entry.\n\n> [`fhir-harness/skills/fhir-ig-base/ig-publisher-reduction.md`](../../fhir-harness/skills/fhir-ig-base/ig-publisher-reduction.md)\n\nRead it before starting any phase and before claiming ",
      "file": "beans/defs/folio-assistant-kn0t--phased-transition-ig-publisher-reduced-to-ast-qa-i.md"
    },
    {
      "id": "folio-assistant-kott",
      "title": "Harness-namespaced values: one dotted key <harness>.<subgraph...>.<name> for :val AND site.data",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:16:19Z",
      "updatedAt": "2026-09-30T15:42:28Z",
      "preview": "Owner 2026-09-30: 'can we do something like bootstrap.blah, cat-harness.blah.blah, etc...?' Extends the 12s9 ruling (prefix = the DECLARING Subgraph's path joined with dots) from BPMN/schema prefixes to VALUES, and supersedes the prefix:name proposal on #1564.\n\n## The design — as confirmed by the owner, 2026-09-30\n\nOwner: *\"{{ site.data...}} is declared for fhir-harness only... it declares its sit",
      "file": "beans/defs/folio-assistant-kott--harness-namespaced-values-one-dotted-key-harnesssu.md"
    },
    {
      "id": "folio-assistant-kpci",
      "title": "who-iris gets its own CI for check:catalogue, iris:pages, iris:covers, dc:render; folio-assistant's index workflow stops calling them",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-ml9h",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-11T07:00:59Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "Owner ruling 2026-10-11 ~06:55 UTC: **who-iris CI**. who-iris 7eda8c3 moved these from checkoutScripts to its own scripts (run from who-iris's root, with folio-assistant-core mounted inside it); who-iris has no workflow, and folio-assistant's code-quality-gates.yml 'registered, never run elsewhere' job calls them through 'bun run cat', which no longer finds them.\n\n## Done when\n- [x] litlfred/who-i",
      "file": "beans/defs/folio-assistant-kpci--who-iris-gets-its-own-ci-for-checkcatalogue-irispa.md"
    },
    {
      "id": "folio-assistant-kpcl",
      "title": "STREAM 4/4: trust the instruments — the stale-claim sweep, CI that does not fire, and the QA record (1xhc + 1swy + ahvw, 43 open beans)",
      "status": "todo",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T18:29:28Z",
      "updatedAt": "2026-10-21T17:15:00Z",
      "preview": "## What this is\n\nStream 4 of 4 in the 2026-09-22 consolidation, added by the owner after the\nfirst three were launched. It owns **the mechanism that produced the stall**,\nnot a feature area: `1xhc` (CI reliability, 11 open), `1swy` (QA, 17 open) and\n`ahvw` (process, 15 open) — **43 beans** — plus the stale-claim sweep itself.\n\nThe other three streams make the goals move. This one makes the instrum",
      "file": "beans/defs/folio-assistant-kpcl--stream-44-trust-the-instruments-the-stale-claim-sw.md"
    },
    {
      "id": "folio-assistant-krk0",
      "title": "Rebuild merge train 6: re-merge the six members lost with the previous steward's container",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T22:16:12Z",
      "updatedAt": "2026-10-08T01:15:00Z",
      "preview": "## Brief\n\nPR #1924's remote head `203c273` claimed eight members in its body but carried only\n#1913 and #1903. The previous steward's six other merges existed only in its container\nand were lost when it stopped. This bean is the rebuild.\n\nMeasured first-hand, not read off the PR body: `git merge-base --is-ancestor <member>\n203c273` answered no for #1899, #1907, #1909, #1912, #1927 and #1928.\n\n## W",
      "file": "beans/defs/folio-assistant-krk0--rebuild-merge-train-6-re-merge-the-six-members-los.md"
    },
    {
      "id": "folio-assistant-krmw",
      "title": "docs-index visualiser: 6 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:14Z",
      "updatedAt": "2026-10-09T15:04:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/docs-index/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **Most rows say nothing.** 187 of 217 rows read *no description in the artefact*, so the table is mostly a list of paths.\n2. **Non-pages are indexed as \"auth",
      "file": "beans/defs/folio-assistant-krmw--docs-index-visualiser-6-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-ksek",
      "title": "CI: green PR must mean green main",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T08:42:44Z",
      "updatedAt": "2026-10-23T08:42:44Z",
      "preview": "Owner-approved process fix, 2026-10-23. Two checks ran only after merge (Liquid undefined-variable check, workflow_run on main; Post-merge regen check and repair, push to main), so a PR could be fully green and still turn main red, and every such merge emailed the owner a failure. The rule: whatever can be judged before a merge is judged before it, on the PR's own runs, and merge-guard is the only",
      "file": "beans/defs/folio-assistant-ksek--ci-green-pr-must-mean-green-main.md"
    },
    {
      "id": "folio-assistant-ksg3",
      "title": "SPEED-UP: translation-block-qa --check spends 98% re-resolving the instance graph per (block, locale)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T07:52:01Z",
      "updatedAt": "2026-10-03T07:52:01Z",
      "preview": "Follow-up to `dlqu` (SPEED-UP 4), found while measuring its shard balancing.\n\nMeasured 2026-10-03: `translation-block-qa.ts --check` is 67 s of the 168 s\n`gates that were registered and never run` step in CI (run 37090513935, job\n111109661496) — the critical path of Code-quality gates once `dlqu`'s sharding\nlands (bun test shard 2/4 is 150–194 s; that step's job 163–175 s). Balancing\nthe test shar",
      "file": "beans/defs/folio-assistant-ksg3--speed-up-translation-block-qa-check-spends-98-re-r.md"
    },
    {
      "id": "folio-assistant-ktt2",
      "title": "INGEST: round-trip translation QA — back-translate to catch semantic drift and bad terminology",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-16T06:43:50Z",
      "updatedAt": "2026-10-10T17:29:35Z",
      "preview": "## What\n\nBack-translate each localized narrative into its source language and compare\nmeaning with the original. Flag semantic mismatch and bad terminology.\n\n## Why a round trip rather than a forward check\n\nA forward-only check asks \"is this fluent target-language text?\" — which a\nconfident mistranslation passes. The round trip asks whether the MEANING\nsurvived, which is the property actually want",
      "file": "beans/defs/folio-assistant-ktt2--ingest-round-trip-translation-qa-back-translate-to.md"
    },
    {
      "id": "folio-assistant-kupb",
      "title": "IRIS CATALOGUE: a referenced import of who-iris into the KG, its themes, and the SDLC that tests a sample import",
      "status": "completed",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-yg29",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T08:01:14Z",
      "updatedAt": "2026-10-04T18:29:58Z",
      "preview": "Owner ask, 2026-09-20, three messages in one session.\n\nSOURCES, both uploaded to the repo root by the owner and both measured this session:\n- `549fb04` — a saved DSpace ITEM PAGE. The HTML declares `saved from url=https://iris.who.int/items/18892cf3-5a4f-42a4-923c-a93f4a594dec`; the sidecar zip carries `client-theme.css`, `styles.e55b0c9926626404.css`, `who_logo.svg`, `who_logo_white.svg`, `iris_l",
      "file": "beans/defs/folio-assistant-kupb--iris-catalogue-a-referenced-import-of-who-iris-int.md"
    },
    {
      "id": "folio-assistant-kvd2",
      "title": "RECOMMENDATION SCENARIO: every extracted L1 recommendation gets a user-scenario candidate (persona, process, domain), reusing existing vocabulary and warning when none fits",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T14:07:07Z",
      "updatedAt": "2026-10-16T12:27:30Z",
      "preview": "Owner, 2026-10-10: *\"also add to the skills, as part of extracting a recommnedation the scenario (user story,role) get described. i am not sure what the 'process' is, but we need one for a role ... skill is to reuse existing vocabulary if possible ... For the measeles example, the process should be chosen from existint smart-immz processes if possivle. warn if not.\"*\n\n## Shape (decided in session ",
      "file": "beans/defs/folio-assistant-kvd2--recommendation-scenario-every-extracted-l1-recomme.md"
    },
    {
      "id": "folio-assistant-kx0p",
      "title": "catalogue visualiser: 6 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:14Z",
      "updatedAt": "2026-10-11T05:54:58Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/catalogue/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **Horizontal scroll at phone width.** At 390 px the document is 752 px wide (`scrollWidth` 752). The \"Every node\" table does not wrap or scroll in a container",
      "file": "beans/defs/folio-assistant-kx0p--catalogue-visualiser-6-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-kx6i",
      "title": "PAPER SITE in the harness rendering (yj32): math, Lean links and notation macros, blocking qou's legacy-render retirement",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:10:09Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Recorded from the qou work-plan analysis, 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). Not started: recorded so the gap has an owner. qou cannot retire its legacy renderer until the harness-as-interface rendering handles a paper: KaTeX/MathJax with the folio's notation macros, block -> Lean declaration links, and the paper's block kinds.\n\n## Owner ruling 2026-10-20",
      "file": "beans/defs/folio-assistant-kx6i--paper-site-in-the-harness-rendering-yj32-math-lean.md"
    },
    {
      "id": "folio-assistant-ky3r",
      "title": "FOREIGN-SITE RAIL SCOPE (#2263): an IG repo's site shows the platform's tile counts, 404 tile links, and the pinned rail covers IG content",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T08:12:11Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "Owner, 2026-10-06, verbatim (issue #2263): *\"https://litlfred.github.io/smart-trust/ the beans and todos badges seems to be countts from folio-assistant and not litlfred/smart-trust as expected. links to beans and todos dont work. why not? fix process and skills.\"*\n\n## Done when\n- [ ] root cause named with file:line\n- [ ] a foreign site's tiles, icon row and rail scope describe the FOLIO's instanc",
      "file": "beans/defs/folio-assistant-ky3r--foreign-site-rail-scope-2263-an-ig-repos-site-show.md"
    },
    {
      "id": "folio-assistant-kye5",
      "title": "TWO README GENERATORS claim bootstrap-tools/README.md: folio-assistant's readme:sync:all strips the generated-by notices bootstrap-tools' own writes",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T09:30:25Z",
      "updatedAt": "2026-10-07T08:07:00Z",
      "preview": "Found 2026-10-01 (PR #1769). At the bootstrap-tools pin c5e5e25, bun run cat readme:sync:all:check is red: folio-assistant's cat-harness/content/pipeline/readme-sections.ts rewrites the kg:roles row (adds glossary links) in a SUBMODULE this repo cannot commit to. At bootstrap-tools main (9c00c53) its own scripts/readme-sections.ts adds 'generated by bootstrap-tools' notices, which folio-assistant'",
      "file": "beans/defs/folio-assistant-kye5--two-readme-generators-claim-bootstrap-toolsreadmem.md"
    },
    {
      "id": "folio-assistant-kyrg",
      "title": "HEALTH SWEEP cannot store its report: github-actions[bot] gets 403 on litlfred/cat-harness:cat/cat-harness/health",
      "status": "in-progress",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-22T13:25:43Z",
      "updatedAt": "2026-10-22T16:20:00Z",
      "preview": "`health-check.yml` now finishes: run 38 (39781213346, 2026-10-22) took 4.5 min, with the health checks themselves taking 29 s. It still ends red at \"Write the report through its state branch\":\n\n```\ncat-harness.health  litlfred/cat-harness:cat/cat-harness/health  failed\nremote: Permission to litlfred/cat-harness.git denied to github-actions[bot]. … 403\n```\n\nThe other three health graphs (cat-harnes",
      "file": "beans/defs/folio-assistant-kyrg--health-sweep-cannot-store-its-report-github-action.md"
    },
    {
      "id": "folio-assistant-l0lq",
      "title": "IG AST formats: Zod + JSON Schema + JSON-LD export for downstream use",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T19:48:24Z",
      "updatedAt": "2026-10-02T08:10:12Z",
      "preview": "Owner, 2026-10-01: *\"is ast export XML? any utility for downstream use to have it export json(ld)+schema?\"*, then \"1 y\" to building it here.\n\n**State.** The AST is JSON: `ig-ast/v1` (manifest plus one entry per resource), `ig-ast-dependencies/v1` (edges) and `ig-ast-plan/v1`. They exist only as TypeScript interfaces in `fhir-harness/scripts/ig-ast.ts`. The Java exporter (`litlfred/fhir-ig-publishe",
      "file": "beans/defs/folio-assistant-l0lq--ig-ast-formats-zod-json-schema-json-ld-export-for.md"
    },
    {
      "id": "folio-assistant-l4ay",
      "title": "SUBGRAPH SOURCE + NODE PATTERN: a declared subgraph declares where its content comes from (directory | branch | future), overridable by instance config; publishers use the declared Subgraph node + isPartOf",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T08:31:48Z",
      "updatedAt": "2026-10-06T06:26:36Z",
      "preview": "Owner rulings 2026-10-03 (verbatim): \"todos = subgraph node + todo content nodes\" -> option 1, \"and make pattern for declared repo branches (and declared dir subgraphs)\". Later the same day: \"It's the same pattern. One of them is mounting the directory while one of them is mounting a branch. Another mount type could come in the future. A sub graph declares where it's getting its content.. It could",
      "file": "beans/defs/folio-assistant-l4ay--subgraph-source-node-pattern-a-declared-subgraph-d.md"
    },
    {
      "id": "folio-assistant-l4c5",
      "title": "GLASS CARDS (#1900, PR #1918): open the visualiser, corner resize, confirmed close naming where the card goes back to",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:13:18Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "Finish PR #1918 for issue #1900: library cards on the folio glass open their declared view (else the entry page), resize by a corner grip (keys + move-bar buttons as the non-drag path), and x asks first, naming where the card goes back to (library / Todos / the landing sticky's page) via the page's one confirm dialog shared with fsh-guts. Caption uses the index title.\n\n## Done when\n- PR #1918 gree",
      "file": "beans/defs/folio-assistant-l4c5--glass-cards-1900-pr-1918-open-the-visualiser-corne.md"
    },
    {
      "id": "folio-assistant-l8g2",
      "title": "LOCAL GATES BLIND to reference-direction since 5hox: no local baseline, so check:reference-direction:check reads UNKNOWN locally while CI fails",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T09:07:16Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Measured 2026-10-06 by two sessions independently:\n- session F, #2262;\n- the coordinator, #2267, where a comment naming smart-base got through a local run and then failed CI.\n\n**What happens.** `bun run cat check:reference-direction:check --against main` is CI's gate. It compares against the `qa-reports` baseline (`main/<sha>`). Since #2080 (5hox) moved QA results off main, a container has no loca",
      "file": "beans/defs/folio-assistant-l8g2--local-gates-blind-to-reference-direction-since-5ho.md"
    },
    {
      "id": "folio-assistant-l9d5",
      "title": "BOOTSTRAP-TOOLS PORT: contract-semver skill + Zod validate step from #1514 onto main's bootstrap-tools",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-xsqm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T08:46:09Z",
      "updatedAt": "2026-10-01T07:00:35Z",
      "preview": "**Owner, 2026-09-30 (\"Port 2 pieces\"):** PR #1514 (bean `81tw`) was overtaken by `xsqm` (PRs #1516, #1537), which re-created `bootstrap-tools/` on main with a zod-only import cone. Port ONLY the two pieces unique to #1514 onto main's existing `bootstrap-tools/`, adapted to its layout — nothing main already has is re-created.\n\n1. **Bootstrap contract semver** — skill `bootstrap-contract-semver` (wi",
      "file": "beans/defs/folio-assistant-l9d5--bootstrap-tools-port-contract-semver-skill-zod-val.md"
    },
    {
      "id": "folio-assistant-l9v6",
      "title": "DECISION (proposed): which CDN layer, if any, in front of the WHO L1 corpus (slide 2, #1614)",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T17:47:45Z",
      "updatedAt": "2026-09-30T17:47:45Z",
      "preview": "MADR decision record for slide 2 of the owner's deck `cat-harness/library/kg-folio-asst-2026-09-30` (\"Accessing WHO L1 corpus\"). Issue #1614. Parent: `xies` (publish to CDN).\n\n## Status\n\n**Proposed — no outcome.** Owner, 2026-09-30: record the options, decide later. Nothing has been measured at the scale slide 2 names, so an outcome here would be a guess.\n\n## Context and problem statement\n\nSlide 2",
      "file": "beans/defs/folio-assistant-l9v6--decision-proposed-which-cdn-layer-if-any-in-front.md"
    },
    {
      "id": "folio-assistant-laqs",
      "title": "STATE BRANCH P1: owner rules D1-D4 — what moves, how agent sessions write, relation to 3fva, one branch or several",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:58:09Z",
      "updatedAt": "2026-10-02T11:56:41Z",
      "preview": "Proposal section 6. Defaults: D1 (a) beans+todos+issue-marks+health; D2 (a) direct push with PR-branch fallback; D3 (a) shared with 3fva; D4 (a) one 'state' branch.\n\n## Done when\n- [x] D1 [x] D2 [x] D3 [x] D4 ruled, rulings recorded in the proposal section 6\n\nProposal: cat-harness/docs/proposals/state-branch-2026-10-02.md\n\n## Summary of Changes\n\nOwner 2026-10-02: \"go with defaults for D1-D4\" — D1 ",
      "file": "beans/defs/folio-assistant-laqs--state-branch-p1-owner-rules-d1-d4-what-moves-how-a.md"
    },
    {
      "id": "folio-assistant-lb8h",
      "title": "Merge refused: #2066 authored conflict with main",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [
        "folio-assistant-5hox"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:42Z",
      "updatedAt": "2026-10-04T19:44:20Z",
      "preview": "PR #2066, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_Refused: conflict refused, own CI missing-required.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2066.json`, status `waiting-on-author`): STATUS UNKNOWN",
      "file": "beans/defs/folio-assistant-lb8h--merge-refused-2066-authored-conflict-with-main.md"
    },
    {
      "id": "folio-assistant-lbz8",
      "title": "AUTO-DOCS FAMILY: generated FHIR IG pages (gen-ig-pages) move off main to cat/fhir-harness/ig-docs",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-xsrv"
      ],
      "createdAt": "2026-10-04T12:55:24Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "Owner, 2026-10-04: *\"auto-docs (e.g. fhir) should be in cat/cat-harness/auto-docs so not pollute main. or maybe cat/fhir-harness/ig-docs\"*. Asked with options, the owner chose **cat/fhir-harness/ig-docs** (option 1 of 3).\n\n## Why this name\n- The pages have ONE writer: fhir-harness's `gen-ig-pages`. So the branch is named for the harness that produces them (`cat/<harness>/<subgraph>`), and route-ke",
      "file": "beans/defs/folio-assistant-lbz8--auto-docs-family-generated-fhir-ig-pages-gen-ig-pa.md"
    },
    {
      "id": "folio-assistant-lehh",
      "title": "DERIVED NODE SCHEMAS: declare ig-ast (pick up fhir-harness/schemas/ig-ast.ts), lake-cache and gh-pages as graphs with schemas",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-nama",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T13:52:13Z",
      "updatedAt": "2026-10-09T20:12:00Z",
      "preview": "Owner, 2026-10-04: *\"bean - was an AST schema somewhere. pickup. add schemas for lean-cache (cat/folio-assistant-sci/lean-cache branch?) and gh-pages too\"*\n\n## Found (2026-10-04)\n- **ig-ast**: the schema exists. `fhir-harness/schemas/ig-ast.ts` (Zod) has generated JSON Schemas `ig-ast.schema.json`, `ig-ast-plan.schema.json` and `ig-ast-dependencies.schema.json` (bean l0lq), gated by `ig-ast:schema",
      "file": "beans/defs/folio-assistant-lehh--derived-node-schemas-declare-ig-ast-pick-up-fhir-h.md"
    },
    {
      "id": "folio-assistant-lffo",
      "title": "who-iris: translate the IRIS portal replica's interface into ar, es, fr, ru, zh (#2228)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T18:46:23Z",
      "updatedAt": "2026-10-11T15:35:00Z",
      "preview": "Issue #2228. Owner, 2026-10-05: 'help make sure who-iris has all translations'; after measurement the owner chose the who-iris/site/ portal replica (7 pages) in the five non-English UN languages. Interface text only; publication metadata stays as WHO published it. Method and QA standard follow bean t0jg (#2209): translation, tool-isolated back-translation round trip, evidence recorded here.\n\n\n## R",
      "file": "beans/defs/folio-assistant-lffo--who-iris-translate-the-iris-portal-replicas-interf.md"
    },
    {
      "id": "folio-assistant-lfxa",
      "title": "QA: write the proof-no-placeholder-stub checker (and drop the QOU literal from its description)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T17:43:01Z",
      "updatedAt": "2026-10-07T04:43:00Z",
      "preview": "## What\n\n`proof-no-placeholder-stub` was declared `automated: true` with **no checker\nfunction anywhere in the repo** — no dispatch-table entry, no `check*`\nfunction. Found by bean `fg6z` while closing the coverage gap in\n`scripts/tests/qa-criterion-source-file.test.ts`.\n\n`qa-sweep` resolves a checker with\n\n    AUTOMATED_CHECKERS[id] ?? DAK_AUTOMATED_CHECKERS[id]\n\nand falls through to `needs-agent",
      "file": "beans/defs/folio-assistant-lfxa--qa-write-the-proof-no-placeholder-stub-checker-and.md"
    },
    {
      "id": "folio-assistant-lhvt",
      "title": "Navbar capability inventory: every capability x every layout, measured on built pages",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T10:15:18Z",
      "updatedAt": "2026-10-06T05:55:28Z",
      "preview": "First open item of 9rq1's Done when, split out so the container's open state is carried by an open child (check:bean-rollup).\n\n## Done when\n- [ ] a table of every harness navbar capability (icon row, marks, graphs section, avatars, ...) against every layout that draws a harness navbar (.side-bar, nav.fa-nav rail, viewer pages), measured on built pages rather than read from source\n- [ ] each cell s",
      "file": "beans/defs/folio-assistant-lhvt--navbar-capability-inventory-every-capability-x-eve.md"
    },
    {
      "id": "folio-assistant-li5y",
      "title": "BPMN labels are DOUBLE-escaped: 126 `&amp;#10;` across 8 diagrams render as literal text in 7 published SVGs",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T11:40:56Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Found 2026-09-26 by LOOKING at a rendered SVG, not by any gate. `render:bpmn:check`\nwas green throughout: it grades whether the committed SVG matches what the\nrenderer produces, and the renderer faithfully produced the wrong thing. That is\nthe currency-vs-validity split `check:artefact-verification` exists for, arriving\nin the diagrams.\n\n## What renders\n\nA BPMN `name` attribute written `&amp;#10;`",
      "file": "beans/defs/folio-assistant-li5y--bpmn-labels-are-double-escaped-126-amp10-across-8.md"
    },
    {
      "id": "folio-assistant-lk2a",
      "title": "check:workflow-refs sends the reader to bean bvuk, which is COMPLETED and archived — the finding is live, the attribution is stale",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:32:19Z",
      "updatedAt": "2026-10-07T11:50:39Z",
      "preview": "## Measured 2026-10-02, on a checkout of `main`\n\n`check:workflow-refs` reports two callers that run an adjudication without\nnaming the answers it may give, and sends the reader to bean `bvuk`:\n\n```\n? processes/library/sample-import.bpmn  · Call_Refresh → Process_RefreshMaterialized: does not say\n? processes/library/subscribe-kg.bpmn   · Call_Refresh → Process_RefreshMaterialized: does not say\n2 ca",
      "file": "beans/defs/folio-assistant-lk2a--checkworkflow-refs-sends-the-reader-to-bean-bvuk-w.md"
    },
    {
      "id": "folio-assistant-lnoy",
      "title": "Thin pages get the rail, with its style LINKED: navbar.css as a shared asset, folio-navbar: linked",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T13:30:03Z",
      "updatedAt": "2026-10-05T15:23:55Z",
      "preview": "Owner, 2026-10-05: chose '1. Add the rail' for the 95 built pages with no navbar, then, told they decline on purpose (the rail is 7.9 KB, 4.3 KB of it CSS, on pages of 1.4-3 KB), '1. Shared rail style first'. thin-page.ts and gen-library-viz.ts decline 'until the rail is itself a shared asset'.\n\n## Done when\n- [ ] assets/css/navbar.css generated from navbarCss(), with a check that it matches\n- [ ]",
      "file": "beans/defs/folio-assistant-lnoy--thin-pages-get-the-rail-with-its-style-linked-navb.md"
    },
    {
      "id": "folio-assistant-lodp",
      "title": "Vocabulary drift D1–D3: role naming, fsh-guts description, sl9u condition onto mapping tables",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T18:56:29Z",
      "updatedAt": "2026-10-02T21:37:45Z",
      "preview": "Follow-up to folio-assistant-k74z (PR #1873). Findings D1-D3 of cat-harness/docs/proposals/vocabulary-mappings-2026-10-02.md, 'What the inventory found'.\n\n## D3 ruling (owner default applied)\nOwner default applied, option 1, 2026-10-02: the owner was asked and gave no answer, so the stated default holds. Following the owner's bean sl9u precedent, ONE mapping-table row drives role naming in BOTH ge",
      "file": "beans/defs/folio-assistant-lodp--vocabulary-drift-d1d3-role-naming-fsh-guts-descrip.md"
    },
    {
      "id": "folio-assistant-loxz",
      "title": "regen reports audit:coverage:strict current while the artefact on disk differs from what its writer produces",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T12:18:57Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "A verify/write pair whose CHECK is a judge-mode baseline rather than a byte comparison cannot detect a stale artefact, and `regen` counts it as `current`. So \"0 unrepaired\" is not evidence that every generated artefact matches its writer.\n\nMEASURED on the #1898 branch, 2026-10-04, in one worktree, in this order:\n\n1. `regen` run with `fsh-guts/` NOT mounted (main has cut it over, so it is absent fr",
      "file": "beans/defs/folio-assistant-loxz--regen-reports-audit-coverage-strict-current-while-.md"
    },
    {
      "id": "folio-assistant-lpcs",
      "title": "layer-pr-checks speed: reuse the base verdict, select affected gates, shard the gates across jobs",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T20:30:00Z",
      "updatedAt": "2026-10-20T09:40:00Z",
      "preview": "## The ask, owner 2026-10-15, verbatim\n\nSession `session_01XZ5H7vswrTg7r3Kv2k2EhZ`, on\nlitlfred/smart-immunizations-uganda#4 (5 files, workflow-only):\n\n| why so slow to run CI? this is small, no?\n\nThe three speedups offered were (1) reuse the base verdict, (2) affected-test\nselection and (3) sharding the suite across parallel jobs. The owner answered:\n\n| 1 2 (i thought already done) 3\n\n## Measured",
      "file": "beans/defs/folio-assistant-lpcs--layer-pr-checks-speed-reuse-the-base-verdict-select-affected-gates-shard.md"
    },
    {
      "id": "folio-assistant-lptq",
      "title": "DELETED 2026-10-02: qa-reports-spike and qa-reports-spike-b, with the SHAs to restore them",
      "status": "completed",
      "type": "task",
      "priority": "low",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:24:30Z",
      "updatedAt": "2026-10-06T06:26:36Z",
      "preview": "Owner, 2026-10-02, asked for the state of these two branches and then ruled:\n*\"qa-reports-spike branches: delete both\"*. **The owner deleted them, not the agent**\n— see §\"Who deleted them\" below, because the agent could not. This bean exists so the\ndeletion is reversible, because a deleted branch's commit is unreachable and\nunrecoverable once nothing names it.\n\n## To restore\n\n    git branch qa-rep",
      "file": "beans/defs/folio-assistant-lptq--deleted-2026-10-02-qa-reports-spike-and-qa-reports.md"
    },
    {
      "id": "folio-assistant-lqo9",
      "title": "GLOSSARY: a coded, versioned glossary content kind in core, a defined-terms index in docs/ from every KG asset, translatable — roast first",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T18:03:45Z",
      "updatedAt": "2026-09-30T12:41:47Z",
      "preview": "Owner, 2026-09-20 (session_017PqeiS4JYySSWGAYLedmus), queued for a ROAST before anything is built:\n\n> justthedocs docs/ rendering should include an index of all defined terms extracted from KG assets in the docs/ (e.g. a bpmn diagram swimlane has title/description). make translatable like all assets. make coded-glossary content kind that can be used in KG extraction and visualisation, re-used when",
      "file": "beans/defs/folio-assistant-lqo9--glossary-a-coded-versioned-glossary-content-kind-i.md"
    },
    {
      "id": "folio-assistant-lrbx",
      "title": "EXTRACTION: the kramdown {:toc} placeholder is extracted as translatable prose, and translators dutifully translate it",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T13:22:39Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "Found while doing he0e (PR #691). `1. TOC` at docs/guides/agent-onboarding.md:20 is the list item kramdown REPLACES with the generated table of contents, immediately followed by `{:toc}`. Its text never reaches a reader in any language.\n\npot-extract.ts picks it up as a translatable string anyway, and the Arabic and Russian translators rendered it — ar has جدول المحتويات. That is a sensible human r",
      "file": "beans/defs/folio-assistant-lrbx--extraction-the-kramdown-toc-placeholder-is-extract.md"
    },
    {
      "id": "folio-assistant-lrzn",
      "title": "PREBUILT SEARCH INDEX: serialize the lunr index at build time for scopes over a token budget (#1972)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T15:42:45Z",
      "updatedAt": "2026-10-03T16:55:01Z",
      "preview": "Issue #1972, the owner's \"1 2\" of 2026-10-03: (1) a prebuilt search index.\nAsked with the measured trade-off, the owner chose **big scopes only**.\n\n## Measured (Node / V8, scopes from a local build)\n\nBuilding a scope's lunr index costs ~3–5 µs per token, consistently:\n`section-reference` 550k tokens / 2,489 ms, `smart-immunizations` 163k /\n809 ms, `_platform` 138k / 476 ms, `smart-trust` 137k / 40",
      "file": "beans/defs/folio-assistant-lrzn--prebuilt-search-index-serialize-the-lunr-index-at.md"
    },
    {
      "id": "folio-assistant-lthi",
      "title": "S4-c: cat-harness items owed to core, who-iris, smart-base, fhir-harness or the root (~45 rows)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:16:24Z",
      "updatedAt": "2026-10-21T19:38:00Z",
      "preview": "Story S4 (rfuq). Rows: cat-harness/docs/proposals/placement-audit-2026-10-01.json (PR #1778) — instance=cat-harness, pr 'unplanned', target folio-assistant-core (SPLIT 14, MOVE 1), who-iris (SPLIT 8), smart-base (SPLIT 6, MOVE 6), fhir-harness (SPLIT 4), root (SPLIT 4); plus fhir-harness->smart-base SPLIT 7, core->sci SPLIT 3. SPLIT here mostly means keep the generic item and invert the upward ref",
      "file": "beans/defs/folio-assistant-lthi--s4-c-cat-harness-items-owed-to-core-who-iris-smart.md"
    },
    {
      "id": "folio-assistant-lvk9",
      "title": "EXTRACTION: list items and blockquotes are extracted PER LINE, so a msgid depends on the author's hard wrap — translators get sentences in halves",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-wlyg"
      ],
      "createdAt": "2026-09-26T09:20:19Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "Found 2026-09-26 while diagnosing bean `7x8o` at the owner's instruction to find\nthe cause before touching any translation. **It is the third and largest member of\nthe `6b8u`/`ig4a` family, and it refutes most of `7x8o`.**\n\n`extractMarkdown` accumulates a PARAGRAPH until a blank line, so a hard-wrapped\nparagraph is correctly one entry. **List items and blockquotes are not\naccumulated** — each matc",
      "file": "beans/defs/folio-assistant-lvk9--extraction-list-items-and-blockquotes-are-extracte.md"
    },
    {
      "id": "folio-assistant-lvlv",
      "title": "MERGE GATE (d): per-content-block adversarial QA for tools, schemas, skills and processes, and the backfill",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-9v5a",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:29:16Z",
      "updatedAt": "2026-10-09T17:02:00Z",
      "preview": "Child (d) of the merge-gate epic. Design: `cat-harness/docs/proposals/merge-gate-2026-10-02.md` §7.\n\nRun the same adversarial review per **content block** (not per diff) so the existing corpus can be backfilled: Tool nodes, schema modules, skills/guidance, and BPMN/DMN processes. It uses the same verdict shape as the merge gate, keyed to the subject's `source_hash`, so a merge review and a backfil",
      "file": "beans/defs/folio-assistant-lvlv--merge-gate-d-per-content-block-adversarial-qa-for.md"
    },
    {
      "id": "folio-assistant-lvoa",
      "title": "TYPECHECK PROGRAM: folio-assistant-core/scripts is outside it — 33 files, and every instance-boundary move adds more while typecheck stays green",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T11:13:35Z",
      "updatedAt": "2026-10-10T15:54:05Z",
      "preview": "`bun run typecheck` is green over a program that does not contain\n`folio-assistant-core/scripts/` — **33 tracked `.ts` files, including nine this\nsession's own `yj6r` tranches moved there.** Every move up into that instance\nsilently removes its files from the typecheck program, and no gate reports a\nshrinking program.\n\nFound 2026-09-30 while planning the `adapters/` closure, which would have made\n",
      "file": "beans/defs/folio-assistant-lvoa--typecheck-program-folio-assistant-corescripts-is-o.md"
    },
    {
      "id": "folio-assistant-lvw0",
      "title": "PUBLISHING BLOCKED: the locale .jsonld exports re-publish the QA findings the core strips, and add an undeclared sourceLanguage",
      "status": "completed",
      "type": "bug",
      "priority": "critical",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T13:57:48Z",
      "updatedAt": "2026-09-26T14:33:46Z",
      "preview": "## What is blocked\n\n`publish:verify` fails on the built site, so `deploy to gh-pages` is **skipped**\nand nothing is published. The live site is a previous publish. Tracking issue\nopened automatically by `processes/publish-alert.bpmn`:\n[#1406](https://github.com/litlfred/folio-assistant/issues/1406), on main's own\npublish of `430052ad`.\n\n```\njsonld-expand: 20 finding(s) — 156 document(s) checked\n  ",
      "file": "beans/defs/folio-assistant-lvw0--publishing-blocked-the-locale-jsonld-exports-re-pu.md"
    },
    {
      "id": "folio-assistant-lx2s",
      "title": "Feature-branch staging under gh-pages (issue #215)",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-17T22:29:53Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "_2026-09-19T00:41:01Z_ — Verified RESOLVED, 2026-09-19 on main at 17dc1e6. .github/workflows/feature-staging.yml exists with 32 STAGING references and is demonstrably working — it deployed previews for PRs #298 and #308 in this session, each commenting the STAGING URL. Note this bean has an EMPTY body: title and issue #215 only, no statement of what 'done' means, so this verification is against ob",
      "file": "beans/defs/folio-assistant-lx2s--feature-branch-staging-under-gh-pages-issue-215.md"
    },
    {
      "id": "folio-assistant-m025",
      "title": "IG pages: remove in-page Contents box; add Publisher footer from package metadata (#1901)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T05:35:04Z",
      "updatedAt": "2026-10-04T06:05:02Z",
      "preview": "Follow-up to #1970 on #1901. Owner 2026-10-02: TOC only in the LHS rail (done in #2020), so remove the Contents box #1970 added. Owner 2026-10-02 scope addition: Publisher footer — prev/top/next row; band 'IG © <publisher> ↗. Package <id>#<version> based on FHIR <v> ↗. Generated <date>'; Links: Table of Contents | QA Report | Version History | License. Values from the IG's own metadata (package.tg",
      "file": "beans/defs/folio-assistant-m025--ig-pages-remove-in-page-contents-box-add-publisher.md"
    },
    {
      "id": "folio-assistant-m1k4",
      "title": "DUPLICATE manifest entry survives every gate — the uniqueness check uses a Set, which collapses it",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T08:05:18Z",
      "updatedAt": "2026-09-26T08:54:33Z",
      "preview": "Measured on `origin/main` at `0c5086db6c1`, 2026-09-26.\n\n`cat-harness/skills/process/workflow/package-manifest.json` lists **14** skills of which\n**13 are distinct**. `release-epic-planning` appears **twice**.\n\n    skills entries: 14 | distinct: 13\n    DUPLICATES: {'release-epic-planning': 2}\n\n## Why no gate sees it\n\n`scripts/tests/skill-manifest-coverage.test.ts:133`:\n\n    const listed = new Set(",
      "file": "beans/defs/folio-assistant-m1k4--duplicate-manifest-entry-survives-every-gate-the-u.md"
    },
    {
      "id": "folio-assistant-m4s1",
      "title": "TRANSLATION CATALOGUES: 36 (locale, page) .po files must be AUTHORED — the templates now exist, nobody has been ASKED, and #1399 is held on it",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T16:58:29Z",
      "updatedAt": "2026-10-21T19:35:00Z",
      "preview": "Created 2026-09-26 on the owner's explicit decision: **hold PR #1399 until the\ncatalogues exist, and make sure that work exists.** It did not. This bean is the\n\"make sure it exists\" half.\n\n## Why nothing tracked it, which is the interesting part\n\nThree beans circle this subject and none of them ASKS for the work:\n\n| bean | what it is | why it is not this |\n|---|---|---|\n| `ngxj` | the owner ruling",
      "file": "beans/defs/folio-assistant-m4s1--translation-catalogues-36-locale-page-po-files-mus.md"
    },
    {
      "id": "folio-assistant-m4xy",
      "title": "INGEST ARM: pdf-images recovers the raster layer, and WHO's real figures are vector",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2yyh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T08:48:53Z",
      "updatedAt": "2026-09-29T20:03:12Z",
      "preview": "Surveyed across all seven entries 2026-09-22 (issue #877). The cheapest of the three candidate fixes has shipped; the other two remain the owner's call.\n\n## The finding\n\n`pdf-images.py` recovers the **raster** layer. WHO's conceptual figures — frameworks, maturity models, taxonomies, process flows — are drawn in **vector**, so they are never extracted. What IS extracted is furniture.\n\n| entry | de",
      "file": "beans/defs/folio-assistant-m4xy--ingest-arm-pdf-images-recovers-the-raster-layer-an.md"
    },
    {
      "id": "folio-assistant-m5gx",
      "title": "One red test at step 5 makes 149 gate commands unreachable in CI — the typescript job stops and 45 of its 50 steps never run",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T10:20:26Z",
      "updatedAt": "2026-09-26T13:39:46Z",
      "preview": "Found 2026-09-26 while wiring bean `1s5s` (the published package's Python half)\ninto `check:published-packages`. Noticed because the new gate **could not be\nverified on a runner** — not because it failed, but because it never ran.\n\n## The measurement\n\n`.github/workflows/code-quality-gates.yml`, job `typescript`, parsed rather\nthan eyeballed:\n\n- `bun test` is **step 5 of 50**, with no `continue-on-",
      "file": "beans/defs/folio-assistant-m5gx--one-red-test-at-step-5-makes-149-gate-commands-unr.md"
    },
    {
      "id": "folio-assistant-m61r",
      "title": "Bean notes: per-PR files so sibling PRs stop conflicting on one bean",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T11:34:29Z",
      "updatedAt": "2026-10-02T13:13:34Z",
      "preview": "`beans/defs/folio-assistant-ob3m--navbar-visualiser-12-wireframe-findings.md` is appended to by many sibling PRs (findings 1, 3, 6, 7/8, 10, 12 …). Each time one merges, every other open PR conflicts on that file, and the merge-main bot refuses bean conflicts on purpose (`beans: refuse` in `merge-conflict-patterns.ts`), so each PR needs a hand-merge. On 2026-10-02 this forced hand-merges of #1798,",
      "file": "beans/defs/folio-assistant-m61r--bean-notes-per-pr-files-so-sibling-prs-stop-confli.md"
    },
    {
      "id": "folio-assistant-m7mn",
      "title": "SEARCH SCOPES: split the site index per harness and per locale, with a manifest (#1972 A1)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T09:50:04Z",
      "updatedAt": "2026-10-03T09:50:04Z",
      "preview": "Issue #1972 step A, first half (A1). The owner chose \"Both, lazy first\" on\n2026-10-03; lazy is bean `2tfy` (#1975), and #1972's plan makes step A — one\nindex per harness and per locale — the \"shrink\" half.\n\n## Measured (local build, 2026-10-03)\n\n`search-split.ts` over the built site's `search-data.json` (12,040 entries,\n13.74 MB) in 0.5 s: 11 scopes — `_platform` 4,822 entries / 7.73 MB,\n`smart-im",
      "file": "beans/defs/folio-assistant-m7mn--search-scopes-split-the-site-index-per-harness-and.md"
    },
    {
      "id": "folio-assistant-m8gz",
      "title": "BEAN LIFECYCLE: archiving is drawn nowhere, and Process_BeanLifecycle is called by nothing",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T07:35:41Z",
      "updatedAt": "2026-10-23T09:16:30Z",
      "preview": "**Owner, 2026-09-20**, on archiving 219 beans: *\"make sure bpmn (sub)process\non bean archiving wired up for process state management generally and\nspecifically for things like publication pipeline, CRDM, SDLC... do analysis\nand create bean to fill in.\"*\n\nAnalysis: `cat-harness/docs/proposals/bean-archiving-in-bpmn.md`. Measured on\n`654a48c2`.\n\n## The answer: wired up nowhere, and there is no wirin",
      "file": "beans/defs/folio-assistant-m8gz--bean-lifecycle-archiving-is-drawn-nowhere-and-proc.md"
    },
    {
      "id": "folio-assistant-mac1",
      "title": "Re-seed both fhir-ast caches with the git-tree InputDigest (needs FHIR network)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [
        "folio-assistant-wnhh"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-02T15:30:31Z",
      "updatedAt": "2026-10-02T18:00:00Z",
      "preview": "## Brief\n\nYou are the EXECUTOR for this bean. A cloud Claude session (the coordinator)\nhanded it to you because it cannot reach `packages.fhir.org`, and you can.\nYou were sent here by one sentence:\n`Do bean mac1 on branch agy/wnhh-sushi-publisher-local of repo litlfred/folio-assistant.`\n\nWHERE\n- Repo:     litlfred/folio-assistant\n- Checkout: `~/space_cats/folio-assistant` (NOT `~/space_cats/folio-",
      "file": "beans/defs/folio-assistant-mac1--re-seed-both-fhir-ast-caches-with-the-git-tree-inp.md"
    },
    {
      "id": "folio-assistant-mc8h",
      "title": "MERGE-FORWARD TREADMILL: re-merging main faster than CI can answer means never getting a verdict — #1064 took four base merges and observed zero gates runs",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T13:25:16Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Found by getting it wrong on [#1064](https://github.com/litlfred/folio-assistant/pull/1064),\nand written down because the mistake is cheap to repeat.\n\n## What happened\n\n`main` absorbed **31, 13, 11 and 12** commits under one branch in about\nseventy minutes. Each time, the PR went `dirty`, and each time the response\nwas: merge `origin/main`, resolve, `bun run cat gates`, push. Four rounds.\n\n**`get_",
      "file": "beans/defs/folio-assistant-mc8h--merge-forward-treadmill-re-merging-main-faster-tha.md"
    },
    {
      "id": "folio-assistant-mcdj",
      "title": "The 20 kg witnesses each copy the auditor hash the manifest already holds, so one auditor edit still rewrites 21 files",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T17:21:08Z",
      "updatedAt": "2026-09-24T06:32:51Z",
      "preview": "The residue `cflw` named and said *\"wants its own bean\"*. This is it, with the\nnumber re-derived rather than inherited.\n\n## Measured 2026-09-23, with `cflw`'s own probe\n\nAppend one comment line to `scripts/kg-audit.ts`, then:\n\n| run | files changed |\n|---|---|\n| `bun run cat kg:audit` alone | **2** — the probe itself, and `skills/kg-qa.manifest.json` |\n| `bun run cat regen` (43 verify/write pairs)",
      "file": "beans/defs/folio-assistant-mcdj--the-20-kg-witnesses-each-copy-the-auditor-hash-the.md"
    },
    {
      "id": "folio-assistant-mcsm",
      "title": "Voice docs pages + WHO library ingestion: per-voice documentation, PDF extraction, JSON-LD graph (issue #208 follow-up)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T15:35:23Z",
      "updatedAt": "2026-10-21T19:42:00Z",
      "preview": "_2026-10-06_ — recovered from the stray root `.beans/` directory (leftover of the 2026-09-18 `.beans` -> `beans` rename), where the bean tooling could not see it; parented under the INGEST epic. Its work (voice docs pages, WHO library ingestion, issue #208 follow-up) needs re-checking against what has since landed before it is worked or closed.\n\n## Closed 2026-10-21 — re-checked against main\n\nAll ",
      "file": "beans/defs/folio-assistant-mcsm--voice-docs-pages-who-library-ingestion-per-voice-d.md"
    },
    {
      "id": "folio-assistant-mdn6",
      "title": "bun test re-stamps two proof script sidecars, so gates reports the tree changed",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T00:40:34Z",
      "updatedAt": "2026-09-30T00:40:34Z",
      "preview": "Measured 2026-09-30 on origin/main 0d2ec884c (worktree for g9r2): every gate passed, then gates.ts failed the run because `bun test` wrote `cat-harness/content/pipeline/script-sidecars/proof-compile-cost.script.json` and `proof-no-cost-regression.script.json`. The diff: `source_file` now reads `folio-assistant-sci/content/pipeline/qa-checkers-cost.ts` (the checker moved there), and `last_run_at`/`",
      "file": "beans/defs/folio-assistant-mdn6--bun-test-re-stamps-two-proof-script-sidecars-so-ga.md"
    },
    {
      "id": "folio-assistant-mer2",
      "title": "folio_init takes no layer argument, so the ruled MVP definition is not expressible",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T21:47:07Z",
      "updatedAt": "2026-10-08T08:05:00Z",
      "preview": "## The finding, and how it was measured\n\nThe owner ruled, 2026-09-30, that **MVP for a layer = `folio_init` creates a\nworking folio against that layer ALONE, in an empty repository** (`tndo`,\nchosen from four candidates). `zmdo` turned that into four checkboxes and named\nthe first thing to measure: *\"whether `folio_init` can target a single layer at\nall today. If it cannot, that is a defect agains",
      "file": "beans/defs/folio-assistant-mer2--folio-init-takes-no-layer-argument-so-the-ruled-mv.md"
    },
    {
      "id": "folio-assistant-mfhc",
      "title": "Merge refused: #2078 merge:guard checks 3 and 5 (no owning session; conflict on wm63 bean)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-wm63",
      "blocking": [
        "folio-assistant-wm63"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:29:18Z",
      "updatedAt": "2026-10-04T17:37:49Z",
      "preview": "PR #2078 (`agy/wm63-non-who-ig-demo`, \"feat(fhir-harness): demonstrate bare pipeline on non-WHO IG (wm63, nsbb)\"), head `1d2cf9188ce9`. Owner-approved for landing 2026-10-04; owner, 14:40Z: \"2078 land if ready\". Handed back by the Merge Manager at 14:40Z, against main `32b1fb6fdb`.\n\n## Refused\n`merge:guard 2078` (evaluate only):\n- check 3 `ready-marker`: the PR body links no session, so no `ready:",
      "file": "beans/defs/folio-assistant-mfhc--merge-refused-2078-mergeguard-checks-3-and-5-no-ow.md"
    },
    {
      "id": "folio-assistant-mftp",
      "title": "ONE IG SITE AT THE ROOT: smart-trust's narrative and artefact pages build as one just-the-docs site at /smart-trust/, in production too",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T14:34:28Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "Owner, 2026-10-05, looking at https://litlfred.github.io/folio-assistant/smart-trust/ with WHO's v1.7.3 TOC beside it: *\"smart-trust is missing lots of pages\"*. Offered (1) publish /ig/ in production, (2) +profile tabs, (3) merge the two sites; chose 3: *\"1 but clean break on old beahviour, no redirect needed.\"* Follows `jut3` (P0) and `bamf`.\n\n## Measured 2026-10-05\n- Production /smart-trust/ is ",
      "file": "beans/defs/folio-assistant-mftp--one-ig-site-at-the-root-smart-trusts-narrative-and.md"
    },
    {
      "id": "folio-assistant-mgxw",
      "title": "S7 seed staging repos the sibling's way: one seed PR per litlfred/<name> repo, on a branch",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [
        "folio-assistant-w0at"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:14:34Z",
      "updatedAt": "2026-10-21T17:10:00Z",
      "preview": "Mirrors n3ni. G6: litlfred/{folio-assistant-core,folio-assistant-sci,fhir-harness} needed (large-datasets, agent-skills fold into cat-harness per owner 2026-10-01); not visible to this account. G7: litlfred/cat-harness and cat-harness-tools already carry commits (09-29, 09-30): read first.\n\n## Done when\n- [x] contents of litlfred/cat-harness and cat-harness-tools recorded: both EMPTY (0 commits), ",
      "file": "beans/defs/folio-assistant-mgxw--s7-seed-staging-repos-the-siblings-way-one-seed-pr.md"
    },
    {
      "id": "folio-assistant-mi97",
      "title": "Audit the 171 unresolved links in docs/ — 23 carry one ../ too many from the cat-harness move",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T17:06:16Z",
      "updatedAt": "2026-09-26T17:58:04Z",
      "preview": "Surfaced 2026-09-20 by declaring `docs/` as a graph directory — 241 markdown\nfiles that were, until then, invisible to every declaration-driven consumer.\n`check:subgraphs` walked them for the first time and found 171 links that do\nnot resolve in the source tree.\n\nThey are NOT one problem. Measured, by trying each repair against disk:\n\n| shape | count | example |\n|---|---|---|\n| one `../` too many ",
      "file": "beans/defs/folio-assistant-mi97--audit-the-171-unresolved-links-in-docs-23-carry-on.md"
    },
    {
      "id": "folio-assistant-mjl3",
      "title": "artefact-verification.json merges are CORRECTLY refused and must stay refused: it reads like a generated sidecar, has no writer, and carries authored reasons",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T17:41:35Z",
      "updatedAt": "2026-10-07T06:31:00Z",
      "preview": "A **preventive** record, not a defect: this bean exists so the next agent that\nmeets this refusal twice does not \"fix\" it by widening a glob — which is the\nmistake `merge-conflict-patterns` names in its own opening and which I came within\none step of making.\n\n## Where it came from\n\nSwept the merge-main bot's refusals across all 13 open `merge-main` PRs on\n2026-10-03, while #2029 added the one real",
      "file": "beans/defs/folio-assistant-mjl3--artefact-verificationjson-merges-are-correctly-ref.md"
    },
    {
      "id": "folio-assistant-mkao",
      "title": "LIBRARY VIEWER LEAK: withheld who-iris entries still published verbatim text and covers via /assets/library/",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-kupb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T19:22:42Z",
      "updatedAt": "2026-09-24T20:42:03Z",
      "preview": "Found by the 2026-09-24 channel audit after cw35 (#1300) excluded refused items from the site mount.\n\nThe platform library viewer (gen-library-viz.ts) reads library entries directly and publishes them under /assets/library/, bypassing the mount's withheld.json:\n- entries/9789241548960-eng.json: ~124k chars of verbatim prose excerpts\n- entries/who-pub-tps-931.json: ~65k chars\n- avatars/who-iris/{bo",
      "file": "beans/defs/folio-assistant-mkao--library-viewer-leak-withheld-who-iris-entries-stil.md"
    },
    {
      "id": "folio-assistant-mkqf",
      "title": "QUEUED STREAM C: what the reader receives — deployment topologies and translation (5a3l + bzyu, 20 open beans)",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T18:29:28Z",
      "updatedAt": "2026-09-22T18:29:28Z",
      "preview": "## What this is\n\nA **queued** stream: not claimed, not started. One of three queue entries\ncovering the 49 beans the three-GOAL split parked, created 2026-09-22 when the\nowner asked that a finishing stream be handed the next piece of work.\n\nStatus is `todo` deliberately — see the sibling entry under `slw1`.\n\n## Scope\n\nTwo epics that are one question seen twice — **what the delivered artefact is,\na",
      "file": "beans/defs/folio-assistant-mkqf--queued-stream-c-what-the-reader-receives-deploymen.md"
    },
    {
      "id": "folio-assistant-ml9h",
      "title": "DRAIN 2026-10-10: open bean backlog across cat-harness, cat-harness-tools and folio-assistant-core, leaves up, three lanes",
      "status": "completed",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T15:40:10Z",
      "updatedAt": "2026-10-20T16:05:00Z",
      "preview": "Drain the open bean backlog across the three bean stores the separation left, working LEAVES UP: a bean is taken only when it is `todo`, not an epic/milestone, has no open children and no open blocked-by. Parents close when their last child closes — never before.\n\n## Census (2026-10-10 15:40 UTC)\n\n| store | where it lives | open | ready leaves (todo) |\n|---|---|---|---|\n| cat-harness graph | `bean",
      "file": "beans/defs/folio-assistant-ml9h--drain-2026-10-10-open-bean-backlog-across-cat-harn.md"
    },
    {
      "id": "folio-assistant-mlnj",
      "title": "Verify Processes rows link after the index pins cat-harness-tools#313",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-46ob",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T16:53:28Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "## Parent\n\nfolio-assistant-46ob\n\nProcesses read \"no viewer yet\" on 6 harnesses (Bootstrap tools, C@T Harness, FHIR IG Harness, Folio Assistant Core, SMART Base, folio-assistant-sci) because its page is built at publish. Fixed in cat-harness-tools#313 (merged 2026-10-15). Measured locally after the fix: all 7 harnesses link to `/en/cat-harness/processes/`.\n\n## Done when\nThe folio-assistant index pi",
      "file": "beans/defs/folio-assistant-mlnj--verify-processes-rows-link-after-the-index-pins-ca.md"
    },
    {
      "id": "folio-assistant-mlux",
      "title": "PROCESS BINDINGS: clear the 33 wrong-direction skill bindings check:process-bindings baselined",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T10:38:18Z",
      "updatedAt": "2026-10-09T19:25:00Z",
      "preview": "Owner, 2026-10-03: a process may bind only skills (and through them Tools) from its own instance or one it needs — \"general rule, not just fhir-harness\". `check:process-bindings` (cat-harness/scripts/, PR #1968) found 33 unique wrong-direction bindings (35 refs) in 9 diagrams on 2026-10-03, all baselined in cat-harness/scripts/process-bindings.baseline.ts. Each fix is EITHER move the process up to",
      "file": "beans/defs/folio-assistant-mlux--process-bindings-clear-the-34-wrong-direction-skil.md"
    },
    {
      "id": "folio-assistant-mm2n",
      "title": "SEARCH SECTIONS: split the 7.7 MB platform scope by section over a declared budget (#1972)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T13:53:25Z",
      "updatedAt": "2026-10-03T13:53:25Z",
      "preview": "Issue #1972, the owner's \"1 2 3\" of 2026-10-03: (1) give the 7.7 MB platform\nscope's biggest part its own scope, (2) per-graph scopes, (3) remote graphs.\nThis bean is (1) and the platform half of (2).\n\n## Measured (local build, 2026-10-03)\n\nThe `_platform` scope, 7.82 MB / 4,852 entries, by top-level section:\n`reference` 3.85 MB (3,070), `glossary` 0.95, `uml` 0.91, top-level pages\n0.65, `processe",
      "file": "beans/defs/folio-assistant-mm2n--search-sections-split-the-77-mb-platform-scope-by.md"
    },
    {
      "id": "folio-assistant-mm4u",
      "title": "cat-harness-tools main Typecheck RED since its #58: build-instance-site.ts passes publishSite({into}) that only bootstrap-tools main has; folio-assistant index.lock pins an older bootstrap-tools",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-ml9h",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T15:54:05Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "Found by drain lane B (session_01QmRtjQNyHiH2RuimTfuJDu) on cat-harness-tools#59, 2026-10-10.\n\nCI log: one error, build-instance-site.ts — 'into' does not exist in type 'PublishOptions'. Identical on main and on #59, so every cat-harness-tools PR shows a red Typecheck that is not its own. A cast is NOT the fix: with the pinned bootstrap-tools, 'into' is silently ignored, so a staging preview publi",
      "file": "beans/defs/folio-assistant-mm4u--cat-harness-tools-main-typecheck-red-since-its-58.md"
    },
    {
      "id": "folio-assistant-mo75",
      "title": "NAMED SUBGRAPH MOUNTS: hydrated metadata first, then a chosen set (nested ids, node sets, concern names) — the nn8e follow-up",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-fnx4",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T11:22:06Z",
      "updatedAt": "2026-10-21T17:56:00Z",
      "preview": "Filed 2026-10-09 on the owner's instruction (\"nn8e yes\"). `nn8e`'s done-when names it as a follow-up — \"remote BRANCH mount of other repos' named subgraphs, hydrated vs not\" — and no bean carried it until now.\n\nProposal: `cat-harness/docs/proposals/semantic-subgraphs-2026-10-09.md`, Option C (ruled \"C y\", 2026-10-09). The owner's workflow, verbatim: *\"load the tools/skills metadata, review the ski",
      "file": "beans/defs/folio-assistant-mo75--named-subgraph-mounts-hydrated-metadata-first-then.md"
    },
    {
      "id": "folio-assistant-mw5z",
      "title": "who-iris's two AUTHORED docs pages render as raw markdown and nothing links them",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T06:25:33Z",
      "updatedAt": "2026-10-09T17:36:18Z",
      "preview": "Found by running bean `06e3`'s who-iris exercise end to end, 2026-10-04 (PR #2049).\n\n## The declaration states the rule that is now broken\n\n`who-iris.json`, on the `who-iris-catalogue` entry:\n\n> *\"HTML rather than markdown because who-iris declares no `composed` directory\n> -- its docs are MOUNTED after Jekyll, so a .md here would be copied verbatim\n> and never rendered.\"*\n\nBean `qsx4` (owner, 202",
      "file": "beans/defs/folio-assistant-mw5z--who-iriss-two-authored-docs-pages-render-as-raw-ma.md"
    },
    {
      "id": "folio-assistant-mwzd",
      "title": "INGEST trust + origin sources (#1614 item 4): WHO SMART Trust IG, C2PA spec, DSpace 7 REST contract",
      "status": "in-progress",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-scfh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:42:36Z",
      "updatedAt": "2026-10-21T17:56:00Z",
      "preview": "Issue #1614 item 4, slides 2 of the KG/folio-asst deck: signed assets and the trust network; IRIS (DSpace) as the L1 origin.\n\n## Done when\n\n- [x] WHO SMART Trust IG narrative pages held as an L1 entry under the smart-trust instance, IG version recorded from sushi-config.yaml\n- [x] C2PA Technical Specification (latest released version) held or referenced per its licence, version recorded (`folio-as",
      "file": "beans/defs/folio-assistant-mwzd--ingest-trust-origin-sources-1614-item-4-who-smart.md"
    },
    {
      "id": "folio-assistant-mylx",
      "title": "Raw Markdown backticks show in rendered text",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:13Z",
      "updatedAt": "2026-09-29T23:05:45Z",
      "preview": "Descriptions carried from Markdown front matter or prose are rendered as plain text, so the backticks show. Render inline code (or strip the markers) in the shared text path.\n\nObserved on: `fsh-guts`, `glossary`, `methodologies`, `navbar`, `skills-index`, `voices` (see each `cat-harness/docs/wireframes/<kind>/intent.md`). Per-page detail is in each visualiser's task under the epic.\n\n_2026-09-29T22",
      "file": "beans/defs/folio-assistant-mylx--raw-markdown-backticks-show-in-rendered-text.md"
    },
    {
      "id": "folio-assistant-n2l9",
      "title": "TASK AUTHORIZATION STRICT: grant perform-task per lane, count unknowns in kg:audit, then flip the engine to strict",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:52:59Z",
      "updatedAt": "2026-09-24T19:31:54Z",
      "preview": "Follow-up to t490 / #1207 (PR #1214). The engine check is advisory because on 2026-09-23 no policy granted perform-task: 615 tasks/gateways, 0 permit, 574 unknown, 41 in lanes no declared actor may take.\n\n## Done when\n- [x] a kg:audit criterion counts tasks whose eligible actors get unknown from authorizeTask (reporting before gating, with a vacuity guard)\n- [x] perform-task rules, scoped by cat-h",
      "file": "beans/defs/folio-assistant-n2l9--task-authorization-strict-grant-perform-task-per-l.md"
    },
    {
      "id": "folio-assistant-n3h9",
      "title": "HARNESS the smart-* IG repositories: index.config.json remote mounts, Actions gh-pages switched off, agent-run harnessed publish",
      "status": "in-progress",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T14:06:53Z",
      "updatedAt": "2026-10-23T16:25:00Z",
      "preview": "Owner, 2026-10-10: *\"you can work onthe litlfred/smart-* go ahead and harness them with index.config.json and make sure they stop the ghpages currrent redering pipleine and use to the harnessed one\"* (fhir-harness, smart-base harness). Repositories: *\"smart-base, smart-base-clinical, smart-core, smart-immunizations, smart-hiv and smart-trust smart-ra\"*.\n\n## State measured 2026-10-10\n- **Push-trigg",
      "file": "beans/defs/folio-assistant-n3h9--harness-the-smart-ig-repositories-indexconfigjson.md"
    },
    {
      "id": "folio-assistant-n3ni",
      "title": "SMART-* SEPARATION: /smart-base/ landing page, generic IG page generator into fhir-harness, staged smart-* dirs into litlfred forks",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:10:21Z",
      "updatedAt": "2026-10-09T17:07:12Z",
      "preview": "Issue #1767. Owner 2026-10-01: landing page for /smart-base/; push generic stuff into fhir-harness first; staged smart-base, smart-trust (and smart-immunizations) belong in litlfred forks.\n\n## Done when\nStaged per cat-harness/docs/proposals/smart-separation-2026-10-01.md (owner decided Q1-a, Q2-a, Q3-b, Q5 reframed as qvxh).\n- [x] A1 gen-smart-trust-pages -> fhir-harness/scripts/gen-ig-pages.ts; s",
      "file": "beans/defs/folio-assistant-n3ni--smart-separation-smart-base-landing-page-generic-i.md"
    },
    {
      "id": "folio-assistant-n5be",
      "title": "glossary visualiser: 6 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:14Z",
      "updatedAt": "2026-10-02T07:14:42Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/glossary/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **There is no way to find a term** except scrolling or the browser's find. The page has no search, no filter and no A–Z jump, and its 46 rows run to about 8,00",
      "file": "beans/defs/folio-assistant-n5be--glossary-visualiser-6-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-n7f8",
      "title": "IG site diagrams (PlantUML sequence/deployment SVGs) get the same pan/zoom/resize viewer as BPMN diagrams",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T10:28:18Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Owner, 2026-10-06: \"the diagrams on https://litlfred.github.io/smart-trust/sequence-diagrams.html are now resiable/scrollable like the bpmn diagrams are. tehy should be\" (read as: are NOT, and should be). Screenshot: wide PlantUML SVGs on the IG narrative page overflow and are clipped at the right edge.\n\n## Done when\n- [x] Inline/IMG diagram SVGs on IG site pages get the BPMN viewer's pan, zoom an",
      "file": "beans/defs/folio-assistant-n7f8--ig-site-diagrams-plantuml-sequencedeployment-svgs.md"
    },
    {
      "id": "folio-assistant-nafz",
      "title": "glossary-export walks ONE instance's diagrams while translate-bpmn walks the dependents' too",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:14:17Z",
      "updatedAt": "2026-09-30T00:33:58Z",
      "preview": "Found 2026-09-23 while ingesting the `doc-researcher` methodology (bean `ctp3`).\nA **reporting** inconsistency, not a wrong answer: both generators are internally\nright and they disagree about what \"this corpus\" means.\n\n## Measured\n\n`folio-assistant-core/processes/deep-document-research.bpmn` declares a lane\n`Deep researcher`, bound to the `deep-researcher` role.\n\n| generator | reaches that diagra",
      "file": "beans/defs/folio-assistant-nafz--glossary-export-walks-one-instances-diagrams-while.md"
    },
    {
      "id": "folio-assistant-najo",
      "title": "MERGE QUEUE OFF MAIN: the queue graph on its own branch store, so a steward can record a decision without opening a PR",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [
        "folio-assistant-ixmq"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T08:20:32Z",
      "updatedAt": "2026-10-10T06:15:00Z",
      "preview": "## Brief\n\n**What and why.** `beans/queue/` holds no entries — only its README — and the reason is\nstructural. `main` is authoritative for `beans/`, so an entry reaches it only through a PR,\nand the owner has ruled that the merge steward does no development work: it must not open\nPRs of its own, because that has it setting its own priority in the queue it manages,\nspending the CI the queue is starv",
      "file": "beans/defs/folio-assistant-najo--merge-queue-off-main-the-queue-graph-on-its-own-br.md"
    },
    {
      "id": "folio-assistant-nama",
      "title": "DERIVED-GRAPH DEPENDENCIES: declare which derived/rendered subgraph is computed from which (fhir-ast -> ig-docs -> gh-pages; lean-cache), and walk them",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [
        "folio-assistant-4j86"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T13:49:44Z",
      "updatedAt": "2026-10-10T08:00:00Z",
      "preview": "Owner, 2026-10-04: *\"bean up missing dependency logic on derived graphs (e.g. ig-docs, gh-pages, lean-cache, fhir-ast). may need to walk dependencies between derived content (e.g. fhir-ast is dependency of ig-docs). not sure graph schema has that yet... these are rendered sub-graphs. so we can use order that subgraphs declared as rendering order for now maybe\"*\n\n## What exists (measured 2026-10-04",
      "file": "beans/defs/folio-assistant-nama--derived-graph-dependencies-declare-which-derivedre.md"
    },
    {
      "id": "folio-assistant-nba0",
      "title": "QA scoping: automated:false criteria bypass BOTH the adapter and profile gates",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T17:18:22Z",
      "updatedAt": "2026-10-08T05:17:00Z",
      "preview": "## The defect\n\n`content/pipeline/qa-sweep.ts` short-circuits a criterion with\n`automated: false` straight to `needs-agent` **before** either scoping gate\nruns. So neither `adapters` nor the new `profiles` axis can scope an\nagent-adjudicated criterion — the gates are unreachable for exactly the\ncriteria whose adjudication is most expensive.\n\nFound while building the profile axis (bean `g6yr`, merge",
      "file": "beans/defs/folio-assistant-nba0--qa-scoping-automatedfalse-criteria-bypass-both-the.md"
    },
    {
      "id": "folio-assistant-nbal",
      "title": "URL SPACE (producer half): the declared enabled field and one resolver for an instance's published path, in cat-harness",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-20T15:21:53Z",
      "updatedAt": "2026-10-20T15:21:53Z",
      "preview": "Producer half of cat-tools-sthf (the consumer half, in the cat-harness-tools store) and of the core/cat-harness pointer folio-assistant-o7eq. Filed 2026-10-20 by the drain coordinator (session https://claude.ai/code/session_01BiusQ9uAZiHP6TUhfwZ2h6) after lane B2 measured that sthf cannot start in cat-harness-tools: the enabled field is absent from schemas/cat-harness.ts, and no function composes ",
      "file": "beans/defs/folio-assistant-nbal--url-space-producer-half-the-declared-enabled-field.md"
    },
    {
      "id": "folio-assistant-ncvl",
      "title": "E2E TEST SERVER DIES MID-SHARD: slice-sqlite.e2e.ts hits ERR_CONNECTION_REFUSED, passes on re-run (#2192, #2273)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T11:19:19Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Reported 2026-10-06 by session A (session_01FrpbCpM7BWxGCPsu618MLr). On #2273, and on #2192 earlier, `slice-sqlite.e2e.ts` failed with ERR_CONNECTION_REFUSED: the Playwright webServer (`node test-server.mjs`) died partway through the shard. One re-run passed each time.\n\n'Flake' is not a root cause. A server that dies under one spec is a defect either in that spec (a payload or slice size that cras",
      "file": "beans/defs/folio-assistant-ncvl--e2e-test-server-dies-mid-shard-slice-sqlitee2ets-h.md"
    },
    {
      "id": "folio-assistant-ndp0",
      "title": "NEXT CAT-HARNESS RE-PIN BREAKS THE ROOT: .claude/settings.json hooks and package.json's cat script call cat-harness/scripts/* that 70lx moved to cat-harness-tools/scripts",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-ml9h",
      "blocking": [
        "folio-assistant-t1vl"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-10T16:42:44Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "Found by drain lane B, verified by lane A 2026-10-10: litlfred/cat-harness main no longer has scripts/run-script.ts, session-start-coord-sweep.sh, ask-well.sh or decisions-named-not-asked.ts. The pinned a89998b still has them, so nothing is broken today; the first re-pin of cat-harness past 70lx breaks `bun run cat …`, the SessionStart hook, and two prompt hooks, silently for the hooks.\n\nLane B al",
      "file": "beans/defs/folio-assistant-ndp0--next-cat-harness-re-pin-breaks-the-root-claudesett.md"
    },
    {
      "id": "folio-assistant-nf2z",
      "title": "WORKFLOW TOOLS SEE NO PROCESS: from the repo root workflow_list reports none — diagrams live in dependencies, the resolver is root-only",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T22:32:34Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "Found 2026-09-29 while starting xlg2 (bean `xlg2`, the first real sample-import run).\n\n**Measured:** `registerWorkflowTools` captured with a stub server (the pattern in `precondition-consumer.test.ts`), rooted at the repository root — the MCP server's default (`src/index.ts`: `resolve(import.meta.dir, \"../..\")`). `workflow_list` returned **\"Processes: _(none)_\"**. `workflowFiles(repoRoot)` → 0 `.b",
      "file": "beans/defs/folio-assistant-nf2z--workflow-tools-see-no-process-from-the-repo-root-w.md"
    },
    {
      "id": "folio-assistant-nfv3",
      "title": "SKILL REGISTRATION: one command performs the artefact chain, and a gate refuses a skill that arrives without it — 7 merges have paid for its absence",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T07:38:20Z",
      "updatedAt": "2026-09-30T22:33:45Z",
      "preview": "## What this is\n\n`v625`'s open item, both halves: *\"the chain is written down somewhere an author\nadding a skill will find it — or, better, one command performs it.\"* Neither\nexisted. `#1383`'s author reached the same conclusion and left it deliberately —\n*\"a pre-merge gate … is the actual fix, and it's a separate decision I have not\ntaken here\"* — and the owner took it on 2026-09-26.\n\n## The defe",
      "file": "beans/defs/folio-assistant-nfv3--skill-registration-one-command-performs-the-artefa.md"
    },
    {
      "id": "folio-assistant-ngxj",
      "title": "TRANSLATION CATALOGUES: five pages shipped .md-only, so translation:drift holds every open PR red — and it is a regression in t8g3's own practice",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T06:46:02Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "## NOT a claim on `t8g3`'s work\n\nThis bean is the **gate blocker and the measurement**, not the translation work.\n`t8g3` (issue #206) is `in-progress` and its campaign is somebody else's to run;\n`bean-coordination` §\"Mid-flight is still off limits\" applies and nothing here\nmay be closed by producing catalogues on their behalf. It exists so the next\nagent hitting a red queue finds the measurement i",
      "file": "beans/defs/folio-assistant-ngxj--translation-catalogues-five-pages-shipped-md-only.md"
    },
    {
      "id": "folio-assistant-nij4",
      "title": "MOUNT/PUSH: one implementation — state:mount/state:push rebuilt on branch-store's byte- and mode-preserving mount/push, dispatching on the declared subgraph source",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T13:50:12Z",
      "updatedAt": "2026-10-06T06:26:36Z",
      "preview": "Owner ruling 2026-10-03 (option 1 of 4, asked by the Parcel B session): main carries TWO mount/push implementations after #1982 and #1957 both merged — `state-mount.ts`/`state-push.ts` (#1982; reads the mount as utf-8 text, so binary files are corrupted and modes/symlinks lost, fixed separately by #1989) and `branch-store.ts mount --id`/`push --id` (#1957; bytes, modes and symlinks round-trip, 15 ",
      "file": "beans/defs/folio-assistant-nij4--mountpush-one-implementation-statemountstatepush-r.md"
    },
    {
      "id": "folio-assistant-nm7l",
      "title": "B3a (#1168): scripts/validators/mcpServices become Tools; satisfiedBy and GraphKindDef.skill flipped",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T23:20:35Z",
      "updatedAt": "2026-09-23T23:56:10Z",
      "preview": "Part of s4sp (plan B3, split: B3a arrows, B3b skill I/O contracts). Skill scripts/validators/mcpServices removed (26 skills, no live reader); the 6 real scripts become Tools (content-graph-analysis, pages-index, proof-dependency-graph, proof-objects-extract, proof-status-update, paper-latex-build) and content-manifest-validate also satisfies content-validation. Requirement statements lose satisfie",
      "file": "beans/defs/folio-assistant-nm7l--b3a-1168-scriptsvalidatorsmcpservices-become-tools.md"
    },
    {
      "id": "folio-assistant-nn8e",
      "title": "Remote mount replaces the bootstrap and bootstrap-tools submodules (MVP), issue 2462",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-0mpw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T20:07:21Z",
      "updatedAt": "2026-10-23T08:35:00Z",
      "preview": "Issue #2462. Owner 2026-10-07: URGENT, MVP, fix the mount tool first; pins trusted at bootstrap@12a5c9eadca3 and bootstrap-tools@1947e0536a97. Plan and blockers B1-B3 in the issue.\n\n## Done when\n- [x] Tool PR: whole-instance mount, mounter free of bootstrap-tools imports, lock mounts treated like submodules by git-corpus / instance-repositories / readme-sections, closure follows an upstream lock\n-",
      "file": "beans/defs/folio-assistant-nn8e--remote-mount-replaces-the-bootstrap-and-bootstrap-to.md"
    },
    {
      "id": "folio-assistant-nnpk",
      "title": "schemas visualiser: 5 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-10-09T12:48:40Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/schemas/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **On a phone, picking a declaration shows nothing.** The detail pane is below the 560 px list box, and selecting an item leaves the page where it is (`scrollY` ",
      "file": "beans/defs/folio-assistant-nnpk--schemas-visualiser-5-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-nok9",
      "title": "MERGE GATE: agentic adversarial review + content-type compile gates, and per-content-block QA backfill",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:29:09Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Owner, 2026-10-02 (bean for later): update the Merge Manager skills, process and tools so that a merge is GATED on:\n\n- a full agentic adversarial software code review of any change made by one or more agents;\n- no blocking RED FLAG from any agentic review;\n- (math content block) every changed Lean file compiles;\n- (FHIR IG) SUSHI and the IG AST compile;\n- JSON(-LD) plus schema for the KG renders (",
      "file": "beans/defs/folio-assistant-nok9--merge-gate-agentic-adversarial-review-content-type.md"
    },
    {
      "id": "folio-assistant-np6o",
      "title": "cat-harness kind registry: point the 6 shapes 70lx moved at 'cat-harness-tools:<path>#Export'; map folio-slice-sqlite/v1, folio-slice-index/v1, qa-script/v1",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-ml9h",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-11T07:00:59Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "Owner ruling 2026-10-11 ~06:55 UTC: **Point at tools** — the 'cat-harness-tools:<path>#Export' form the registry already uses for models (bootstrap-tools:schemas/model-registry.ts#ModelRegistrySchema). check:kind-validators:require-all at #2529's pins: folio-qa-graph/v1, folio-translation-index/v1, folio-workflow-instance/v1 (x2), folio-image-verdicts/v1, folio-issue-mark/v1 name files no longer u",
      "file": "beans/defs/folio-assistant-np6o--cat-harness-kind-registry-point-the-6-shapes-70lx.md"
    },
    {
      "id": "folio-assistant-npuo",
      "title": "GOAL 5 / CONTENT: the content model and the ingest pipeline that feeds it",
      "status": "in-progress",
      "type": "milestone",
      "priority": "normal",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:12:07Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "**The owner's words, 2026-10-04**, chosen from options put to them in session\nhttps://claude.ai/code/session_01Ga3HjmX3ag9vTgZWDSmsFi when ruling on\n`rwmf`'s residual: *\"New GOAL 5: CONTENT\"*. That option was described as *\"a\nfifth milestone for the content model and the pipeline that feeds it — one\ncoherent subject none of the four goals pays for.\"* The title above is derived\nfrom those words and",
      "file": "beans/defs/folio-assistant-npuo--goal-5-content-the-content-model-and-the-ingest-pi.md"
    },
    {
      "id": "folio-assistant-nrrf",
      "title": "branch-archaeology skill: classify every remote branch against main by patch-id, report-only, content branches are salvage-review",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:09:15Z",
      "updatedAt": "2026-10-04T15:30:37Z",
      "preview": "Evidence: qou work-plan analysis 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). qou: 6,480 remote branches, 461 holding math not on main. Treeless fetch of all heads took 15 s.\n\n## Done when\n- [x] skill text in cat-harness kg (sdlc-core), registered\n- [x] four classes (merged / landed-by-patch-id / partial / unlanded), content-protection rule, tip-sha cache, report-o",
      "file": "beans/defs/folio-assistant-nrrf--branch-archaeology-skill-classify-every-remote-bra.md"
    },
    {
      "id": "folio-assistant-ns96",
      "title": "Merge refused: #2100 not signed (merge:guard checks 3 and 4)",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-nok9",
      "blocking": [
        "folio-assistant-uoob"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:42:21Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "PR #2100, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_NotReady: conflict clean, own CI green.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2100.json`, status `unknown`): ACK: new at 14:25Z (throttle merge-g",
      "file": "beans/defs/folio-assistant-ns96--merge-refused-2100-not-signed-mergeguard-checks-3.md"
    },
    {
      "id": "folio-assistant-nsbb",
      "title": "IG PIPELINE LAYERING: a bare FHIR IG pipeline is the base; DAK and SMART are overlays on it, not the thing itself",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T15:37:14Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Owner, 2026-09-21, verbatim:\n\n> 'that should be the basic bare FHIR IG (not DAK, not SMART) pipeline= running fhir IG, no pre-post processing and outpuing to gh-pages (how smart-guidelines generated before pre/post peocess) for those what are not WHO specfic.... those can be upgraded to do pre/post, but would need chnages/overlays .'\n\n## The layering\n\n**Base — generic, not WHO.** Run the FHIR IG P",
      "file": "beans/defs/folio-assistant-nsbb--ig-pipeline-layering-a-bare-fhir-ig-pipeline-is-th.md"
    },
    {
      "id": "folio-assistant-nsbk",
      "title": "INSTANCE ID COLLISION: bootstrap declares id 'cat-harness' too, so its 5 skills are dropped from the overlay and unreachable",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T13:54:27Z",
      "updatedAt": "2026-10-09T11:35:00Z",
      "preview": "_2026-09-22T14:00:00Z_ — Found while fixing `oe98`'s dead links. `oe98` went 262 non-resolving → 5, and the last 5 would not move. They are not a link defect at all; they are the visible edge of this.\n\n## The collision\n\nTwo instances declare a directory with the **same id**:\n\n    root instance   cat-harness.json   id \"cat-harness\"      -> skills/      => cat-harness/skills\n    bootstrap       boot",
      "file": "beans/defs/folio-assistant-nsbk--instance-id-collision-bootstrap-declares-id-cat-ha.md"
    },
    {
      "id": "folio-assistant-ntyj",
      "title": "PHASE P2: JSON-only — every dropped XML/Turtle representation recorded as a refusal, per IG and combined",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:32:21Z",
      "updatedAt": "2026-10-09T17:09:07Z",
      "preview": "Phase P2 of `ig-publisher-reduction` (approved 2026-09-30). Opened in the 2026-10-01 phased-transition review.\n\n**Exit criterion:** every dropped representation is **recorded as a refusal**, per IG with P1's combined view, so that \"publishes no Turtle\" and \"we ignored its Turtle\" stay distinguishable.\n\n**State:** the per-artefact data is already present. `fhir-artifact-index` records each artefact",
      "file": "beans/defs/folio-assistant-ntyj--phase-p2-json-only-every-dropped-xmlturtle-represe.md"
    },
    {
      "id": "folio-assistant-nvbr",
      "title": "Phase I.4 — LHS navbar section per node in the folio instance (#223)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T15:00:27Z",
      "updatedAt": "2026-10-01T06:20:32Z",
      "preview": "From [issue #223 comment](https://github.com/litlfred/folio-assistant/issues/223#issuecomment-5726628913):\n\"the lhs navbar should have sections for each node in the folio instance\".\n\n**A block was recorded here against bean `fsch`** — without a folio holding\n0..n content instances there is only ever one node to render. **NOT blocked\non `fsch`:**\nit was scrapped 2026-09-20 and the block is void — s",
      "file": "beans/defs/folio-assistant-nvbr--phase-i-4-lhs-navbar-section-per-node-in-the-folio-ins.md"
    },
    {
      "id": "folio-assistant-nytj",
      "title": "A sidecar records its auditor's hash, so two concurrent PRs go green alone and red together",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T00:26:19Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "_2026-09-19T00:35:15Z_ — A THIRD instance of this shape, 2026-09-19, different mechanism again — worth recording together because the FAMILY is what matters. feature-staging's stage job checks out github.event.pull_request.head.ref, the BRANCH HEAD, while the workflow FILE comes from the merge ref. So main's steps run against the branch's files. PR #307 added both a new step ('Emit the knowledge-g",
      "file": "beans/defs/folio-assistant-nytj--a-sidecar-records-its-auditor-s-hash-so-two-concur.md"
    },
    {
      "id": "folio-assistant-o29r",
      "title": "EXTRACTION: cleanMarkdownText strips the underscores of LaTeX subscripts and snake_case identifiers — a translator receives a corrupted formula",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T14:43:40Z",
      "updatedAt": "2026-09-27T04:56:09Z",
      "preview": "## The defect, minimally\n\n`MD_ITALIC_UNDER_RE` in `cat-harness/content/pipeline/pot-extract.ts` is\n\n    /(?<!_)_([^_]+)_(?!_)/g\n\nwith no word-boundary condition, so any two underscores in one extracted string\nare read as an `_emphasis_` span and both are deleted. Measured:\n\n| input | `cleanMarkdownText` gives | should be |\n|---|---|---|\n| `$a_1$ and $b_2$` | `$a1$ and $b2$` | unchanged |\n| `x_1 y_",
      "file": "beans/defs/folio-assistant-o29r--extraction-cleanmarkdowntext-strips-the-underscore.md"
    },
    {
      "id": "folio-assistant-o3xy",
      "title": "UI & ACCESSIBILITY: the rendered site is the artefact a reader judges",
      "status": "completed",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:43:44Z",
      "updatedAt": "2026-10-21T06:50:00Z",
      "preview": "The rendered site is what a reader actually judges, and several of these are\ninvisible from inside the repo.\n\n`gjli` is the standing rule (all UI follows accessibility guidelines) and\n`rptk` is a live instance of breaking it. `blv9` and `g4dv` are links that do\nnot resolve or do not land where they claim; `1le7` and `alox` are surfaces\nthat shipped with their judgement calls unrecorded.\n\nGrouped b",
      "file": "beans/defs/folio-assistant-o3xy--ui-accessibility-the-rendered-site-is-the-artefact.md"
    },
    {
      "id": "folio-assistant-o57z",
      "title": "SWE-Debate (2507.23348v1): competitive multi-agent debate — refine devils-advocate-watcher and the adjudication codes",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:15:27Z",
      "updatedAt": "2026-10-09T19:26:00Z",
      "preview": "Ingest + critical analysis. 19pp. Bears on devils-advocate-watcher, the accepts/adjudication codes (bean bvuk), and whether debate beats a single adversarial pass.\n\n## Closed 2026-10-09\n\n- **Branch:** `claude/o57z-swe-debate-ingest` in `cat-harness`\n- **Commit:** `6ee05b0186e02a2d4cd2229a79cac9324347cda9`\n- **Ingestion:** Full L1 ingestion of arXiv:2507.23348v1 (\"SWE-Debate: Competitive Multi-Agen",
      "file": "beans/defs/folio-assistant-o57z--swe-debate-250723348v1-competitive-multi-agent-deb.md"
    },
    {
      "id": "folio-assistant-o7eq",
      "title": "URL SPACE: rendered assets mirror the instantiation structure — <baseurl>/ for the root, <baseurl>/<instance>/<path> for every enabled harness",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T18:30:55Z",
      "updatedAt": "2026-10-23T09:26:00Z",
      "preview": "Owner, 2026-09-20 (session_017PqeiS4JYySSWGAYLedmus), verbatim:\n\n> rendered assets should be available at toplevel like `<baseURL>/` for main\n> just the docs pipeline, or `<baseurl>/<page>` where is registered rendered\n> page from a harness that was instantiated and enabled (by default enabled)\n> relative to their url, so `<baseurl>cat-harness/docs` or so...\n> `<baseurl>/<instantiated harness>/<pa",
      "file": "beans/defs/folio-assistant-o7eq--url-space-rendered-assets-mirror-the-instantiation.md"
    },
    {
      "id": "folio-assistant-o8s9",
      "title": "merge-main: a push sweep CANCELS the previous sweep's in-flight merges, so a fast merge cadence starves the bot",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T09:11:12Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "## Measured, 2026-10-03 09:1x UTC\n\n`.github/workflows/merge-main.yml:134-136` sets, on the per-PR `merge` job:\n\n```yaml\nconcurrency:\n  group: merge-main-${{ matrix.pr }}\n  cancel-in-progress: true\n```\n\nThe group is per-PR but **not per-trigger**, so a sweep fired by a push to\n`main` cancels the per-PR jobs of the sweep before it. The comment above it\nstates the intent — *\"A burst of pushes to main",
      "file": "beans/defs/folio-assistant-o8s9--merge-main-a-push-sweep-cancels-the-previous-sweep.md"
    },
    {
      "id": "folio-assistant-ob3m",
      "title": "navbar visualiser: 12 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-10-06T05:55:41Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/navbar/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **At rest the strip is marks with no labels.** Changed by #1022: the four divider initials are gone, so the harnesses are **not reachable from the strip at all**",
      "file": "beans/defs/folio-assistant-ob3m--navbar-visualiser-12-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-obhe",
      "title": "merge-main's notification rule has no skill home — ci-health.md carries the doctrine and names only one instance",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T06:09:01Z",
      "updatedAt": "2026-10-07T02:59:30Z",
      "preview": "Spun out of `03nl` (PR #2046) rather than widened into it.\n\n## What is already true\n\n`skills/sdlc/sdlc-core/ci-health.md` §\"A report is only read by someone in the\nroom\" ALREADY carries the doctrine this change is an instance of: one tracking\nissue **edited in place**, because *\"an edit does not notify, so a long outage\nstays one unread item rather than a stream\"*, and *\"it deliberately does not\ns",
      "file": "beans/defs/folio-assistant-obhe--merge-mains-notification-rule-has-no-skill-home-ci.md"
    },
    {
      "id": "folio-assistant-oh78",
      "title": "ISSUE DISCIPLINE assumes every change has an issue: 54 merges, 2 issue updates, and #558 has no bean link",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T18:05:19Z",
      "updatedAt": "2026-10-07T05:00:00Z",
      "preview": "Found by the goal-review sweep of 2026-09-20 13:45–17:45 UTC (session_017PqeiS4JYySSWGAYLedmus, bean `mgta`, issue #578). An instruction gap: something the instructions said that the sweep could not do as written, said two ways, or did not say.\n\n## Measured\n54 proposals merged in the window; 2 issues changed (both newly opened). `issue-marks/` tracks two issues (#203, #223). Issue #558 (\"Sticky pi",
      "file": "beans/defs/folio-assistant-oh78--issue-discipline-assumes-every-change-has-an-issue.md"
    },
    {
      "id": "folio-assistant-ohx6",
      "title": "CAT-HARNESS/FOLIO: a minimal just-the-docs rendering describing folio, and folio/render for the rendering skills and tools",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T14:28:56Z",
      "updatedAt": "2026-10-12T16:05:00Z",
      "preview": "Owner, 2026-09-20, verbatim:\n\n> catharness build on that.   from there on up need to meet requirements b/c\n> cat-harness hould provude it with folio, etc.   it is a minimal justthedocs\n> rendering in cat-harness/folio/ describing folio and cat-harness/folio/render\n> for rendeing skills/tools etc.\n\n## What it asks for\n\nTwo directories, and they are different kinds of thing:\n\n| path | what it holds ",
      "file": "beans/defs/folio-assistant-ohx6--cat-harnessfolio-a-minimal-just-the-docs-rendering.md"
    },
    {
      "id": "folio-assistant-oi1y",
      "title": "STANDALONE PAGES JEKYLL COPIES THROUGH HAVE NO NAVIGATION: 33 published pages (23 wireframes + 10 bootstrap) carry no rail and no way out",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T05:12:16Z",
      "updatedAt": "2026-09-29T20:52:40Z",
      "preview": "Owner, 2026-09-24, after `edx7` shipped: *\"do edx7 navbar on mounted pages too\"* —\nthen, when told mounted pages were already done and asked which family:\n**\"Both\"** (`wireframes/` first, then `api/`).\n\n## Measured on the published site, 2026-09-24\n\n```\n1301 of 3151 pages have navigation   (excluding STAGING/)\n```\n\n| family | no navigation |\n|---|---|\n| `api/` | **1816** (TypeDoc; its own toolbar,",
      "file": "beans/defs/folio-assistant-oi1y--standalone-pages-jekyll-copies-through-have-no-nav.md"
    },
    {
      "id": "folio-assistant-oi3h",
      "title": "fsh-guts visualiser: 7 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:14Z",
      "updatedAt": "2026-09-30T16:12:47Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/fsh-guts/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **The two surfaces disagree about the count.** The page says 19 files. The fish shows 9, which is `@graph` nodes plus any locally discarded todos. `fsh-guts-ex",
      "file": "beans/defs/folio-assistant-oi3h--fsh-guts-visualiser-7-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-ojai",
      "title": "INGEST: the first link — a Task, a skill, Tools and a generated page for how a file REACHES uploads/",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T00:00:23Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "Owner, 2026-09-29: *\"generate documentation from Tool documentation of the\nupload Task/Skill as first step of document ingestion process.\"*\n\n## Brief — what, why, what is known, how, what would falsify it\n\n**What.** Build the chain the owner asked for, whose first link is missing.\nThere is no Task, no skill and no Tool for the act of *putting a file into\n`uploads/`*, so there is nothing for a gene",
      "file": "beans/defs/folio-assistant-ojai--ingest-the-first-link-a-task-a-skill-tools-and-a-g.md"
    },
    {
      "id": "folio-assistant-om30",
      "title": "MAIN'S RED-BY-DECISION TEST MASKED 151 GATE INVOCATIONS, lint and tsc among them: bun test was step 2 of 47 with nothing continue-on-error — SPLIT, owner's choice",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T09:42:57Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "## What\n\n`main`'s `typescript` job fails at **step 2 of 47**, and GitHub Actions stops a job\nat its first failing step. So every later step in that job does not run — and on\n`main` that failure is red **by the owner's decision**, not by accident.\n\nMeasured on `.github/workflows/code-quality-gates.yml` at `74f27e4c7fb`:\n\n| | |\n|---|---|\n| `bun test` | step 2 (line 234) of the `typescript` job |\n| s",
      "file": "beans/defs/folio-assistant-om30--mains-red-by-decision-test-masks-113-gate-invocati.md"
    },
    {
      "id": "folio-assistant-omki",
      "title": "QUIET CLAIMS, THE NETWORK HALF: the check's own basis calls its count an upper bound — supply the signal it cannot see",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:26:09Z",
      "updatedAt": "2026-10-07T04:53:47Z",
      "preview": "`bean-quiet-claims` reads one signal — hours since the bean's own `updated_at` —\nand its threshold `basis` says so in as many words: the count is an **UPPER\nBOUND**, because a bean it lists may carry a liveness signal the sweep cannot\nsee. `bean-coordination.md` §\"A quiet claim\" names three:\n\n> A claim is LIVE when something outside the bean says so — an open PR naming\n> it, an unmerged branch tou",
      "file": "beans/defs/folio-assistant-omki--quiet-claims-the-network-half-the-checks-own-basis.md"
    },
    {
      "id": "folio-assistant-oq1j",
      "title": "QA READERS F3: detangle, LSI and tool-run readers fetch by ref or recompute",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:47:13Z",
      "updatedAt": "2026-10-21T18:48:00Z",
      "preview": "Arc `3fva`, from reader audit `gxvk` (`cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md`, family F3). Refines `oqe3` 3.1b, the LSI and detangle half. As of 2026-10-06 this is not blocked on `16ei`: it completed (qa-store landed; CI publishes `main/` and `pr/` entries and the prune runs on schedule), so the block is withdrawn. These readers fail loud today, so this bean is not on the criti",
      "file": "beans/defs/folio-assistant-oq1j--qa-readers-f3-detangle-lsi-and-tool-run-readers-fe.md"
    },
    {
      "id": "folio-assistant-oq57",
      "title": "GATES CANNOT PASS ANYWHERE: script sidecars commit engine_version, so main's new tree-write detector fails on whichever bun version is in the minority",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T20:07:20Z",
      "updatedAt": "2026-09-27T06:07:18Z",
      "preview": "Measured 2026-09-26, immediately after merging 51 commits of `main`.\n\n`main` added a check I welcome — `bun run cat gates` now FAILS a run in which a gate\nwrote to the tree it is being judged on, even when every gate passed:\n\n    ✗ every gate passed, and the run is NOT clean — 1 gate(s) changed the tree.\n      164 verdict(s) above were reached against a tree that a gate had already\n      repaired,",
      "file": "beans/defs/folio-assistant-oq57--gates-cannot-pass-anywhere-script-sidecars-commit.md"
    },
    {
      "id": "folio-assistant-oqdr",
      "title": "Bootstrap diagrams' SVGs are published but rendered by nothing since the split",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T17:52:19Z",
      "updatedAt": "2026-09-26T09:54:12Z",
      "preview": "## What\n`cat-harness/docs/assets/img/workflows/` holds `initialize-harness.svg`, `log-message.svg` and `discussion.svg`, whose sources are `bootstrap/processes/*.bpmn`. `render-bpmn.ts` renders `workflowFiles(cat-harness)`, which does not reach bootstrap, so these three are never re-rendered and `render:bpmn:check` cannot see them drift. The generated process pages (`docs/processes/initialize-harn",
      "file": "beans/defs/folio-assistant-oqdr--bootstrap-diagrams-svgs-are-published-but-rendered.md"
    },
    {
      "id": "folio-assistant-oqe3",
      "title": "Gates: the 16 stale-check gates become compute-and-judge, with --against <ref> for new-vs-inherited findings",
      "status": "todo",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-3fva",
      "blocking": [
        "folio-assistant-7mwa"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:00:46Z",
      "updatedAt": "2026-10-23T17:05:00Z",
      "preview": "Arc `3fva`, proposal §2.3 and §4 item 3.1. Blocked on the qa-store bean. Can be dispatched to 3 agents, one per family.\n\n- 3.1a: `kg:audit:check`, `kg:audit:all:check`, `audit:coverage:require-all/strict`, `check:harness-state:check`\n- 3.1b: `lsi:skills:check`, `lsi:viz:check`, `kg:detangle:check`, `translation:block-qa:check`\n- 3.1c: `skill:register:check`, `readme:subgraphs:check`, `root-scan-ce",
      "file": "beans/defs/folio-assistant-oqe3--gates-the-16-stale-check-gates-become-compute-and.md"
    },
    {
      "id": "folio-assistant-ovkk",
      "title": "The @context declares 19 terms; the graph uses 53 — 3461 property occurrences are dropped by any JSON-LD processor",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T00:07:39Z",
      "updatedAt": "2026-09-23T19:25:46Z",
      "preview": "_2026-09-19T00:07:53Z_ — Found 2026-09-19 while building the kg-viewer (bean 1dfh) — the viewer is the first real consumer of the document, and a consumer is what makes this visible. MEASURED: bun run cat kg:export now reports it. 34 property names, 3461 occurrences, used in @graph and absent from @context. A term that is neither in the context nor an absolute IRI is not a property at all: a JSON-",
      "file": "beans/defs/folio-assistant-ovkk--the-context-declares-19-terms-the-graph-uses-53-34.md"
    },
    {
      "id": "folio-assistant-oxka",
      "title": "MERGE FRICTION: three generated files conflict on nearly every merge, and nothing declares them generated",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T19:11:59Z",
      "updatedAt": "2026-09-24T19:19:59Z",
      "preview": "Merging one branch cost **three rounds on one file** in a single sitting.\nMeasured over three days, 2026-09-24:\n\n| commits | file |\n|---|---|\n| 106 | `cat-harness/docs/cat-harness/docs-auto/index/index.html` |\n| 45 | `cat-harness/docs/glossary/index.md` (1.5 MB) |\n| 18 | `cat-harness/test/results/audit-coverage.qa-results.json` |\n\n**No `.gitattributes` existed at all.** So every concurrent pull re",
      "file": "beans/defs/folio-assistant-oxka--merge-friction-three-generated-files-conflict-on-n.md"
    },
    {
      "id": "folio-assistant-oycs",
      "title": "Remove the legacy special-branch names (qa-reports, lake-cache/, fhir-ast/, state) once every remote is renamed to cat-",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T18:10:08Z",
      "updatedAt": "2026-10-22T14:20:00Z",
      "preview": "Follow-up to folio-assistant-32f6. During the cat- rename every reader and writer resolves the new name first, then the legacy name (`cat-harness/scripts/special-branches.json`). This bean removes that fallback.\n\n## When\nNot before ALL of:\n1. the owner has renamed every legacy branch through the rename API — in this repository (`qa-reports`, `state`) AND in each folio repository carrying a `lake-c",
      "file": "beans/defs/folio-assistant-oycs--remove-the-legacy-special-branch-names-qa-reports.md"
    },
    {
      "id": "folio-assistant-oz5w",
      "title": "STAGING CLEANUP vs BRANCH REUSE: merging PR N deletes the preview PR N+1 just published",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T20:12:17Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Reported by the owner, 2026-09-21, as a bare fact: the staging URL **404s**.\nIt was not propagation.\n\n## Measured on `gh-pages`, not inferred\n\nThis branch's preview has been **deleted four times today**, each time by the\n`cleanup` job firing when one of this session's own PRs merged:\n\n```\ncf39207d  staging(cleanup): remove STAGING/claude-lhs-…  (PR #786 closed)\n05f5cfae  staging(cleanup): remove S",
      "file": "beans/defs/folio-assistant-oz5w--staging-cleanup-vs-branch-reuse-merging-pr-n-delet.md"
    },
    {
      "id": "folio-assistant-oz9e",
      "title": "BENCHMARK: outcome evaluation of harness runs across models (close B8 — accuracy, not only structure)",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T21:30:50Z",
      "updatedAt": "2026-09-29T21:32:03Z",
      "preview": "From the ARG-Designer mapping (arXiv 2507.18224), row B8: *they measure\naccuracy on benchmarks; we check structure.* The owner, 2026-09-29: that gap is\n**intended** to be closed, as part of the tool-harness / multi-model\nbenchmarking work under this epic — not left as a permanent difference.\n\n## What is missing today\n\nEvery check cat-harness runs is **structural**: a lane binds a role, a step is\ne",
      "file": "beans/defs/folio-assistant-oz9e--benchmark-outcome-evaluation-of-harness-runs-acros.md"
    },
    {
      "id": "folio-assistant-ozwb",
      "title": "Mount pass claims /smart-trust/ for openapi and rails the IG site (#2401)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T07:34:06Z",
      "updatedAt": "2026-10-08T05:42:00Z",
      "preview": "An igSite instance root is skipped by mountable(), so withRoutes hands /<instance>/ to the next renderable kind (smart-trust: openapi). The mount then copies openapi over the IG site and rails every IG page, adding navbar.css (body padding-left 56px, .fa-nav-* rules) on top of the Jekyll side-bar. Fix: withRoutes takes rootTaken = igSiteRoots(). Issue #2401.\n\n## Done when\n- [x] root cause measured",
      "file": "beans/defs/folio-assistant-ozwb--mount-pass-claims-smart-trust-for-openapi-and-rail.md"
    },
    {
      "id": "folio-assistant-p11x",
      "title": "check:partition cannot see cross-instance edges: its ROOT is cat-harness/, so every 0 it reports is scoped to one instance",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T09:52:20Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "Opened 2026-09-27 because **`bf5l` asked for it and it did not exist.** That\nbean's closing section says, of making the blind checks see the edge it found:\n*\"Making the blind checks see it is NOT done here … it wants its own bean.\"* A\ncorpus-grep across `beans/defs/` and `beans/defs/archive/` found no such bean, so\n`bf5l` completed with its follow-up unrecorded.\n\n## What is measured\n\nVerified dire",
      "file": "beans/defs/folio-assistant-p11x--checkpartition-cannot-see-cross-instance-edges-its.md"
    },
    {
      "id": "folio-assistant-p1sk",
      "title": "SWE-Router (2607.00053v1): routing in multi-turn agentic SE — cost-aware model choice per task",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:15:27Z",
      "updatedAt": "2026-10-09T17:15:20Z",
      "preview": "Ingest + critical analysis. 10pp. Pairs with TCAndon-Router; bears on when a swarm needs a frontier model at all.\n\n## Closed 2026-10-09\n\nResolved on branch `claude/p1sk-swe-router-ingest` (commit `15e17891e6748fec5943a2653a8726d0f2aa1882` pushed to origin).\n\n### Deliverables & Evidence\n1. **Library Ingest**:\n   - Ingested `uploads/arxiv-2607.00053v1/arxiv-2607.00053v1.pdf` into `library/arxiv-2607",
      "file": "beans/defs/folio-assistant-p1sk--swe-router-260700053v1-routing-in-multi-turn-agent.md"
    },
    {
      "id": "folio-assistant-p3ny",
      "title": "STATE BRANCH P6: remove the moved state files from main — ONLY on the owner's explicit go",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:58:10Z",
      "updatedAt": "2026-10-10T06:15:00Z",
      "preview": "deletion-requires-confirmation. Not before every reader in P3 and gate in P4 is green on the branch.\n\n## Done when\n- [x] owner's go recorded\n- [x] files removed; beans/README.md count-line churn (y7b3) gone\n\nProposal: cat-harness/docs/proposals/state-branch-2026-10-02.md\n\n_2026-10-04T06:10:27Z_ — Claimed by claude/beans-off-main-9ofm — pushed to main so sibling sessions see it before this branch h",
      "file": "beans/defs/folio-assistant-p3ny--state-branch-p6-remove-the-moved-state-files-from.md"
    },
    {
      "id": "folio-assistant-p3yl",
      "title": "IG repo onboarding asks two owner questions: disable automatic gh-pages builds? just-the-docs site (default yes)?",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T16:21:43Z",
      "updatedAt": "2026-10-07T14:15:00Z",
      "preview": "Owner, 2026-10-06: \"make this part of the process/skill. if gh-pages is being populated, ask use if disable. ask use if they want justthedocs rendering (default is yes)\". Follows #2291 (folio-site template manual-only) and #1901. Rule lives in fhir-harness ig-build-pipeline; fhir-ig-create and ig-render-jekyll point to it.\n\n## Done when\n- [x] the rule is in one skill with detect / ask-disable / as",
      "file": "beans/defs/folio-assistant-p3yl--ig-repo-onboarding-asks-two-owner-questions-disabl.md"
    },
    {
      "id": "folio-assistant-p3zo",
      "title": "AGENT CONTAINERS RUN THE WRONG BUN: the session-start hook should install .bun-version (1.3.14), not leave the container's 1.4.2",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T07:51:12Z",
      "updatedAt": "2026-10-10T16:42:44Z",
      "preview": "Follow-up to `3ozg` (completed), which pinned Bun to `.bun-version` (1.3.14) in all 22 CI `setup-bun` sites, **but not in agent containers**.\n\n## The cost, measured 2026-10-06\nThree sessions in one morning were caught by it:\n- Session A: a false `navbar-assets` failure, chased as a main defect;\n- the coordinating session: local gates diverging from CI;\n- Session F: about to hold PR #2262 for a \"ma",
      "file": "beans/defs/folio-assistant-p3zo--agent-containers-run-the-wrong-bun-the-session-sta.md"
    },
    {
      "id": "folio-assistant-p5wm",
      "title": "GOAL 2: LHS navbar working with instantiated harness, showing folios with the bootstrap exception, and stickies that move around on the folio",
      "status": "completed",
      "type": "milestone",
      "priority": "high",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T18:48:29Z",
      "updatedAt": "2026-10-05T04:57:29Z",
      "preview": "The owner's words, 2026-09-20 (session_017PqeiS4JYySSWGAYLedmus), kept verbatim:\n\n> get LHS navbar working w/ instantiated harness and showing folios (w/\n> bootstrap/ exception), stickyes that move around on folio (need reorderion\n> of folio/miro objects).\n\nCreated on the owner's ruling for bean `wqht`: *\"wqht - milesotne\"*.\n\n## Epics under this milestone\n\n| epic | why |\n|---|---|\n| `yj32` | HARNE",
      "file": "beans/defs/folio-assistant-p5wm--goal-2-lhs-navbar-working-with-instantiated-harnes.md"
    },
    {
      "id": "folio-assistant-p67i",
      "title": "INGEST: CSV and spreadsheet — sheet names, headers, shape, narrative",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-jg8s"
      ],
      "createdAt": "2026-09-16T06:43:50Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "## What\n\nFor a CSV or spreadsheet, extract what makes a dataset findable rather than\nmerely stored: sheet/tab names, column and row headers, the shape (rows ×\ncolumns per sheet), and a narrative description of what the data is about.\n\n## Done when\n\n`manifest.jsonld` carries a tabular record per sheet, the narrative carries its\nprovenance stamp, and a grep for a column header finds the dataset that",
      "file": "beans/defs/folio-assistant-p67i--ingest-csv-and-spreadsheet-sheet-names-headers-sha.md"
    },
    {
      "id": "folio-assistant-p7mb",
      "title": "Whole-repo-derived artefacts still committed go stale on main after concurrent merges: build them at publish (owner option 1, 2026-10-23)",
      "status": "in-progress",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T07:55:00Z",
      "updatedAt": "2026-10-23T16:16:24Z",
      "preview": "## Why\n\nA file generated from the WHOLE repository goes stale on `main` when two PRs merge one after the other. Each PR regenerated it for its own branch, and neither copy includes the other PR's change. A direct push or web upload has the same effect. Post-merge regen (bean `ey1c`) repairs this after the fact, but it cannot open its repair PR here: `GitHub Actions is not permitted to create or ap",
      "file": "beans/defs/folio-assistant-p7mb--whole-repo-derived-artefacts-still-committed-go-sta.md"
    },
    {
      "id": "folio-assistant-p9bu",
      "title": "Placement PR9: harness docs pages follow their subject to the owning instance",
      "status": "in-progress",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [
        "folio-assistant-vj2p"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:01Z",
      "updatedAt": "2026-10-16T06:30:00Z",
      "preview": "Placement proposal §2 (owner rulings 2026-09-30 §6; process: review → resolve issues → staged PRs). Parent of PR0/PR1 is `9umr`; PR2–PR9 sit under the separation epic because D4 (owner, 2026-10-01, option 3) interleaves them with the split stages into one ordered sequence. Every PR: references move with the subject; generated trees regenerated, never hand-edited; `beans/**` not rewritten; kg-qa si",
      "file": "beans/defs/folio-assistant-p9bu--placement-pr9-harness-docs-pages-follow-their-subj.md"
    },
    {
      "id": "folio-assistant-pb3e",
      "title": "QA gate: instances declare needs and have a harness IRI (#1548)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T08:48:21Z",
      "updatedAt": "2026-09-30T08:51:34Z",
      "preview": "Owner 2026-09-30: 'QA gates on harness declaration of dependences. harness instancess need IRI for harness.' Issue #1548; done on PR #1530, which it unblocks.\n\n## Done when\n- [x] check:instance-graph fails on an instance with no needs ([] stays legal)\n- [x] check:instance-graph fails on an instance with no absolute harness IRI, or two sharing one — via kg-export's exportIdentity\n- [x] exportIdenti",
      "file": "beans/defs/folio-assistant-pb3e--qa-gate-instances-declare-needs-and-have-a-harness.md"
    },
    {
      "id": "folio-assistant-pebe",
      "title": "smart-base: pin smart-kg (L1/L2 ontology) as a subgraph; document kinds cite its classes",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-qvxh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T06:15:59Z",
      "updatedAt": "2026-10-09T17:10:48Z",
      "preview": "Owner, 2026-10-02 (#1767): 'utilize https://github.com/litlfred/smart-kg for L1 related stuff' and '(perhaps subgraph in smart-base to help define l1 dth etc docs?)'; chose options 1+2.\n\nsmart-kg (fork of WorldHealthOrganization/smart-kg) is a T-Box only: L1 (16 classes), L2 DAK components (13), L2-BPMN, L2-DMN, L3. Owner 2026-09-23 (bean wg7r): 'dont want smart-kg here yet, that is its own repo a",
      "file": "beans/defs/folio-assistant-pebe--smart-base-pin-smart-kg-l1l2-ontology-as-a-subgrap.md"
    },
    {
      "id": "folio-assistant-pesg",
      "title": "A review re-derived a finding the instrument had already computed, and got it wrong",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:05:34Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "## What happened, 2026-09-25\n\n`bun run cat health` reported **one** orphaned staging preview, named, sized and\nreasoned:\n\n> `STAGING/dependabot-github_actions-actions-c1d4c18a44` (101.6 MB, 1426 files)\n> — no open pull request; and no branch on the remote slugifies to it.\n\nRunning a `goal-review`, I re-derived that finding instead of quoting it. I\nwrote a slug function inline — `re.sub(r'[^a-zA-Z0",
      "file": "beans/defs/folio-assistant-pesg--a-review-re-derived-a-finding-the-instrument-had-a.md"
    },
    {
      "id": "folio-assistant-pgct",
      "title": "Skill agent-handoff: coordinating one task across two environments (from mac1)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:21:20Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Owner asked 2026-10-02 to update the inter-agent coordination skills after the mac1 handoff: which agent writes which bean, where to report, whether the human copies instructions. New skill cat-harness/skills/sdlc/sdlc-core/agent-handoff.md plus a pointer from bean-coordination's disambiguation. Five measured failures from mac1 each map to a rule.\n\n## Done when\n- [x] skill registered, voice-review",
      "file": "beans/defs/folio-assistant-pgct--skill-agent-handoff-coordinating-one-task-across-t.md"
    },
    {
      "id": "folio-assistant-pgzn",
      "title": "kg:audit --instance . crashes: the ROOT instance's repoRoot resolves outside the checkout",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T08:00:22Z",
      "updatedAt": "2026-10-02T06:44:57Z",
      "preview": "## What was measured\n\n`bun run cat-harness/scripts/kg-audit.ts --instance .` exits 1 before auditing\nanything. Measured 2026-09-27 on `main` (b4d85f2cf4) as well as on the branch, so\nit is pre-existing and not introduced by the skill-resolution fix that found it:\n\n    ENOENT: no such file or directory, open '/home/user/package.json'\n      at rootScripts (cat-harness/scripts/pair-claims.ts:181:26)\n",
      "file": "beans/defs/folio-assistant-pgzn--kgaudit-instance-crashes-the-root-instances-reporo.md"
    },
    {
      "id": "folio-assistant-piw1",
      "title": "DAK library pattern: Component 1 L1 references are always ingested (skill + BPMN)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ioa4",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T08:58:14Z",
      "updatedAt": "2026-10-21T18:48:00Z",
      "preview": "## Done when\n- [x] a smart-base skill states the pattern: Component 1 → cited L1 references → library entries → L1 graph\n- [x] l2-dak-authoring.bpmn carries the step, with skill ref, before the work plan is seeded\n- [x] cat-harness library-ingestion points at it\n- [x] render:bpmn and skill:register gates are green\n\n## Progress 2026-10-06\nSkill dak-l1-library, Task_L1Library in l2-dak-authoring.bpm",
      "file": "beans/defs/folio-assistant-piw1--dak-library-pattern-component-1-l1-references-are.md"
    },
    {
      "id": "folio-assistant-pk0z",
      "title": "ADOPT zero-trust-handover: ingest its primary (NIST SP 800-207), split node from skill, flip status",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ieum",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T19:29:09Z",
      "updatedAt": "2026-10-07T21:38:22Z",
      "preview": "Owner 2026-10-07 asked to adopt the zero-trust-handover methodology (drafted, NOT adopted in #2390), with an adversarial analysis. methodology-adoption step 7: its named origin, NIST SP 800-207, is not held. It is a US-government work, so it can be ingested in full.\n\n## Done when\n- [x] NIST SP 800-207 ingested as library evidence, cited in the node\n- [x] node holds the METHOD; application lives in",
      "file": "beans/defs/folio-assistant-pk0z--adopt-zero-trust-handover-ingest-its-primary-nist.md"
    },
    {
      "id": "folio-assistant-pnn5",
      "title": "v8n5 Done-when #2 promised coverage 'the day instance #2 declares a theme' — that day came and nothing compares",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T21:24:19Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Found 2026-09-30 by becoming instance #2. Bean `7h3u` declared\n`smart-trust/themes/`, which took the themes set from 1 to 2 — and that is the\ncondition `check-navbar-consistency.ts` said would close a gap.\n\n## What the check promises at set size ≤ 1\n\n```\nNOTE: `v8n5`'s Done-when #2 — a surface must not fall back to the\n      platform default for an instance that declares its own theme —\n      is r",
      "file": "beans/defs/folio-assistant-pnn5--v8n5-done-when-2-promised-coverage-the-day-instanc.md"
    },
    {
      "id": "folio-assistant-pomp",
      "title": "A stale origin/main produced two confident wrong findings in one session — 'not in my checkout' is not 'does not exist'",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T06:43:56Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "Two occurrences in one session, same shape, both published before being\ncaught. Recorded because the failure mode is invisible from inside: the\ncommand succeeds, the output is definite, and the conclusion is about somebody\nelse's work being broken.\n\n## Occurrence 1 — `ankg`'s precedent\n\nAsserted, in a commit message, a PR body and an issue comment: *\"#607 says it\nbuilt pruning in `gen-iris-pages.t",
      "file": "beans/defs/folio-assistant-pomp--a-stale-originmain-produced-two-confident-wrong-fi.md"
    },
    {
      "id": "folio-assistant-pqdv",
      "title": "Schema field notes render literal backticks",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T16:12:48Z",
      "updatedAt": "2026-09-30T17:11:41Z",
      "preview": "Found 2026-09-30 by the wireframe QA re-run on main 3779d5d27: the schemas page's field notes show backticks as literal characters instead of inline code. No existing finding tracks it; xb4p #5 covers a different page (24 literal backticks down to 1 there).\n\n## Done when\n- [ ] The field notes render inline code through withInlineCode (schemas/inline-code.ts), and a built page shows 0 literal backt",
      "file": "beans/defs/folio-assistant-pqdv--schema-field-notes-render-literal-backticks.md"
    },
    {
      "id": "folio-assistant-ptdp",
      "title": "TCAndon-Router (2601.04544v1): adaptive reasoning router — does it refine swarm-management's model-level choice?",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:15:27Z",
      "updatedAt": "2026-10-09T17:15:00Z",
      "preview": "Ingest + critical analysis. 16pp, Tencent. Bears on swarm-management (agent count, model level, cost) and dispatch-agent.\n\n## Summary & Critical Analysis\n\nIngested arXiv:2601.04544v1 (\"TCAndon-Router: Adaptive Reasoning Router for Multi-Agent Collaboration\", 16pp, Tencent Cloud Andon).\n\nTCAndon-Router (TCAR) addresses task-based routing in multi-agent systems where domain overlaps, multi-intent qu",
      "file": "beans/defs/folio-assistant-ptdp--tcandon-router-260104544v1-adaptive-reasoning-rout.md"
    },
    {
      "id": "folio-assistant-pv51",
      "title": "BOOTSTRAP README: one-voice rewrite — repetitive and not condensed (owner)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-88mg",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T17:58:25Z",
      "updatedAt": "2026-10-07T20:30:00Z",
      "preview": "Owner, 2026-09-23 (session_017nyJj3PsjvszpF3DyGeBgE): *\"bootstrap/README need propeor one voice revieqw. not condensed very repetative.\"*\n\n`bootstrap/README.md` is 252 lines. The owner reads it as repetitive and not condensed. This is repetition INSIDE one page. That is a different measurement from the one parent `88mg` made, which compared `docs/` with `skills/` and found little overlap.\n\n## Done",
      "file": "beans/defs/folio-assistant-pv51--bootstrap-readme-one-voice-rewrite-repetitive-and.md"
    },
    {
      "id": "folio-assistant-pw9j",
      "title": "Bump bootstrap/bootstrap-tools pins to the fixed upstream (f75a216 / 3046412); re-extract translation templates",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T15:09:20Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Upstream fixed 2026-10-01: bootstrap#1 (f75a2167d226) and bootstrap-tools#4 (30464126ed93) — READMEs reproducible via published-IRI term links, each repo checks its own README in CI. Main pins PR0's 7a91356 / c5e5e25. Bump both gitlinks, re-extract bootstrap translation templates (translate-bpmn --extract), regenerate bootstrap kg-qa sidecars and SVGs, gates green.\n## Done when\n- [x] pins at f75a2",
      "file": "beans/defs/folio-assistant-pw9j--bump-bootstrapbootstrap-tools-pins-to-the-fixed-up.md"
    },
    {
      "id": "folio-assistant-pwi4",
      "title": "CI: folio-assistant PRs merge only on merge-guard success, no shortcuts",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ksek",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T08:43:03Z",
      "updatedAt": "2026-10-23T16:06:00Z",
      "preview": "Rule: a folio-assistant PR merges only when the merge-guard commit status on its head is success, through bun run cat merge:guard <pr> --merge (bean uoob). No direct merge PUT, no admin override, no merging while a required workflow is still running, no ready marker signed by another session, and no re-running a red job until it passes without a cause. Merge-guard check 5 (ci) is what makes the PR",
      "file": "beans/defs/folio-assistant-pwi4--ci-folio-assistant-prs-merge-only-on-merge-guard-s.md"
    },
    {
      "id": "folio-assistant-pxtk",
      "title": "cat-harness imports bootstrap-tools as a package (@litlfred/bootstrap-tools), not by ../../",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-f6gq",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T15:29:13Z",
      "updatedAt": "2026-10-14T16:00:00Z",
      "preview": "First layer of f6gq: bootstrap-tools has no climbs of its own, so it is the bottom.\n\n## Done when\n- [x] cat-harness depends on @litlfred/bootstrap-tools at the SAME commit its index.config.json mounts, and a check fails when the two pins differ (one version, two delivery routes) — settled by the owner ruling: there is one route, the mount, and `mount:remote:check` fails when the tree differs from ",
      "file": "beans/defs/folio-assistant-pxtk--cat-harness-imports-bootstrap-tools-as-a-package.md"
    },
    {
      "id": "folio-assistant-pyds",
      "title": "Separation stage 0: preconditions — PR0/PR1 landed, boundary gates watched red, baseline recorded",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [
        "folio-assistant-70lx"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:00Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Stage 0 of the split plan (`kg-separation` stage 0): preconditions, **no moves**.\n\nPlans (session scratchpad, 2026-10-01; to be committed with stage 0): `cat-harness-split-plan.md` (stages 0–6, decisions D1–D6, \"Owner rulings, 2026-10-01\") and `placement-proposal.md` (PR0–PR9, §6 \"Owner rulings, 2026-09-30\"). Owner rulings, 2026-10-01 (split plan): D1–D6 apply; record them in `w2gr` as the plan's ",
      "file": "beans/defs/folio-assistant-pyds--separation-stage-0-preconditions-pr0pr1-landed-bou.md"
    },
    {
      "id": "folio-assistant-pzwb",
      "title": "Placement PR2: finish splitting folio-core and regroup the harness skill topics",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-9umr",
      "blocking": [
        "folio-assistant-4fv8"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:00Z",
      "updatedAt": "2026-10-21T17:24:00Z",
      "preview": "Placement proposal §2 (owner rulings 2026-09-30 §6; process: review → resolve issues → staged PRs). Parent of PR0/PR1 is `9umr`; PR2–PR9 sit under the separation epic because D4 (owner, 2026-10-01, option 3) interleaves them with the split stages into one ordered sequence. Every PR: references move with the subject; generated trees regenerated, never hand-edited; `beans/**` not rewritten; kg-qa si",
      "file": "beans/defs/folio-assistant-pzwb--placement-pr2-finish-splitting-folio-core-and-regr.md"
    },
    {
      "id": "folio-assistant-q2aj",
      "title": "Recheck Beads (gastownhall/beads) maturity against beans",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-8jt6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:32:13Z",
      "updatedAt": "2026-09-23T22:32:13Z",
      "preview": "Follow-up to b91x (owner decision 2026-09-23: keep beans, recheck in ~3 months, i.e. on or after 2026-12-23). Evidence baseline: cat-harness/docs/research-and-analysis/prior-art.md.\n\n## Done when\n- [ ] Beads' storage-layer issues re-measured (retractions, data-loss / dolt-pull issues since 2026-09-23) and hmans/beans activity re-measured\n- [ ] findings added to the prior-art page's health table wi",
      "file": "beans/defs/folio-assistant-q2aj--recheck-beads-gastownhallbeads-maturity-against-be.md"
    },
    {
      "id": "folio-assistant-q2wm",
      "title": "RENDER SAFETY: declared XSS hints on tools and skills, lazy loading, and dynamic render from the graph",
      "status": "todo",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-6lb8",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T21:47:28Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "Issue: https://github.com/litlfred/folio-assistant/issues/602 — R17. Unit 10 of 10.\n\nThe owner, 2026-09-20: *\"skill tool hints for XSSrsiction., usse laxy load XSS,\nassume assets in KG accessible, dynamic render where can\"*.\n\nFour instructions, and the first is the one with teeth: **a skill or tool that\nrenders anything declares what it may render.** Today nothing in a Tool node says\nwhether its o",
      "file": "beans/defs/folio-assistant-q2wm--render-safety-declared-xss-hints-on-tools-and-skil.md"
    },
    {
      "id": "folio-assistant-q4cm",
      "title": "EDIT SET: one feature branch per set of document edits, reviewed in review/ — and a tool where accept is a GitHub PR approval that gates publishing",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-txut"
      ],
      "createdAt": "2026-09-22T21:02:55Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Owner, 2026-09-22: *\"skill feature branch for set of document edits, uses\nvisuakizer. tool, github/git cli for accept=approve for publishing\"*.\n\n**The unit of review is an EDIT SET**: one feature branch holding one coherent\nset of document edits. It gets a staging build, a ChangeSet (child 02) and a\nreview/ page (child 04). The branch is what gets accepted or not. An\nindividual block edit is not.\n",
      "file": "beans/defs/folio-assistant-q4cm--edit-set-one-feature-branch-per-set-of-document-ed.md"
    },
    {
      "id": "folio-assistant-q4jm",
      "title": "LARGE-DOCUMENT REVIEW: a review/ visualiser for a folio's diff from main — pluggable renderers, heat maps, navigation and review comments, keyed on folio/ block ids",
      "status": "todo",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T21:02:29Z",
      "updatedAt": "2026-10-05T04:57:14Z",
      "preview": "## What this is\n\nOwner, 2026-09-22 (session_017nyJj3PsjvszpF3DyGeBgE), verbatim across four\nturns because each one moved the scope:\n\n> learn skills for document review for large things like a DAK or L1 digital\n> transofrmation hadbook. use it to develop tools in redendering/visauatlion as\n> part of docuemnt editiing and review process. will use feature branch\n> /staging for comparison against main",
      "file": "beans/defs/folio-assistant-q4jm--large-document-review-a-review-visualiser-for-a-fo.md"
    },
    {
      "id": "folio-assistant-q7ey",
      "title": "UPLOADS RETENTION: uploads is the archival copy until ingested, then it retires to fsh-guts — rule written, nine to sweep",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2upx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T23:26:27Z",
      "updatedAt": "2026-09-30T15:32:31Z",
      "preview": "Owner, 2026-09-29, in two parts. First, answering *\"why are ingested things\nstill sitting in uploads and not moived to library of appropraite harness?\"*:\n\n> no, uploads is archival copy.\n\nthen, refining where the archival copy belongs:\n\n> archival (once ingested into KG and put into a proper `library/` under a\n> harness repo) then it should be moved to `fsh-guts`.\n\n**Both decisions this bean opene",
      "file": "beans/defs/folio-assistant-q7ey--uploads-retention-nothing-removes-an-ingested-uplo.md"
    },
    {
      "id": "folio-assistant-q885",
      "title": "DOCBLOCK CLAIMS: check:agents-claims reaches AGENTS.md but not script docblocks — check-theme-art.ts says nothing runs --check in CI, and CI runs it",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T11:33:55Z",
      "updatedAt": "2026-10-09T13:26:30Z",
      "preview": "## The finding, and how it was measured\n\n`cat-harness/scripts/check-theme-art.ts`, line 24, in its own module docblock:\n\n> So: `--check` exits non-zero on a refusal, and nothing runs `--check` in CI\n\n`.github/workflows/code-quality-gates.yml`, line 1384:\n\n>           bun run cat check:theme-art:check\n\nand `package.json:169` binds that script to `check-theme-art.ts --check`. So CI\nhas run it since ",
      "file": "beans/defs/folio-assistant-q885--docblock-claims-checkagents-claims-reaches-agentsm.md"
    },
    {
      "id": "folio-assistant-q8ar",
      "title": "LATE MATERIALIZATION: per-slice SQLite/DuckDB WASM via OPFS on gh-pages; pilots beans, todos, library, whole repo; who-iris CDN",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T20:42:54Z",
      "updatedAt": "2026-10-03T19:00:00Z",
      "preview": "Owner, 2026-10-02 (\"bean up #2\"): a client (browser running Oxigraph or SQLite via WebAssembly) ingests a large KG but only selectively materializes heavy subgraphs or assets when needed — a Late Materialization (lazy loading) architecture, so the client never downloads gigabytes of static JSON-LD from GitHub Pages. Binary database formats: Oxigraph WASM loads text serializations into memory, so f",
      "file": "beans/defs/folio-assistant-q8ar--late-materialization-per-slice-sqliteduckdb-wasm-v.md"
    },
    {
      "id": "folio-assistant-q90t",
      "title": "B10d (#1168): skill front matter inherits: is a typed SkillRef",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T14:59:54Z",
      "updatedAt": "2026-09-30T15:00:28Z",
      "preview": "Owner 2026-09-30: Typed SkillRef. 7 files → sdlc-core/integration-watcher (6 used local/, 1 bare); resolved by resolveSkillRef in a check.\n## Done when\n- [ ] all 7 values resolve; a check fails on one that does not\n\n\n\n## Done\n7 values → sdlc-core/integration-watcher; skill-refs.test resolves every skill inherits: (local/integration-watcher resolves missing, verified).",
      "file": "beans/defs/folio-assistant-q90t--b10d-1168-skill-front-matter-inherits-is-a-typed-s.md"
    },
    {
      "id": "folio-assistant-qbco",
      "title": "CI: reuse verdicts on main — skip expensive jobs when the tree was already verified green; cancel superseded main runs",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T19:39:27Z",
      "updatedAt": "2026-10-08T05:17:00Z",
      "preview": "Issue #2456. Owner approved 2026-10-07 ~19:40Z (\"1y, 2y, 3y, 4y\"). Measurements in the issue body.\n\n_2026-10-07T19:39:38Z_ — Claimed by claude/ci-runner-budget (session https://claude.ai/code/session_013WbQekVypi9A6YQbLDXMmJ).\n\n## Done on claude/ci-runner-budget (PR #2457), 2026-10-07 (commit 86ad61f3976)\n\n- (a) concurrency: push events share one group per ref and cancel-in-progress. The comment c",
      "file": "beans/defs/folio-assistant-qbco--ci-reuse-verdicts-on-main-skip-expensive-jobs-when.md"
    },
    {
      "id": "folio-assistant-qbfi",
      "title": "REVIEW HEAT MAPS: section-by-metric matrix of change, coverage, findings, QA and staleness — published, never colour alone",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-jwox"
      ],
      "createdAt": "2026-09-22T21:02:55Z",
      "updatedAt": "2026-10-10T16:40:52Z",
      "preview": "Owner: *\"heat map skills\"*.\n\n**Measured 2026-09-22.** The only heat map is `render_block_heatmap` in\n`content-graph-analysis.py`. It draws a DOT/SVG of block DEPENDENCIES and\nwrites it to `/tmp`, and it is paper-oriented. Nothing aggregates QA, review\ncoverage or change density, and nothing is published on the site.\n\n**What.** A section × metric matrix on the review page, plus the minimap\n(child 0",
      "file": "beans/defs/folio-assistant-qbfi--review-heat-maps-section-by-metric-matrix-of-chang.md"
    },
    {
      "id": "folio-assistant-qbfm",
      "title": "tools visualiser: 6 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-10-09T12:20:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/tools/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. [x] **No way to find one tool among 71 except page search.** The only way in is a flat alphabetical table. It has no filter by invocation or by skill, and the sta",
      "file": "beans/defs/folio-assistant-qbfm--tools-visualiser-6-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-qdai",
      "title": "repo-conversion: scan OUTSIDE the content tree for math (docs/, .lean/.py under docs/audits, .tex-only tables and macros)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:52:14Z",
      "updatedAt": "2026-10-09T18:58:20Z",
      "preview": "Recorded from the qou orphaned-content census, 2026-10-04 (ORPH report; session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91, issue #2106). qou: 30 docs/audits/*.lean (several are refutations of paper claims, e.g. skein-mass-relation-is-false), 68 docs/audits/*.py computations and 272 derivation notes live outside folio/ and are linked by no block. A conversion that carries only the con",
      "file": "beans/defs/folio-assistant-qdai--repo-conversion-scan-outside-the-content-tree-for.md"
    },
    {
      "id": "folio-assistant-qgjh",
      "title": "References are shown as plain text, not links",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:13Z",
      "updatedAt": "2026-09-30T17:43:41Z",
      "preview": "Slugs, file names, skills and related nodes are printed as code or plain text although the target exists, so the relationship a page exists to show cannot be followed. Emit links wherever the target resolves.\n\nObserved on: `catalogue`, `external-schemas`, `folio`, `glossary`, `library`, `methodologies`, `processes`, `tools`, `voices` (see each `cat-harness/docs/wireframes/<kind>/intent.md`). Per-p",
      "file": "beans/defs/folio-assistant-qgjh--references-are-shown-as-plain-text-not-links.md"
    },
    {
      "id": "folio-assistant-qh1s",
      "title": "LIT SEARCH: a process and methodologies for organising requirements as they are filed",
      "status": "in-progress",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-2upx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T19:34:01Z",
      "updatedAt": "2026-10-23T20:50:00Z",
      "preview": "Issue #1164. Owner, 2026-09-23, on filing a shipped feature's proposal into docs/requirements/: 'make sure no name collision, need to organize things when filing. need process to do so and methodologies. (we dont have yet... bean up for lit search)'.\n\nWhat exists: one page per shipped feature, id = file name, check:requirements refuses a slug used twice. Nothing says how requirements are GROUPED, ",
      "file": "beans/defs/folio-assistant-qh1s--lit-search-a-process-and-methodologies-for-organis.md"
    },
    {
      "id": "folio-assistant-qj9a",
      "title": "STAGING SIZE: the measurement is right and the SEVERITY is an unverifiable claim — critical predicts a failed publish, and nothing in this repo can observe enforcement",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T18:10:30Z",
      "updatedAt": "2026-10-08T01:15:00Z",
      "preview": "`health` reports `staging-preview-size` as **critical** while every deploy keeps\nsucceeding. I went looking for a wrong number and did not find one: **the\nmeasurement is sound.** What is wrong is one level up, in what `critical` is\nasserting.\n\n## Measured first-hand, 2026-09-25\n\nDirectly off the publish ref — `git ls-tree -r -l origin/gh-pages`, not the\ncheck's own report:\n\n| | files | size |\n|---",
      "file": "beans/defs/folio-assistant-qj9a--staging-size-the-measurement-is-right-and-the-seve.md"
    },
    {
      "id": "folio-assistant-qm9d",
      "title": "Make the 11 monorepo-only cat-harness tests standalone-safe; baseline 427 -> 416",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T06:42:50Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Follow-up of `folio-assistant-ho66` (the standalone check).\n\nOwner ruling, 2026-10-05, relayed by the merge manager: \"1 + dispatch 3\".\n- (1): #2148 baselined 11 monorepo-only standalone failures, so main could go green.\n- (3): the ho66 owner makes those tests standalone-safe and shrinks the baseline back.\n\nClaimed by session_01BccmnVFbtRpKxM39kyVw9q, on branch claude/friendly-bell-xm9l1q.\n\n## Appr",
      "file": "beans/defs/folio-assistant-qm9d--make-the-11-monorepo-only-cat-harness-tests-standa.md"
    },
    {
      "id": "folio-assistant-qml5",
      "title": "The stale-claim sweep's 7-day threshold is unreachable — and three things it structurally cannot see",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T06:39:03Z",
      "updatedAt": "2026-10-09T15:51:00Z",
      "preview": "Measured 2026-09-22 against `origin/main` @ `937c8d84`, by a dispatched sweep\nwhose every number was then **re-derived independently** before being written\nhere.\n\nFiled under `ahvw` rather than under `kpcl`, which owns this subject, because\n`kpcl` is a `task` and `check:bean-parents` requires a milestone, epic or\nfeature — so `kpcl` is the **sibling stream** this belongs to, not the parent\nthe fro",
      "file": "beans/defs/folio-assistant-qml5--the-stale-claim-sweeps-7-day-threshold-is-unreacha.md"
    },
    {
      "id": "folio-assistant-qmqg",
      "title": "TRANSLATIONS: the convention fallback would have made #1448's declaration edit a silent no-op",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T06:20:28Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "Found 2026-09-27 while doing the `.pot` relocation in PR #1448, which is the\nthing that makes this measurable rather than theoretical.\n\n## The shape\n\nTen production readers resolve the translations directory like this:\n\n```ts\ndirectoryForGraph(root, \"translation-sources\") ?? join(root, \"translations\")\n```\n\n`po-resolve.ts` documents it as a deliberate **third source**: *\"the\nconvention, `translatio",
      "file": "beans/defs/folio-assistant-qmqg--translations-the-convention-fallback-would-have-ma.md"
    },
    {
      "id": "folio-assistant-qnob",
      "title": "merge-main bot: modify/delete crash and cancelled runs reported as errors",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T11:35:12Z",
      "updatedAt": "2026-10-09T19:20:00Z",
      "preview": "Issue #1854. (1) modify/delete conflicts on generated-pattern paths: take main's side (rm or main's copy), authored stays refused. (2) cancelled/superseded merge-main runs rewrite the PR comment to 'Error (exit )': leave it untouched; comment composition moved to a tested TS function.\n\n## Done when\n\n- [x] tests fail on origin/main and pass with the fix\n- [x] bun run cat gates green, PR CI green, P",
      "file": "beans/defs/folio-assistant-qnob--merge-main-bot-modifydelete-crash-and-cancelled-ru.md"
    },
    {
      "id": "folio-assistant-qook",
      "title": "check:merged reports a merged tree defective when no real checkout of it is — a symlinked node_modules leaks into the corpus",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T11:04:49Z",
      "updatedAt": "2026-10-08T01:15:00Z",
      "preview": "## CORRECTED 2026-09-26 — the cause is NOT `ymsu`, and the title understates it\n\nThis bean was opened saying *\"a sweep artefact\"* and pointing at `ymsu` — a\ngate that writes what a later gate reads. **That was wrong**, and it was a\nhypothesis stated in a bean's title as though it were the finding. The actual\ncause is a one-character `.gitignore` bug that distorts the CORPUS of every\nworktree `chec",
      "file": "beans/defs/folio-assistant-qook--checkmerged-reports-umloverviewcheck-red-on-a-merg.md"
    },
    {
      "id": "folio-assistant-qrlc",
      "title": "LIVE vs LATENT: does a scanner's committed OUTPUT change when gitignored content is present? The detector xd1g could not build",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T16:37:38Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "## Built and falsified, 2026-09-27 — PR #1475\n\nThe question `xd1g` could not answer, and a sibling session posed: **does a\ngenerator's COMMITTED OUTPUT change when gitignored content is present?**\n\n`bun run detect:live-corpus`. Twice per writer with the tree restored between\n-- run as committed, record what it changed; plant gitignored content, run\nagain, record what it changed. Different change-s",
      "file": "beans/defs/folio-assistant-qrlc--live-vs-latent-does-a-scanners-committed-output-ch.md"
    },
    {
      "id": "folio-assistant-qrnz",
      "title": "SECOND IG: ingest smart-immunizations, and find out whether the artefact-index pipeline actually generalises",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T14:13:32Z",
      "updatedAt": "2026-10-02T12:27:27Z",
      "preview": "The generalisation test qsf5 deferred. Until a second DAK-API IG goes through, \"generalisable across many IGs\" is a design claim.\n\nSubject: `smart.who.int.immunizations` v0.2.0, FHIR **4.0.1** (smart-trust is 5.0.0), gh-pages, 232,040 published files.\n\nMeasured 2026-09-21 before writing any code:\n\n| | smart-trust | smart-immunizations |\n|---|---|---|\n| artefacts (.index.json) | 674 | 712 |\n| canon",
      "file": "beans/defs/folio-assistant-qrnz--second-ig-ingest-smart-immunizations-and-find-out.md"
    },
    {
      "id": "folio-assistant-qsx4",
      "title": "who-style-guide folds INTO who-iris as a declared subgraph, docs included",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-kupb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T00:02:14Z",
      "updatedAt": "2026-10-04T18:29:58Z",
      "preview": "Owner ruling 2026-09-30, verbatim: \"who voices style guide is derivative KG content from who-iris, merge content into subgraph. including docs.\" Issue #476.\n\nSupersedes the separate-instance arrangement of `w095` (and the \"own repo/dir\" half of the 2026-09-20 decision recorded in `kupb`/`r1lz`). The `z7ev` cross-instance citation was the price of the split; with the voices and the library they are",
      "file": "beans/defs/folio-assistant-qsx4--who-style-guide-folds-into-who-iris-as-a-declared.md"
    },
    {
      "id": "folio-assistant-qump",
      "title": "REMOTE MOUNT BOOTSTRAP: mount:remote cannot read a declaration whose kinds come from the closure it is about to mount",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T19:00:00Z",
      "updatedAt": "2026-10-10T12:00:00Z",
      "preview": "Found 2026-10-09 while building who-iris's site in an isolated tree (who-iris\nclone + cat-harness at its lock ref + bootstrap-tools as a sibling, nothing else).\n\n## What happens\n\n`bun run <cat-harness>/scripts/remote-mount.ts` from a fresh who-iris clone:\n\n> 🛑 could-not-determine — who-iris.json: directory \"who-iris-catalogue\" declares\n> unknown graph typology \"catalogue\" … A kind contributed by ",
      "file": "beans/defs/folio-assistant-qump--remote-mount-cannot-read-a-declaration-whose-kinds.md"
    },
    {
      "id": "folio-assistant-qvxh",
      "title": "SMART L1 and DAK as DOCUMENT KINDS with visualizers inside smart-base, not harnesses",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:37:53Z",
      "updatedAt": "2026-10-04T13:06:48Z",
      "preview": "Issue #1767; proposal cat-harness/docs/proposals/smart-separation-2026-10-01.md §Decided Q5.\n\nOwner, 2026-10-01: \"what they really need to be are sub-document types/kinds/visualizer for them. smart-L1 is like a L1 document that was fully computable from smart-base assets (and maybe some other things like PICO, cochrane, etc), semi fixed structure ... similarly DAK is a publication type w/ the 10 c",
      "file": "beans/defs/folio-assistant-qvxh--smart-l1-and-dak-as-document-kinds-with-visualizer.md"
    },
    {
      "id": "folio-assistant-qzex",
      "title": "CONNECTED AGENT: run the IG AST measurement builds (W1, W2) WITH a terminology server on a machine that reaches packages.fhir.org and tx.fhir.org",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-a9tx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T14:20:00Z",
      "updatedAt": "2026-10-23T16:15:00Z",
      "preview": "Owner, 2026-10-23: *\"make a bean for connected agent ... agent is antigravity\"*. The\nowner also ruled the same day: **build with a terminology server**. Cloud sessions\nget 403 from `tx.fhir.org` and `packages.fhir.org`, so this runs on the owner's\nmachine. It is Step 1 of a9tx's HANDOVER, nothing more. The cloud thread\n\"Publisher AST\" does Step 2 and the rest from what you push.\n\n**Read first:** b",
      "file": "beans/defs/folio-assistant-qzex--connected-agent-run-the-ast-measurement-builds-wit.md"
    },
    {
      "id": "folio-assistant-qzsq",
      "title": "Subscriptions vs remote mounts of the same instance: kg:subscribe on cat-harness trips reference-direction; on the root it is refused because root needs the instance",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fnx4",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T12:46:47Z",
      "updatedAt": "2026-10-10T15:46:50Z",
      "preview": "Found on folio-assistant#2320 (bean `hupw`), 2026-10-07. Owner ruling, about 12:10 UTC: **\"Skip for now\"**. #2320 lands with the remote mounts only. This bean is where the subscriptions get decided.\n\n## What happens\n\nThe plan was for folio-assistant to subscribe to the three SMART forks at their pinned merge SHAs, with #2330's `kg:subscribe --upstream-path smart-base`:\n- smart-base as a substrate;",
      "file": "beans/defs/folio-assistant-qzsq--subscriptions-vs-remote-mounts-of-the-same-instanc.md"
    },
    {
      "id": "folio-assistant-r0tm",
      "title": "ADAPTERS CLOSURE (yj6r): ruling request — hoist adapters/document + adapters/paper across three instances; paper-first is FREE and the 15 was 16",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T11:06:49Z",
      "updatedAt": "2026-10-21T19:42:00Z",
      "preview": "The eighth and last escape cluster on bean `yj6r` is the one that cannot be done\nby halves. This is the ruling request for it. **Plan only — no source file in\nthis repository is changed by this work**, and every number below was re-derived\nin this session rather than carried from the previous one.\n\n## Context — what is being decided, in plain words\n\nTwo facts about the layout, stated so nothing be",
      "file": "beans/defs/folio-assistant-r0tm--adapters-closure-yj6r-ruling-request-hoist-adapter.md"
    },
    {
      "id": "folio-assistant-r279",
      "title": "DECIDE: which transcription backend, and what CI pays for it",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T13:02:22Z",
      "updatedAt": "2026-10-15T16:49:45Z",
      "preview": "## Why this is its own bean\n\n`1r0p` (audio transcription) waited on `68dt` — declare Python dependencies and\ninstall them in CI. **`68dt` has landed**: `requirements.txt` is generated from\n`schemas/python-deps.ts` and `code-quality-gates.yml` runs\n`pip install -r requirements.txt`. The mechanism exists.\n\nWhat does not exist is a **decision about which backend**, and that is not a\nline to add quiet",
      "file": "beans/defs/folio-assistant-r279--decide-which-transcription-backend-and-what-ci-pay.md"
    },
    {
      "id": "folio-assistant-r2ld",
      "title": "'On this page': sections with sub-sections are collapsible",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T14:39:33Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Owner, 2026-10-05: 'on this page should have sub-sections collapsible'. Both surfaces: mountDocumentIndex (docs-ui.js) and documentIndexOf (navbar.ts, rail) — independent implementations of one rule; nest h3 under h2 as a closed disclosure.\n\n## Done when\n- [ ] theme sidebar and rail both nest h3 under their h2, closed by default\n- [ ] e2e on both\n\n_2026-10-05T15:28:15Z_ — Claimed by claude/vibrant",
      "file": "beans/defs/folio-assistant-r2ld--on-this-page-sections-with-sub-sections-are-collap.md"
    },
    {
      "id": "folio-assistant-r3ei",
      "title": "f017 follow-up: review the remaining input sites that block ~57 checks from the input-hash skip",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-xpcu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T22:53:13Z",
      "updatedAt": "2026-10-09T17:16:51Z",
      "preview": "PR #2327 (bean f017) audits every skippable check's import closure. `bun run cat input-hash:coverage --blockers` lists the unannotated sites that keep the remaining ~57 declared tasks running every time.\n\nThe biggest blockers:\n- kind-validator.ts:196: a computed import of validator modules.\n- staging-stamp.ts:61 and :81: environment reads.\n- kg-export.ts: spawn, clock, env and host.\n\nEach site nee",
      "file": "beans/defs/folio-assistant-r3ei--f017-follow-up-review-the-remaining-input-sites-th.md"
    },
    {
      "id": "folio-assistant-r3gy",
      "title": "BOOTSTRAP OUTWARD REFERENCES: plan to reach zero before the repo split",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T18:18:26Z",
      "updatedAt": "2026-10-09T17:41:06Z",
      "preview": "## Why\n\n`bootstrap/` is the floor (`needs: []`) and is meant to become `litlfred/bootstrap`. An analysis on 2026-09-29 (artifact https://claude.ai/artifact/92M8FmwCJeHUvs6NXutsar, §3) listed 22 places where bootstrap's own files point outside bootstrap or at folio-assistant. Each one dangles once the directory is its own repository. This bean is the plan to remove them, grouped by how each group g",
      "file": "beans/defs/folio-assistant-r3gy--bootstrap-outward-references-plan-to-reach-zero-be.md"
    },
    {
      "id": "folio-assistant-r3y6",
      "title": "beans:rollover raises adjudicate where one side is a strict SUPERSET — a false positive a person must not be spent on",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T00:13:30Z",
      "updatedAt": "2026-10-07T11:50:40Z",
      "preview": "`bun run cat beans:rollover` (issue #1850 step 2) classifies each authored bean path a PR\ntouches as `already-on-main`, `port`, `adjudicate` or `could-not-determine`. The\n`adjudicate` state means BOTH the PR and the base changed the bean since the fork, so a\nperson must pick, because porting either way drops the other's edit.\n\nThat default is right. But it cannot yet see the case where one side's ",
      "file": "beans/defs/folio-assistant-r3y6--beansrollover-raises-adjudicate-where-one-side-is.md"
    },
    {
      "id": "folio-assistant-r5wu",
      "title": "SUBGRAPH NODE PATTERN, follow-up: convert the other publishers of a declared subgraph's contents to the declared Subgraph node + inSubgraph",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T08:58:19Z",
      "updatedAt": "2026-10-09T15:47:00Z",
      "preview": "Follow-up to bean l4ay (PR #1960), which built the pattern (scripts/subgraph-node.ts: subgraphContainer, memberOf, subgraphPublicationFindings; declaredSubgraphNode in kg-export.ts) and applied it to todos.jsonld only. Owner ruling 2026-10-03: \"todos = subgraph node + todo content nodes\", \"and make pattern for declared repo branches (and declared dir subgraphs)\".\n\nAudit (2026-10-03) of generators ",
      "file": "beans/defs/folio-assistant-r5wu--subgraph-node-pattern-follow-up-convert-the-other.md"
    },
    {
      "id": "folio-assistant-r6es",
      "title": "BEANS PAGE FRESHNESS: say when the page was generated and how many commits behind main it is",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:45:39Z",
      "updatedAt": "2026-10-02T20:43:22Z",
      "preview": "Owner 2026-10-02: the beans page should show a generated date so a reviewer knows how recent it is, and how many commits behind main.\n\n## Constraint\nBean y7b3: no timestamp in a committed generated file (owner ruling 2026-09-30). So the stamp is written by the DEPLOY (docs-site.yml -> _site/build.json; previews already have staging.json) and read at load time; the behind-count is asked of the GitH",
      "file": "beans/defs/folio-assistant-r6es--beans-page-freshness-say-when-the-page-was-generat.md"
    },
    {
      "id": "folio-assistant-r7v6",
      "title": "BUG: QA readers already wrong today — the health artifact is never uploaded, a dead export comparison, a legacy qa-agent-write path, gates that write in --check",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:47:15Z",
      "updatedAt": "2026-10-06T06:09:21Z",
      "preview": "Arc `3fva`, found by reader audit `gxvk` (`cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md` §4.1, **C2 and C3**, plus R11, R21, R50). **Live today, and not blocked on `16ei`.** Each item is a reader that is wrong already, whatever happens to the branch.\n\n## Readers and defects\n- **C3** `.github/workflows/health-check.yml:132` uploads `test/health/results/repository.health-report.json`, w",
      "file": "beans/defs/folio-assistant-r7v6--bug-qa-readers-already-wrong-today-the-health-arti.md"
    },
    {
      "id": "folio-assistant-r8br",
      "title": "BLOCKER: pdf-images classifies browser-print nav icons as figures, so 7 documents cannot be promoted",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T16:36:29Z",
      "updatedAt": "2026-09-25T16:36:33Z",
      "preview": "Seven of the nine agent-skill documents are staged and cannot be promoted.\nThey fail exactly one requirement — `image-descriptions` — and the images in\nquestion are not figures.\n\n## Measured 2026-09-20\n\n`Agent Skills — Google Antigravity Docs`, a **four-page** browser print:\n\n- **104 images, all classified `figure`**\n- page 1 alone carries 26\n- coverage of the first three: **0.000183, 0.000183, 0.",
      "file": "beans/defs/folio-assistant-r8br--blocker-pdf-images-classifies-browser-print-nav-ic.md"
    },
    {
      "id": "folio-assistant-r939",
      "title": "SMART-* SEPARATION stage B: FHIR-generic IG schemas and ingest scripts move into fhir-harness; wrong-direction skill edges",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-n3ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T09:13:21Z",
      "updatedAt": "2026-10-04T07:07:44Z",
      "preview": "Stage B of cat-harness/docs/proposals/smart-separation-2026-10-01.md (#1767). Owner: \"push generic stuff as much as possible into fhir-harness first\".\n\n## Done when\n- [x] B1 ig-menu, ig-chrome, ig-metadata-index schemas (+tests) -> fhir-harness/schemas/; graph-kind registry validators repointed (fhir-harness:...)\n- [x] B2 ingest-ig-menu, ingest-ig-chrome (+test) -> fhir-harness/scripts/\n- [x] B3 w",
      "file": "beans/defs/folio-assistant-r939--smart-separation-stage-b-fhir-generic-ig-schemas-a.md"
    },
    {
      "id": "folio-assistant-r93y",
      "title": "IG artefact pages: one footer, same facts and links as the IG site pages (#1901 follow-up)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T12:15:12Z",
      "updatedAt": "2026-10-06T14:24:10Z",
      "preview": "Follow-up to #1901 / #2264. The artefact pages (gen-ig-pages) draw their own JS footer from assets/ig-footer.json: it lacks the © year (copyrightYear is in sushi-config.yaml, not the package) and its Table of Contents link points at the site root instead of toc.html. Goal: the artefact pages' footer matches the IG site pages' footer exactly — same facts from one source, same links, each link only ",
      "file": "beans/defs/folio-assistant-r93y--ig-artefact-pages-one-footer-same-facts-and-links.md"
    },
    {
      "id": "folio-assistant-r96p",
      "title": "LIBRARY: draft summaries for the withheld who-iris entries (0/121, 0/250)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T18:43:35Z",
      "updatedAt": "2026-10-11T06:23:23Z",
      "preview": "Issue #1794 (follow-up to PR #1818, which only fixed the viewer).\n\n## Why\nThe owner ruled on 2026-10-01 (option 1 of 4) that a WITHHELD library entry's rows show the section's summary when one exists, and otherwise \"Withheld — copyright not granted\" with a link to the catalogue record. Drafting the summaries was explicitly NOT part of that change. Measured at PR #1818: who-iris `who-pub-tps-931` h",
      "file": "beans/defs/folio-assistant-r96p--library-draft-summaries-for-the-withheld-who-iris.md"
    },
    {
      "id": "folio-assistant-ra9p",
      "title": "Merge refused: #2065 authored conflict with main",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:41Z",
      "updatedAt": "2026-10-15T16:49:44Z",
      "preview": "PR #2065, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_Refused: conflict refused, own CI missing-required.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2065.json`, status `waiting-on-author`): STATUS UNKNOWN",
      "file": "beans/defs/folio-assistant-ra9p--merge-refused-2065-authored-conflict-with-main.md"
    },
    {
      "id": "folio-assistant-ramz",
      "title": "check-context-emission scans GITIGNORED directories, so local residue fails a test about the repository",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:02:11Z",
      "updatedAt": "2026-09-25T16:21:36Z",
      "preview": "Found 2026-09-25 by a `goal-review` sweep, by causing it rather than reading it.\n\n`bun test` on a clean checkout of `main` reported **1 failure**:\n\n    (fail) the real corpus > every spoken prefix is bound and every own prefix is a stub\n    + \"count\": 145,\n    + \"example\": \"cat-harness/ingest-staging/agent-skills---google-antigravity-docs/manifest.jsonld\",\n    + \"prefix\": \"folio\",\n\n`cat-harness/in",
      "file": "beans/defs/folio-assistant-ramz--check-context-emission-scans-gitignored-directorie.md"
    },
    {
      "id": "folio-assistant-rbz3",
      "title": "Separation stage E rehearsal on litlfred/smart-trust: gates run with 23 platform files; directory name is the instance identity",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-n3ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T07:57:50Z",
      "updatedAt": "2026-10-09T17:07:13Z",
      "preview": "Owner, 2026-10-02: *\"use forks litlfred/smart-* as staging before we do it on WHO reps\"*, then *\"start smart-trust fork rehearsal\"*.\n\nRehearsal branch `separation/stage-e-rehearsal` on litlfred/smart-trust, draft PR litlfred/smart-trust#3 (do not merge). It carries `smart-trust/` from folio-assistant `52a35ddf` unchanged, plus `REHEARSAL.md` and `PLATFORM-FILES.txt`.\n\n## Measured\n- **Pages:** `gen",
      "file": "beans/defs/folio-assistant-rbz3--separation-stage-e-rehearsal-on-litlfredsmart-trus.md"
    },
    {
      "id": "folio-assistant-rc1e",
      "title": "RENAME: docs-auto -> auto-docs, the kind and every derived artefact (owner ruling)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T12:13:48Z",
      "updatedAt": "2026-10-04T12:52:00Z",
      "preview": "Owner ruling, 2026-10-04, confirmed as its own PR sequenced after #2053. The\ncode already quoted the owner saying `auto-docs` — `graph-kind-registry.ts`'s\ncomment reads *\"auto-docs is one declared subgraph, with declared sub-sub-graphs\nper writer\"* while the key beside it said `docs-auto`.\n\nPR #2070. 194 files: 130 modified, 64 renamed.\n\n## Measured, not recalled\n\nOn `main@67acd90202`: **952 menti",
      "file": "beans/defs/folio-assistant-rc1e--rename-docs-auto-auto-docs-the-kind-and-every-deri.md"
    },
    {
      "id": "folio-assistant-rdy0",
      "title": "Process pages list the docs sections that present them ('Presented on')",
      "status": "completed",
      "type": "feature",
      "priority": "low",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T17:22:05Z",
      "updatedAt": "2026-09-24T18:01:26Z",
      "preview": "## Why\nThe reverse of B5-fix: a generated `/processes/<x>.html` page does not say which prose sections present that process. The index is the same one B5-fix builds (`WebPageNode.asset.source`), so this is navigation for free once it exists.\n\n## Done when\n`gen-processes-viz.ts` emits a \"Presented on\" line per process page, from the same index, with a test.",
      "file": "beans/defs/folio-assistant-rdy0--process-pages-list-the-docs-sections-that-present.md"
    },
    {
      "id": "folio-assistant-rfev",
      "title": "C: built-ins self-register at the outermost layer — wire the ContributionRegistry for the first time",
      "status": "in-progress",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T13:21:31Z",
      "updatedAt": "2026-10-23T16:42:00Z",
      "preview": "**Owner's decision, 2026-09-21: C now, B as the destination.** Answering the\nthree-way question `zlmp` parked — who registers a BUILT-IN adapter's\ncontributions. C is built-ins self-registering at the outermost layer; B is no\nbuilt-ins at all, every adapter a real dependency with a `contributes` module.\n\n## Why this is wiring, not extending\n\n`schemas/contributions.ts` is 370 lines and complete — c",
      "file": "beans/defs/folio-assistant-rfev--c-built-ins-self-register-at-the-outermost-layer-w.md"
    },
    {
      "id": "folio-assistant-rfuq",
      "title": "S4 direction and placement: zero wrong-direction edges; placement PR2-PR9; 9umr finale",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [
        "folio-assistant-txue"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:14:34Z",
      "updatedAt": "2026-10-21T17:24:00Z",
      "preview": "Absorbs zlmp, yj6r, zhg2, r3gy, 2j2r, iirv pzwb/63wl/4fv8/tlat/apcg/8fq9/f8wp/p9bu, 9umr finale. Placement PRs run ONE AT A TIME.\n\n## Done when\n- [ ] import-direction and reference-direction at 0 wrong-direction edges\n- [x] 2j2r readers follow the checkout\n- [ ] placement PR2..PR9 merged\n- [ ] 9umr: last five tool skills out of folio-core\n\n\n## Owner rulings 2026-10-01\n- large-datasets -> subgraph ",
      "file": "beans/defs/folio-assistant-rfuq--s4-direction-and-placement-zero-wrong-direction-ed.md"
    },
    {
      "id": "folio-assistant-riit",
      "title": "CONTRIBUTIONS AND VALIDATORS AS KG NODES (owner 2026-10-04)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T17:42:33Z",
      "updatedAt": "2026-10-05T11:39:15Z",
      "preview": "Owner, 2026-10-04, on the audit's open question (should `*/contributions.ts` become declared nodes?): **option 2, all of it as nodes, \"+ validators need to be in KG too\"**.\n\n## What exists, measured 2026-10-04\n- `schemas/contributions.ts` defines the contribution shapes in TypeScript: BlockKindContribution, AdapterContribution, ToolContribution, QaCheckerContribution, RendererContribution and Pipe",
      "file": "beans/defs/folio-assistant-riit--contributions-and-validators-as-kg-nodes-owner-202.md"
    },
    {
      "id": "folio-assistant-rj0n",
      "title": "KIND VALIDATORS: --require-all can never pass — 7 of 7 'gaps' are category errors or empty",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:38:50Z",
      "updatedAt": "2026-09-24T18:59:15Z",
      "preview": "`check:kind-validators` reported *\"7 kind(s) declare no validator\"* and carried\n`--require-all` \"for the day the gap is meant to be closed\".\n\n**That day could not come.** Measured 2026-09-24 — every one of the seven is\neither not JSON at all, or has no nodes:\n\n| kind | what it holds | why a Zod validator cannot apply |\n|---|---|---|\n| `processes` | 77 `.bpmn`, 9 `.dmn` | XML |\n| `uml` | 103 `.puml",
      "file": "beans/defs/folio-assistant-rj0n--kind-validators-require-all-can-never-pass-7-of-7.md"
    },
    {
      "id": "folio-assistant-rjug",
      "title": "SCHEMA PROPOSAL: metadata indexes, binary releases and QA reports as declared graph kinds — options, not a single answer",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T19:07:23Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "Three things the pipeline already produces and this graph cannot hold. Proposal\nwith **options**, because at least two of the three have more than one\ndefensible shape and picking silently is how a kind gets registered wrong.\n\n## 1. Metadata indexes\n\nAlready partly solved: `fhir-artifact-index` exists, registered\n`renderable: false`, reconstructed from four partial views with `provenance`\nnaming t",
      "file": "beans/defs/folio-assistant-rjug--schema-proposal-metadata-indexes-binary-releases-a.md"
    },
    {
      "id": "folio-assistant-rkqp",
      "title": "Ingest Gemini-CLI agent-skill best-practices PDF + commit 4677175 as MODEL-SPECIFIC voices for skills",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T14:45:12Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Owner, 2026-09-20, with an upload and a link:\n\n> `Agent_Skill_best_practices___Gemini_CLI.pdf` one-voice source for skills\n> <https://github.com/litlfred/folio-assistant/commit/467717508cf8ee3f8bb4cf1eaace91e769d92e16>\n>\n> for model specific sources, make those model specific voices. make sure .ts\n> skill data model accomodates all. (preference leave unstructured schema,\n> agentic review b/c of \"b",
      "file": "beans/defs/folio-assistant-rkqp--ingest-gemini-cli-agent-skill-best-practices-pdf-c.md"
    },
    {
      "id": "folio-assistant-rmcf",
      "title": "72 script sidecars churn on every gates run because engine_version records the CONTAINER, and it went 1.3.14 -> 1.3.11",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T21:03:15Z",
      "updatedAt": "2026-09-29T20:52:42Z",
      "preview": "Measured 2026-09-26 while running `bun run cat gates` on a clean tree: **72** committed\nscript sidecars were rewritten, and the only content change in each was run\nprovenance:\n\n    -  \"last_run_at\": \"2026-09-26T19:43:36.482Z\",\n    -  \"last_run_sha\": \"abee3acee29e15ad7ae540e254fe31f2cf31cc40\",\n    -  \"engine_version\": \"bun-1.3.14\"\n    +  \"last_run_at\": \"2026-09-26T20:46:45.496Z\",\n    +  \"last_run_s",
      "file": "beans/defs/folio-assistant-rmcf--72-script-sidecars-churn-on-every-gates-run-becaus.md"
    },
    {
      "id": "folio-assistant-rmi6",
      "title": "C1: flip cat-harness-tools needs to [cat-harness, bootstrap-tools]; core adds cat-harness-tools",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-hx65"
      ],
      "createdAt": "2026-10-01T12:16:24Z",
      "updatedAt": "2026-10-01T13:19:53Z",
      "preview": "Owner ruling C1 (2026-10-01): tools sit below core. Placement audit: 0 of cat-harness-tools' 27 files import core, so only declarations change (cat-harness-tools.json needs; folio-assistant-core.json needs += cat-harness-tools) plus artefacts that read needs.\n## Done when\n- [x] declarations changed; import-direction / reference-direction green; gates green; merged\n\n## Evidence (PR #1786, branch cl",
      "file": "beans/defs/folio-assistant-rmi6--c1-flip-cat-harness-tools-needs-to-cat-harness-boo.md"
    },
    {
      "id": "folio-assistant-rmor",
      "title": "INJECTION: injectMarkdown deletes EVERY blank line in the document, not the ones it introduced — the written page is structurally destroyed",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T12:57:59Z",
      "updatedAt": "2026-09-27T06:40:21Z",
      "preview": "Found 2026-09-26 while doing `lvk9`. Pre-existing, and the most damaging thing in\nthis family so far.\n\n`injectMarkdown` ends with:\n\n```ts\n// Remove blank lines introduced by paragraph collapse\nconst result = outLines.filter((line) => line !== \"\").join(\"\\n\");\n```\n\nThe comment says *\"introduced by paragraph collapse\"*. The code removes **every\nempty line in the document**, including every one the au",
      "file": "beans/defs/folio-assistant-rmor--injection-injectmarkdown-deletes-every-blank-line.md"
    },
    {
      "id": "folio-assistant-rn3o",
      "title": "Diagrams: download PNG, download SVG, copy to clipboard on every figure",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-2upx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T12:41:53Z",
      "updatedAt": "2026-09-24T13:54:05Z",
      "preview": "Owner request 2026-09-24. Add three controls to mountFigure's toolbar in docs-ui.js so every diagram (BPMN, UML portrait/landscape, Mermaid) gets them: Download SVG (serialised or the committed file), Download PNG (canvas, scaled, theme colours), Copy (PNG via ClipboardItem, fall back to SVG text, say which). Keyboard-operable, named; e2e test per control. Queued after B5 (#1268) on the same branc",
      "file": "beans/defs/folio-assistant-rn3o--diagrams-download-png-download-svg-copy-to-clipboa.md"
    },
    {
      "id": "folio-assistant-rnfl",
      "title": "Phase I.3 — rename `content/` → `folio/` (2,408 occurrences, 429 files) (#223)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T15:00:27Z",
      "updatedAt": "2026-10-21T18:55:00Z",
      "preview": "Mechanical but wide: **2,408** literal `content/` occurrences across **429**\nfiles (measured 2026-09-18). `content/` holds no content — it is 431 files /\n46,401 lines of *pipeline*.\n\n**NOT blocked on bean `fsch`.** It was scrapped 2026-09-20 and the block is\nvoid.\n\n**But the deliverable as written is IMPOSSIBLE, and the sentence that stood\nhere on 2026-09-22 argued the opposite. See §\"FALSIFIED\" b",
      "file": "beans/defs/folio-assistant-rnfl--phase-i-3-rename-content-to-folio-2408-occurrences.md"
    },
    {
      "id": "folio-assistant-rogk",
      "title": "B9a (#1168): alternatives are DERIVED — delete Tool.alternativeTo",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:54:25Z",
      "updatedAt": "2026-09-30T14:29:18Z",
      "preview": "Owner, 2026-09-30: \"why tools need alternativeTo? skills and tools are associated, the alternatives should be derivable\" — chose Derive + fix 3.\n\nRule: two Tools are alternatives iff they share a satisfied skill AND have the same full io signature (input name/schema/required, output name/schema) AND the same renders/maintains. Measured over 118 tools: 8 pairs, recovering all 5 declared (beans-cli/",
      "file": "beans/defs/folio-assistant-rogk--b9a-1168-alternatives-are-derived-delete-toolalter.md"
    },
    {
      "id": "folio-assistant-rq8s",
      "title": "A SESSION BLOCKED ON THE OWNER IS INVISIBLE: four sessions held verbatim questions that only the session API could see, and nothing durable records one",
      "status": "in-progress",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T06:30:04Z",
      "updatedAt": "2026-10-22T14:07:00Z",
      "preview": "Found 2026-09-21 by the `goal-review` sweep of 2026-09-20T19:00Z →\n2026-09-21T06:25Z (session_01AYHimvYMmf8h8e9fFN6dW5). An instruction gap, and\nthe sweep's headline finding.\n\n## Measured\n\n`list_sessions` returned **7 sibling sessions**. **Four of them were stopped,\nwaiting on the owner**, each holding a question in the owner's own terms:\n\n| session | the question it is holding |\n|---|---|\n| WHO I",
      "file": "beans/defs/folio-assistant-rq8s--a-session-blocked-on-the-owner-is-invisible-four-s.md"
    },
    {
      "id": "folio-assistant-rqao",
      "title": "ACTORS LIVE IN A CLAUDE-SPECIFIC, UNDECLARED DIRECTORY: .claude/skills/actors (and capabilities/, requirements/) → an agent-generic declared graph",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T08:19:40Z",
      "updatedAt": "2026-09-30T21:58:28Z",
      "preview": "Owner, 2026-09-30: 'why .claude/skills/actors/*.json? need generic'.\n\n## Commit archaeology\n- 05e72abe92 (2026-03-24, 'Add agent skills framework'): 16 actor definitions created in .claude/skills/actors/, beside .claude/skills/capabilities/ (14), requirements/ (5) and local/ — the framework began as a Claude Code skill tree.\n- 571d208db8 (2026-09-18): BPMN/DMN moved INTO the declared kg graph and ",
      "file": "beans/defs/folio-assistant-rqao--actors-live-in-a-claude-specific-undeclared-direct.md"
    },
    {
      "id": "folio-assistant-rsi6",
      "title": "PUBLISHED PACKAGE, UNBUILT: block-qa-schema ships to npm and no gate built it — #914 merged green and broken",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T03:24:48Z",
      "updatedAt": "2026-09-26T04:01:27Z",
      "preview": "Measured 2026-09-26, by building the package rather than by reading about it.\n\n`@litlfred/block-qa-schema` is the **only** package in this repository that\nships to npm. It is named in no `.github/workflows/*.yml`, and the root\n`package.json` declares no `workspaces`, so its devDependencies had never been\ninstalled on a runner and its `build` and `test` scripts had never run. Its\n`node_modules/` di",
      "file": "beans/defs/folio-assistant-rsi6--published-package-unbuilt-block-qa-schema-ships-to.md"
    },
    {
      "id": "folio-assistant-rtuo",
      "title": "State tags and badges fail colour contrast on the dark theme",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:13Z",
      "updatedAt": "2026-09-30T16:12:47Z",
      "preview": "Tag and badge colours are fixed hex values that measure about 2.0–2.7:1 on the dark ground, below the WCAG 4.5:1 minimum for small text. Move them onto theme tokens that are validated in both schemes.\n\nObserved on: `external-schemas`, `fsh-guts`, `kg-viewer`, `methodologies`, `navbar`, `tools` (see each `cat-harness/docs/wireframes/<kind>/intent.md`). Per-page detail is in each visualiser's task u",
      "file": "beans/defs/folio-assistant-rtuo--state-tags-and-badges-fail-colour-contrast-on-the.md"
    },
    {
      "id": "folio-assistant-runj",
      "title": "SEMANTIC SUBGRAPHS slices 1–2: site-chrome/ (PR1) and themes/ (PR2) in cat-harness",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-fnx4",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-12T18:40:00Z",
      "updatedAt": "2026-10-20T10:31:00Z",
      "preview": "Proposal: `cat-harness/docs/proposals/semantic-subgraphs-2026-10-09.md` (ruled 2026-10-09). Owner: *\"go ahead with the cat-harness chrome subgraph\"*; *\"put the themes (beyond light and dark) as their own seperate subgraph\"*. Rulings used: **D1** *\"parse-equal\"*, **D2** *\"y (or better a docs/ css package)\"*, **D3** *\"y\"* (base light/dark + high-contrast in `site-chrome/`). Stages 3+ are bean `mo75`",
      "file": "beans/defs/folio-assistant-runj--semantic-subgraphs-slices-1-2-site-chrome-and-themes.md"
    },
    {
      "id": "folio-assistant-rva2",
      "title": "STATE BRANCH P7: declare every special branch with the same field — gh-pages (within folio, keyed by commit, back-link = build.json) and lake-cache/*",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T10:58:10Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "The general practice: every graph not on main is a declared sub-graph with a back-link {ref, sha} to the content commit it describes. build.json (bean r6es) is the first back-link.\n\n## Done when\n- [x] gh-pages declared. cat-harness.json `site` (graphKind basic-cdn-site), `storage: {branch: gh-pages, keyedBy: route, tool: gh-pages}` (#2192)\n- [x] lake-cache/* declared — by the CONSUMING folio, per ",
      "file": "beans/defs/folio-assistant-rva2--state-branch-p7-declare-every-special-branch-with.md"
    },
    {
      "id": "folio-assistant-rwmf",
      "title": "GOAL 4 / PLATFORM: the harness's own reliability — gates, process, QA, merge pipeline, deployment — which every GOAL stands on",
      "status": "in-progress",
      "type": "milestone",
      "priority": "high",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T08:26:45Z",
      "updatedAt": "2026-10-05T04:57:29Z",
      "preview": "## There is no owner's quote on this bean, and that is deliberate\n\n`vuip`, `p5wm` and `yg29` each open with the owner's words kept verbatim.\n**This one has none.** The owner chose *\"a fourth milestone: PLATFORM\"* from a\nset of options put to them on 2026-10-03, and the title and scope below were\n**derived from the measurement in the next section** by\n`session_01SjvqTkDQsqa6SLLFjBwoD3` rather than ",
      "file": "beans/defs/folio-assistant-rwmf--goal-4-platform-the-harnesss-own-reliability-gates.md"
    },
    {
      "id": "folio-assistant-rwwl",
      "title": "ci:watch reads a merge ref built against an OLD base as mergeable — conflicted PRs report PASS",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T06:04:29Z",
      "updatedAt": "2026-10-07T01:38:17Z",
      "preview": "Found 2026-10-06 while testing bean 6lre against live data (6lre stays with its holder; this is a separate defect).\n\n## The defect, measured\n\n    $ bun run cat ci:watch --pr 2197 --once\n    06:03:22  f75e4edb51d  PASS — 22 check(s) completed clean, and every workflow owed for this event ran\n    exit 0\n\nGitHub reports #2197 as `mergeable_state: dirty`. #2088 gives the same result. So `ci:watch` ans",
      "file": "beans/defs/folio-assistant-rwwl--ciwatch-reads-a-merge-ref-built-against-an-old-bas.md"
    },
    {
      "id": "folio-assistant-s0ki",
      "title": "uploads visualiser: 6 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-09-30T16:12:47Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/uploads/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **The lead number is not what the list leads with.** The badge that leads is \"22 waiting\", but the default sort is `State` ascending, and `\"ingested\" < \"waiting",
      "file": "beans/defs/folio-assistant-s0ki--uploads-visualiser-6-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-s32v",
      "title": "QA: agentic audit of large redundant rendered content that can load from the KG",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T16:16:36Z",
      "updatedAt": "2026-10-09T18:45:00Z",
      "preview": "Owner, 2026-10-01, verbatim: \"(need audit of large redundant rendered cotnet that can be dynamic loaded as QA review agentic)\". Context: the owner had just set reducing `.html` bloat by loading from the KG client-side as a goal of the just-the-docs rendering (bean `680p`), and asked that it \"should be general strategy for complex visualizers\".\n\n**What it is.** A QA review, run by an agent, over a ",
      "file": "beans/defs/folio-assistant-s32v--qa-agentic-audit-of-large-redundant-rendered-conte.md"
    },
    {
      "id": "folio-assistant-s36s",
      "title": "SWEEP COVERAGE: a corpus sweep that silently under-matches reports a clean corpus — found while sweeping for exactly that",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:14:41Z",
      "updatedAt": "2026-09-23T22:14:57Z",
      "preview": "Four findings this session had prescribed actions that could not clear them —\n`o5qj`, `thux`, `vq8g`, `7umv`. Four is a class, so `generalise-the-fix` Move 1.2\nsays to sweep for siblings rather than stop at the fourth instance.\n\n## The sweep\n\nEvery `action:` in `cat-harness/test/health/checks.ts`, asked one question: **can\nthe mechanism this names reach the subject this finding can have?**\n\n**Resu",
      "file": "beans/defs/folio-assistant-s36s--sweep-coverage-a-corpus-sweep-that-silently-under.md"
    },
    {
      "id": "folio-assistant-s43p",
      "title": "SCHEMAS VIEWER: /cat-harness/schemas/bootstrap is a 404 — dependency instances' schemas are excluded, and node kinds are not searchable",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T12:09:39Z",
      "updatedAt": "2026-10-08T19:57:30Z",
      "preview": "Owner, 2026-10-06, verbatim:\n\n> i expected https://litlfred.github.io/folio-assistant/cat-harness/schemas/bootstrap to work and show all schemas in bootstrap\n> (i also expected to be able to search for node kinds and see them here).\n> (following general patern requirements of harness visualizers)\n\n## Measured 2026-10-06 on main d34afab78\n\n- gen-schema-viz.ts publishes one subject page per instance",
      "file": "beans/defs/folio-assistant-s43p--schemas-viewer-cat-harnessschemasbootstrap-is-a-40.md"
    },
    {
      "id": "folio-assistant-s4sp",
      "title": "B: data model — Role.voice out, Voice->Role, lanes carry role ref, typed refs, skill input/output schema refs, test conformance",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T19:53:34Z",
      "updatedAt": "2026-09-30T19:38:35Z",
      "preview": "See #1168 plan B. Migrates cat-harness roles and voices; changes audit criteria role-declares-voice and role-has-use-cases.\n\nOwner, 2026-09-23: \"you'll need to fix tools\". Tools are in scope for B: a Tool's io ports reference the skill's input/output schemas (typed KG refs, not t(\"Text\")), and check-tools checks port TYPES against the skill contract, not only names (today contractRequires compares",
      "file": "beans/defs/folio-assistant-s4sp--b-data-model-rolevoice-out-voice-role-lanes-carry.md"
    },
    {
      "id": "folio-assistant-s4ta",
      "title": "OpenAPI harness: a subgraph for OpenAPI documentation sources with its own rendering sub-pipeline; smart-trust depends on smart-base + openapi",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T09:29:09Z",
      "updatedAt": "2026-10-03T17:36:11Z",
      "preview": "Owner, 2026-10-03, verbatim:\n\n> there is one thing wonky in openapi handing (in smart-trust there is an import openapi of the trust netework gateway. really there should be a KG harness specfiic to openapi docuemnataiton sources with its own rendering sub-pipeline. and then the smart-trust repo has a smart-base harness and a openapi harness. openapi ahrness could be in cat-harness repo for now as ",
      "file": "beans/defs/folio-assistant-s4ta--openapi-harness-a-subgraph-for-openapi-documentati.md"
    },
    {
      "id": "folio-assistant-s8nu",
      "title": "Four orphan-selectors now exist for one question — orphanSubjectPages should be the only one",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T05:33:00Z",
      "updatedAt": "2026-09-30T19:48:18Z",
      "preview": "Recorded after `ankg` was fixed on main while this branch was fixing it too —\nso the count below is measured against main, not against a plan.\n\n## The four\n\n| selector | where | how it decides |\n|---|---|---|\n| `prunableStickies` | `ensure-landing-sticky.ts` | the candidate parses as the thing it writes |\n| `OWNED` | `who-iris/scripts/gen-iris-pages.ts` (#607) | a regex over FILE NAMES this genera",
      "file": "beans/defs/folio-assistant-s8nu--three-orphan-pruners-now-exist-for-one-problem-vie.md"
    },
    {
      "id": "folio-assistant-sa8y",
      "title": "QA WORDING: a graph-scoped finding worded absolutely sent a session to a wrong fix",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-d308",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T05:52:43Z",
      "updatedAt": "2026-09-26T00:00:00Z",
      "preview": "A finding scoped to one graph but **worded absolutely** sent this session to a\nwrong fix, and the wrong fix was caught only by a test written the day before.\n\n## What the report says, and what is true\n\n`kg:audit` at the repo root reports:\n\n> skill \"confirm-harness\" is listed by no package manifest, carried by no role\n> and named by no activity.\n\nEach clause is true **of the root instance's graph**",
      "file": "beans/defs/folio-assistant-sa8y--qa-wording-a-graph-scoped-finding-worded-absolutel.md"
    },
    {
      "id": "folio-assistant-saqd",
      "title": "S5-a: maths code out of cat-harness into folio-assistant-sci's code (#223 partition; 49 MOVE + 10 split)",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:16:24Z",
      "updatedAt": "2026-10-16T06:55:00Z",
      "preview": "Story S5 (txue), with/after 70lx. Rows: cat-harness/docs/proposals/placement-audit-2026-10-01.json (PR #1778) — pr '(#223 code partition; S5)', instance=cat-harness, target folio-assistant-sci: MOVE 49, AMBIGUOUS 10 (owner Q4: SPLIT — generic pipeline -> cat-harness-tools, Lean/LaTeX checkers -> sci code plugged into it). Plus smart-base 3, fhir-harness 2, core 1. One agent at a time.\n## Done when",
      "file": "beans/defs/folio-assistant-saqd--s5-a-maths-code-out-of-cat-harness-into-folio-assi.md"
    },
    {
      "id": "folio-assistant-scfh",
      "title": "INGEST SLIDES: pptx+odp rung, a11y probe, KG/folio-asst deck into library, methodology gaps, docs (#1614)",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T14:32:51Z",
      "updatedAt": "2026-10-21T17:56:00Z",
      "preview": "Issue #1614. Owner supplied KG__folio-asst as .pptx and .odp. Add a slides rung to bun run cat ingest handling both, report accessibility, ingest the preferred (pptx) into library, list missing methodology sources, improve docs across layers.\n\n## Done when\n- [x] slides-structure.py rung + ingest-document.ts routing + tests\n- [x] library-ingestion skill updated\n- [x] deck ingested to a library with",
      "file": "beans/defs/folio-assistant-scfh--ingest-slides-pptxodp-rung-a11y-probe-kgfolio-asst.md"
    },
    {
      "id": "folio-assistant-sd5v",
      "title": "SPDX 3 applicability: where it should, could and should not be used — impact on processes, tasks and gates",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T10:14:26Z",
      "updatedAt": "2026-10-21T21:27:30Z",
      "preview": "Owner, 2026-10-03: deep analysis of where SPDX v3 could/should/should not be used (test results, QA reports, tool definitions...), impact analysis on missing processes/tasks and on existing ones. Deliverable: cat-harness/docs/proposals/spdx-3-applicability-2026-10-03.md. Not building anything: owner decisions first.\n\n## Done when\n- [x] proposal written and linked from proposals index\n- [x] owner h",
      "file": "beans/defs/folio-assistant-sd5v--spdx-3-applicability-where-it-should-could-and-sho.md"
    },
    {
      "id": "folio-assistant-sff8",
      "title": "Contention inflates a per-test budget ~35x, and vxho fixed ONE of 505 files — two more just failed on main",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T03:31:40Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Measured 2026-09-26 on a clean checkout of `main` at `0ef9543ccf3`, while\nstarting unrelated work. `bun test` **exited 1**:\n\n```\ncat-harness/content/pipeline/translation-block-qa.test.ts:\n(fail) buildReport — absence is absence > a translated block reports coverage,\n       terms and echo — and NO round-trip verdict [5031.09ms]\n  ^ this test timed out after 5000ms.\n\ncat-harness/scripts/tests/profil",
      "file": "beans/defs/folio-assistant-sff8--contention-inflates-a-per-test-budget-35x-and-vxho.md"
    },
    {
      "id": "folio-assistant-sfjo",
      "title": "INJECTION: the retranslate path DROPS front-matter keys — 5 locales lost `description:`, and `ar` lost `dir: rtl`",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T19:43:43Z",
      "updatedAt": "2026-09-27T08:25:15Z",
      "preview": "Found 2026-09-26 by bisecting `docs:auto:check` red on main.\n\n## Measured\n\n`docs:auto:check` is green at `3f0518b81ea` and red at `bfec1f9b88b` (#1427,\n\"retranslate index.md + installation.md\"). Bisected across six consecutive\nmain commits, one check per commit — not inferred from the PR's subject.\n\n#1427 rewrote ten locale files. Comparing front-matter KEYS before and after,\nper file:\n\n| file | k",
      "file": "beans/defs/folio-assistant-sfjo--injection-the-retranslate-path-drops-front-matter.md"
    },
    {
      "id": "folio-assistant-sg87",
      "title": "Mounted instance pages carry the docs locale globe (#2219)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T18:07:13Z",
      "updatedAt": "2026-10-06T05:23:38Z",
      "preview": "Issue #2219. Owner chose B: same chrome as folio-assistant on mounted pages (fa-translation-meta + docs-ui band globe), every declared locale shown, untranslated ones greyed. No new UI.\n\n## Future work, NOT done here\n- C: make the who-iris replica's UI strings translatable (pot from gen-iris-pages.ts, per-locale builds at /<loc>/who-iris/ or /who-iris/<loc>/), and teach translation-index.ts to see",
      "file": "beans/defs/folio-assistant-sg87--mounted-instance-pages-carry-the-docs-locale-globe.md"
    },
    {
      "id": "folio-assistant-sjic",
      "title": "ONE NAVBAR FOR EVERY FOLIO: combine the folio-assistant sidebar and the who-iris rail into a single component — fixed top, scrollable KG stack, fixed bottom",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T21:26:39Z",
      "updatedAt": "2026-09-29T20:52:41Z",
      "preview": "## What — the owner's spec, verbatim\n\n2026-09-21, with a screenshot of the who-iris rail open and working:\n\n> looks good.\n>\n> we should have same navbar across all folios though.  presented same way.\n> need to comine the two.\n>\n> * keep exploding menu from folio-assisnt\n> * keep [x] from who-iris, keep behavior of open/close, etc.\n> * keep consistent docs/ library/ etc. when content/subgraphs pres",
      "file": "beans/defs/folio-assistant-sjic--one-navbar-for-every-folio-combine-the-folio-assis.md"
    },
    {
      "id": "folio-assistant-sl9u",
      "title": "skos:prefLabel and dcterms:title carry the identical string on the glossary scheme node, with nothing saying which is authoritative",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T11:48:29Z",
      "updatedAt": "2026-09-23T21:33:41Z",
      "preview": "Measured 2026-09-22 on output shipped the same morning, in PR #841:\n\n```\n_kg/cat-harness-glossary.jsonld\n   skos:prefLabel : 'cat-harness swimlane glossary'\n   dcterms:title  : 'cat-harness swimlane glossary'\n   SAME?          : True\n\n_kg/bootstrap-glossary.jsonld   — same, both fields\n```\n\nTwo predicates, one fact, and nothing declaring which is the source. They agree today and will diverge the f",
      "file": "beans/defs/folio-assistant-sl9u--skospreflabel-and-dctermstitle-carry-the-identical.md"
    },
    {
      "id": "folio-assistant-slw1",
      "title": "INGEST: one pipeline from uploads/ to a complete L1 library",
      "status": "todo",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-npuo",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:43:43Z",
      "updatedAt": "2026-10-04T15:12:16Z",
      "preview": "The `uploads/` → `library/` path, and what \"complete\" means at L1.\n\nNine of these are the per-format arms (audio, images, CSV, archives, technical\nmetadata, provenance, round-trip translation QA) and two are the spine: `apui`\ngives them ONE documented entry point, and `pn6j` is the gate that says the\nderived content is actually present before L1 counts as complete. Without the\nspine the arms are n",
      "file": "beans/defs/folio-assistant-slw1--ingest-one-pipeline-from-uploads-to-a-complete-l1.md"
    },
    {
      "id": "folio-assistant-smbc",
      "title": "Separation stage 3: owner authorises seeding litlfred/cat-harness and litlfred/cat-harness-tools",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-ho66"
      ],
      "createdAt": "2026-10-01T06:58:02Z",
      "updatedAt": "2026-10-16T06:30:00Z",
      "preview": "Stage 3 of the split plan: authorise. Report what moves, the sizes and what breaks (plan §1–§2, updated with the stage 0–2 measurements) in this bean and the PR, and **wait for the owner's go** (`deletion-requires-confirmation`). An agent does not discharge this bean's first box.\n\nAlso before asking: confirm both target repositories exist and are empty — `litlfred/cat-harness-tools` measured empty",
      "file": "beans/defs/folio-assistant-smbc--separation-stage-3-owner-authorises-seeding-litlfr.md"
    },
    {
      "id": "folio-assistant-smhv",
      "title": "No check that relative links, computation.script paths and {{...}} templates resolve against declared directories",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:52:14Z",
      "updatedAt": "2026-10-09T18:18:44Z",
      "preview": "Recorded from the qou orphaned-content census, 2026-10-04 (ORPH report; session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91, issue #2106). qou: 12 absent computation.script files behind 12 blocks (including chi closed-form proofs), 30 dangling lean.refs, and macros used in prose but defined only in main.tex. Proposed: a resolution check over block links, computation.script and {{ }} te",
      "file": "beans/defs/folio-assistant-smhv--no-check-that-relative-links-computationscript-pat.md"
    },
    {
      "id": "folio-assistant-sod4",
      "title": "AUDIT: TypeScript tables that are really KG facts owned by one harness — ranked, with where each belongs (owner asked 2026-10-04)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T17:33:33Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Owner, 2026-10-04: *\"dispatch agent: other stuff in typescript that should be in KG?\"* This is the read-only audit that answered it. The principle comes from the same day's ruling, *\"there should not be a central registry for declaring mount tools and subgraph types\"*: a fact OWNED by one harness is declared there as a KG node, not hardcoded in a cat-harness table.\n\n**How it was measured.** `grep`",
      "file": "beans/defs/folio-assistant-sod4--audit-typescript-tables-that-are-really-kg-facts-o.md"
    },
    {
      "id": "folio-assistant-sop8",
      "title": "B7c (#1168): docs pages declare what they document (documents:); coverage.docs removed",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T19:50:21Z",
      "updatedAt": "2026-09-24T20:32:44Z",
      "preview": "Owner 2026-09-24: 'A: pages declare'. 28 coverage.docs entries over 9 pages (16 → subgraph-viewers.md, 9 → five generated pages, 3 hand-written). WebPage manifests gain documents: [<kind>…]; hand-written pages carry it in front matter; who-iris/docs/index.html gets it from its generator. Derive each directory's docs page; remove coverage.docs.",
      "file": "beans/defs/folio-assistant-sop8--b7c-1168-docs-pages-declare-what-they-document-doc.md"
    },
    {
      "id": "folio-assistant-sopq",
      "title": "Mine the WHO IG starter kit SOPs for DAK QA criteria",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-08-26T19:15:00Z",
      "updatedAt": "2026-10-10T17:04:26Z",
      "preview": "Split out of `p2en`, whose original question — what schema consolidates math and\nhealth-policy ingestion — is answered. This is the follow-on it uncovered.\n\n## Why\n\n`p2en` landed DAK block kinds, adapter-scoped QA axes, and five DAK checkers,\nbut those criteria were written from what the corpus happens to contain. WHO\npublishes its own authoring standards, and they are the better source: a\ncriteri",
      "file": "beans/defs/folio-assistant-sopq--mine-the-who-ig-starter-kit-sops-for-dak-qa-criter.md"
    },
    {
      "id": "folio-assistant-sp0e",
      "title": "state:push commits an empty mount as a deletion",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T17:59:55Z",
      "updatedAt": "2026-10-15T18:17:04Z",
      "preview": "## What happened (2026-10-15, measured)\n\nAn agent cleared and remounted the instance directories in an index worktree\n(`mount-from-lock.sh`) and then ran `bun run cat state:push` to push one bean\nedit. The instance remount had replaced every mounted state graph under an\ninstance (`<instance>/health`, `<instance>/test/health/results`,\n`cat-harness-tools/beans/marks`) with nothing, and `state:push` ",
      "file": "beans/defs/folio-assistant-sp0e--state-push-commits-an-empty-mount-as-a-deletion.md"
    },
    {
      "id": "folio-assistant-squu",
      "title": "S5 pre: sci plug-in hook (Q4) — generic pipeline consults a registry instead of importing maths modules",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T19:46:49Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "Owner ruling 2026-10-01 ~18:15: the 73 sci-bound files go straight to folio-assistant-sci, not via cat-harness-tools. Prerequisite: invert the 10 generic → sci-bound import edges (qa-criteria-registry, qa-checkers-voice, render-value, render-latex, qa-checkers-extended, build, content-graph, markdown-ast, profile-check, qa-checkers-q-usage) through a registration hook in the contentAdapters/loadCo",
      "file": "beans/defs/folio-assistant-squu--s5-pre-sci-plug-in-hook-q4-generic-pipeline-consul.md"
    },
    {
      "id": "folio-assistant-ssfp",
      "title": "beans:claim writes to process.cwd(), so an agent working in a git worktree claims in the WRONG checkout",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:11:53Z",
      "updatedAt": "2026-09-30T17:48:33Z",
      "preview": "Measured 2026-09-30, on a live subagent. A session delegating to agents that\neach work in their own `git worktree` — the pattern this repository's own\nguidance pushes, and the one used for every agent in that session — has its\nclaims land in the wrong tree.\n\n## The measurement\n\nAn agent was briefed to work in `/tmp/wtRJ/folio-assistant` and claim bean\n`rjug`. Immediately after it reported the clai",
      "file": "beans/defs/folio-assistant-ssfp--beansclaim-writes-to-processcwd-so-an-agent-workin.md"
    },
    {
      "id": "folio-assistant-supn",
      "title": "HARNESS CARDS BECOME TODOS: outstanding work, a next-action recommendation from initialisation state, and health badges",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T15:07:23Z",
      "updatedAt": "2026-09-20T15:07:23Z",
      "preview": "Owner, 2026-09-20, answering the four options put to them — first \"2+ 2\",\ncorrected immediately to:\n\n> 2+3 + recomend....\n\nand, in the same breath:\n\n> recommendatio on what to do based on curent state of where harness go to in\n> its intialzaiton. would also have harness health check badges.\n\n## What was chosen\n\n**Option 2 AND option 3, together**, plus a third thing neither option had:\n\n| part | w",
      "file": "beans/defs/folio-assistant-supn--harness-cards-become-todos-outstanding-work-a-next.md"
    },
    {
      "id": "folio-assistant-svgx",
      "title": "Code viewer: 'Code' reads no viewer yet on 8 harnesses",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-46ob",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T16:53:28Z",
      "updatedAt": "2026-10-15T19:33:06Z",
      "preview": "## Parent\n\nfolio-assistant-46ob\n\nRows: Bootstrap tools, C@T Harness, C@T Harness Tools, FHIR IG Harness, Folio Assistant Core, SMART Base, WHO IRIS, folio-assistant-sci — the `code` kind. No harness declares a visualiser for it.\n\nOptions: a source browser over each instance's declared code directories (file tree + rendered source, linking to GitHub at the pinned sha), or link straight to the repos",
      "file": "beans/defs/folio-assistant-svgx--code-viewer-code-reads-no-viewer-yet-on-8-harnesse.md"
    },
    {
      "id": "folio-assistant-sxft",
      "title": "Re-seed the smart-trust FHIR AST cache from main 644bfda (needs FHIR network)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T15:06:56Z",
      "updatedAt": "2026-10-06T16:37:45Z",
      "preview": "## Brief\n\nYou are the EXECUTOR for this bean. A cloud Claude session (the coordinator)\nhanded it to you because it cannot reach `packages.fhir.org`, and you can.\nYou were sent here by one sentence:\n`Do bean sxft on branch claude/smart-trust-ast-rehand of repo litlfred/folio-assistant.`\n\nWHERE\n- Repo:     litlfred/folio-assistant\n- Checkout: `~/space_cats/folio-assistant` (NOT `~/space_cats/folio-a",
      "file": "beans/defs/folio-assistant-sxft--re-seed-the-smart-trust-fhir-ast-cache-from-main-6.md"
    },
    {
      "id": "folio-assistant-syiq",
      "title": "S4-a: cat-harness sci-subject skills move or split to folio-assistant-sci (watchers, editorial graph, Milnor; ~48 rows)",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:16:24Z",
      "updatedAt": "2026-10-15T16:49:44Z",
      "preview": "Story S4 (rfuq). Rows: cat-harness/docs/proposals/placement-audit-2026-10-01.json (PR #1778) — instance=cat-harness, KG kinds, target folio-assistant-sci, pr 'unplanned' (MOVE 15, SPLIT 23, AMBIGUOUS 10). Owner rulings 2026-10-01: Q1 integration-watcher family -> sci, generic integration-watcher stays; Q2 editorial graph split (uses[] stays, Lean comparison -> sci); Q3 Milnor -> sci, markdown-rend",
      "file": "beans/defs/folio-assistant-syiq--s4-a-cat-harness-sci-subject-skills-move-or-split.md"
    },
    {
      "id": "folio-assistant-syrl",
      "title": "check-subgraphs prints '23 carry one ../ too many' as a STRING LITERAL, not a measurement",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:02:11Z",
      "updatedAt": "2026-09-25T16:21:36Z",
      "preview": "`cat-harness/scripts/check-subgraphs.ts:382` prints:\n\n> NOT a clean bill either — bean `mi97` audits them, and 23 carry one `../`\n> too many.\n\n**That 23 is a string literal.** It was measured once, on 2026-09-20, and\nwritten into the message. The check re-measures the TOTAL every run (it read\n171 that day and reads **246** today) but the 23 never moves, so the output\ncannot tell a reader whether a",
      "file": "beans/defs/folio-assistant-syrl--check-subgraphs-prints-23-carry-one-too-many-as-a.md"
    },
    {
      "id": "folio-assistant-syzb",
      "title": "Separation stage 6: carry cat-harness and cat-harness-tools as submodules at the same paths",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:02Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "Stage 6 of the split plan: replace `cat-harness/` and `cat-harness-tools/` with submodules at the **same paths**, pinned to the seeded (post-QA) SHAs. `.gitmodules` +2; the 31 workflows already set `submodules: true`. Archive per D6 (owner 2026-10-01, default): `fsh-guts/retired/cat-harness-split.md` names the source SHA and lists `git archive <sha> cat-harness`, **no tarball** (a full one would a",
      "file": "beans/defs/folio-assistant-syzb--separation-stage-6-carry-cat-harness-and-cat-harne.md"
    },
    {
      "id": "folio-assistant-t0jg",
      "title": "WHO-IRIS: update .pot templates, 6 UN language translations and execute untainted roundtrip Q/A",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T14:24:39Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Update who-iris .pot gettext templates, verify 6 UN official language translations (en source + ar, es, fr, ru, zh in who-iris/translations/), and perform untainted roundtrip QA (independent back-translation + adjudication) per untainted-verification discipline.\n\n\n## Tasks\n- [x] Ensure who-iris .pot templates are extracted and up-to-date (`bun run cat glossary:pot:check`)\n- [x] Verify 6 UN officia",
      "file": "beans/defs/folio-assistant-t0jg--who-iris-update-pot-templates-6-un-language-transl.md"
    },
    {
      "id": "folio-assistant-t1vl",
      "title": "folio-assistant-sci content/pipeline/qa-checkers-cost.ts imports ../../../cat-harness/content/pipeline/content-graph, moved to cat-harness-tools in 70lx — any test importing qa-checkers-extended fails to load",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ml9h",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-ndp0"
      ],
      "createdAt": "2026-10-10T16:49:37Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "Found by drain lane B, 2026-10-10. Same class as ndp0: a path into cat-harness that 70lx moved to cat-harness-tools.\n\n## Done when\n- [x] qa-checkers-cost.ts imports content-graph from its cat-harness-tools location (PR on litlfred/folio-assistant-sci)\n- [x] the tests importing qa-checkers-extended load and pass\n- [x] a grep across the mounted instances for '../cat-harness/content/pipeline' and 'ca",
      "file": "beans/defs/folio-assistant-t1vl--folio-assistant-sci-contentpipelineqa-checkers-cos.md"
    },
    {
      "id": "folio-assistant-t3n8",
      "title": "HARNESS DISPLAY NAMES: every instance declares a human title, and the schema should say so",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T17:28:40Z",
      "updatedAt": "2026-09-21T22:08:02Z",
      "preview": "Owner, 2026-09-21: \"harnesses should list the names (they should be named in schmeas, e.g. cat-boostrap should be named 'Boostrap', f-a => Folio Assistant, cat-harness => C@T Harness)\"\n\nCORPUS CHECK, from docs/_data/harness.json — every instance's title is currently just its directory name, with one exception that is wrong: cat-harness declares 'title: folio-assistant', which collides with the roo",
      "file": "beans/defs/folio-assistant-t3n8--harness-display-names-every-instance-declares-a-hu.md"
    },
    {
      "id": "folio-assistant-t490",
      "title": "Task authorization: authN + role + ODRL + content access before every BPMN task; rbac.ts on ODRL",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:16:45Z",
      "updatedAt": "2026-09-23T22:52:49Z",
      "preview": "Issue #1207 (child of #1180). Owner decisions 2026-09-23: advisory rollout (deny/role-mismatch refuse, unknown recorded), action always perform-task, authN is the BPMN executor's responsibility with git/GitHub as today's identity + access control, rbac.ts replaced by ODRL now.\n\n## Done when\n- [x] engine checks in workflow_gate + workflow_complete, verdict in history\n- [x] rbac.ts routes on ODRL, g",
      "file": "beans/defs/folio-assistant-t490--task-authorization-authn-role-odrl-content-access.md"
    },
    {
      "id": "folio-assistant-t4xb",
      "title": "MOUNT PATH + ROUTE COLLISIONS: <base>/<harness>/<visualizer> is canonical; <base>/<visualizer> is an opt-in alias",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-0mpw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T21:48:54Z",
      "updatedAt": "2026-10-09T14:43:00Z",
      "preview": "## The owner's rule (2026-10-07, verbatim in substance)\n\n> remote mounts already land at <name>/ without a path override → we need to caution b/c\n> high potential for path collision. <base_url>/<visualizer> is an opt-in (for prettiness or\n> so), but <base_url>/<harness>/<visualizer> always works.\n\n## Two collision surfaces, measured on main 33bf3d2\n\n1. **Disk.** Every `remoteMounts` entry in `foli",
      "file": "beans/defs/folio-assistant-t4xb--mount-path-and-route-collisions-harness-namespaced-url-is.md"
    },
    {
      "id": "folio-assistant-t5dm",
      "title": "INSTANCE NAME FROM THE CHECKOUT FOLDER: library-graph attributes root uploads to basename(repoRoot), so a clone's directory name is published",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T10:38:48Z",
      "updatedAt": "2026-09-30T16:12:48Z",
      "preview": "Found 2026-09-26 resolving #1290's conflicts in a worktree named `pr1290` (session_01ERf1yH3k69x37rXCrb6GYt). `bun run cat library:viz` wrote `\"uploadInstance\": \"pr1290\"` into 12 entries of `cat-harness/docs/assets/library/index.json` and emitted a page at `cat-harness/docs/cat-harness/library/pr1290/index.html`. Caught before push; regenerated from a directory named `folio-assistant`, after which",
      "file": "beans/defs/folio-assistant-t5dm--instance-name-from-the-checkout-folder-library-gra.md"
    },
    {
      "id": "folio-assistant-t5g9",
      "title": "Rail contents on document and library pages (LHS navbar page TOCs)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T06:40:14Z",
      "updatedAt": "2026-10-07T06:40:14Z",
      "preview": "Owner 2026-10-07: 'LHS navbar should show page TOCs'. Document pages and the library entry page declare their contents (data-fa-visualiser-nav): chapters with sections, top-level library sections with the next level. #sec-<id> opens the Document view's Sections tab.",
      "file": "beans/defs/folio-assistant-t5g9--rail-contents-on-document-and-library-pages-lhs-na.md"
    },
    {
      "id": "folio-assistant-t5j5",
      "title": "kg-audit: a call activity whose target is loadable from the PARENT root must resolve, not read unknown",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T09:08:59Z",
      "updatedAt": "2026-10-07T11:50:39Z",
      "preview": "Owner, 2026-10-04: the audit should resolve across instances.\n\nToday a `bpmn:callActivity` whose target process lives in a DIFFERENT declared instance reads `unknown`, with evidence that says in as many words that the audit cannot tell two different things apart:\n\n    CallActivity_Basic: calls \"Process_Ingestion\", which is the id of no\n    process this instance can load. That is either a typo or a",
      "file": "beans/defs/folio-assistant-t5j5--kg-audit-a-call-activity-whose-target-is-loadable-.md"
    },
    {
      "id": "folio-assistant-t6ht",
      "title": "STICKIES BOARD: remove the Visualisations tile strip (owner 2026-10-02, reverses v0jv) — issue #1905",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-6lb8",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T18:39:58Z",
      "updatedAt": "2026-10-04T19:55:09Z",
      "preview": "Owner, 2026-10-02: \"stickies panel shouldnt have all those icons\". Remove .fa-board-strip from every sticky board; tiles stay reachable via navbar + glass. Issue #1905.\n\n\n## Closed on evidence, 2026-10-04\n\nLanded via #1907, merged in train #1924 (`225b7cf`); issue #1905 is closed. Re-derived on `main` (session https://claude.ai/code/session_01Ga3HjmX3ag9vTgZWDSmsFi): `fa-board-strip` appears in no",
      "file": "beans/defs/folio-assistant-t6ht--stickies-board-remove-the-visualisations-tile-stri.md"
    },
    {
      "id": "folio-assistant-t7fl",
      "title": "uploads/README shows the high-level document-ingestion BPMN, via a DECLARED coverage.process",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T23:47:39Z",
      "updatedAt": "2026-09-30T14:44:36Z",
      "preview": "Owner, 2026-09-29: *\"show highlevel (sub)process bpmn on the uploads page.\"*\n\nThe uploads page is `uploads/README.md`, the generated subgraph README written\nby `cat-harness/scripts/subgraph-readmes.ts` through the `subgraph` Liquid\ntemplate in the tools graph.\n\n## What is being added\n\nA new optional declared field on `SubgraphCoverageSchema` naming the BPMN\nprocess that GOVERNS a directory, declar",
      "file": "beans/defs/folio-assistant-t7fl--uploadsreadme-shows-the-high-level-document-ingest.md"
    },
    {
      "id": "folio-assistant-t8c4",
      "title": "bootstrap subgraph nodes carry no sourcePath: decide whether the reader needs it",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T07:18:59Z",
      "updatedAt": "2026-10-07T05:15:00Z",
      "preview": "Owner, 2026-10-04, on litlfred/bootstrap-tools#7 item 4: 'track in bean'.\n\nbootstrap-tools#7 publishes bootstrap's and bootstrap-tools' named subgraphs with each node's file as an absolute `source` IRI (`dcterms:source`, owner ruled 'ok' on absolute IRIs) and NO repository-relative `sourcePath` literal, which folio-assistant's own subgraph files carry. folio-assistant's process-index reader (`cat-",
      "file": "beans/defs/folio-assistant-t8c4--bootstrap-subgraph-nodes-carry-no-sourcepath-decid.md"
    },
    {
      "id": "folio-assistant-t8g3",
      "title": "Translation support foundation (issue #206)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-17T22:07:18Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "_2026-09-19T00:41:16Z_ — Checked 2026-09-19 on main at 17dc1e6 — CANNOT DETERMINE, and that is the finding. This bean has an EMPTY body: a title naming issue #206 and nothing else, so there is no statement of what 'translation support foundation' includes or what would close it. Artefacts that exist: translations/ with ar, es, fr, ru and zh; scripts/translate-bpmn.ts; scripts/translation/ with a R",
      "file": "beans/defs/folio-assistant-t8g3--translation-support-foundation-issue-206.md"
    },
    {
      "id": "folio-assistant-tbdg",
      "title": "main is RED on translation-drift: #1374 published 27 translated pages with no .po catalogue, and the backlog list is not the fix",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T04:22:55Z",
      "updatedAt": "2026-10-06T05:55:27Z",
      "preview": "Measured 2026-09-26. `main` is RED on `translation-drift`, independently of\nanything else, and it is the SECOND of two unrelated breakages on `main` this\nmorning.\n\n## The failure, and that it is `main`'s\n\n```\n(fail) the real corpus — and the gate can actually fail > no NEW drift, and\n       nothing unreadable\nExpected 0, Received 27\n   error ar/accessibility: published with no `.po` catalogue and ",
      "file": "beans/defs/folio-assistant-tbdg--main-is-red-on-translation-drift-1374-published-27.md"
    },
    {
      "id": "folio-assistant-tbdl",
      "title": "Jekyll pages' navbar shows no open-document index — only the injected rail supplies documentIndex",
      "status": "scrapped",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T11:23:09Z",
      "updatedAt": "2026-10-01T05:31:25Z",
      "preview": "Found closing `sjic`, 2026-09-29/30, session https://claude.ai/code/session_014nDNCRPYSuF4DiJUP7wMDq.\n\nThe owner's spec (in `sjic`): *\"when a document or other indexed object is opened, the document index/idices are shown in a navbar tab/menu.\"*\n\n## Measured\n\n- `NavbarModel.documentIndex` has ONE supplier: `harness-rail.ts:118`, which calls `documentIndexOf(html)` on a finished page. So mounted an",
      "file": "beans/defs/folio-assistant-tbdl--jekyll-pages-navbar-shows-no-open-document-index-o.md"
    },
    {
      "id": "folio-assistant-tc95",
      "title": "BLOCKED on owner: translations/fr/agent-onboarding.md is an English .md in a gettext directory",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T16:14:28Z",
      "updatedAt": "2026-09-23T19:25:46Z",
      "preview": "Found 2026-09-20 while draining bean `rl3h`. **Needs the owner: this is a\ndeletion, and an agent does not remove a durable artefact on its own\ninitiative.**\n\n## The file\n\n`cat-harness/translations/fr/agent-onboarding.md` — 8,656 bytes, added\n2026-09-20 (commit `169b7510b5`, *\"Merge main, and fix the sweep main's\nmemory move made blind\"*).\n\n## Why it looks wrong\n\nIt is the **only `.md` anywhere und",
      "file": "beans/defs/folio-assistant-tc95--blocked-on-owner-translationsfragent-onboardingmd.md"
    },
    {
      "id": "folio-assistant-tcd6",
      "title": "STAGING CLEANUP IS BROKEN: the cleanup job's checkout omits submodules, so rm -rf runs and the push never does — 6 consecutive failures, 80 previews, 47 for closed PRs",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T07:01:24Z",
      "updatedAt": "2026-10-07T05:10:00Z",
      "preview": "Found 2026-10-02 while trying to remove staging previews by hand, and the\nroot cause turned out to be why they could not be removed at all.\n\n## The failure\n\n`feature-staging.yml`'s `cleanup` job checks out the platform with no\n`submodules`. `cat-harness/schemas/graph-kind-registry.ts` imports\n`../../bootstrap-tools/schemas/graph`, and `bootstrap-tools` is a SUBMODULE,\nso every platform script the ",
      "file": "beans/defs/folio-assistant-tcd6--staging-cleanup-is-broken-the-cleanup-jobs-checkou.md"
    },
    {
      "id": "folio-assistant-tdi0",
      "title": "latex-known-macros.json lacks \\phantom and \\lessgtr: preflight false positives on a real paper",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-d308",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T18:57:25Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "Found 2026-10-04 running paper-feature-build on litlfred/qou (PR #2118). The LaTeX preflight that build.ts runs reports two undefined-macro findings, and both are standard commands:\n- \\phantom is LaTeX core (first use qou chapters/mass-theory.tex:7091);\n- \\lessgtr is amssymb, which the paper print template loads (chapters/knots-particles-confinement.tex:179).\ncat-harness/content/pipeline/latex-kno",
      "file": "beans/defs/folio-assistant-tdi0--latex-known-macrosjson-lacks-phantom-and-lessgtr-p.md"
    },
    {
      "id": "folio-assistant-tdir",
      "title": "TOOL FOLDERS: one Tool per `tools/<id>/<id>.ts`, its own published JSON-LD and IRI, its I/O types as their own JSON Schema files, and a QA report per Tool — migrate every litlfred instance",
      "status": "in-progress",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-15T18:05:00Z",
      "updatedAt": "2026-10-21T18:58:00Z",
      "preview": "## The ask, owner 2026-10-15 — verbatim\n\nQuoted rather than paraphrased; it arrived in four messages in session\n`session_01XZ5H7vswrTg7r3Kv2k2EhZ` (folio-assistant#2559, Uganda adaptation):\n\n| smart-base/tools/index.ts has lots of defined tools. why are they not each\n| in their own folder like smart-base/tools/extract-dak (should be bean about\n| Tools getting their own folders and having a QA repo",
      "file": "beans/defs/folio-assistant-tdir--tools-get-their-own-folders-one-tool-per-tools-id.md"
    },
    {
      "id": "folio-assistant-tfo1",
      "title": "INGESTION: a skill that takes 3 avatar/theme layouts, checks them, and says why it refused",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [
        "folio-assistant-d3yq"
      ],
      "blockedBy": [],
      "createdAt": "2026-09-20T06:31:08Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "## The ask, owner 2026-09-20 (verbatim)\n\n> want stickys to be if all harnesses fired and that is their sticky to get to\n> folio-assistnat. each has own avatar. make skills for avatar theme ingestion\n> (need 3 meeting certain formatting constraints), return sucches or explnation\n> of falire...\n\nand, minutes later:\n\n> avatar for testing, engineering, architecture\n> https://github.com/litlfred/folio-",
      "file": "beans/defs/folio-assistant-tfo1--ingestion-a-skill-that-takes-3-avatartheme-layouts.md"
    },
    {
      "id": "folio-assistant-tfqf",
      "title": "QA READERS F6: docs site, staging and preview publish QA from qa-reports — silent shrink of /assets/qa and a false 965 to 2 count",
      "status": "todo",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-3fva",
      "blocking": [
        "folio-assistant-7mwa"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:47:14Z",
      "updatedAt": "2026-10-22T16:46:00Z",
      "preview": "Arc `3fva`, from reader audit `gxvk` (`cat-harness/docs/proposals/qa-readers-audit-2026-10-01.md`, §5.3 family F6). **Refines and supersedes the docs-site and staging half of `2ae2`.** The audit found that `2ae2`'s three MCP sites are not readers (§5.4). As of 2026-10-06 this is not blocked on `16ei`: it completed (qa-store landed; CI publishes `main/` and `pr/` entries and the prune runs on sched",
      "file": "beans/defs/folio-assistant-tfqf--qa-readers-f6-docs-site-staging-and-preview-publis.md"
    },
    {
      "id": "folio-assistant-thsz",
      "title": "PAGES REPORT: a cancellation share cannot tell coalescing from starvation, and it read as alarming to its own author",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:28:41Z",
      "updatedAt": "2026-09-26T03:54:28Z",
      "preview": "`3yi4` built the Pages section so somebody could ask *\"are the previews\nactually building?\"*. It reports the counts and deliberately grades no share —\nthere is no calibrated threshold for \"too many cancellations\", the same refusal\nthat stopped `6xaz` inventing a size threshold.\n\n**That refusal was right and it is not enough.** The number it prints is the\none a reader forms a judgement from anyway,",
      "file": "beans/defs/folio-assistant-thsz--pages-report-a-cancellation-share-cannot-tell-coal.md"
    },
    {
      "id": "folio-assistant-tjj6",
      "title": "goal-review with no goals given ignores the goal milestones already in the store",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T12:20:12Z",
      "updatedAt": "2026-09-30T00:27:10Z",
      "preview": "Found 2026-09-24. The owner ran `/goal-review 1d` with no goals. The command says: *\"With no goals, produce the synopsis and the instruction gaps, and say that no queue was built because no goal was given.\"* The skill's inputs table agrees (\"none — ask, or review without a queue and say so\").\n\n**But the store carries the goals as objects:** milestones `vuip` (GOAL 1: separation of repos…), `p5wm` ",
      "file": "beans/defs/folio-assistant-tjj6--goal-review-with-no-goals-given-ignores-the-goal-m.md"
    },
    {
      "id": "folio-assistant-tlat",
      "title": "Placement PR5: materialization state vocabulary and the extraction contract move down to cat-harness",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [
        "folio-assistant-apcg"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:01Z",
      "updatedAt": "2026-10-02T13:42:04Z",
      "preview": "Placement proposal §2 (owner rulings 2026-09-30 §6; process: review → resolve issues → staged PRs). Parent of PR0/PR1 is `9umr`; PR2–PR9 sit under the separation epic because D4 (owner, 2026-10-01, option 3) interleaves them with the split stages into one ordered sequence. Every PR: references move with the subject; generated trees regenerated, never hand-edited; `beans/**` not rewritten; kg-qa si",
      "file": "beans/defs/folio-assistant-tlat--placement-pr5-materialization-state-vocabulary-and.md"
    },
    {
      "id": "folio-assistant-tlj9",
      "title": "PARENT INTEGRITY: a bean's body names a parent its front matter does not carry (4ccr), so a goal's open count is wrong",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T11:33:55Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "## The finding, and how it was measured\n\n`beans/defs/folio-assistant-4ccr--*.md` is an epic — *\"WIREFRAME FINDINGS:\nusability and accessibility defects the as-is wireframes observed (#1023)\"*. Its\nfront matter carries **no `parent` field**. Its body, line 19, says in prose:\n\n> It belongs to the rendered-surface stream, `folio-assistant-10uc` (navbar,\n> visualisers, stickies).\n\n`10uc` is *\"STREAM 2",
      "file": "beans/defs/folio-assistant-tlj9--parent-integrity-a-beans-body-names-a-parent-its-f.md"
    },
    {
      "id": "folio-assistant-tlk2",
      "title": "Second hop: move cat-state and cat-fhir-ast/* to cat/<harness>/<name> (handoff to local agy agent)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T21:33:58Z",
      "updatedAt": "2026-10-03T00:13:49Z",
      "preview": "## Brief\n\nYou are the EXECUTOR for one task handed to you by the merge-steward cloud session (https://claude.ai/code/session_01ToWZR4RgTRCWeSsgxsSQfT). That session cannot push or delete branches. You can, because you run on the owner's machine. You did the first hop as bean `folio-assistant-46qw`; this is the second hop, to the owner's final naming scheme.\n\nWHERE (you were sent here by one line n",
      "file": "beans/defs/folio-assistant-tlk2--second-hop-move-cat-state-and-cat-fhir-ast-to-cath.md"
    },
    {
      "id": "folio-assistant-tn3d",
      "title": "LLM evaluation methodologies for Verifiable AI in SMART guidelines (issue #2513)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-08T08:38:38Z",
      "updatedAt": "2026-10-08T15:21:23Z",
      "preview": "Review methodologies in arXiv:2606.21008, 2603.27124, 2608.18294, 2403.16873, 2203.02010, 2505.10399 and review smart-* repositories to evaluate applicability to research questions R1-R7 (clinical workflows adherence, L1->L2/L3 authoring, KG value, layered validation, model comparisons).\n\n## Summary of Review\n\nReviewed methodologies in 6 foundational papers on evaluation without ground truth:\n- ar",
      "file": "beans/defs/folio-assistant-tn3d--llm-evaluation-methodologies-for-verifiable-ai-in.md"
    },
    {
      "id": "folio-assistant-tndo",
      "title": "MVP UNDEFINED: zmdo is blocked on an MVP for two layers that nothing defines, so GOAL 1's own falsifier cannot be evaluated",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T11:33:55Z",
      "updatedAt": "2026-10-04T09:56:44Z",
      "preview": "## The finding, and how it was measured\n\n`beans/defs/folio-assistant-zmdo--split-*.md` is the bean that forks\n`agentic-harness` and `folio-assist-core` and proves an empty-repo bootstrap. It\nis parented to `vke6` (SPLIT #223), under GOAL 1 `vuip`. Three lines of its own\nbody:\n\n- line 15, the owner's verbatim ask: *\"when we get to an MVP for agent-harness\n  and folio-assist-core, create\"*\n- line 46",
      "file": "beans/defs/folio-assistant-tndo--mvp-undefined-zmdo-is-blocked-on-an-mvp-for-two-la.md"
    },
    {
      "id": "folio-assistant-tntp",
      "title": "no-orphan-lean checks only that a .ts sibling exists; it should check each lean.ref lands in a Lake target CI builds (folio-assistant-sci)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:52:14Z",
      "updatedAt": "2026-10-09T21:12:35Z",
      "preview": "Recorded from the qou orphaned-content census, 2026-10-04 (ORPH report; session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91, issue #2106). qou: 654 of 1,309 lean.refs (50%) resolve into the compiled library; 833 chapter-dir .lean siblings declare names absent from any lake target; 582 blocks' lean.ref resolves only to an uncompiled sibling. The paper adapter's no-orphan-lean is satisfi",
      "file": "beans/defs/folio-assistant-tntp--no-orphan-lean-checks-only-that-a-ts-sibling-exist.md"
    },
    {
      "id": "folio-assistant-tqjj",
      "title": "LSI trio off main: the index sidecar, its run record and the viewer page conflict on ~80% of merges",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T08:21:22Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "Sibling of ba9e (its worked example is PR #2044); the class is y7b3, \"a timestamp or total in a committed generated file turns every pair of concurrent changes into a conflict\". The landing place is arc 3fva, owner rulings D1/D4.\n\n## Measured (2026-10-04, this checkout, 400 commits on main)\n\n| file | commits touching it, of 400 |\n|---|---|\n| cat-harness/test/results/lsi/cat-harness/skills.lsi.json",
      "file": "beans/defs/folio-assistant-tqjj--lsi-trio-off-main-the-index-sidecar-its-run-record.md"
    },
    {
      "id": "folio-assistant-tqv4",
      "title": "CENSUS SCOPE: root-scan-census is instance-scoped, so scripts moved up to core are counted nowhere — and its headline family reads 0 of 0 while the only instance of the shape sits outside it",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:28:50Z",
      "updatedAt": "2026-09-30T13:51:27Z",
      "preview": "`root-scan-census` is INSTANCE-scoped — `census(resolve(INSTANCE_ROOT, \"scripts\"))`\nat `cat-harness/scripts/root-scan-census.ts:231`, where `INSTANCE_ROOT` is\n`cat-harness/`. No other instance runs an equivalent census. So every script the\ninstance-boundary work moves **up** into `folio-assistant-core/` leaves this\nmeasurement and is counted **nowhere**.\n\n## The count falls, and falling reads as i",
      "file": "beans/defs/folio-assistant-tqv4--census-scope-root-scan-census-is-instance-scoped-s.md"
    },
    {
      "id": "folio-assistant-tr05",
      "title": "KG MODELLING: dependents point at the general node; typed KG refs; skill I/O schemas (#1168)",
      "status": "completed",
      "type": "epic",
      "priority": "normal",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T19:53:25Z",
      "updatedAt": "2026-09-30T22:22:20Z",
      "preview": "Owner 2026-09-23 (#1168). Plan A (guidance) -> B (data model) -> C (UML), in that order.\n\n## Closed on evidence (2026-09-30)\nAll 31 children are completed or scrapped; the last, rqao, closes in #1702. Issue #1168 stays open for the owner — an agent does not close an issue on its own say-so.",
      "file": "beans/defs/folio-assistant-tr05--kg-modelling-dependents-point-at-the-general-node.md"
    },
    {
      "id": "folio-assistant-tune",
      "title": "readme:toc — every harness README carries its own table of contents (#1731)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:00Z",
      "updatedAt": "2026-10-01T06:58:00Z",
      "preview": "Landed in #1731 (merge `fe36c17ab8d` on main, 2026-10-01; branch `claude/laughing-thompson-vjcmlx`): `readme:toc` — every harness README gets its own table of contents, written by `content/pipeline/readme-sections.ts` and checked in `code-quality-gates.yml`. Recorded retroactively so the separation epic's status is complete; no bean carried it while in flight.\n\n## Summary of Changes\n- `readme-sect",
      "file": "beans/defs/folio-assistant-tune--readmetoc-every-harness-readme-carries-its-own-tab.md"
    },
    {
      "id": "folio-assistant-turh",
      "title": "Library asset viewer: TOC, pages with labels, figures/tables, section extracts — for any ingested library/ entry (#2302)",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T20:27:04Z",
      "updatedAt": "2026-10-20T11:30:00Z",
      "preview": "Owner, #2302 session 2026-10-06: re-ingest the who-iris library with the updated method, and give ingested documents a viewer — browse page by page (with printed labels), an overview of figures/tables, the TOC linking to sections, and extracted summaries of each section. Not who-iris-specific: the viewer belongs to the ingestion SCHEMA (pdf-structure/v1 structure.json + sections/), so every librar",
      "file": "beans/defs/folio-assistant-turh--library-asset-viewer-toc-pages-with-labels-figures.md"
    },
    {
      "id": "folio-assistant-tuvg",
      "title": "MAIN IS RED: three crdm skills are in no package manifest and carry a retired roles: field",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T04:09:28Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "Measured 2026-09-26 on `origin/main` at `6840b14097b`. **This fails every open PR, not one.**\n\n## The two failures\n\nBoth name the same three files, added by main's commit `7edf7b7ed5a` (*\"feat: CRDM Phase 4b prioritization, SDLC/release skills, CRDM phase detail skills\"*):\n\n    cat-harness/skills/sdlc/crdm/crdm-needs-assessment.md\n    cat-harness/skills/sdlc/crdm/crdm-impact-analysis.md\n    cat-ha",
      "file": "beans/defs/folio-assistant-tuvg--main-is-red-three-crdm-skills-are-in-no-package-ma.md"
    },
    {
      "id": "folio-assistant-tvf8",
      "title": "STALE OPEN PRs: three untouched 4-8 days, and #229's 'clean' merge would RESURRECT a path main deleted",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T10:32:05Z",
      "updatedAt": "2026-10-08T05:42:00Z",
      "preview": "Swept the 15 open pull requests for staleness at 2026-09-26 10:30Z. Three are\nuntouched for 4 days or more; the rest were base-merged by their sessions within\nthe day, so the population needing attention is small.\n\n| PR | stale | behind `main` | merge | files | author |\n|---|---|---|---|---|---|\n| #229 | **8.2 d** | 4,287 | \"clean\" | 1 | Carl Leitner |\n| #231 | **8.1 d** | 4,316 | CONFLICTS | 43 |",
      "file": "beans/defs/folio-assistant-tvf8--stale-open-prs-three-untouched-4-8-days-and-229s-c.md"
    },
    {
      "id": "folio-assistant-txue",
      "title": "S5 code out of cat-harness: stages 1a-1d (70lx absorbs w2gr 3b), 8lcl, y9r6, vj2p",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-rfuq"
      ],
      "createdAt": "2026-10-01T08:14:34Z",
      "updatedAt": "2026-10-21T17:56:00Z",
      "preview": "D1: all cat-harness code -> cat-harness-tools. One agent at a time.\n\n## Done when\n- [x] 70lx: server/tools/routes/rbac/auth/mcp moved; MCP server lists the same tools\n- [ ] 8lcl Zod moved; JSON Schema stays\n- [ ] y9r6 no .ts in cat-harness content\n- [ ] vj2p each instance hosts its own outputs\n\n## State 2026-10-09\n- 70lx (stage 1a): completed. y9r6 (1c): completed (closed on #1702). 8lcl (1b): tod",
      "file": "beans/defs/folio-assistant-txue--s5-code-out-of-cat-harness-stages-1a-1d-70lx-absor.md"
    },
    {
      "id": "folio-assistant-txut",
      "title": "REVIEW VISUALISER: a review/ page per folio showing what changed from main, grouped by the folio/ graph",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [
        "folio-assistant-q4cm"
      ],
      "blockedBy": [
        "folio-assistant-jwox",
        "folio-assistant-ojcx"
      ],
      "createdAt": "2026-09-22T21:02:54Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "Owner: *\"need a new visualizer under the harness maybe, like review/ which\nshows things in folio diff from main\"*.\n\n**What.** A `review/` page per folio, reached from the navbar tile for that\nfolio and from the STAGING banner. It reads the ChangeSet (child 02) and shows:\n- the changed blocks, grouped by the folio/ graph's chapter/section tree;\n- counts per change kind;\n- the MAIN and STAGING URLs ",
      "file": "beans/defs/folio-assistant-txut--review-visualiser-a-review-page-per-folio-showing.md"
    },
    {
      "id": "folio-assistant-tyo0",
      "title": "smart-base L1 library: add PCMT and the other WHO digital transformation handbooks",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2yyh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:37:53Z",
      "updatedAt": "2026-10-04T10:16:00Z",
      "preview": "Owner, 2026-10-01 (#1767): \"bean to add PCMT and other who digital transformation handbooks files for smart-l1 library\".\n\nThe L1 document kind is computed from smart-base library/; the library today holds 8 WHO publications. This adds the rest of the WHO digital transformation handbooks and PCMT material, through the normal ingest (bun run cat ingest ... --library smart-base), with provenance and ",
      "file": "beans/defs/folio-assistant-tyo0--smart-base-l1-library-add-pcmt-and-the-other-who-d.md"
    },
    {
      "id": "folio-assistant-u19y",
      "title": "THEMES PAGE: publish the theme sheet as themes/ on the site",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T13:46:49Z",
      "updatedAt": "2026-09-24T13:46:49Z",
      "preview": "Owner 2026-09-24: \"have the themes harness make themes/ page to browse\".\n\n## Summary of Changes\n- render-theme-sheet.ts: one renderer (sheetBody) now feeds both outputs — the standalone theme:sheet (images inlined) and a new site page, docs/themes/index.md (images linked via relative_url). Adds a \"worn by\" line per theme, read from the landing board's declared contributions, and each crop's pixel ",
      "file": "beans/defs/folio-assistant-u19y--themes-page-publish-the-theme-sheet-as-themes-on-t.md"
    },
    {
      "id": "folio-assistant-u2ol",
      "title": "TYPESCRIPT 7: the compiler API exists, and every path to it is namespaced `unstable/`",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T01:37:44Z",
      "updatedAt": "2026-09-27T09:25:00Z",
      "preview": "## What\n\nDependabot #910 and #914 raise `typescript` 6 → 7. The owner ruled *\"everything,\nincluding the TS 7 rewrite\"* (issue #956, 2026-09-22), with the stated escape:\n*if TS 7 ships no supported compiler-API equivalent, pin to 6 and say so.*\n\n**Neither branch of that ruling is what the measurement found.** An equivalent\nexists, it works, and its own package path says `unstable`.\n\n## Measured 202",
      "file": "beans/defs/folio-assistant-u2ol--typescript-7-the-compiler-api-exists-and-every-pat.md"
    },
    {
      "id": "folio-assistant-u3cd",
      "title": "IG SITE THEME: build-ig-site dresses each IG's own just-the-docs site in the palette its instance declares",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T21:48:48Z",
      "updatedAt": "2026-09-30T23:42:12Z",
      "preview": "Issue #1682, owner 2026-09-30: theme the per-IG site at /<instance>/ig/ (bamf, #1670) reusing the webpage theme #1683 declares, not a second copy.\n\n## Approach\n- stage-ig-sites resolves the instance's ONE declared webpage theme through instanceThemes (platform, generic: fhir-harness never names WHO).\n- build-ig-site writes it as a just-the-docs colour scheme (_sass/color_schemes/<instance>.scss + ",
      "file": "beans/defs/folio-assistant-u3cd--ig-site-theme-build-ig-site-dresses-each-igs-own-j.md"
    },
    {
      "id": "folio-assistant-u4up",
      "title": "merge:train drops gitignored-but-tracked test/results files",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T16:44:20Z",
      "updatedAt": "2026-10-07T05:13:00Z",
      "preview": "Measured 2026-10-04 building merge-train-2026-10-04a (#2113):\n\n1. The built train tree omitted `cat-harness/test/results/lsi/cat-harness/skills.lsi.json` and its tool-run sidecar (tracked on main, gitignored), so `lsi:skills:check` and `lsi:viz:check` went red in CI while green locally. Restored by hand in 1635342194. Same family as 8j9e (#2090 fixed `merge-base.ts`, not the train tool).\n2. Take-b",
      "file": "beans/defs/folio-assistant-u4up--mergetrain-drops-gitignored-but-tracked-testresult.md"
    },
    {
      "id": "folio-assistant-u63y",
      "title": "B6a (#1168): a file that uses an external spec declares it; ExternalSchema.usedBy removed",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:07:58Z",
      "updatedAt": "2026-09-24T18:42:44Z",
      "preview": "## Owner decision 2026-09-24\n\"B: users declare it\" — each dependent declares the spec, not the spec its users (36 hand-written usedBy entries over 16 records).\n\n## Plan\n- TS: `@conformsTo <spec-id>` in the module doc comment.\n- Skill .md: `conformsTo:` front matter.\n- BPMN: the `xmlns` binding already declares the namespace in-file.\n- JSON-LD: a namespace IRI in `@context` declares it; plain JSON ",
      "file": "beans/defs/folio-assistant-u63y--b6a-1168-a-file-that-uses-an-external-spec-declare.md"
    },
    {
      "id": "folio-assistant-u7be",
      "title": "MERGE GATE (e): four merge-steward gaps - regen pairs for l1-complete/smart-kg-l1, gitlink fast-forward, no-CI heads in trains, stale needs-merge-human",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:29:16Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Child (e) of the merge-gate epic. These are merge-steward gaps measured 2026-10-02 while running merge trains. Each one lets a merge look proved when it is not.\n\n1. `regen-after-merge.ts` has no writer pair for `check:l1-complete`, nor for `smart-base:smart-kg-l1` (the `--entry` form). Both run in `code-quality-gates.yml`, so a train's single `regen` can report \"current\" while CI then goes red.\n2.",
      "file": "beans/defs/folio-assistant-u7be--merge-gate-e-four-merge-steward-gaps-regen-pairs-f.md"
    },
    {
      "id": "folio-assistant-u9lb",
      "title": "TOC benchmark: score Nougat on the 13 outline PDFs (needs huggingface.co) (#2302)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-cp3v",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:05:01Z",
      "updatedAt": "2026-10-12T12:30:00Z",
      "preview": "Follow-up to bean cp3v / PR #2303 (issue #2302). Needs an agent with network access to huggingface.co (Nougat weights); the cp3v session's container is denied it.\n\nBranch from claude/compassionate-johnson-rzv00r and open a PR INTO that branch (or into main once #2303 has merged). Do not edit _pdf_headings.py.\n\n## Steps\n- [ ] pip install nougat-ocr (weights: facebook/nougat-small; nougat-base if a ",
      "file": "beans/defs/folio-assistant-u9lb--toc-benchmark-score-nougat-on-the-13-outline-pdfs.md"
    },
    {
      "id": "folio-assistant-u9r9",
      "title": "TWO TypeDoc steps name a working-directory that does not exist, and both workflows are unjudged so nothing has said so",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T05:57:48Z",
      "updatedAt": "2026-10-07T19:30:00Z",
      "preview": "Found 2026-09-22 while re-deriving `j41m`'s own numbers adversarially, in the\nspirit of `w4tq`. **Not fixed, because it cannot be confirmed from here** —\nsee §\"Why this is a bean and not a push\".\n\n## What the files say\n\n    .github/workflows/discoverability-docs.yml:206   working-directory: folio-assistant\n    .github/workflows/publish.yml:566                working-directory: folio-assistant\n\nNei",
      "file": "beans/defs/folio-assistant-u9r9--two-typedoc-steps-name-a-working-directory-that-do.md"
    },
    {
      "id": "folio-assistant-ugxd",
      "title": "MERGE QUEUE CUTOVER: flip beans/queue to cat/cat-harness/merge-queue and move the main entries, as its own small PR",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T11:46:51Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "Split out of #2065 (bean folio-assistant-najo) by owner ruling 2026-10-05 (\"Land code now, switch later\", relayed by the merge manager). #2065 lands the code only: merge-queue-store.ts, merge-queue-cli.ts + tests, the checker ownId/unmountable fixes, steward read-back, merge:queue:* scripts. The queue stays on main until this lands.\n\n## What this PR does\n- [ ] Steward PAUSES queue writes on main f",
      "file": "beans/defs/folio-assistant-ugxd--merge-queue-cutover-flip-beansqueue-to-catcat-harn.md"
    },
    {
      "id": "folio-assistant-uhkv",
      "title": "SMART STACK: core → fhir-harness → smart-base → {smart-l1, smart-dak, smart-ig}",
      "status": "in-progress",
      "type": "epic",
      "priority": "high",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T19:07:23Z",
      "updatedAt": "2026-10-23T15:08:00Z",
      "preview": "## The owner's ruling, verbatim\n\nParaphrase would lose the shape, and the shape is the whole decision:\n\n> `core->fhir-harness-> smart-base->siblings{smart-l1, smart-dak, smart-ig}`,  no smart-guidelines.\n\nGiven 2026-09-22, in answer to four options offered on the same question. The\noption chosen was NOT among the four — the owner supplied a fifth, and the\ndifference matters: every option offered k",
      "file": "beans/defs/folio-assistant-uhkv--smart-stack-core-fhir-harness-smart-base-smart-l1.md"
    },
    {
      "id": "folio-assistant-uj55",
      "title": "Windows .bat wrappers for every .sh a user runs from the normal workflow",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T07:47:05Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Branch `claude/windows-bat-wrappers-2026-09-18`, PR #231. 36 wrappers generated by `cat-harness/scripts/gen-bat-wrappers.sh` (moved from `scripts/` when main split into `cat-harness/`), `bun run cat bat:sync:check` in the code-quality gate, `.gitattributes` pins `.sh`→LF and `.bat`→CRLF.\n\nThe platform ships 49 `.sh` scripts and no Windows entry point for any of\nthem. `.mcp.json` names `scripts/sag",
      "file": "beans/defs/folio-assistant-uj55--windows-bat-wrappers-for-every-sh-a-user-runs.md"
    },
    {
      "id": "folio-assistant-ujiv",
      "title": "Node kinds for harness declarations and beans: tag the files (#2248 follow-up)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T06:21:38Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "Split out of #2248 on 2026-10-06, when the owner put repo separation first. #2248 lands the document-kinds half (`document-kind/1.0.0`, `document-kind-coverage/1.0.0`, `nodeKind`'s `refine` option). This bean holds the other two items.\n\n## Owner rulings\n- 2026-10-06: files that cannot keep a tag on their own are TAGGED (PR #2248 body).\n- 2026-10-06, answering session_01QSd18GZBc9NJNMy6GV9v7D: bean",
      "file": "beans/defs/folio-assistant-ujiv--node-kinds-for-harness-declarations-and-beans-tag.md"
    },
    {
      "id": "folio-assistant-uju6",
      "title": "REGEN BLIND SPOT: regen pairs a check `X:check` with writer `X`, so a `check:X` gate whose writer is spelled differently is never repaired",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T08:57:47Z",
      "updatedAt": "2026-09-30T21:25:36Z",
      "preview": "Measured 2026-09-30 on PR #1550. `Repository gates` failed on `check:prov-qaqc`: `cat-harness/docs/prov-qaqc/index.md` was stale after #1533 added a workflow instance (`code-change-review--issue-1531-upload-step`) without regenerating it. `bun run cat regen` reported \"63 current, 0 regenerated\" across the whole episode. It never asked this check, because it pairs by the `X:check` → `X` spelling, a",
      "file": "beans/defs/folio-assistant-uju6--regen-blind-spot-regen-pairs-a-check-xcheck-with-w.md"
    },
    {
      "id": "folio-assistant-uknu",
      "title": "DUPLICATE id ON EVERY DOCS PAGE: just-the-docs renders nav_footer_custom twice, so both copies carry id=\"fa-nav-open\"",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T19:18:10Z",
      "updatedAt": "2026-09-23T21:59:49Z",
      "preview": "## What\n\nEvery generated docs page carries **two elements with `id=\"fa-nav-open\"`**. A\nduplicate `id` is invalid HTML, and `document.getElementById` plus every\n`<label for=…>` resolve to the **first** one only.\n\n## How it was found\n\nMeasured 2026-09-22 on the **rendered** page, not on the source — the staging\npreview for PR #957, read out of the `gh-pages` publish ref rather than over\nHTTP (the ag",
      "file": "beans/defs/folio-assistant-uknu--duplicate-id-on-every-docs-page-just-the-docs-rend.md"
    },
    {
      "id": "folio-assistant-uoij",
      "title": "kind:register — one command performs the SEVEN artefacts adding a graph kind obliges, the way skill:register does for a skill",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T05:32:27Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "Owner chose this on 2026-10-04, as item 2 of three (\"1 2 3\") after #2032 went green.\n\n## The measurement that makes it a bean rather than an idea\n\nAdding the `docs-auto` kind on #2022, I ran **six hand-picked `check:*` commands** and\nthey all passed. `bun run cat gates` then found **5 failures across 217**, and `bun test`\nfound two more:\n\n| obligation | found by | generated? |\n|---|---|---|\n| `rea",
      "file": "beans/defs/folio-assistant-uoij--kindregister-one-command-performs-the-seven-artefa.md"
    },
    {
      "id": "folio-assistant-uoob",
      "title": "MERGE GATE (f): refuse an unfinished PR — no current ready marker, or a base branch whose PR already merged",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-ns96"
      ],
      "createdAt": "2026-10-03T13:53:29Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "Owner ruling 2026-10-03: BOTH guards (option 1 of 4, asked by the Parcel B session; proposed by session 01CbYZTA). Three merges on 2026-10-03 landed work in a state its author had not finished, and nothing in the pipeline asked:\n\n- **#1937** merged into its stale base `claude/quirky-davinci-ixuymr` after #1764 had already landed, so the branch-store never reached main (re-opened as #1978).\n- **#19",
      "file": "beans/defs/folio-assistant-uoob--merge-gate-f-refuse-an-unfinished-pr-no-current-re.md"
    },
    {
      "id": "folio-assistant-upgd",
      "title": "STREAM 1/3: GOAL 1 — the repo split and the KG's own declaration (vuip + zzmr, 47 open beans)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T18:08:55Z",
      "updatedAt": "2026-09-30T13:47:14Z",
      "preview": "## What this is\n\nA **consolidation claim**, not new subject matter. The work plan stalled: between\n11:00Z and 15:19Z on 2026-09-22 seventeen PRs merged, and **nothing merged in the\n2h40m after**. CI is not the cause — `check:ci-health` reports all eight\nworkflows that ran in the window green, 48 Pages deploys succeeded and 0 failed.\nWhat stalled is that PRs went **conflicted** against a `main` mov",
      "file": "beans/defs/folio-assistant-upgd--stream-13-goal-1-the-repo-split-and-the-kgs-own-de.md"
    },
    {
      "id": "folio-assistant-uphx",
      "title": "PUBLIC COMMENT round 2 CRD: requirements from the 2026-10-06 chief-editor walkthrough (categories, committee roll-up, incremental ingest, dedup, editor-only change sets, human/agent adjudication, QA thresholds)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T12:31:42Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "Source: litlfred/smart-ra@9eb6ad3 (Teams transcript .docx + .vtt of the 2026-10-06 walkthrough with the DPI-H RA chief editor). CRD: cat-harness/docs/proposals/public-comment-round-2-crd-2026-10-06.md. Issue #197. Status: drafted for owner review BEFORE approval; no implementation until approved.\n\n## Done when\n- [x] CRD drafted with REQ-### entries, each traced to a transcript timestamp\n- [x] the ",
      "file": "beans/defs/folio-assistant-uphx--public-comment-round-2-crd-requirements-from-the-2.md"
    },
    {
      "id": "folio-assistant-uvfs",
      "title": "Agent memory target: Cursor (not implemented — owner 2026-10-06)",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-31ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:35:16Z",
      "updatedAt": "2026-10-06T18:35:16Z",
      "preview": "Owner 2026-10-06: bean up, DO NOT implement yet. Target format: .cursor/agents/<agent>.md and .cursor/rules/*.mdc — UNVERIFIED; may also read .claude/agents (check for duplication first). Generated by the shared memory assembler into a marked region, with a --check gate and a per-target budget that drops lowest-priority nodes and reports them. Research: see parent bean 31ni.\n\n_2026-10-20_ — Owner ",
      "file": "beans/defs/folio-assistant-uvfs--agent-memory-target-cursor-not-implemented-owner-2.md"
    },
    {
      "id": "folio-assistant-uvt0",
      "title": "who-iris replica: the locale band shifts the page 52px; make it an overlay (owner: no shift)",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T08:56:44Z",
      "updatedAt": "2026-10-06T14:30:00Z",
      "preview": "**Owner ruling, 2026-10-06** (session https://claude.ai/code/session_01EcBv3uwKYcnNbCC6BcPG92), option 1 of 3: *\"Overlay, no shift\"*. The language band must not move the replica.\n\n## The defect\nWhen a who-iris replica page carries a `fa-translation-meta` block, `docs-ui.js` puts the locale globe in a band inside the page flow, between `.crumbs` and `<main>`. The band is 40 px tall and pushes `<mai",
      "file": "beans/defs/folio-assistant-uvt0--who-iris-replica-the-locale-band-shifts-the-page-5.md"
    },
    {
      "id": "folio-assistant-uxn1",
      "title": "STANDALONE: code assumes cat-harness sits at <repo>/cat-harness (role-graph scenariosSubdir, skill-definitions-dir, gen-navbar-include)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T09:15:52Z",
      "updatedAt": "2026-10-06T10:01:36Z",
      "preview": "Cluster R of the cat-harness standalone rehearsal (#2268, ho66): about 10 tests fail standalone because code builds paths as join(repoRoot, 'cat-harness', ...) instead of resolving the instance root from its declaration. Standalone, cat-harness IS the repository root, so no actors are found (role-graph.ts scenariosSubdir) and prov-record fails twice. The same assumption is in skill-definitions-dir",
      "file": "beans/defs/folio-assistant-uxn1--standalone-code-assumes-cat-harness-sits-at-repoca.md"
    },
    {
      "id": "folio-assistant-uyp8",
      "title": "Ingest CODATA as a library dataset with provenance, and the skills/tools to ingest reference datasets",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:26:31Z",
      "updatedAt": "2026-09-30T15:42:28Z",
      "preview": "Owner 2026-09-30: *\"CODATA would need to be properly ingested as a dataset into library (bean up task to do, add skills tools) and variables be like {{ qou.library.codata-2022.mass-electron }} or so\"*.\n\n## Measured 2026-09-30\n- qou's CODATA values live in a hand-vendored Python snapshot: `computations/codata_2022_source.py` (CODATA_EDITION_YEAR=2022, CODATA_SOURCE_URL, ALLASCII_URL, VENDORED_SNAPS",
      "file": "beans/defs/folio-assistant-uyp8--ingest-codata-as-a-library-dataset-with-provenance.md"
    },
    {
      "id": "folio-assistant-v048",
      "title": "ROAST: adversarial pass over the catalogue-import design before any of it is believed",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-kupb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T08:02:32Z",
      "updatedAt": "2026-09-24T17:54:11Z",
      "preview": "Owner: 'bean up and roast.' The roast is a deliverable, not a mood. It belongs as a bean so the objections survive the chat, which is the same reason `kg:audit` writes sidecars rather than printing a verdict: a printed objection is gone, and 'nobody raised this' and 'somebody raised it and it was answered' become indistinguishable.\n\nFindings recorded in the chat this session; to be written up here",
      "file": "beans/defs/folio-assistant-v048--roast-adversarial-pass-over-the-catalogue-import-d.md"
    },
    {
      "id": "folio-assistant-v1hw",
      "title": "VISUALISER: uploads/ — an uningested badge, a browsable queue, and the first WRITABLE surface",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T15:00:40Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "Owner, 2026-09-20, verbatim:\n\n> like libray/ and foilio/ (should) and doc/ have visualtions as tools in the\n> harness that defines there schame, we need one for uploads/ that gives\n> count/badge of # uningested, lets you see what's there. lets you upload in\n> various ways.   defined in skills/tools.\n\n## What it asks for\n\nThe `uploads/` visualiser, **a sibling of `jbx2`** (the `library/` one) and o",
      "file": "beans/defs/folio-assistant-v1hw--visualiser-uploads-an-uningested-badge-a-browsable.md"
    },
    {
      "id": "folio-assistant-v215",
      "title": "Beans count disagrees: 541 on the icon row, 943 on the glass and launcher tiles",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:52:19Z",
      "updatedAt": "2026-10-07T05:10:00Z",
      "preview": "Recorded in the navbar wireframe's Findings (\"Seen on the build, not one of the twelve\"), re-drawn in #2295 (bean `folio-assistant-1q4b`).\n\n## Defect\n\nBeans carries two counts. The icon row shows **541** (\"Beans — 541 open\"). The glass tile and the launcher tile show **943**, and no word says what 943 counts.\n\n## What each number counts (measured from source)\n\n- **Icon row (541).** `navbar-row.js`",
      "file": "beans/defs/folio-assistant-v215--beans-count-disagrees-541-on-the-icon-row-943-on-t.md"
    },
    {
      "id": "folio-assistant-v26p",
      "title": "PUBLIC COMMENT: tabular comments returned on a line-numbered draft, mapped by page and line to block ids, then triaged, reassigned and dispensed as Findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-5xzc"
      ],
      "createdAt": "2026-09-22T21:09:45Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Owner, issue #197 (2026-09-17), *\"prepare also for draft publication review processes: a fixed version (rendered PDF version w/ line numbers) goes out, then people return with excel/csv/tablular data of comments and feedback that needs to be reviewed and dispensed with\"*, and it asks for *\"show all comments that are on a page, at a line number, re-assign a comment to a more appropriate place, tria",
      "file": "beans/defs/folio-assistant-v26p--public-comment-tabular-comments-returned-on-a-line.md"
    },
    {
      "id": "folio-assistant-v3nf",
      "title": "SPEED-UP 2: parallel checks — regen and gates run independent --check scripts concurrently, writers stay ordered",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T17:42:24Z",
      "updatedAt": "2026-10-08T19:50:00Z",
      "preview": "Owner approved 2026-10-01 late (~17:30, session_01ToWZR4RgTRCWeSsgxsSQfT) as speed-up 2 of 4 for the merge treadmill (S2 `0mf0`, epic `7x5n`). Siblings: input-hash skip, CI merge:main (`d33q` part B), CI sharding + BPMN cache + shallow checkout.\n\n## What\n`bun run cat regen` asks its ~82 verify/write pairs one at a time, and `bun run cat gates` runs its fast set serially. Run independent checks in ",
      "file": "beans/defs/folio-assistant-v3nf--speed-up-2-parallel-checks-regen-and-gates-run-ind.md"
    },
    {
      "id": "folio-assistant-v433",
      "title": "DOCUMENT SITE: load block content dynamically from the published graph instead of one multi-MB page (owner: 'dynamic JS load of KG, as should of rest of content')",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T20:28:26Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Owner, 2026-10-06, after the DPI-H page (933 blocks, 2.3 MB HTML) was heavy to load: 'that can be dynamic JS load of KG, as should of rest of content', then 'Start building it now on this branch.'\n\nDesign: the document page becomes a SHELL (headings, block anchors, block actions, comment notes) and each block's rendered HTML is published as data, one JSON per chapter, loaded when it nears the view",
      "file": "beans/defs/folio-assistant-v433--document-site-load-block-content-dynamically-from.md"
    },
    {
      "id": "folio-assistant-v49e",
      "title": "WORKFLOW VIEW: cat-harness folio shows where todos and beans sit in the BPMN/DMN, and where a process is breaking down",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T14:01:05Z",
      "updatedAt": "2026-09-20T14:01:05Z",
      "preview": "Owner, 2026-09-20, in two messages:\n\n> cat-harness folio should have function to show workflow mgmt... where\n> todso/beans are in bpmn/dmn. should have specialized browser visualzier to\n> see where process is breaking down.\n\n> ...it should also be able to see working context/memory based on dependcy\n> tree for that task.... see logs associated to it. (do not do this, just bean\n> up)\n\n## Why this i",
      "file": "beans/defs/folio-assistant-v49e--workflow-view-cat-harness-folio-shows-where-todos.md"
    },
    {
      "id": "folio-assistant-v556",
      "title": "Two kg-export sidecars carry three script hashes between them, and no gate can see it: a generator with no --check is invisible to check:artefact-verification",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T10:24:29Z",
      "updatedAt": "2026-10-02T06:44:57Z",
      "preview": "MEASURED 2026-09-22 on main at `f4de6c1e20`, clean tree, by running `bun run cat kg:export` and reading both committed sidecars back.\n\n`scripts/kg-export.ts` writes two `qa-results/v1` sidecars. Between them and the script actually in the tree there are **three different hashes for one script**:\n\n| file | committed `producer.script_hash` |\n|---|---|\n| `cat-harness/test/results/kg-export.qa-results",
      "file": "beans/defs/folio-assistant-v556--two-kg-export-sidecars-carry-three-script-hashes-b.md"
    },
    {
      "id": "folio-assistant-v625",
      "title": "MAIN IS RED: six skills landed with no manifest entry and no reference page — one cause, four failing gates",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T05:10:48Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "`main` was red in CI, and four of its seven failures had one cause: **six skill\nfiles existed with no package-manifest entry and no published reference page.**\n\n| file | manifest | reference page |\n|---|---|---|\n| `crdm/crdm-needs-assessment.md` | missing | missing |\n| `crdm/crdm-impact-analysis.md` | missing | missing |\n| `crdm/crdm-requirements-template.md` | missing | missing |\n| `workflow/code",
      "file": "beans/defs/folio-assistant-v625--main-is-red-six-skills-landed-with-no-manifest-ent.md"
    },
    {
      "id": "folio-assistant-v7bg",
      "title": "TOOL 1/13: Task_Publish — publication & export (34 files, 19 entry points)",
      "status": "in-progress",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-d308",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T04:34:11Z",
      "updatedAt": "2026-10-23T13:47:00Z",
      "preview": "Group 1 of 13 in `d308`. **34 files, 19 entry points** — the largest loose surface in the repo.\n\n`kg-export`, `pages-bootstrap`, `gen-*-jsonld`, `gen-site-jsonld`, `site-links`,\n`serve-rendering`, `strip-preview-seo`, `staging-*`, `readme-sections`,\n`readme-links`, `gen-schema-docs`, `gen-skill-docs`, `harness-schema-export`.\n\n**BPMN:** `authoring-a-paper · Task_Publish` and `authoring-a-document ",
      "file": "beans/defs/folio-assistant-v7bg--tool-113-task-publish-publication-export-34-files.md"
    },
    {
      "id": "folio-assistant-v8n5",
      "title": "HARNESS THEMING: the who-iris board tile, navbar and stickies render on the IRIS theme, not only its pages",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-yg29",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T08:43:50Z",
      "updatedAt": "2026-10-04T15:52:40Z",
      "preview": "Owner, 2026-09-30, answering the GOAL 3 goal review: keep GOAL 3 **open**, and theme the harness itself. The goal's words are *\"showing who-iris w/ existing materialized assets with themed harness\"*, and the owner reads \"themed harness\" as more than the pages.\n\n## What is true today (measured 2026-09-30)\n- The who-iris **pages** (`/who-iris/`, generated by `who-iris/scripts/gen-iris-pages.ts`) ren",
      "file": "beans/defs/folio-assistant-v8n5--harness-theming-the-who-iris-board-tile-navbar-and.md"
    },
    {
      "id": "folio-assistant-v9ah",
      "title": "SELF-DECLARED-DONE NAMES ONLY MID-FLIGHT BEANS: every finding the check produces is one no session may act on, which is thux's o5qj shape unfixed on the second axis",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T17:34:43Z",
      "updatedAt": "2026-09-30T22:21:08Z",
      "preview": "`bean-store`'s `bean-self-declared-done` finding names a claimed bean whose every\n`## Done when` box is ticked, and its implied action is that somebody closes it.\n`0pes` settled who may: **a bean closes on EVIDENCE, not on authorship** — with\nthree obligations, the third of which is that **mid-flight is off limits**, where\nmid-flight means a claim naming a branch, an open PR, *or a recent note*.\n\n",
      "file": "beans/defs/folio-assistant-v9ah--self-declared-done-names-only-mid-flight-beans-eve.md"
    },
    {
      "id": "folio-assistant-vbxp",
      "title": "DIRECTION SIDECAR: check:reference-direction printed a verdict and committed nothing, so 'never audited' and 'audited clean' were indistinguishable",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T09:23:19Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "## State — delivered, green, PR open. Not merged.\n\nParent: `zhg2` (the axis) — this is the third of the three gaps `yj6r` records\nagainst it, and the only one of the three in scope here. The other two\n(instance-boundary imports, the 76-file question) are untouched.\n\n## The gap\n\n`check:reference-direction` **printed and committed nothing**. Verified on\n`origin/main` 2026-09-30: no `writeFileSync`, ",
      "file": "beans/defs/folio-assistant-vbxp--direction-sidecar-checkreference-direction-printed.md"
    },
    {
      "id": "folio-assistant-veiu",
      "title": "FHIR-HARNESS: clear the exclusion-gate baseline to zero (wm63 stream 2)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-wm63",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T08:54:49Z",
      "updatedAt": "2026-10-04T14:02:31Z",
      "preview": "The gate `check:fhir-harness-exclusions` (smart-base/scripts/) was turned on 2026-10-03 in ratchet mode over 9 file×rule pairs (20 graded hits) listed in smart-base/scripts/fhir-harness-exclusions.baseline.ts. Owner ruling 2026-10-03: gate now, clear the hits in a second stream (session https://claude.ai/code/session_01PpaL9j6AhiTfvqnkF7BiaG).\n\n## Done when\n\n- [x] the WHO test fixtures (4 test fil",
      "file": "beans/defs/folio-assistant-veiu--fhir-harness-clear-the-exclusion-gate-baseline-to.md"
    },
    {
      "id": "folio-assistant-vglq",
      "title": "FOREIGN-SITE DATA SCOPE (#2263 follow-up): translation and fsh-guts figures on a folio's site describe the folio",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T12:14:15Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "Follow-up to #2263 / PR #2265 (bean ky3r), which left two defects of the same class open:\n\n1. _data/translation-qa.json and _data/translations.json are copied into a folio's shell by compose-docs --shell, so smart-trust pages show the PLATFORM's 'Swept 49/689' translation badge.\n2. The fsh-guts icon on a folio site fetches its count from the folio's own site, where no fsh-guts document exists, and",
      "file": "beans/defs/folio-assistant-vglq--foreign-site-data-scope-2263-follow-up-translation.md"
    },
    {
      "id": "folio-assistant-vhqq",
      "title": "WORK PLAN DASHBOARD: 60 beans declare blocked_by but readBeans reads only blocking, so the dashboard misses most blocking edges",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T12:05:24Z",
      "updatedAt": "2026-10-03T14:10:44Z",
      "preview": "Found 2026-10-03 by the q8ar slice builder. `grep -c '^blocked_by:' beans/defs/*.md` → 60 files; `cat-harness/scripts/beans.ts` readBeans reads only `blocking:` (7 beans). So `docs/assets/beans/index.json` and `work-plan.js` show a fraction of the real blocking graph — the 'could not determine' rendered as 'none' shape.\n\n## Done when\n- [x] readBeans reads both directions and normalises to one edge",
      "file": "beans/defs/folio-assistant-vhqq--work-plan-dashboard-60-beans-declare-blocked-by-bu.md"
    },
    {
      "id": "folio-assistant-vigi",
      "title": "JSON-LD is a CONVENTION here, not a construction: 28 deps, zero RDF/JSON-LD processors, nothing validates an @context",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T08:50:21Z",
      "updatedAt": "2026-09-23T21:29:14Z",
      "preview": "Found 2026-09-22 while answering ruling 2 on #596 — the owner asked what is\nJSON-LD-centric in this ecosystem and what has pre-existing wrappers. The\nanswer to the second is **nothing**, and that turns out to matter beyond the\nquestion that produced it.\n\n## Measured\n\n**28 dependencies, and not one is an RDF, JSON-LD, SPARQL or FHIR library.**\n\nEvery JSON-LD document this repository publishes — the",
      "file": "beans/defs/folio-assistant-vigi--json-ld-is-a-convention-here-not-a-construction-28.md"
    },
    {
      "id": "folio-assistant-vihx",
      "title": "merge-guard has no mergeability check: a stale green head with a valid ready marker passes while it conflicts with main (#1898)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T07:39:03Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "Reported by the merge manager 2026-10-05 (session_01VfkKocGaQW7Msro2t5S66U).\n\n## The gap\nNone of merge-guard's seven checks (cat-harness/scripts/merge-guard.ts: base, ready-for-review, ready-marker, labels, ci, checklist, open-question) asks whether the head still merges cleanly into main. Check 5 judges the head's own `pull_request` runs, which tested the head merged with main AS IT WAS WHEN THE ",
      "file": "beans/defs/folio-assistant-vihx--merge-guard-has-no-mergeability-check-a-stale-gree.md"
    },
    {
      "id": "folio-assistant-vj2p",
      "title": "Separation stage 1d: cat-harness is self-contained — each instance hosts its own outputs; prose cites code by repository",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-p9bu",
        "folio-assistant-y9r6"
      ],
      "createdAt": "2026-10-01T06:58:02Z",
      "updatedAt": "2026-10-09T17:42:07Z",
      "preview": "Stage 1d of the split plan: `cat-harness` is self-contained.\n\n- **Hosted outputs about higher instances (≈560 files)** — owner D3 (2026-10-01), **option 2**: each instance hosts the generated outputs about ITSELF (`<instance>/uml/`, `<instance>/docs/`), not the checkout root. Main sets: `uml/overview/<instance>` 188, `docs/uml/overview` 94, `docs/assets/img/uml/*` ≈211, `docs/cat-harness/{catalogu",
      "file": "beans/defs/folio-assistant-vj2p--separation-stage-1d-cat-harness-is-self-contained.md"
    },
    {
      "id": "folio-assistant-vjbl",
      "title": "Second annotator for the crdm-detect eval corpus",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-6o1z"
      ],
      "createdAt": "2026-09-18T15:07:07Z",
      "updatedAt": "2026-09-18T15:07:53Z",
      "preview": "The `crdm-detect` eval's ground truth is **one annotator's, unblinded** — the\nsame agent wrote the labels and the scorer. That is the first thing to fix\nbefore quoting 71% / 63% as a property of the skill rather than of this corpus.\n\nEach label in `scripts/eval/crdm-detect-corpus.json` carries a one-line reason,\nso a second annotator can disagree with a specific claim rather than the whole\nset. Th",
      "file": "beans/defs/folio-assistant-vjbl--second-annotator-for-the-crdm-detect-eval-corpus.md"
    },
    {
      "id": "folio-assistant-vke6",
      "title": "SPLIT (#223): cut this repo into layers that can depend on each other",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:43:44Z",
      "updatedAt": "2026-09-20T18:48:38Z",
      "preview": "Issue #223 — cut this repo into layers that can depend on each other without\ncycles.\n\n`zlmp` is the gate: a lower layer importing from a higher one becomes a circular\ndependency BETWEEN REPOSITORIES the moment the cut happens, so that count has to\nreach zero before anything else here is safe. `x4a6` is a worked example of what\nblocks until it does — `docs/` cannot be declared because `folio` is co",
      "file": "beans/defs/folio-assistant-vke6--split-223-cut-this-repo-into-layers-that-can-depen.md"
    },
    {
      "id": "folio-assistant-vljz",
      "title": "QA: test data for SME review of decision support and indicator definitions",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:55:36Z",
      "updatedAt": "2026-09-19T08:55:36Z",
      "preview": "From [#363](https://github.com/litlfred/folio-assistant/issues/363): \"QA review as\npart of test process recorded in KG. also test data used for SME review of\ndecision support, and indicator defintion.\"\n\n## What is distinct about this from ordinary QA\n\nOrdinary QA here is mechanical or agentic: a criterion runs over a block and\nwrites a verdict. This is neither. A subject-matter expert reads a **wo",
      "file": "beans/defs/folio-assistant-vljz--qa-test-data-for-sme-review-of-decision-support-an.md"
    },
    {
      "id": "folio-assistant-vm6m",
      "title": "TEST DATA: fixed and generated data sets as a skill family, specialised per content type",
      "status": "todo",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:55:36Z",
      "updatedAt": "2026-10-01T08:00:56Z",
      "preview": "From [#363](https://github.com/litlfred/folio-assistant/issues/363): \"need fixed\nand generated data sets skills\" and \"need generate data sets (e.g. fhir data\ntemplating system, etc) so need egneral processes and specialization for content\nttype, subprocess etc.\"\n\n## Two kinds, and they are not degrees of the same thing\n\n**Fixed** data is committed, reviewed, and cited. It is evidence: an SME looke",
      "file": "beans/defs/folio-assistant-vm6m--test-data-fixed-and-generated-data-sets-as-a-skill.md"
    },
    {
      "id": "folio-assistant-vobp",
      "title": "CREDENTIALS: design — capability needs declared, deployment profile supplies; authenticating is not signing",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T06:11:00Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "Owner, 2026-10-02 (lead session): credentials need a design before any secret\nis created. *\"keys have lots of deployment scenarios, and so will\nfolio-assistant (personal, organizational)\"*. Wants a skill and a tool so\nhumans and agents can add, rotate and revoke secrets. Flagged the name\n`BOOTSTRAP_PAGES_TOKEN` as bad and asked *\"what exactly is being signed?\"*.\nNothing is: that secret only authen",
      "file": "beans/defs/folio-assistant-vobp--credentials-design-capability-needs-declared-deplo.md"
    },
    {
      "id": "folio-assistant-vov0",
      "title": "Decide: remove the hand-written QOU blueprint at cat-harness/blueprint/src",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T15:42:29Z",
      "updatedAt": "2026-09-30T16:43:33Z",
      "preview": "Found in a1ku (#1598). cat-harness/blueprint/src/ is a hand-written QOU blueprint: content.tex maps 1,192 lines of manuscript labels to QOU.* declarations, with a hand-synced \\lean/\\uses. Bean 0uu2 kept it on 2026-09-24 because qou held no copy.\n\nWhy it may now go: blueprint-layout.ts (#1598) GENERATES <paper>/lean/blueprint/src from the manifest in CI, so a hand-synced copy is a second answer, fr",
      "file": "beans/defs/folio-assistant-vov0--decide-remove-the-hand-written-qou-blueprint-at-ca.md"
    },
    {
      "id": "folio-assistant-vpek",
      "title": "LINT POISONED BY AGENT WORKTREES: eslint.config.mjs does not ignore .claude/worktrees/**, so one worktree-isolated agent reports 3158 errors on an unrelated branch",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T13:53:15Z",
      "updatedAt": "2026-09-30T18:43:06Z",
      "preview": "`eslint.config.mjs`'s `ignores` does not cover `.claude/worktrees/**`. A\nworktree-isolated agent puts a **complete second checkout of this repository**\nthere, so `bun run cat lint` walks into it and reports thousands of errors that\nbelong to nobody's diff.\n\nMeasured 2026-09-30, on `claude/declare-bootstrap-tools-need`, a branch whose\nwhole diff is three lines of JSON:\n\n```\n✖ 3163 problems (3158 er",
      "file": "beans/defs/folio-assistant-vpek--lint-poisoned-by-agent-worktrees-eslintconfigmjs-d.md"
    },
    {
      "id": "folio-assistant-vq2g",
      "title": "Two bean FILES share one id, and no gate catches it",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T02:40:59Z",
      "updatedAt": "2026-10-07T11:50:40Z",
      "preview": "Found 2026-10-03 by the first run of `milestone-rollup.ts`, not by looking for\nit: the module reported `openTotal - orphanOpen = 149` while the sum of the\nper-milestone bars was 148, and the board was about to render both.\n\n## The measurement\n\n```\nbeans: 675 files · distinct ids: 674 · duplicated ids: 1\n  folio-assistant-t3n8 -> beans/defs/folio-assistant-t3n8--harness-display-names-every-instance",
      "file": "beans/defs/folio-assistant-vq2g--two-bean-files-share-one-id-and-no-gate-catches-it.md"
    },
    {
      "id": "folio-assistant-vq8o",
      "title": "Prior-art page: open-source projects taking a similar approach",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-2upx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T21:53:16Z",
      "updatedAt": "2026-09-24T05:25:53Z",
      "preview": "User asked (2026-09-23) whether other open-source projects take a similar approach, then chose 'Write a prior-art doc'. Add a reader-facing comparison page under cat-harness/docs, verified against each project's repo.\n\n## Done when\n- [x] cat-harness/docs/research-and-analysis/prior-art.md exists (moved there on the owner's ask, new section), each project verified online with licence and what overl",
      "file": "beans/defs/folio-assistant-vq8o--prior-art-page-open-source-projects-taking-a-simil.md"
    },
    {
      "id": "folio-assistant-vqlp",
      "title": "Placement PR6 leaves Process_Ingestion with no docs page section, so the harness's own basic flow has no KG witness",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T09:08:33Z",
      "updatedAt": "2026-10-04T09:46:54Z",
      "preview": "#1898 repoints `content/docs/document-ingestion/nodes/the-pipeline.jsonld`'s `sourceDocument` from `cat-harness/processes/library/document-ingestion.bpmn` to `folio-assistant-core/processes/library/l1-document-ingestion.bpmn`. That is deliberate and the prose was rewritten to match. The side effect is not: the harness's own basic flow, which the PR says STAYS in the harness, is then presented by n",
      "file": "beans/defs/folio-assistant-vqlp--placement-pr6-leaves-process-ingestion-with-no-doc.md"
    },
    {
      "id": "folio-assistant-vqsq",
      "title": "Node kinds: index from typologies, ratcheted QA, change-set/bean kinds (#2195 PR 1)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T18:04:26Z",
      "updatedAt": "2026-10-06T05:52:18Z",
      "preview": "Issue #2195, PR 1 of 3. Node kind = TS nodeKind(); found through each graph typology's nodeSchemas family validators (no source scan, no hand list). Declaring harness = the ref's instance. Gate: stale index, NEW family with no node kind (existing baselined, baseline only shrinks), id collision. Kinds: change-set, bean; public-comment + change-set families declared on todo-items. Next PRs: generic ",
      "file": "beans/defs/folio-assistant-vqsq--node-kinds-index-from-typologies-ratcheted-qa-chan.md"
    },
    {
      "id": "folio-assistant-vrfx",
      "title": "stripLeanComments eats newlines inside block comments, so 99% of Lean QA hit lines are wrong",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-0lmb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:20:52Z",
      "updatedAt": "2026-10-08T01:15:00Z",
      "preview": "Found 2026-09-25 while converging the declaration splitter (`bqrg`). Not part of\nthat change, and deliberately not folded into it: this one moves a reported\nline number on almost every file in a Lean corpus, which is the corpus-wide\nre-scoring `bqrg` warns against doing on the strength of an unrelated sweep.\n\n## The defect\n\n`stripLeanComments` blanks a comment by writing a space over each of its\nc",
      "file": "beans/defs/folio-assistant-vrfx--stripleancomments-eats-newlines-inside-block-comme.md"
    },
    {
      "id": "folio-assistant-vsv4",
      "title": "voices visualiser: 7 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/voices/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **The citations cannot be opened.** The page tells the reader to \"uphold a finding by opening the citation\", but a citation such as `who-pub-tps-931#page-014, p1",
      "file": "beans/defs/folio-assistant-vsv4--voices-visualiser-7-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-vsv7",
      "title": "merge-base take-base can DELETE a generated file and still report proved",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T20:05:45Z",
      "updatedAt": "2026-10-04T07:06:23Z",
      "preview": "Measured 2026-10-03 on PR #1955 (bun run cat merge:main, merging origin/main at af91a5a). Two paths classified [qa-results: take-base] — cat-harness/test/results/kg-export.bootstrap.qa-results.json and kg-export.folio-assistant.qa-results.json — logged 'fatal: path ... is in the index, but not at stage 2' and '... not at stage 3', and were ABSENT from the merge commit, although both exist on main ",
      "file": "beans/defs/folio-assistant-vsv7--merge-base-take-base-can-delete-a-generated-file-a.md"
    },
    {
      "id": "folio-assistant-vuip",
      "title": "GOAL 1: separation of repos into dir/repos, each harness instantiation with config and initiation steps skilled, tooled and tested",
      "status": "in-progress",
      "type": "milestone",
      "priority": "high",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T18:47:55Z",
      "updatedAt": "2026-10-09T17:47:39Z",
      "preview": "The owner's words, 2026-09-20 (session_017PqeiS4JYySSWGAYLedmus), kept verbatim\nbecause a goal paraphrased by an agent is a different goal:\n\n> get to separtion of repos into dir/repos with each harness instiatiatin w/\n> config and initation steps skilled, tooled, and tested (readme, creation of\n> directories, active vs static content -- beans todos fsh-guts,etc.)\n\nCreated on the owner's ruling for",
      "file": "beans/defs/folio-assistant-vuip--goal-1-separation-of-repos-into-dirrepos-each-harn.md"
    },
    {
      "id": "folio-assistant-vwd8",
      "title": "TYPESCRIPT 7: migrate from 6.0.3 (Dependabot #910)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T08:59:32Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "## What\n\nThe owner said **\"Try migration now\"** on 2026-09-30, which reopens the 2026-09-27\nhold recorded in `folio-assistant-u2ol`. This bean works option 3 from that bean,\n**side-by-side**, on branch `claude/magical-archimedes-4qkfxp-ts7`. TS 7 does the\ntypechecking. The TS 6 JS API stays installed for the code that imports it.\nMeasured 2026-09-30.\n\n## Why #910 has been red since 2026-09-23. It ",
      "file": "beans/defs/folio-assistant-vwd8--typescript-7-migrate-from-603-dependabot-910.md"
    },
    {
      "id": "folio-assistant-vxho",
      "title": "A test 14% under the default timeout is a gate that fails on a busy machine, not a red one",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T12:19:24Z",
      "updatedAt": "2026-09-25T16:37:25Z",
      "preview": "Recorded 2026-09-24 while running `bun run cat gates` on a two-markdown-file diff.\n\n```\ncat-harness/schemas/viz-generators.test.ts:\n(fail) the readers agree with what the generators publish > a queue's\n       declared intake is ONE unit, not one per file it carries [5683.71ms]\n  ^ this test timed out after 5000ms.\n```\n\n**It is not a correctness failure and it was not the diff's.** The diff was two",
      "file": "beans/defs/folio-assistant-vxho--a-test-14-under-the-default-timeout-is-a-gate-that.md"
    },
    {
      "id": "folio-assistant-vzo5",
      "title": "check:reference-direction runs in NO workflow, so its PENDING guard — the half its docblock calls enforced — fires nowhere",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T22:16:35Z",
      "updatedAt": "2026-10-06T14:30:00Z",
      "preview": "Found by a goal-review sweep, 2026-09-29, on `origin/main` @ `35402147f55`.\n\n`zhg2` shipped `check:reference-direction` (PR #1222, merged 2026-09-26) and\nregistered it in `gates.ts` as `kind: \"report\"` — advisory, deliberately,\nbecause the wrong-direction count is 574 and *\"a gate that fails on a backlog\nis a gate somebody switches off\"*. That reasoning is sound and is not what\nthis bean disputes.",
      "file": "beans/defs/folio-assistant-vzo5--checkreference-direction-runs-in-no-workflow-so-it.md"
    },
    {
      "id": "folio-assistant-w0at",
      "title": "S8 cut over: submodule if imported, subscription if read; in-tree copy removed only on owner OK",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-mgxw"
      ],
      "createdAt": "2026-10-01T08:14:34Z",
      "updatedAt": "2026-10-09T17:41:06Z",
      "preview": "Absorbs syzb, fnx4 cutover path, 4475. G11 (slice-7 layout vs staged dirs) is a prerequisite.\n\n## Done when\n- [ ] import-consumed instances are submodules\n- [ ] read-consumed instances are subscriptions\n- [x] in-tree copies removed per instance on owner OK\n\n\n## Amended — owner 2026-10-06 (options 1+2)\nCutover mechanism replaced, following the remote-mount ruling (bean 0mpw):\n- **code** an instance",
      "file": "beans/defs/folio-assistant-w0at--s8-cut-over-submodule-if-imported-subscription-if.md"
    },
    {
      "id": "folio-assistant-w0cr",
      "title": "STREAM 3/3: GOAL 3 — who-iris through a themed harness, and PR #881 (yg29, 15 open beans)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-yg29",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T18:09:11Z",
      "updatedAt": "2026-09-23T19:45:00Z",
      "preview": "## What this is\n\nStream 3 of 3 in the 2026-09-22 consolidation (see the sibling claims under\n`vuip` and `p5wm`). It owns **GOAL 3 (`yg29`) — 15 open beans**: showing who-iris\nwith its existing materialised assets, through a themed harness.\n\nSmallest of the three streams by bean count, and the one carrying the largest\nsingle pull request in the repository.\n\n## What this stream owns\n\n**Beans** — `yg",
      "file": "beans/defs/folio-assistant-w0cr--stream-33-goal-3-who-iris-through-a-themed-harness.md"
    },
    {
      "id": "folio-assistant-w1gy",
      "title": "Separation stage 5: QA both new repositories from fresh sibling clones",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-iirv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:58:02Z",
      "updatedAt": "2026-10-15T16:49:44Z",
      "preview": "Stage 5 of the split plan: QA from scratch. Fresh clones of bootstrap, bootstrap-tools, cat-harness, cat-harness-tools as siblings in an empty directory: `bun install --frozen-lockfile`, `tsc`, `bun test`, closure, the rehearsal, every `:check` in `cat-harness-tools/package.json`; link audit (0 broken, 0 leaving except declared URLs); names-outside audit (every remaining mention of folio-assistant",
      "file": "beans/defs/folio-assistant-w1gy--separation-stage-5-qa-both-new-repositories-from-f.md"
    },
    {
      "id": "folio-assistant-w2gr",
      "title": "cat-harness-tools: split the MCP server and tool implementations into their own instance, depending on cat-harness",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-70lx"
      ],
      "createdAt": "2026-09-30T08:12:08Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "Owner 2026-09-29/30: 'i want to split out cat-harness-tools too https://github.com/litlfred/cat-harness-tools' — 'see sibling work' (#1514, bootstrap-tools, bean 81tw). Direction ruled 2026-09-30: **tools depend on the harness** — cat-harness never imports the new instance.\n\nMeasured 2026-09-30: litlfred/cat-harness-tools is EMPTY (no commits). In scope: cat-harness/tools/ (8 files: discover, inde",
      "file": "beans/defs/folio-assistant-w2gr--cat-harness-tools-split-the-mcp-server-and-tool-im.md"
    },
    {
      "id": "folio-assistant-w5h0",
      "title": "TOOL 9/13: Task_AuthorBlocks — block authoring & prose structure (14 files, 1 entry point)",
      "status": "scrapped",
      "type": "task",
      "priority": "low",
      "parent": "folio-assistant-d308",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T04:34:56Z",
      "updatedAt": "2026-09-25T17:34:06Z",
      "preview": "Group 9 of 13 in `d308`. **14 files, 1 entry point.**\n\n`render-markdown`, `markdown-ast`, `block-module`, `front-matter`,\n`build-foreshadows`, `generate-index`, `readme-toc`, `section-story-audit`,\n`audit-status-sections`, `extract-status-sections`, `find-dangling-remarks`,\n`conditional-class-banner-audit`, `language-trap-audit`, `check-voices`.\n\n**BPMN:** `authoring-a-paper · Task_AuthorBlocks` (",
      "file": "beans/defs/folio-assistant-w5h0--tool-913-task-authorblocks-block-authoring-prose-s.md"
    },
    {
      "id": "folio-assistant-w6fu",
      "title": "Visualiser follow-ups: disabled kg-viewer language switcher, library title extraction",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T09:01:57Z",
      "updatedAt": "2026-10-02T12:05:57Z",
      "preview": "Follow-up to beans `gnqa` (library) and `yhcq` (kg-viewer), stacked on PR #1839. Owner rulings 2026-10-02 on issue #1838:\n\n1. Library cover size stays 34×46 — no work.\n2. **kg-viewer language switcher: shown, DISABLED**, so readers see translations are planned while every catalogue is empty. Accessible: visible reason, `aria-disabled`, an explanation reachable by keyboard and tap (not hover-only),",
      "file": "beans/defs/folio-assistant-w6fu--visualiser-follow-ups-disabled-kg-viewer-language.md"
    },
    {
      "id": "folio-assistant-w7r3",
      "title": "CONNECTED AGENT: W7 round 3, the incremental rebuild after the temporary-IG fixes, and W8, on smart-immunizations with tx.fhir.org",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-a9tx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T20:40:00Z",
      "updatedAt": "2026-10-23T22:57:00Z",
      "preview": "Follows bean `folio-assistant-wv7r`. That round got further than any before it. The base was\nclean, the plan was `incremental`, and the temporary IG's Publisher run reached Jekyll. Two\nthings then failed:\n- Jekyll stopped: `Could not locate the included file 'menu.xml'`;\n- the script exited before W8.\n\nThe fork fixes them:\n- `e3c7119`: the temporary IG gets `input/includes/` and `fsh-generated/inc",
      "file": "beans/defs/folio-assistant-w7r3--connected-agent-w7-round-3-incremental-rebuild-after-the-temp-ig-fixes.md"
    },
    {
      "id": "folio-assistant-w82m",
      "title": "TEST COST: kg-export 'a preview says so' builds the export twice and sits at bun's 5 s timeout (fails alone, locally, on main too)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T16:56:12Z",
      "updatedAt": "2026-09-23T16:59:22Z",
      "preview": "Measured 2026-09-23. The test `kg export > a preview says so in its type and links every node back to canonical` (`cat-harness/scripts/tests/kg-export.test.ts:440`) calls `buildExport()` twice, once for the preview and once for canonical, with nothing cached. On a session container it takes about 5.2 s when run alone. That is over bun's default 5 s test timeout, and the same on `main` (`04b8ed02`)",
      "file": "beans/defs/folio-assistant-w82m--test-cost-kg-export-a-preview-says-so-builds-the-e.md"
    },
    {
      "id": "folio-assistant-w8j8",
      "title": "AGENTIC LIFECYCLE: handover reports and stalled-agent triage (skills, process, collector tool)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T19:08:53Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "Owner, 2026-10-02, verbatim: \"prepare for you and your current siblings to stall out in the next 5-30 minutes … each agent should prepare a templated 'handover report' … an 'incoming stalled agent triage' process … consolidate the various workstreams into 2-4 themes … coordinate with relevant agents (e.g. the Merge Manager) … update processes, skills, tools etc. include as part of SDLC under agent",
      "file": "beans/defs/folio-assistant-w8j8--agentic-lifecycle-handover-reports-and-stalled-age.md"
    },
    {
      "id": "folio-assistant-w8jq",
      "title": "MERGE GATE (a): adversarial agentic code review is a required check on any agent-touched PR, with a committed verdict",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:29:16Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Child (a) of the merge-gate epic. Design: `cat-harness/docs/proposals/merge-gate-2026-10-02.md` §5.1–5.3.\n\nThe gate: any PR whose commits carry agent provenance (a `Co-Authored-By: Claude …` or `Claude-Session:` trailer, a `claude/` head branch, or a bot author) gets a **full adversarial code review by an agent that did not author it**. That review writes a committed verdict, and a required status",
      "file": "beans/defs/folio-assistant-w8jq--merge-gate-a-adversarial-agentic-code-review-is-a.md"
    },
    {
      "id": "folio-assistant-w91p",
      "title": "B7a (#1168): the 10 gen-*-viz scripts become Tools (renders:, maintains:); coverage.visualiser removed",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T19:50:21Z",
      "updatedAt": "2026-09-29T23:45:29Z",
      "preview": "Owner 2026-09-24: 'A: viz scripts become Tools'. 36 coverage.visualiser entries (23 single, 13 lists); none of the 10 gen-*-viz scripts is a declared Tool (tools/index.ts has 61). Each becomes a Tool with renders: <graph kind> and maintains: its pages; per-instance pages computed from Tool + directory id; the 13 lists need a rule. Derive each directory's viewers; remove coverage.visualiser.\n\n\n\n## ",
      "file": "beans/defs/folio-assistant-w91p--b7a-1168-the-10-gen-viz-scripts-become-tools-rende.md"
    },
    {
      "id": "folio-assistant-wckf",
      "title": "WHO-IRIS LHS ICON ROW: harness icon row missing on .fa-nav rail pages (mountNavIconRow binds .side-bar only)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T05:32:26Z",
      "updatedAt": "2026-10-05T10:14:50Z",
      "preview": "Owner, 2026-10-05: 'still no LHS icons top navbar on who-iris page' — confirmed it is the harness icon row (todos, beans, processes, kg, fsh-guts, launcher). Likely cause: docs-ui.js mountNavIconRow() requires .side-bar (just-the-docs); who-iris replica pages carry the harness rail nav.fa-nav instead. who-iris.json declares no navbarIcons (absent = inherit cat-harness's). Related, not duplicate: 2",
      "file": "beans/defs/folio-assistant-wckf--who-iris-lhs-icon-row-harness-icon-row-missing-on.md"
    },
    {
      "id": "folio-assistant-wczm",
      "title": "Regenerate gaps: no writer for check:l1-complete or smart-kg-l1 --entry; merge-base takes main's side on a fast-forwardable gitlink; merge-main bot doesn't clear needs-merge-human",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-hfag",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T17:19:31Z",
      "updatedAt": "2026-10-04T07:12:57Z",
      "preview": "Owner, 2026-10-02, via the merge-pipeline coordinator: one bean under the merge-pipeline epic `hfag` for these regenerate and merge-bot gaps.\n\n## Overlap with `u7be` (read this first)\n\n`u7be` (\"MERGE GATE (e): four merge-steward gaps\"), filed on PR #1887's branch and NOT on `main` when this bean was created, lists items (1), (2) and (4) below as its own (1), (2) and (4). Checked with `beans list` ",
      "file": "beans/defs/folio-assistant-wczm--regenerate-gaps-no-writer-for-checkl1-complete-or.md"
    },
    {
      "id": "folio-assistant-wekz",
      "title": "ARCHIVE: moving a bean one level deeper breaks its relative links, and the CLI reports a path it did not write to",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-9gkj"
      ],
      "createdAt": "2026-09-23T21:44:21Z",
      "updatedAt": "2026-09-23T21:44:43Z",
      "preview": "Owner authorised `beans archive` 2026-09-23, the last outstanding\n`bean-store` finding on [#860](https://github.com/litlfred/folio-assistant/issues/860).\nIt ran, it moved 631 beans, and it left two things behind that are worth\nrecording rather than quietly repairing.\n\n## 1. A moved bean's relative links break — measured, not predicted\n\n`check:subgraphs` was **GREEN before the archive and RED after",
      "file": "beans/defs/folio-assistant-wekz--archive-moving-a-bean-one-level-deeper-breaks-its.md"
    },
    {
      "id": "folio-assistant-wg7r",
      "title": "MISFILED: smart-kg/methodologies/grade.md belongs in a skill + SKOS code list, and smart-kg/ leaves this repo",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:52:50Z",
      "updatedAt": "2026-09-24T05:19:30Z",
      "preview": "Owner, 2026-09-23: *\"misfiled smart-kg/methodologies/grade.md, needs to be part of skill/SKOS etc. … dont want smart-kg here yet, that is its own repo already\"*.\n\n## What is wrong\n\n- `smart-kg/methodologies/grade.md` (85 lines, `folio-methodology/v1`) is the only file under `smart-kg/`, a directory named after a repository that **already exists on its own**. Keeping a stub of it here is a second h",
      "file": "beans/defs/folio-assistant-wg7r--misfiled-smart-kgmethodologiesgrademd-belongs-in-a.md"
    },
    {
      "id": "folio-assistant-wggr",
      "title": "SPLIT: invert the stub pattern — <stub>/docs not docs/<stub>, so a repo is one directory",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:51:29Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "Owner direction, 2026-09-19: \"dont do docs/<stub> tools/<stub> etc, rather do <stub>/docs and <stub>/tools. update the references/graph/dirs and then move is much cleaer.... this dir is this repo. and we can do more QA here before separation. so there would be in top-level only bootstrap/ cat-harness/ f-a-core/ etc. all content migrated to respective expexted dirs. also keeps URI/IRIs not so redun",
      "file": "beans/defs/folio-assistant-wggr--split-invert-the-stub-pattern-stubdocs-not-docsstu.md"
    },
    {
      "id": "folio-assistant-whbf",
      "title": "Overview panel: the DYNAMIC half — drag, re-run layout, alternate arrangements",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T21:10:28Z",
      "updatedAt": "2026-10-10T16:21:17Z",
      "preview": "Owner, 2026-09-20, splitting the work explicitly:\n\n| dynamic stuff is bean for later.  but static visualiztion overview is needed.\n| panel at top (colassibkle)\n\nThe static half shipped: a collapsible `<details>` panel at the top of the\nschema viewer holding a deterministic SVG of the whole graph. See\n`schema-management` §\"The overview panel\".\n\n## What is NOT there, and is this bean\n\n- Dragging a n",
      "file": "beans/defs/folio-assistant-whbf--overview-panel-the-dynamic-half-drag-re-run-layout.md"
    },
    {
      "id": "folio-assistant-whlc",
      "title": "KG PUBLICATION: named subgraphs (referenced + hydrated), skeleton/payload split, late client-side materialization",
      "status": "completed",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T20:42:54Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "Owner, 2026-10-02 (lead session, verbatim excerpts):\n- \"what we need is providing both dereferenced (inline, fully hydrated objects) and referenced (URI pointers) versions in subgraphs\"\n- \"harness instance is implicitly a named subgraph (w/ its own rules for determining whats in it) of the whole repo's KG. Harness and (Sub)Graph share common type?\"\n- \"maybe we can have a common base like <BASE_URL",
      "file": "beans/defs/folio-assistant-whlc--kg-publication-named-subgraphs-referenced-hydrated.md"
    },
    {
      "id": "folio-assistant-wixl",
      "title": "SLICE FILE CDN STALENESS: <slice>.sqlite3 is served from a fixed path, so a CDN can hand a client old bytes it then rejects on sha256 — content-address the slice file like payloads",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T15:51:14Z",
      "updatedAt": "2026-10-03T16:44:36Z",
      "preview": "Found 2026-10-03 while writing the who-iris CDN section (q8ar box 4). `cat-harness/docs/assets/slices/<slice>.sqlite3` keeps one path across builds; only `<slice>.sqlite3.json` (the manifest, with sha256) changes meaningfully. Behind a CDN with any TTL the client can fetch a fresh manifest and a stale database, fail the sha256 check, and fall back — a correctness-safe but availability-unsafe desig",
      "file": "beans/defs/folio-assistant-wixl--slice-file-cdn-staleness-slicesqlite3-is-served-fr.md"
    },
    {
      "id": "folio-assistant-wjfu",
      "title": "SMART-TRUST PAGES: 674 ingested artefacts had no reader-facing surface — a docs graph, generated from index.json",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-21T13:18:01Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "The owner asked where `https://litlfred.github.io/folio-assistant/smart-trust` was. It did not exist, and that is a gap left by qsf5 rather than a bug: `fhir-artifact-index` is registered `renderable: false`, and `smart-trust/` declares exactly one directory of exactly that kind, so nothing was generated for it.\n\nOnly 2 of 29 graph kinds are renderable — `docs` and `folio`. `who-iris/` publishes b",
      "file": "beans/defs/folio-assistant-wjfu--smart-trust-pages-674-ingested-artefacts-had-no-re.md"
    },
    {
      "id": "folio-assistant-wlqd",
      "title": "skills/remote-packages/ is declared but nothing syncs, serves or registers a remote package",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T05:47:28Z",
      "updatedAt": "2026-09-20T17:19:50Z",
      "preview": "Found 2026-09-19 while working `nup0`. Two remote packages are declared and\n**five skills** are named across them, none of which this instance can offer:\n\n| file | `wrapper.skills` |\n|---|---|\n| `claude-scientific-skills.json` | `scientific-visualization`, `scientific-critical-thinking`, `hypothesis-generation` |\n| `smarter-fhir.json` | `smart-launch`, `fhir-client-operations` |\n\nBoth carry `sync:",
      "file": "beans/defs/folio-assistant-wlqd--skillsremote-packages-is-declared-but-nothing-sync.md"
    },
    {
      "id": "folio-assistant-wlyg",
      "title": "ROUND TRIP: pot-extract and po-inject declare ten copies of the same markdown constants, and one of them diverged inside a single change",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [
        "folio-assistant-lvk9"
      ],
      "blockedBy": [],
      "createdAt": "2026-09-26T10:03:23Z",
      "updatedAt": "2026-09-26T13:48:19Z",
      "preview": "Found 2026-09-26 while shipping `ig4a`, by asking whether anything else shared the\nfact being changed before committing it.\n\n`pot-extract.ts` (extract) and `po-inject.ts` (inject) are the two halves of one\nround trip, and they parse markdown with **ten separately declared copies** of the\nsame constants:\n\n| constant | identical today? |\n|---|---|\n| `MD_CODE_FENCE_RE` | **no — diverged, now consolid",
      "file": "beans/defs/folio-assistant-wlyg--round-trip-pot-extract-and-po-inject-declare-ten-c.md"
    },
    {
      "id": "folio-assistant-wm63",
      "title": "FHIR-HARNESS: the bare FHIR IG pipeline as its own harness layer, between core and smart-base",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-mfhc"
      ],
      "createdAt": "2026-09-22T19:07:23Z",
      "updatedAt": "2026-10-10T08:00:00Z",
      "preview": "`fhir-harness` — the layer bean `nsbb` called \"the bare FHIR IG pipeline\", now\nnamed by the owner's stack ruling of 2026-09-22.\n\n## What it is\n\nSUSHI → IG Publisher → Jekyll → a pages branch. **No pre-processing and no\npost-processing.** This is how SMART Guidelines were built before the DAK\nphases were added, so it is a shape that demonstrably worked rather than one\nbeing invented.\n\n## The defini",
      "file": "beans/defs/folio-assistant-wm63--fhir-harness-the-bare-fhir-ig-pipeline-as-its-own.md"
    },
    {
      "id": "folio-assistant-wmk0",
      "title": "PROCESS INDEX COVERAGE: bootstrap's 5 diagrams and bootstrap-tools' 1 are not in the workflow index — bootstrap's graph publishes no subgraph files or documentation",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T12:50:07Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "Found 2026-10-03 when ax6r moved the workflow index onto the published subgraph JSON-LD (owner ruling: 'Move to JSON-LD'). `check:process-index` now reports 78 of 84; the 6 not covered are listed on every run (e.g. `bootstrap/processes/log-message.bpmn`). The rule #432 / bean `pve3` keeps bootstrap's process out of the root's graph, and bootstrap's own graph (built by bootstrap-tools' `export-grap",
      "file": "beans/defs/folio-assistant-wmk0--process-index-coverage-bootstraps-5-diagrams-and-b.md"
    },
    {
      "id": "folio-assistant-wnhh",
      "title": "Run SUSHI + IG Publisher locally (needs packages.fhir.org and tx.fhir.org)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-mac1"
      ],
      "createdAt": "2026-10-01T17:11:25Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "For a session whose environment allows **`packages.fhir.org`** and **`tx.fhir.org`**. On 2026-10-01 the jut3 session's proxy denied both (403), along with `hl7.org`, `build.fhir.org`, `smart.who.int` and `litlfred.github.io`. Owner: \"bean for agent with more open access\".\n\n**Already possible without it, so do not ask for more:** GitHub over git (every `gh-pages` branch, and WHO's published release",
      "file": "beans/defs/folio-assistant-wnhh--run-sushi-ig-publisher-locally-needs-packagesfhiro.md"
    },
    {
      "id": "folio-assistant-wp49",
      "title": "TEST MODE: benchmarking output is a report, and deliberately not KG content",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:55:36Z",
      "updatedAt": "2026-10-09T17:11:00Z",
      "preview": "From [#363](https://github.com/litlfred/folio-assistant/issues/363): \"test mode:\nresults are compiled for things like benchmarking across a model, running a bank\nof test scenarios for a single model (verifiablility). restuls not intended to\nbe stored in the KG, more to synthesizsd in a benchmarking report.\"\n\n## The rule, and why it is not obvious\n\nEvery other verdict this project produces goes **i",
      "file": "beans/defs/folio-assistant-wp49--test-mode-benchmarking-output-is-a-report-and-deli.md"
    },
    {
      "id": "folio-assistant-ws99",
      "title": "GENERATED OUTPUT: every generator's output should declare its writer — five write into docs/ and none did",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T06:27:05Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Issue #1254. Found while building check:reference-direction (#1219, bean zhg2): gen-skill-docs, gen-schema-docs and gen-uml-overview wrote 769 occurrences of undeclared generated output into docs/, 54% of that check's original findings. docs/ is a content graph and correctly so, so the directory cannot answer for a generator's output inside it — the file must. Markers added in PR #1222 for the thr",
      "file": "beans/defs/folio-assistant-ws99--generated-output-every-generators-output-should-de.md"
    },
    {
      "id": "folio-assistant-wujt",
      "title": "STAGING EDIT LINKS: on a staging preview, view/edit links go to the previewed branch, not main — for every harness",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T18:17:58Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Owner, 2026-10-05 (during bean `mftp`): *\"in general (not just for FHIR IGs, but other harneses) edit links on staging, should go to their staging edit links, not main.\"*\n\n## Measured 2026-10-05\n- View/edit links are composed by `sourceLinks(repoUrl, path, branch)` (`cat-harness/schemas/cat-harness.ts`), called by about eight generators (`gen-landing-data`, `gen-docs-pages`, `harness-panel`, `libr",
      "file": "beans/defs/folio-assistant-wujt--staging-edit-links-on-a-staging-preview-viewedit-l.md"
    },
    {
      "id": "folio-assistant-wv7r",
      "title": "CONNECTED AGENT: W7 round 2, a real incremental rebuild (with -verify-incremental) and W8, on smart-immunizations with tx.fhir.org",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-a9tx",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-23T18:30:00Z",
      "updatedAt": "2026-10-23T21:08:00Z",
      "preview": "Follows bean `folio-assistant-fpmn`. In that round both W7 plans were decided `full`, so no\nincremental build ran. The reasons are in a9tx under \"W7/W8 review of bean fpmn\". This round\nfixes both causes:\n- the base is rebuilt from a clean tree;\n- `w7-round.sh` passes `-verify-incremental` (the owner chose option A on 2026-10-23).\n\nIt runs on the owner's machine, because cloud sessions cannot reach",
      "file": "beans/defs/folio-assistant-wv7r--connected-agent-w7-round-2-incremental-rebuild-with-verify-flag.md"
    },
    {
      "id": "folio-assistant-wwi6",
      "title": "INITIATION: uploads/ and library/ are created at initiation, one as state and one not",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T06:19:54Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "## The ask, owner 2026-09-20 (verbatim)\n\n> also please add back uploads/ folder. it should be initiation skill of\n> folio-asst-core/ and preseverd in the current folio-asst/ repo as state.\n> library/ should also be added in at initation, but not as state by KG-Content.\n\n## MEASURED FIRST, because \"add back\" turned out not to mean what it sounds like\n\nBoth directories are **present**, declared, and",
      "file": "beans/defs/folio-assistant-wwi6--initiation-uploads-and-library-are-created-at-init.md"
    },
    {
      "id": "folio-assistant-x2ay",
      "title": "add security:gate task to publish and merge BPMN processes",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-ieum",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T22:03:25Z",
      "updatedAt": "2026-10-08T03:00:00Z",
      "preview": "## Landed evidence\n- Completed as part of epic `folio-assistant-ieum` on main (commit `04e1bd8749e02735b58dab9f2324138e39ff33c2`, PR #2504).\n- `security:gate` task and publication workflow in BPMN and CI verified on origin/main.",
      "file": "beans/defs/folio-assistant-x2ay--add-securitygate-task-to-publish-and-merge-bpmn-pr.md"
    },
    {
      "id": "folio-assistant-x3bd",
      "title": "Top-level topical KG directories, bootstrap/ first",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T05:59:28Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "_2026-09-19T05:59:49Z_ — THE ASK (owner, 2026-09-19, answering where the harness schemas should move): 'toplevel topical directories like: bootstrap =/ KG w/ only tool the CLI fallback for beans. minimal workflow, init, absolutely minimal skills and bpms listt to get going.' So the organising axis is TOPIC, not layer — which also settles the earlier layer question by construction, since math/ and ",
      "file": "beans/defs/folio-assistant-x3bd--top-level-topical-kg-directories-bootstrap-first.md"
    },
    {
      "id": "folio-assistant-x3h9",
      "title": "HARNESS CORE: gettext .pot/.po pipeline + accessibility are core, not folio-only (issue #223)",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T17:04:14Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "## The ask\n\nOwner, [#223 comment](https://github.com/litlfred/folio-assistant/issues/223#issuecomment-5733305682), 2026-09-18T16:55:40Z, verbatim:\n\n> in agentic-harness core, i still want support for .pot/po gettext and translation pipeline. also core accessability issues where applicable (e.g. skills and expectations should be descrinbed even if not in tooling)\n\n## Why it is a separation-of-conce",
      "file": "beans/defs/folio-assistant-x3h9--harness-core-gettext-potpo-pipeline-accessibility.md"
    },
    {
      "id": "folio-assistant-x4a6",
      "title": "Declare docs/ as the instance's renderable graph — core's folio registration reaches 31 of 31 readers, so the blocker is withdrawn",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T08:00:02Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "Found and measured while doing bean `lgwe` (PR #351).\n\n## The gap\n\n`docs/` is this instance's Jekyll site — 150+ pages, `_config.yml`, the whole\npublished documentation — and **nothing declares it**. `cat-harness.json`\ndeclares `docs/assets/qa/` (the witnesses) and nothing else under it. So a\nconsumer asking \"which directories does this instance scan\" is not told about\nthe one a reader actually se",
      "file": "beans/defs/folio-assistant-x4a6--declare-docs-as-the-instances-renderable-graph-blo.md"
    },
    {
      "id": "folio-assistant-x4mt",
      "title": "SKILLS: cross-agent installation + fa- namespace prefix (issue #247)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T15:28:10Z",
      "updatedAt": "2026-10-20T09:35:00Z",
      "preview": "## What\n\nInstall folio-assistant's skills into whichever agent is running (Claude Code,\nGemini CLI, Antigravity, Cursor, Copilot), across the whole dependency tree —\na folio links the platform as submodule or sibling, so the skill set is a union\nacross checkouts rather than one directory listing. Prefix every emitted skill\n`fa-` so the host's namespace does not collide.\n\nNot started. The issue rec",
      "file": "beans/defs/folio-assistant-x4mt--cross-agent-skill-install-fa-prefix.md"
    },
    {
      "id": "folio-assistant-x5o1",
      "title": "GLOSSARY: seed the who-style-guide glossary from the WHO Editorial Style Manual Annex 1 (preferred spellings)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-lqo9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T00:27:28Z",
      "updatedAt": "2026-09-30T09:03:42Z",
      "preview": "Follow-up of ftu0 (owner chose 2026-09-30: who-style-guide owns the WHO glossary, seeded from the HQ manual's spelling lists).\n\nAnnex 1 of the WHO Editorial Style Manual (who-iris/library/who-pub-tps-931, OCR pages ~86-102) lists preferred spellings, most with a REJECTED variant in brackets: 'immunological (not immunologic)', 'inflection (not inflexion)', plus sense-split pairs 'indexes (of texts)",
      "file": "beans/defs/folio-assistant-x5o1--glossary-seed-the-who-style-guide-glossary-from-th.md"
    },
    {
      "id": "folio-assistant-x6lu",
      "title": "goal-review axis 4: 'items only on a branch' must be compared by bean ID — a stale merge base reported 131 where 1 was real",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T12:20:12Z",
      "updatedAt": "2026-09-30T00:27:10Z",
      "preview": "Found 2026-09-24 in a 1-day goal review. The rule concerned is `goal-review` §\"The six axes\", axis 4, \"Items that exist only on a branch … Sweep the open branches' stores too\".\n\n**Measured:** `git diff --diff-filter=A origin/main...origin/claude/peaceful-heisenberg-dzgsf1 -- beans/defs` listed **131** added bean files. The branch is 822 commits behind main (merge base 09-22). Compared by bean id a",
      "file": "beans/defs/folio-assistant-x6lu--goal-review-axis-4-items-only-on-a-branch-must-be.md"
    },
    {
      "id": "folio-assistant-x78e",
      "title": "smart-immunizations landing: Summary heading has a wrong feedback link and no section edit link",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T05:56:52Z",
      "updatedAt": "2026-10-06T18:30:00Z",
      "preview": "Owner, 2026-10-06, on https://litlfred.github.io/smart-immunizations/ : \"was bad feedback/shout link. there is no edit link\" — and: \"there is one at the very bottom of the page, but no context aware edit link\". So the page-level edit link exists in the footer; what is missing is the per-heading ✎.\n\nThe \"Summary\" heading shows only 📣, and its link is:\n\n    https://github.com/litlfred/smart-immuniz",
      "file": "beans/defs/folio-assistant-x78e--smart-immunizations-landing-summary-heading-has-a.md"
    },
    {
      "id": "folio-assistant-x80s",
      "title": "INGEST: agent summaries of prose blocks, a QA sidecar drained slowly during ingestion",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T05:54:04Z",
      "updatedAt": "2026-10-16T10:30:00Z",
      "preview": "Issue #1250.\n\nOwner, 2026-09-24:\n\n> on library/ page, the extract of a node is shown, but no agentic summary\n\nand, on scope:\n\n> Make as QA sidecar as part of general doc ingestion to slowly drain.\n\n## The design\n\n- `library/<slug>/summaries.json`, `folio-block-summaries/v1` (`schemas/block-summary.ts`): one record per prose block with `block`, `source`, `source_hash` (sha256 of the section text th",
      "file": "beans/defs/folio-assistant-x80s--ingest-agent-summaries-of-prose-blocks-a-qa-sideca.md"
    },
    {
      "id": "folio-assistant-x89e",
      "title": "deps: land #908's two bumps with both bun.lock files regenerated",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T13:41:12Z",
      "updatedAt": "2026-09-26T16:58:15Z",
      "preview": "#908 (dependabot, minor-and-patch group) bumps @anthropic-ai/sdk ^0.104.2 -> ^0.127.0 in the root and mcp-server manifests, and @playwright/test 1.61.1 -> 1.63.0 in the root. It changes package.json only, never bun.lock, so under --frozen-lockfile it cannot go green, and it conflicts with main. Two @dependabot commands posted through the GitHub MCP tool arrived defanged (with middle dots inserted)",
      "file": "beans/defs/folio-assistant-x89e--deps-land-908s-two-bumps-with-both-bunlock-files-r.md"
    },
    {
      "id": "folio-assistant-x89g",
      "title": "BEAN GRAPH: beans/ is a real graph with defs and workflows nodes; paths leave harness config",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T17:56:09Z",
      "updatedAt": "2026-09-23T19:25:46Z",
      "preview": "## The ask\n\nOwner, in chat 2026-09-18:\n\n> instead of beans/ and beans/workflow lets do beans/ beans/defs and\n> beans/workflows with beans/ being a bean graph with a definitions node and\n> workflow node\n\nClarified by the owner when asked whether the graph is a declaration or an\nartefact:\n\n> a real graph, move content out of harness config. make beangraph schema.\n\n## What changes\n\n| | before (bean `",
      "file": "beans/defs/folio-assistant-x89g--bean-graph-beans-is-a-real-graph-with-defs-and-wor.md"
    },
    {
      "id": "folio-assistant-xb4p",
      "title": "skills-index visualiser: 7 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:15Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/skills-index/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **Horizontal scroll at phone width.** At 390 px the `cat-harness` page is still 421 px wide (`scrollWidth` 421, table 402 px). The description column's tex",
      "file": "beans/defs/folio-assistant-xb4p--skills-index-visualiser-7-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-xcyh",
      "title": "The KG viewer must be translated",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T00:23:01Z",
      "updatedAt": "2026-09-23T20:57:53Z",
      "preview": "_2026-09-19T00:23:43Z_ — OWNER, 2026-09-19: 'kg viewer needs to be translated too'. The viewer (scripts/kg-viewer.ts, merged in #307) emits ~30 English UI strings inline in generated HTML and JS: the facet heading 'Kind', 'Nodes', the search placeholder, 'Select a node.', 'No node matches.', 'none', 'No links to or from this node.', 'referenced by', the undeclared-property warning sentence, the co",
      "file": "beans/defs/folio-assistant-xcyh--the-kg-viewer-must-be-translated.md"
    },
    {
      "id": "folio-assistant-xd1g",
      "title": "11 root-rooted scans have no gitignore awareness — ramz's sibling audit, answered",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [
        "folio-assistant-biz4"
      ],
      "blockedBy": [],
      "createdAt": "2026-09-25T16:21:48Z",
      "updatedAt": "2026-09-27T16:36:36Z",
      "preview": "`ramz`'s third box, asked and answered 2026-09-25.\n\n`ramz` fixed ONE scanner: `check-context-emission` walked the filesystem behind\na hand-written denylist and swept 145 gitignored documents as repository\ncontent. It was found by accident — a clean checkout failing a test about code\nnobody had touched — so the bean asked *\"which others?\"*.\n\n**Eleven**, under `cat-harness/scripts/`, each walking fr",
      "file": "beans/defs/folio-assistant-xd1g--11-root-rooted-scans-have-no-gitignore-awareness-r.md"
    },
    {
      "id": "folio-assistant-xeer",
      "title": "ISSUES ARE A THIRD TODO SOURCE: a queryable bean-issue link, and a QA report scoped to beans that OWE one",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-8jt6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T17:16:01Z",
      "updatedAt": "2026-10-09T21:42:00Z",
      "preview": "Owner, 2026-09-20, verbatim:\n\n> note, one other source of todos, it is a tool for todos/ in directory, also\n> github issues is a set of toods.   add beans to skill to read an issue as a\n> bean to track.  skill (request from user permission) to create an issue to\n> link untracked beans.   QA report ... is bean in an issue for CRDM, feature\n> request type process or content authoritng beans where hu",
      "file": "beans/defs/folio-assistant-xeer--issues-are-a-third-todo-source-a-queryable-bean-is.md"
    },
    {
      "id": "folio-assistant-xffc",
      "title": "TOOLS THEME: the second theme from 0301fbd2 becomes a KG node, and tools in the KG use it",
      "status": "scrapped",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [
        "folio-assistant-d3yq"
      ],
      "blockedBy": [],
      "createdAt": "2026-09-20T06:05:13Z",
      "updatedAt": "2026-09-23T10:30:00Z",
      "preview": "## The ask, owner 2026-09-20 (verbatim)\n\n> there are exssting 3 layouts for grumpy cat. that is defailt cat-harness\n> theme. there are now new theme when talking abuot tools in the KG\n> https://github.com/litlfred/folio-assistant/commit/0301fbd24c107d1987d1a15d148fb50242c96217.\n> these need to moved into KG appropraitely as a theme. and in on tools in kg\n> use this theme.\n\n## What this says, as I ",
      "file": "beans/defs/folio-assistant-xffc--tools-theme-the-second-theme-from-0301fbd2-becomes.md"
    },
    {
      "id": "folio-assistant-xgd8",
      "title": "SCHEMA VISUALISER: schemas/ is a content kind with no renderer — options, and three generators that were never wired",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T18:21:04Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "Owner, 2026-09-20, verbatim — quoted because it sets both the requirement and\nthe URL shape, and a paraphrase of a URL shape is a second answer:\n\n> cat-harness rendeding pipeline should include a schema visualization\n> https://github.com/litlfred/folio-assistant/tree/main/cat-harness/schemas\n> should be content kind w/ skills on shcema mangment, data modeling, ingesting\n> shecmas into KG library, ",
      "file": "beans/defs/folio-assistant-xgd8--schema-visualiser-schemas-is-a-content-kind-with-n.md"
    },
    {
      "id": "folio-assistant-xha9",
      "title": "B9c (#1168): KgRef.kind is an enum of registered node kinds",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:54:25Z",
      "updatedAt": "2026-09-30T14:29:18Z",
      "preview": "Owner, 2026-09-30: Enum. KgRef.kind is a free string (todo.ts, carried-note.ts), so 'skil' parses. Build the enum from the graph-kind registry.\n\n## Done when\n- [ ] KgRefSchema.kind is an enum; every committed KgRef parses\n\n\n\n## Done\nOwner chose Enum anyway (2026-09-30) over the open-string alternative. KG_NODE_KINDS in carried-note.ts (+agent for memory scoping); kg-node-kinds.test holds it in ste",
      "file": "beans/defs/folio-assistant-xha9--b9c-1168-kgrefkind-is-an-enum-of-registered-node-k.md"
    },
    {
      "id": "folio-assistant-xies",
      "title": "PUBLISH TO CDN: editor signoff -> merge -> human eyes -> CDN, and GH Pages is a TOOL CHOICE not the design",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-5a3l",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T09:01:32Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "Owner, 2026-09-20, naming the pipeline verbatim:\n\n> 'using ghpages as CDN is a tool choice, other tools possible like cloudflare, doucment that in process/BPMNS/skills, part of publication piepleine, internal publication mamgement: (chief) editor signoff -> merge to main -> huamn eyes review last check -> publish to CDN (requires EXTREME care in URL handling) and make accessible from CDN'\n\nFOUR GA",
      "file": "beans/defs/folio-assistant-xies--publish-to-cdn-editor-signoff-merge-human-eyes-cdn.md"
    },
    {
      "id": "folio-assistant-xka5",
      "title": "Pages grouped by harness, following the URL; each harness owns its sub-doc graphs",
      "status": "in-progress",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-9rq1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-05T14:39:33Z",
      "updatedAt": "2026-10-21T21:32:00Z",
      "preview": "Owner, 2026-10-05, asked how to group the 79 top-level pages: 'dont want additional categorization that will drift, needs maintain. do it by harnesses to follow urls <base>cat-harness/docs/<harness>. each harness is responsible for managing its own sub doc graphs (if any) which then make up the hierarchy'. Also: '(and alphabetization//locale dependent)' — order within a level alphabetical by the p",
      "file": "beans/defs/folio-assistant-xka5--pages-grouped-by-harness-following-the-url-each-ha.md"
    },
    {
      "id": "folio-assistant-xl55",
      "title": "B5-fix (#1168): BPMN subprocess links derived from the page section that presents the process; 10 <link href> removed",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T17:22:04Z",
      "updatedAt": "2026-09-24T18:01:26Z",
      "preview": "## Why\n10 `<cat-harness.processes:link href>` elements are arrow-direction findings: a process (general) names the pages written about it. They are also 5-of-10 broken somewhere, with nothing checking them:\n- `#ingest-the-theme` — no such anchor (no theme section exists).\n- `#a-theme-source` — on a gateway; render-bpmn only reads call activities, so it is inert, and its anchor is missing too.\n- On",
      "file": "beans/defs/folio-assistant-xl55--b5-fix-1168-bpmn-subprocess-links-derived-from-the.md"
    },
    {
      "id": "folio-assistant-xlg2",
      "title": "RUN THE SAMPLE IMPORT: one real end-to-end instance of sample-import.bpmn, recorded, with a test",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-kupb",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T18:01:44Z",
      "updatedAt": "2026-09-30T00:13:47Z",
      "preview": "From the `v048` roast, objection 5. Placed under `kupb` by the owner, 2026-09-24.\n\n**Measured:** `sample-import.bpmn` loads and renders, with skills and roles bound, but `beans/workflows/` holds **no** instance of it or of `materialize-remote`, no `.ts` file names it, and the three worked items arrived as owner uploads, not through it. `hfwl`'s Done-when asked only for a diagram, a skill and a ren",
      "file": "beans/defs/folio-assistant-xlg2--run-the-sample-import-one-real-end-to-end-instance.md"
    },
    {
      "id": "folio-assistant-xm31",
      "title": "om30 residual masking MEASURED: five gate failures on main that CI has never reported",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T14:46:29Z",
      "updatedAt": "2026-09-26T19:34:10Z",
      "preview": "`om30` recorded a KNOWN LIMIT rather than implying it: the gates-job split took\nthe masked region from 45 steps to 6, not to 0, and \"local evidence says all six\npass today\" was explicitly a fact about that day's tree rather than a property of\nthe arrangement.\n\nThat fact has expired, and here is the measurement.\n\n## What is masked today, and how it was established\n\nmain's `Repository gates` job sto",
      "file": "beans/defs/folio-assistant-xm31--om30-residual-masking-measured-five-gate-failures.md"
    },
    {
      "id": "folio-assistant-xp5j",
      "title": "gh-pages is STARVED: staging previews and the published site contend for one serialised Pages deployment, 72 of 100 cancelled",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [
        "folio-assistant-f16o"
      ],
      "createdAt": "2026-10-04T06:49:11Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "## How this surfaced\n\n`bun run cat check:ci-health` on `main`, 2026-10-04. The Pages half of that report\nexists precisely because a Pages build outcome is a fact GitHub holds *about*\nthis repository rather than one the repository holds, so it is asked fresh and\ncached nowhere. It said:\n\n    - ✓ 27 succeeded\n    - ❔ 72 cancelled — neither shipped nor broken\n    - ✗ 0 failed\n    The newest deploymen",
      "file": "beans/defs/folio-assistant-xp5j--gh-pages-is-starved-staging-previews-and-the-publi.md"
    },
    {
      "id": "folio-assistant-xp72",
      "title": "SCALE FIXTURE: a before/after large-document pair with a golden ChangeSet and a measured performance budget",
      "status": "todo",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T21:02:55Z",
      "updatedAt": "2026-10-21T21:32:00Z",
      "preview": "**Why.** Every child can pass on a ten-block fixture and fall over on a real\nhandbook. Performance, the heat map's legibility at 2,000 cells and the\nnavigation's usefulness can only be judged at scale.\n\n**Candidates, measured 2026-09-22:**\n- `smart-immunizations/`: 748 artefacts indexed, 200 materialised. It is\n  **provisional** (nsbb may remove it) and deliberately renders no HTML, so it\n  can on",
      "file": "beans/defs/folio-assistant-xp72--scale-fixture-a-beforeafter-large-document-pair-wi.md"
    },
    {
      "id": "folio-assistant-xpcu",
      "title": "REGEN + GATES SPEED-UP: input-hash staleness skipping and a parallel worker pool for regen-after-merge and gates",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T17:26:24Z",
      "updatedAt": "2026-10-10T08:00:00Z",
      "preview": "## Why\n\nMeasured by the steward: `bun run cat regen` runs ~83 check/writer pairs serially\nvia `spawnSync`, up to 3 passes, ~25 min locally. `bun run cat gates` takes >50 min\nlocally. The box has 4 CPUs shared with other sessions.\n\n## What (owner-approved, 2026-10-01)\n\n1. **Input-hash staleness skipping** in regen: hash each pair's declared inputs\n   plus its script source; skip when it matches the",
      "file": "beans/defs/folio-assistant-xpcu--regen-gates-speed-up-input-hash-staleness-skipping.md"
    },
    {
      "id": "folio-assistant-xqdi",
      "title": "MERGE GATE (b): content-type compile gates - Lean builds, SUSHI/IG AST compiles, JSON-LD + schema validate; site renders advisory",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:29:16Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Child (b) of the merge-gate epic. Design: `cat-harness/docs/proposals/merge-gate-2026-10-02.md` §5.4.\n\nContent-type compile gates, scoped by changed path and **blocking**:\n- `.lean` touched → `lake build` of the affected targets (warm cache via `lean-cache-restore`), plus no new `sorry` and no axiom beyond the declared list;\n- FHIR IG (`input/fsh/**`, `sushi-config.yaml`, IG AST) → SUSHI reports 0",
      "file": "beans/defs/folio-assistant-xqdi--merge-gate-b-content-type-compile-gates-lean-build.md"
    },
    {
      "id": "folio-assistant-xsqm",
      "title": "BOOTSTRAP-TOOLS: re-create as a sibling instance; Zod, generators and checks move down; import cone to zod only",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T23:42:57Z",
      "updatedAt": "2026-10-01T06:58:48Z",
      "preview": "Owner rulings, 2026-09-29 (answers to the separation analysis, Q7/Q1/Q10/Q5):\n\n- **Zod moves DOWN into bootstrap-tools** — reverses `319n`'s placement. Across repos, Zod in cat-harness makes a bootstrap release depend on cat-harness, which depends on bootstrap. bootstrap still knows no zod (`etg1`).\n- **bootstrap-tools owns content checks AND the README/SVG writers** (options 1+2), not a whole har",
      "file": "beans/defs/folio-assistant-xsqm--bootstrap-tools-re-create-as-a-sibling-instance-zo.md"
    },
    {
      "id": "folio-assistant-xsrv",
      "title": "ROUTE-KEYED CUTOVER, FIRST FAMILY: move docs/uml/ off main onto a route-keyed branch — one generator, one gate, bisectable",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [
        "folio-assistant-lbz8"
      ],
      "blockedBy": [
        "folio-assistant-1j3q"
      ],
      "createdAt": "2026-10-03T13:28:54Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "The follow-on to `1j3q` (PR #1996), which built `storage.keyedBy: \"route\"` and\ndeliberately flipped nothing. This is the first family that uses it.\n\n## Why `docs/uml/` and not the other 48\n\n**A-narrow, chosen over A-full.** Measured on #1966: **49 of 94** gated checks\nwrite page files. Flipping them together cannot be bisected — a red tells you\n\"some page moved wrong\" and nothing more. `docs/uml/`",
      "file": "beans/defs/folio-assistant-xsrv--route-keyed-cutover-first-family-move-docsuml-off.md"
    },
    {
      "id": "folio-assistant-xtpc",
      "title": "DOC INGEST: .docx and PDF handbooks to document blocks with content-derived ids — and document-intake out of the paper adapter",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T21:02:54Z",
      "updatedAt": "2026-10-07T17:38:00Z",
      "preview": "Owner: *\"doc ingest\"*. A DAK narrative or an L1 handbook arrives as a .docx or\nPDF. Until it is blocks in the folio/ graph, there is nothing to diff, anchor\ncomments to, or heat-map.\n\n**Measured 2026-09-22.**\n- `document-intake` lives in **folio-paper-adapter/**, not\n  folio-document-adapter/. An L1 handbook is a `document` folio, so the skill\n  is in the wrong adapter for its main customer.\n- The",
      "file": "beans/defs/folio-assistant-xtpc--doc-ingest-docx-and-pdf-handbooks-to-document-bloc.md"
    },
    {
      "id": "folio-assistant-xu0t",
      "title": "TRAIN ORDER: the three state-branch arcs run beans, then auto-docs, then qa-reports removal — owner's sequencing, 2026-10-03",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T09:39:07Z",
      "updatedAt": "2026-10-07T17:32:00Z",
      "preview": "## The owner's ruling, 2026-10-03\n\n> \"once bean train, then auto-docs train (see active siblings)\"\n\nand, on how step 6 is reached: **\"Chain it: 1937, then 1957, then step 6.\"**\n\nThis is a **goal-level sequencing decision by the author**, relayed by the Merge\nManager. It is explicitly **not** an agent-to-agent task lock, which\n[`coordinate`](../../cat-harness/skills/sdlc/sdlc-core/coordinate.md) §1",
      "file": "beans/defs/folio-assistant-xu0t--train-order-the-three-state-branch-arcs-run-beans.md"
    },
    {
      "id": "folio-assistant-xutg",
      "title": "AUDIT COVERAGE: no command says which audits reach a kind, so coverage gets inferred from a sidecar count",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T05:25:17Z",
      "updatedAt": "2026-09-24T12:57:26Z",
      "preview": "On 2026-09-23 an agent reported that beans were \"effectively unaudited\". The\nevidence was a count of `kg-qa` sidecars over them: zero. The conclusion was\nwrong — **five** gates audit beans (`check:bean-bodies`,\n`check:bean-front-matter`, `check:bean-issue-links`, `check:bean-parents`,\n`check:bean-rollup`), plus `check:subgraphs` over the links in their bodies.\n\nThe defect is not the count. It is t",
      "file": "beans/defs/folio-assistant-xutg--audit-coverage-no-command-says-which-audits-reach.md"
    },
    {
      "id": "folio-assistant-xwrt",
      "title": "Mounted instance pages widen at phone width: kg-to-portal is 566px at 390",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T07:06:54Z",
      "updatedAt": "2026-09-24T17:18:12Z",
      "preview": "Found by bean 2r2n (2026-09-24). After 2r2n, 1 of 249 built pages still scrolls sideways at 390 px: `docs/who-iris/kg-to-portal.html`, 566 px wide because of three long inline `code` spans (482, 357 and 311 px).\n\nIt is a MOUNTED instance page: `mount-instance-docs.ts` copies who-iris's own docs verbatim and injects the rail. It gets neither `narrow-viewport.css` (themed pages link it from head_cus",
      "file": "beans/defs/folio-assistant-xwrt--mounted-instance-pages-widen-at-phone-width-kg-to.md"
    },
    {
      "id": "folio-assistant-xxh4",
      "title": "Agent memory target: GitHub Copilot (not implemented — owner 2026-10-06)",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-31ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:35:16Z",
      "updatedAt": "2026-10-06T18:35:16Z",
      "preview": "Owner 2026-10-06: bean up, DO NOT implement yet. Target format: .github/agents/<agent>.agent.md (30,000-char body); repo-wide .github/copilot-instructions.md. Generated by the shared memory assembler into a marked region, with a --check gate and a per-target budget that drops lowest-priority nodes and reports them. Research: see parent bean 31ni.\n\n_2026-10-20_ — Owner re-asked (session https://cla",
      "file": "beans/defs/folio-assistant-xxh4--agent-memory-target-github-copilot-not-implemented.md"
    },
    {
      "id": "folio-assistant-xxku",
      "title": "Flushable containers: a named store with a buffer limit, an over-full badge, and three flush actions",
      "status": "completed",
      "type": "feature",
      "priority": "",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T12:07:49Z",
      "updatedAt": "2026-10-07T17:30:00Z",
      "preview": "**In one sentence:** generalise `fsh-guts`'s flush behaviour into a *flushable\ncontainer* — a named store with a declared buffer limit, an over-full badge and\nthree actions (flush all / trim to limit / select to prune) — and make staging\npreviews and the console log two more instances of it.\n[View this bean](https://github.com/litlfred/folio-assistant/blob/main/beans/defs/folio-assistant-xxku--flu",
      "file": "beans/defs/folio-assistant-xxku--flushable-containers-a-named-store-with-a-buffer-l.md"
    },
    {
      "id": "folio-assistant-y0n2",
      "title": "isPushed() returns false when git COULD NOT ANSWER, so a transient git failure reads as 'you never pushed' — and it made a test fail in the suite and pass alone",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T05:11:35Z",
      "updatedAt": "2026-09-27T07:46:48Z",
      "preview": "Found 2026-09-27 while hunting `9v4m`'s remaining clause. Not the test I was\nlooking for, and a better finding than the one I was after.\n\n## The defect\n\n`isPushed` in `cat-harness/scripts/check-head-has-run.ts:360`:\n\n    export function isPushed(repo: string, sha: string): boolean {\n      try {\n        return execFileSync(\"git\", [\"-C\", repo, \"branch\", \"-r\", \"--contains\", sha], {\n          encoding",
      "file": "beans/defs/folio-assistant-y0n2--ispushed-returns-false-when-git-could-not-answer-s.md"
    },
    {
      "id": "folio-assistant-y1w9",
      "title": "MEMORY REACH: 113 skills are bound to no role or process, so nothing hands them to an agent",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-8jt6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T18:34:19Z",
      "updatedAt": "2026-10-07T16:37:00Z",
      "preview": "**Found by paying the cost, 2026-09-19.** Not a survey finding — a measured\nloss in one session, twice.\n\n## What happened\n\nWhile working `folio-assistant-n60j` I \"discovered\" that the gate list must\nbe derived from the CI workflow rather than from `package.json`, wrote a\nrunner and a skill around it, and reported it as a finding. It was already\nrecorded, that same day, in\n`skills/memory/derive-the",
      "file": "beans/defs/folio-assistant-y1w9--memory-reach-113-skills-are-bound-to-no-role-or-pr.md"
    },
    {
      "id": "folio-assistant-y2jh",
      "title": "BEFORE/AFTER PREVIEW: one reviewer-facing skill across docs site, paper, FHIR IG, slides, websites; wired into review BPMN (#1710)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T22:34:51Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Owner request (issue #1710). Author skills/sdlc/sdlc-core/before-after-preview.md (moved from folio-core with the sdlc topic split, bean 9umr), point rendered-verification/visual-diff/staging-review at it, reference it from the review BPMN. Worked example: Folio tab overlap #1693 / PR #1709.\n\n## Done when\n- skill registered, BPMN references it, gates green, PR open.\n\n## Completed on landed evidenc",
      "file": "beans/defs/folio-assistant-y2jh--beforeafter-preview-one-reviewer-facing-skill-acro.md"
    },
    {
      "id": "folio-assistant-y4t4",
      "title": "SMART-* SEPARATION stage C: neutral IG page generator, neutral sidecar overlay, fhir-artifact-index viewer per instance",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-n3ni",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T12:15:53Z",
      "updatedAt": "2026-10-04T07:07:44Z",
      "preview": "Stage C of cat-harness/docs/proposals/smart-separation-2026-10-01.md (#1767). Owner: go ahead with stage C (2026-10-01); Q3 decided: neutral sidecar overlay.\n\nfhir-harness/AGENTS.md: nothing here may know about WHO. gen-ig-pages (stage A) writes a WHO publish note and DAK API sections; the artefact-index schema carries a WHO-named dak overlay.\n\n## Done when\n- [x] C1 gen-ig-pages neutral: --publish",
      "file": "beans/defs/folio-assistant-y4t4--smart-separation-stage-c-neutral-ig-page-generator.md"
    },
    {
      "id": "folio-assistant-y4uj",
      "title": "Ingest #1614 item 4 sources 7, 8, 11: FHIR TestPlan, ITB docs, CWA 16408, Gherkin ref, MCP spec, hmans/beans README",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-scfh",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T06:38:12Z",
      "updatedAt": "2026-10-21T17:56:00Z",
      "preview": "Issue #1614 item 4: methodology literature the KG/folio-asst deck relies on but no library holds. Sources 7 (FHIR R5 TestPlan, EC ITB docs, CEN CWA 16408 GITB, Cucumber Gherkin reference), 8 (MCP specification, latest dated version) and 11 (hmans/beans README). Each to the library of the instance that owns it, held where the licence permits, referenced otherwise, with exact repo@commit/path proven",
      "file": "beans/defs/folio-assistant-y4uj--ingest-1614-item-4-sources-7-8-11-fhir-testplan-it.md"
    },
    {
      "id": "folio-assistant-y5si",
      "title": "ADAPTERS CLOSURE step 1/2: adapters/paper/ -> folio-assistant-sci/, escape axis unchanged at 2",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T13:48:40Z",
      "updatedAt": "2026-10-01T08:15:14Z",
      "preview": "Owner's Option A ruling on issue #1558 (2026-09-30), step 1 of 2.\n\nMoves `cat-harness/adapters/paper/` (2 files) to `folio-assistant-sci/adapters/paper/`.\n`adapters/document/` does NOT move: that is step 2, a separate PR, and doing it\nhere is what takes the axis through 16.\n\n## Why step 1 is free\n\n`adapters/paper/` reaches out of its own directory ONLY into\n`adapters/document/` -- 7 edges (6 in in",
      "file": "beans/defs/folio-assistant-y5si--adapters-closure-step-12-adapterspaper-folio-assis.md"
    },
    {
      "id": "folio-assistant-y7b3",
      "title": "VOLATILE FIELDS: a timestamp or total in a committed generated file turns every pair of concurrent changes into a conflict",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T22:25:16Z",
      "updatedAt": "2026-10-04T13:34:40Z",
      "preview": "Follow-on to #1658 (bean 52cz, done) and beans oxka / 520m / lxpq (completed). Owner 2026-09-30 chose MEASURE line-level before building a resolver.\n\n## Measured 2026-09-30\n\n300 recent main-into-branch merges on origin/claude/* replayed with git merge-tree (read-only). 235 conflicted; 147 (63%) conflicted ONLY on generated files.\n\nTop four, what the conflicting lines are:\n\n| file | conflicted merg",
      "file": "beans/defs/folio-assistant-y7b3--volatile-fields-a-timestamp-or-total-in-a-committe.md"
    },
    {
      "id": "folio-assistant-y9r6",
      "title": "Separation stage 1c: cat-harness content holds no code — block manifests, tool and skill definitions become JSON",
      "status": "todo",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-iirv",
      "blocking": [
        "folio-assistant-vj2p"
      ],
      "blockedBy": [
        "folio-assistant-8lcl"
      ],
      "createdAt": "2026-10-01T06:58:01Z",
      "updatedAt": "2026-10-16T06:30:00Z",
      "preview": "Stage 1c of the split plan — FR-7, content holds no code. Owner D2 (2026-10-01), option 1: convert to JSON data, validated by the tools on read.\n\n- 189 block manifests + 7 translation nodes → `<block>.json`; `readBlockManifest` accepts `.json`\n- 100 `defineTool` literals (4 files) → one JSON tool node each under `cat-harness/tools/<stub>/`; `discover.ts` (in tools since 1a) validates with `ToolDef",
      "file": "beans/defs/folio-assistant-y9r6--separation-stage-1c-cat-harness-content-holds-no-c.md"
    },
    {
      "id": "folio-assistant-yag0",
      "title": "WHO-IRIS LIBRARY VIEWER IS A SHELL: the page generates, the link is right, and neither the corpus entry nor the 3 materialized assets appear",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-yj32",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T05:46:53Z",
      "updatedAt": "2026-10-02T13:36:37Z",
      "preview": "Reported by the owner, 2026-09-23, from the deployed site:\n\n> library for who-iris does not work,\n> https://litlfred.github.io/folio-assistant/cat-harness/docs-auto/index/docs/who-iris-docs/\n>\n> i got to there by clickinv library under\n> https://litlfred.github.io/folio-assistant/who-iris/ whcih should toak me to\n> who-iris library w/ 3 thigns … (at least, all materialized assets)\n\n## What is NOT ",
      "file": "beans/defs/folio-assistant-yag0--who-iris-library-viewer-is-a-shell-the-page-genera.md"
    },
    {
      "id": "folio-assistant-ybp4",
      "title": "ADAPTERS CLOSURE step 2/2: adapters/document/ + its 6 consuming tests -> folio-assistant-core, escape axis 2 -> 0",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T20:04:19Z",
      "updatedAt": "2026-10-01T08:15:15Z",
      "preview": "Step 2 of the adapters closure planned in `r0tm`, **on the owner's ruling of\noption A** (two PRs, paper first). Step 1 landed as `880b707f1da` (bean\n`y5si`), so only the atomic half remained. This earns `yj6r`'s last unticked\nbox. PR #1687.\n\n## What moved\n\n**18 files**: the 12 under `cat-harness/adapters/document/` and the 6 consuming\ntests from `cat-harness/scripts/tests/`. The tests moved WITH t",
      "file": "beans/defs/folio-assistant-ybp4--adapters-closure-step-22-adaptersdocument-its-6-co.md"
    },
    {
      "id": "folio-assistant-ybsz",
      "title": "S6 standalone rehearsal: ho66, pyds, mer2 -> tndo -> zmdo, izqr, wggr",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:14:34Z",
      "updatedAt": "2026-10-16T10:10:00Z",
      "preview": "## Done when\n- [x] check:cat-harness-standalone green from a fresh sibling clone\n- [x] mer2 instance-init split; tndo MVP defined; izqr bootstrap on empty repo\n- [x] wggr stub inversion\n\n## State 2026-10-09\nTicked: `mer2`, `tndo`, `izqr` and `wggr` are all `completed` in the store (checked 2026-10-09).\nBox 1 is not met: `bun run cat check:cat-harness-standalone` run by me 2026-10-09 in the index c",
      "file": "beans/defs/folio-assistant-ybsz--s6-standalone-rehearsal-ho66-pyds-mer2-tndo-zmdo-i.md"
    },
    {
      "id": "folio-assistant-ybwt",
      "title": "Placement PR1: content-type skill packages move up to their owning instances",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-9umr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T05:31:12Z",
      "updatedAt": "2026-10-21T17:21:00Z",
      "preview": "PR1 of the approved placement proposal (owner rulings 2026-09-30; bean 9umr's eight groups; PR0 mechanisms in bean ejye). Move the content-type skill packages out of `cat-harness/skills/` to the instance that owns them, into the `content` / `library` concern group there:\n\n- paper / formal-math (`folio-paper-adapter`, `authoring-math`) and the three `claude-scientific-skills` packages -> `folio-ass",
      "file": "beans/defs/folio-assistant-ybwt--placement-pr1-content-type-skill-packages-move-up.md"
    },
    {
      "id": "folio-assistant-yc74",
      "title": "arXiv licence vocabulary: ingest arXiv's licence pages and make archiving-arxiv able to fill a licence.json",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:38:48Z",
      "updatedAt": "2026-10-08T05:42:00Z",
      "preview": "## Brief\n\nOwner, 2026-10-02: *\"ingest docs and add to doc ingestion skills for arxiv papers\"*,\nwith arXiv's two licence pages attached. Queued beside the train-6 rebuild rather\nthan pivoting, per the standing instruction.\n\n## Why it was worth doing\n\n`archiving-arxiv` already said the right thing — *\"arXiv hosting does not imply a\nredistributable licence\"* — and then stopped, naming no licence, no ",
      "file": "beans/defs/folio-assistant-yc74--arxiv-licence-vocabulary-ingest-arxivs-licence-pag.md"
    },
    {
      "id": "folio-assistant-yex5",
      "title": "DRAIN COORDINATION: spawned helper sessions refuse owner authority relayed by the coordinator — lane B stopped after one bean awaiting the owner's own words",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ml9h",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-10T15:54:05Z",
      "updatedAt": "2026-10-20T15:15:49Z",
      "preview": "Lane B (session_01QmRtjQNyHiH2RuimTfuJDu) stopped after closing lvoa: its permission classifier denied push to litlfred/folio-assistant, send_message to the coordinator, and then a read-only beans show, because the drain task reached it from another session, not from the owner. It also (correctly) refused to treat the relayed 4 h merge window as the owner's. Lane C has not hit this.\n\n## Done when\n",
      "file": "beans/defs/folio-assistant-yex5--drain-coordination-spawned-helper-sessions-refuse.md"
    },
    {
      "id": "folio-assistant-yfqh",
      "title": "W3C N-Quads distribution schema, packaging skill, and universal named query engine",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-whlc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T23:37:59Z",
      "updatedAt": "2026-10-08T19:50:00Z",
      "preview": "Implements the W3C N-Quads distribution schema, packaging skill, and universal named query engine:\n- External schema `w3c-n-quads` registered in `external-schemas/w3c-n-quads.json`.\n- Platform schema `folio-nquads-distribution/v1` in `schemas/nquads-distribution.ts` with partition size ceiling constants.\n- Packaging skill `nquads-distribution` and execution skill `named-query-execution` in `skills",
      "file": "beans/defs/folio-assistant-yfqh--w3c-n-quads-distribution-schema-packaging-skill.md"
    },
    {
      "id": "folio-assistant-yg29",
      "title": "GOAL 3: showing who-iris with its existing materialised assets, through a themed harness",
      "status": "completed",
      "type": "milestone",
      "priority": "high",
      "parent": "",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T18:48:29Z",
      "updatedAt": "2026-10-05T04:57:30Z",
      "preview": "The owner's words, 2026-09-20 (session_017PqeiS4JYySSWGAYLedmus), kept verbatim:\n\n> showing who-iris w/ existing materialized assets with themed harness.\n\nCreated on the owner's ruling for bean `wqht`: *\"wqht - milesotne\"*.\n\n## Epics under this milestone\n\n| epic | why |\n|---|---|\n| `kupb` | IRIS CATALOGUE — a referenced import of who-iris into the KG, its themes, and the SDLC that tests a sample i",
      "file": "beans/defs/folio-assistant-yg29--goal-3-showing-who-iris-with-its-existing-material.md"
    },
    {
      "id": "folio-assistant-yg4c",
      "title": "INGEST: WHO Editorial Style Manual OCR errors ('nome', 'Manval', 'opproved') are strong enough to shape an LSI dimension",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T21:51:12Z",
      "updatedAt": "2026-09-29T23:26:00Z",
      "preview": "who-pub-tps-931 went through the OCR rung; recurring misreads are frequent enough to load LSI dimension 2 of the per-document index. Done when: the misreads are counted, and either corrected at ingestion or re-OCR'd, with the count going to zero.\n\nFound 2026-09-29 by the LSI/CA analysis of who-iris (bean ansc, report cat-harness/docs/proposals/lsi-who-iris-2026-09-29.md); lsi:near found no existin",
      "file": "beans/defs/folio-assistant-yg4c--ingest-who-editorial-style-manual-ocr-errors-nome.md"
    },
    {
      "id": "folio-assistant-ygga",
      "title": "A STALE SUBMODULE PIN makes a generator run its OLD code and report success, and the gate guarding its output re-runs the same stale writer and finds it current",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T09:28:22Z",
      "updatedAt": "2026-10-07T17:24:00Z",
      "preview": "## Measured 2026-10-03 on PR #1959, with a 101-file blast radius\n\nA generator that lives in a submodule runs the code the **pin** points at, not\nthe code `main` carries. After `git merge origin/main` the pin moves, and a\nworktree whose submodules were not re-initialised runs the OLD generator.\n\nWhile resolving `beans/README.md` on `claude/platform-milestone`,\n`bun run cat readme:subgraphs` was run",
      "file": "beans/defs/folio-assistant-ygga--a-stale-submodule-pin-makes-a-generator-run-its-ol.md"
    },
    {
      "id": "folio-assistant-ygk5",
      "title": "B4 (#1168): a test run names its skill; cases checked against the skill's contract",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T05:34:30Z",
      "updatedAt": "2026-09-24T06:43:27Z",
      "preview": "Part of s4sp (plan B4). TestRun.skill (required, SkillName) and optional cases[{input,output}]. crdm-detect gets input/output contracts (owner chose 'Also write a contract'); the eval records skill + all 27 cases. scripts/test-run-conformance.ts validates cases with Zod fromJSONSchema (no second schema, bean 319n). kg-audit: test-run-skill-resolves, test-run-conforms, test-run-checkable. tool-cove",
      "file": "beans/defs/folio-assistant-ygk5--b4-1168-a-test-run-names-its-skill-cases-checked-a.md"
    },
    {
      "id": "folio-assistant-ygzh",
      "title": "TEST PLAN schema: test-plan/v1 (FHIR R5 TestPlan shape), test-run gains plan + sut, test-report/v1 per-plan rollup",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-3fva",
      "blocking": [
        "folio-assistant-18p1",
        "folio-assistant-3o5b"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:00:47Z",
      "updatedAt": "2026-10-01T09:30:19Z",
      "preview": "Arc `3fva`, proposal §3.2 and §4 items 5.1 and 5.2. Can be dispatched now: these are new files, and only the graph-kind registry edit is shared.\n\n- `test-plan/v1` has:\n  - `scope` (the system-under-test kind and version range)\n  - `requirements[]` as `req:` refs\n  - `testCases[]`, each with an id, assertions whose ids are criterion ids, `testData` refs and an optional Gherkin `.feature`\n  - `depen",
      "file": "beans/defs/folio-assistant-ygzh--test-plan-schema-test-planv1-fhir-r5-testplan-shap.md"
    },
    {
      "id": "folio-assistant-yhcq",
      "title": "kg-viewer visualiser: 8 wireframe findings",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T10:36:14Z",
      "updatedAt": "2026-10-02T07:14:42Z",
      "preview": "Findings from the as-is wireframe `cat-harness/docs/wireframes/kg-viewer/` (intent.md, as-is.html, checks/), observed at 1280×800 and 390×844. Verbatim from its `## Findings`; a finding tagged → is also covered by that cross-cutting bug.\n\n1. **The page scrolls sideways at phone width on first load.** Measured: `scrollWidth` 606 against a 390 viewport before any facet is chosen, and the Kind and Su",
      "file": "beans/defs/folio-assistant-yhcq--kg-viewer-visualiser-8-wireframe-findings.md"
    },
    {
      "id": "folio-assistant-yhjr",
      "title": "bootstrap-tools SubgraphInput.subdirs: supply subdirectory descriptions from the harness (~49 READMEs)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-01T08:00:46Z",
      "updatedAt": "2026-10-01T09:39:44Z",
      "preview": "Arc `3fva`, proposal §4 item 0.4. This is item 3 of the 2026-10-01 handover.\n\nbootstrap-tools #2 (`9c00c534966`) accepts `SubgraphInput.subdirs`, but nothing supplies it, so no README has changed.\n\nTo do: resolve the subdirectory descriptions in `harnessInstances` in `cat-harness/scripts/subgraph-readmes.ts`, using `registry.get(kind)?.declarationFile`. `subgraph: true` already separates promoted ",
      "file": "beans/defs/folio-assistant-yhjr--bootstrap-tools-subgraphinputsubdirs-supply-subdir.md"
    },
    {
      "id": "folio-assistant-yj32",
      "title": "HARNESS AS INTERFACE: a harness instance's default rendering is LHS + docs/ + a themed folio board, and it is a KG-DS management system",
      "status": "todo",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-rwmf",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-20T13:47:14Z",
      "updatedAt": "2026-10-05T04:57:14Z",
      "preview": "Owner, 2026-09-20, verbatim — this is the largest architectural statement in\nthe session and paraphrasing it would lose the parts that constrain the design:\n\n> these avatars should aslso be the default display background for their\n> corresponding docs/ (ghpages) rendering, on which panels and folios and what\n> not renders. kindof like the shared miro board background... the harness\n> instnace disp",
      "file": "beans/defs/folio-assistant-yj32--harness-as-interface-a-harness-instances-default-r.md"
    },
    {
      "id": "folio-assistant-yj6r",
      "title": "ESCAPES: 15 instance-boundary imports check:partition cannot see, and the gate that sees them but never fails",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T07:47:30Z",
      "updatedAt": "2026-10-07T17:18:00Z",
      "preview": "Found 2026-09-27 while answering the owner's question *\"how resolve/gate/qa escape\nimports?\"* — sibling to `zlmp` under the same SPLIT epic, and **not** a reopening\nof it.\n\n## Two axes, and only one of them has ever been driven to zero\n\n`zlmp` drove the MODULE axis to zero: `check:partition` reports **0**\nwrong-direction edges today, and that is correct on its own terms — it measures\nedges between",
      "file": "beans/defs/folio-assistant-yj6r--escapes-15-instance-boundary-imports-checkpartitio.md"
    },
    {
      "id": "folio-assistant-ymsu",
      "title": "kg:detangle:check CANNOT FAIL inside bun run cat gates — bun test repairs the sidecar 1140 lines earlier in the same run",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-25T18:38:34Z",
      "updatedAt": "2026-10-07T05:08:00Z",
      "preview": "Measured 2026-09-25, while establishing whether PR #1348 still had anything to\nfix. It is the ROOT CAUSE of #1348's own subject: the detangle staleness that\nbroke `main` was invisible to `bun run cat gates` and surfaced only because a test\nrun left the working tree dirty.\n\n## The mechanism\n\n`bun run cat gates` runs 152 gates in order. Gate 1 is `bun test`. Somewhere in that\nsuite the detangle **wr",
      "file": "beans/defs/folio-assistant-ymsu--kgdetanglecheck-cannot-fail-inside-bun-run-gates-b.md"
    },
    {
      "id": "folio-assistant-ymvt",
      "title": "INDEX.CONFIG.JSON: one root file declares the instantiated harnesses, their sources and which one controls <base>/index.html",
      "status": "completed",
      "type": "feature",
      "priority": "high",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T22:20:18Z",
      "updatedAt": "2026-10-22T16:49:00Z",
      "preview": "## The owner's decision (2026-10-07)\n\n> migration to index.config.json importing <harness>.config.json information as needed\n\nThen, the same evening: *\"go ahead and start the migration NOW to index.config.json, /coordinate as needed\"*.\n\nIssue #2483. Proposal `cat-harness/docs/proposals/index-config.md`. Skill `index-config`.\n\n## What it is\n\nA root `index.config.json` (`folio-index-config/v1`) decl",
      "file": "beans/defs/folio-assistant-ymvt--indexconfigjson-one-root-file-declares-the-instant.md"
    },
    {
      "id": "folio-assistant-yn2k",
      "title": "B10f (#1168): move instance namespaces to their planned repos' own hosts? (owner decision)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T19:28:44Z",
      "updatedAt": "2026-09-30T20:13:16Z",
      "preview": "B10e made the owner/repo → IRI map derived (instanceNamespace in schemas/instance-repositories.ts). Today cat-harness and folio-assistant-core mint under https://litlfred.github.io/folio-assistant/<stub>/ns#, which does NOT survive the split; bootstrap already mints under its own host (iriBase https://litlfred.github.io/bootstrap/). Moving the other two means declaring iriBase (e.g. https://litlfr",
      "file": "beans/defs/folio-assistant-yn2k--b10f-1168-move-instance-namespaces-to-their-planne.md"
    },
    {
      "id": "folio-assistant-yo4m",
      "title": "B5 (#1168): arrow-direction QA — @general nodes point only at general nodes",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-24T12:11:06Z",
      "updatedAt": "2026-09-24T13:16:02Z",
      "preview": "Part of s4sp (plan B5, 'QA check first, then fixes'). @general on RoleDef, SkillDefinition, RequirementStatement, GraphKindDef, CapabilityDefinition, ActorDef, ActorDefinition, ProcessId (owner: core six + Process). schema-graph reads the tag; scripts/arrow-direction.ts checks schema @refs and BPMN folio pointers; kg-audit criterion arrow-direction (major). Reports 19 findings for later fixes: 9 f",
      "file": "beans/defs/folio-assistant-yo4m--b5-1168-arrow-direction-qa-general-nodes-point-onl.md"
    },
    {
      "id": "folio-assistant-yqc4",
      "title": "CI observability: a failing e2e job is opaque to anyone who cannot reach the log host",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T13:56:51Z",
      "updatedAt": "2026-10-07T14:15:00Z",
      "preview": "## Brief\n\nOwner, 2026-10-03: *\"Have the workflow upload the Playwright report on failure — right\nnow a red E2E job is opaque to any agent that can't reach the log host.\"*\n\n## The defect\n\nA red `End-to-end + accessibility` job carried its diagnosis in exactly one place: the\nrun log, on `productionresultssa14.blob.core.windows.net`. A cloud session whose network\npolicy denies that host sees only the",
      "file": "beans/defs/folio-assistant-yqc4--ci-observability-a-failing-e2e-job-is-opaque-to-an.md"
    },
    {
      "id": "folio-assistant-yr93",
      "title": "Check before you create, extended: dedupe on the TARGET object, a stale-claim reset rule, close-evidence reconciliation",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T15:09:15Z",
      "updatedAt": "2026-10-04T15:30:37Z",
      "preview": "Evidence: qou work-plan analysis 2026-10-04 (session https://claude.ai/code/session_01NdDGeP1SyShmoUssLuRZ91). qou: 141 duplicate groups, mostly generator re-runs filing the same Lean declaration under different titles; 567/584 in-progress beans untouched >14 days.\n\n## Done when\n- [x] todo-manager or bean-coordination carries: target-keyed dedupe, lsi:near as the latent check, the 14-day no-commit",
      "file": "beans/defs/folio-assistant-yr93--check-before-you-create-extended-dedupe-on-the-tar.md"
    },
    {
      "id": "folio-assistant-yscf",
      "title": "PROVENANCE REFUSAL: yl-3.pdf (ML resource optimization for hybrid ETL) is not admissible as evidence",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-slw1",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:30:19Z",
      "updatedAt": "2026-09-24T00:17:04Z",
      "preview": "Owner attached `yl-3.pdf` on 2026-09-23 with no instruction, then chose *\"verify\nprovenance first, then report\"* over ingesting it. This is that report. **Nothing\nwas filed**; the PDF is not in `uploads/` and no library entry exists.\n\nThe document: \"Machine Learning–Based Resource Optimization for Hybrid ETL\nPipelines Across Multi-Cloud Platforms\", attributed to Anjali Sharma (Stanford),\nWei Chen ",
      "file": "beans/defs/folio-assistant-yscf--provenance-refusal-yl-3pdf-ml-resource-optimizatio.md"
    },
    {
      "id": "folio-assistant-ytqn",
      "title": "MAIN IS RED: claim-branch-store's conflict test is SYSTEMATICALLY over bun's 5s default in CI — 3 runs at 5820/6252/6908ms, passes alone in 16s",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1xhc",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T08:10:15Z",
      "updatedAt": "2026-10-07T17:25:00Z",
      "preview": "`cat-harness/scripts/tests/claim-branch-store.test.ts` — *\"THE REAL CONFLICT: a\nsibling writes BETWEEN our read and our write — `expect` catches it\"` — **times\nout against bun's 5000 ms default in every CI run measured**, and the assertion\nthat reports is `Expected: \"already-claimed\" / Received: \"unknown\"`, which is\nthe timeout cutting the probe short rather than a wrong verdict.\n\nLanded on `main`",
      "file": "beans/defs/folio-assistant-ytqn--main-is-red-claim-branch-stores-conflict-test-is-s.md"
    },
    {
      "id": "folio-assistant-yx9p",
      "title": "SEPARATION: the 5 partition package names and the 5 instance directory names do not agree — 1 of 5 does",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-26T06:33:48Z",
      "updatedAt": "2026-09-30T13:47:14Z",
      "preview": "Measured 2026-09-26. `repo-partition.ts` partitions 1143 modules into five\ntarget packages. The repository holds sixteen declared instances as sibling\ndirectories. **The two naming schemes agree on one of five.**\n\n| partition package | directory | the directory's declared `name` |\n|---|---|---|\n| `agentic-harness` | `cat-harness/` | `cat-harness` |\n| `folio-assist-core` | `folio-assistant-core/` |",
      "file": "beans/defs/folio-assistant-yx9p--separation-the-5-partition-package-names-and-the-5.md"
    },
    {
      "id": "folio-assistant-yxob",
      "title": "Formal-edge extractor in folio-assistant-sci + generated blueprint export (#1492)",
      "status": "in-progress",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-29T23:18:38Z",
      "updatedAt": "2026-10-22T14:30:00Z",
      "preview": "Tracks litlfred/folio-assistant#1492. Owner decisions (2026-09-29): the hybrid, no LeanArchitect; an elaborated formal-edge extractor; tools and skills in folio-assistant-sci, never in core (\"f-a-core has high level processes only, no tooling\").\n\n## Todo\n- [x] core: `elaborated` source label, `isElaborated`, and one `summarizeSources` rule shared by the reader (content-graph.ts) and the writer (le",
      "file": "beans/defs/folio-assistant-yxob--formal-edge-extractor-in-folio-assistant-sci-gener.md"
    },
    {
      "id": "folio-assistant-yy4u",
      "title": "stage-ig-sites drops input/data/: IG data files (features.yaml) never reach Jekyll _data, so site.data.features renders blank",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-09T15:38:22Z",
      "updatedAt": "2026-10-09T17:02:18Z",
      "preview": "Root cause of the blank links found 2026-10-09 (see the strict-variables bean):\nsmart-immunizations defines `site.data.features.github.{repo_owner,repo_name}` in\n`input/data/features.yaml` — the IG Publisher copies `input/data/*` into Jekyll's\n`_data/` — but `fhir-harness/scripts/stage-ig-sites.ts` never stages\n`input/data/`, so in the just-the-docs build `site.data.features` does not exist\nand `t",
      "file": "beans/defs/folio-assistant-yy4u--stage-ig-sites-drops-inputdata-ig-data-files-featu.md"
    },
    {
      "id": "folio-assistant-yywu",
      "title": "Repo root cleanup: excise root tools/ and docs/; move stray .beans/ bean into beans/defs",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-7x5n",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:05:32Z",
      "updatedAt": "2026-10-07T17:47:00Z",
      "preview": "Owner ruling 2026-10-06 (this session): 'excise tools/ docs/ it's confusing'.\n\nAudit (read-only, 2026-10-06): root tools/ is a 1-line barrel re-exporting cat-harness/tools that NOTHING imports (the apparent consumers resolve ../tools relative to cat-harness/scripts/); root docs/ is an empty overlay composed over cat-harness/docs/ (owner ruling 2026-09-21), holding only .gitkeep + README. .beans/ i",
      "file": "beans/defs/folio-assistant-yywu--repo-root-cleanup-excise-root-tools-and-docs-move.md"
    },
    {
      "id": "folio-assistant-yzp9",
      "title": "Preview cap by size: rotate STAGING previews to a 3 GB total, not a count of 10",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T06:10:18Z",
      "updatedAt": "2026-10-04T17:26:07Z",
      "preview": "Owner, 2026-10-04 (session 01LW3Zx): replace the #1868 count cap (MAX_PREVIEWS = 10) with a byte budget, 3 GB. Previews grew from ~88 MiB (2026-09-22) to 200-780 MB, so 10 previews rotate off in 1-2 h. Keep the current preview + the most recently updated others while the total fits; remove the rest oldest-first, same records as today.\n\n- [x] staging-rotate.ts: MAX_PREVIEW_BYTES, planRotation by by",
      "file": "beans/defs/folio-assistant-yzp9--preview-cap-by-size-rotate-staging-previews-to-a-4.md"
    },
    {
      "id": "folio-assistant-z1x6",
      "title": "PAGE WEIGHT: post-build HTML minification, and nav_exclude for the generated reference sections (#1885)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-o3xy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:51:57Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Owner-approved, 2026-10-02. Three changes were proposed; two are mine and one stands down.\n\n**Brief — what and why.** The published gh-pages tree holds 2481 MiB of HTML (measured below). About 9-10% of every page is HTML comments: maintainer prose in `head_custom.html` and generator banners, serialised into every one of 14,543 pages. A decision memo proposed hand-converting 30 comments in one incl",
      "file": "beans/defs/folio-assistant-z1x6--page-weight-post-build-html-minification-and-nav-e.md"
    },
    {
      "id": "folio-assistant-z3rf",
      "title": "Route outline-less PDFs: inferred contents when trusted (6xaz + mean confidence >= 0.6), else page granularity (#2302)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-cp3v",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T05:08:20Z",
      "updatedAt": "2026-10-07T10:44:51Z",
      "preview": "Owner decision on #2302 (2026-10-07): option 1. A PDF with no outline uses its inferred contents when it passes the 6xaz concentration check AND the entries' mean confidence is at least 0.6; otherwise pdf-structure.py falls back to page granularity (one section per page) instead of today's single whole-document section.\n\n## Todo\n- [x] Measure the threshold on the benchmark corpus (mean confidence ",
      "file": "beans/defs/folio-assistant-z3rf--route-outline-less-pdfs-inferred-contents-when-tru.md"
    },
    {
      "id": "folio-assistant-z4mq",
      "title": "Zod modules are tool KG nodes that maintain the public JSON-LD / JSON Schema",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-zzmr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T22:22:06Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "## The requirement, in the author's words (2026-09-18)\n\n> make sure schema skills and tools as separated well. the zod(.ts) should be\n> tool KG nodes that implement maintaining a json-ld/json schema for public\n> authoritative. it is the CODING convention of cat-harness that the zod/.ts\n> toolchain is used to maintain INTERNAL the json schema. it is a REQUIREMENT\n> that any instance of cat-harness ",
      "file": "beans/defs/folio-assistant-z4mq--zod-modules-are-tool-kg-nodes-that-maintain-the-pu.md"
    },
    {
      "id": "folio-assistant-z6xd",
      "title": "FALSE COVERAGE: three gates declare @covers themes and none reads the themes graph — the kind reads covered over ground nothing reaches",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-1swy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T11:28:43Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "Found 2026-09-30 during a goal review, and confirmed independently before\nbeing written down.\n\n`bun run cat audit:coverage` reports the `themes` graph kind as:\n\n```json\n{\"kind\": \"themes\", \"state\": \"covered\", \"directories\": [\"who-iris/themes\"],\n \"criteria\": [], \"gates\": [\"bun run cat check:theme-art:check\",\n \"bun run cat theme:page:check\", \"bun run cat themes:css:check\"],\n \"typed\": true, \"hasFiles\"",
      "file": "beans/defs/folio-assistant-z6xd--false-coverage-three-gates-declare-covers-themes-a.md"
    },
    {
      "id": "folio-assistant-z7n1",
      "title": "qa:resolve-conflicts staged with a plain git add, so a branch that gitignores its results directory aborted merge:main",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-d33q",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-03T17:55:24Z",
      "updatedAt": "2026-10-07T11:50:38Z",
      "preview": "Found 2026-10-03 while measuring why `merge:main`'s last `push` run\n(37140844477) was red. Fixed in the same turn; recorded because the *shape* of\nthe failure is the reusable part.\n\n## What happened\n\nThe run's conclusion was `failure`, and 14 of its 15 matrix members had\nsucceeded. Reading a matrix run's conclusion as a claim about every member is\nthe same error as reading a filter's output as a c",
      "file": "beans/defs/folio-assistant-z7n1--qaresolve-conflicts-staged-with-a-plain-git-add-so.md"
    },
    {
      "id": "folio-assistant-z9hh",
      "title": "Merge refused: #2093 owed CI not green on its head",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-7x5n",
      "blocking": [
        "folio-assistant-gz47"
      ],
      "blockedBy": [],
      "createdAt": "2026-10-04T14:30:43Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "PR #2093, handed back by the Merge Manager on 2026-10-04 (BACKFILLED at 14:50Z: the hand-back was made as a PR comment and a queue entry only, without this bean. Owner: \"Backfill + enforce\").\n\n## Refused\n- `merge:steward` at 14:30Z: Rule_HeadNotGreen: conflict declared, own CI missing-required.\n- Queue entry (`beans/queue/litlfred--folio-assistant--2093.json`, status `active`): ACK: Owner-approved",
      "file": "beans/defs/folio-assistant-z9hh--merge-refused-2093-owed-ci-not-green-on-its-head.md"
    },
    {
      "id": "folio-assistant-zacz",
      "title": "Merge train: a refused member gets a bean, a hand-back with a fail condition, or a dispatch",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-nok9",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T16:59:06Z",
      "updatedAt": "2026-10-06T19:30:00Z",
      "preview": "Owner, 2026-10-02: \"update skills: if a merge in queue cannot be merged for some reason, create a new bean (under appropriate epic/story…), hand it back to the sibling (use the agent-to-agent handoff process with a fail condition) for resolution, or dispatch an agent as appropriate.\"\n\nUntil now a merge steward handled a refused train member ad hoc, with a PR comment or a message to the owning sess",
      "file": "beans/defs/folio-assistant-zacz--merge-train-a-refused-member-gets-a-bean-a-hand-ba.md"
    },
    {
      "id": "folio-assistant-zaui",
      "title": "CERTIFICATION family in qa-attestations/v1: where test-plan-execution files a signed certification",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T05:48:39Z",
      "updatedAt": "2026-10-22T16:45:00Z",
      "preview": "Follow-up from 3o5b (owner, 2026-10-02: open a bean). test-plan-execution.bpmn's A_FileCertification names the attestations graph as its destination, but qa-attestations/v1 has no certification family, so the filing step has nowhere to write.\n\n## Do\n- add a `certification` family to qa-attestations/v1 (schema + store paths under test/attestations/certification/)\n- the filing step writes it; corrup",
      "file": "beans/defs/folio-assistant-zaui--certification-family-in-qa-attestationsv1-where-te.md"
    },
    {
      "id": "folio-assistant-zcak",
      "title": "Library viewer: shared edit/feedback links, and the Document view for a folio's library (smart-ra review version)",
      "status": "completed",
      "type": "feature",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-07T05:05:49Z",
      "updatedAt": "2026-10-07T09:44:54Z",
      "preview": "Owner 2026-10-07: (1) 'do the document viewer TOC for smart-ra review version' — the frozen DPI-H review version in smart-ra library/ gets the #2303 Document view (TOC, pages, sections) on smart-ra's staging site, so the page/line a public comment cites opens there. (2) 'fix library viewer has no edit or feedback links' — every library entry and section gets the shared edit-links recipe (bean v433",
      "file": "beans/defs/folio-assistant-zcak--library-viewer-shared-editfeedback-links-and-the-d.md"
    },
    {
      "id": "folio-assistant-zckw",
      "title": "check:declared-paths: rewrite the ~1,950 literals in 70lx-moved cat-harness-tools code to resolve through declarations (owner: no re-baseline)",
      "status": "completed",
      "type": "task",
      "priority": "high",
      "parent": "folio-assistant-ml9h",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-11T07:00:59Z",
      "updatedAt": "2026-10-16T06:40:49Z",
      "preview": "Owner ruling 2026-10-11 ~06:55 UTC (drain ml9h, asked in session_01JkK6uP3iU2etyMbrw7v3cu): **Rewrite the code** — no re-baseline. At folio-assistant#2529's pins check:declared-paths reports 199 named files (23 new) and 1973 literals unaccounted for against a baseline of 27, in 46 cat-harness-tools files that 70lx moved from cat-harness (it scans codeRoots = [root, TOOLS_ROOT]).\n\nAssigned to lane ",
      "file": "beans/defs/folio-assistant-zckw--checkdeclared-paths-rewrite-the-1950-literals-in-7.md"
    },
    {
      "id": "folio-assistant-zdfa",
      "title": "INIT SIBLING LINK: staging.yml gets platform_dir ../platform, outside the Actions checkout; a subfolder folio's workflow lands where GitHub never reads it",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-q4jm",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T18:06:56Z",
      "updatedAt": "2026-10-07T14:55:47Z",
      "preview": "Found by ojcx's real run, 2026-09-23. `init-folio --link sibling --assistant ../platform` writes `platform_dir: ../platform` into `.github/workflows/staging.yml`. In Actions, that path is outside the checkout, so the reusable workflow's \"Check out the platform\" step cannot place the platform there. A sibling checkout exists on the author's machine, never in CI. The folio-test run worked only becau",
      "file": "beans/defs/folio-assistant-zdfa--init-sibling-link-stagingyml-gets-platform-dir-pla.md"
    },
    {
      "id": "folio-assistant-zdty",
      "title": "CUTOVER DEPOSITS TO FSH-GUTS: state:seed --cutover deposits a verified snapshot + provenance into the instance's fsh-guts before removing; folio_init declares fsh-guts by default",
      "status": "completed",
      "type": "task",
      "priority": "",
      "parent": "folio-assistant-fs43",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T19:11:46Z",
      "updatedAt": "2026-10-07T17:48:00Z",
      "preview": "Owner, 2026-10-06 (verbatim): \"cutover dirs should go to fsh-guts\".\n\nHolder: session_013WbQekVypi9A6YQbLDXMmJ, branch claude/awesome-fermi-ua31th-cutover-fsh-guts.\n\n## Done when\n- [ ] cutoverMain deposits a `retired/` pair (git-archive tar.gz + folio-fsh-guts/v1 .md with provenance) into the cut-over directory's own instance's fsh-guts graph via branch-store, verified by re-read, BEFORE the remova",
      "file": "beans/defs/folio-assistant-zdty--cutover-deposits-to-fsh-guts-stateseed-cutover-dep.md"
    },
    {
      "id": "folio-assistant-zhg2",
      "title": "REFERENCE DIRECTION: generalise bootstrap's no-upward-reference rule to all 17 instances, sharing check:partition's direction computation",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-23T22:51:10Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "## State — delivered, advisory, green. Not merged.\n\nIssue #1219, PR #1222, `bun run cat gates` 139/139, 34 tests in 194ms on synthetic trees.\n\n## The rule\n\nOwner, 2026-09-23: *\"if sub1 depends (directly or through chain) stub0, no references/context etc points stub0 → sub1.\"* `bootstrap-tools/schemas/graph.test.ts` enforces it for ONE instance (`iwtn`); this generalises it to all 17.\n\n## Absorbing",
      "file": "beans/defs/folio-assistant-zhg2--reference-direction-generalise-bootstraps-no-upwar.md"
    },
    {
      "id": "folio-assistant-zjm1",
      "title": "VACUOUS CLEAN: devils-advocate 'clean (all rebutted)' is satisfied by ZERO objections, and the sidecar skip then makes it sticky",
      "status": "completed",
      "type": "bug",
      "priority": "",
      "parent": "folio-assistant-0ipy",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T23:49:21Z",
      "updatedAt": "2026-10-09T12:09:00Z",
      "preview": "## The defect, quoted\n\n`cat-harness/skills/authoring/authoring-core/devils-advocate-watcher.md:186`:\n\n> Then assign the block a `da-referee-verdict`: `clean` (**all rebutted**),\n> `survivable-objection` (≥1 partial, none surviving), or `open-objection`\n> (≥1 surviving).\n\n**\"All rebutted\" is vacuously true over an empty set.** A block where every\nlens returned no objection at all earns the SAME ver",
      "file": "beans/defs/folio-assistant-zjm1--vacuous-clean-devils-advocate-clean-all-rebutted-i.md"
    },
    {
      "id": "folio-assistant-zldg",
      "title": "BLOCKING IS UNRECORDABLE: the skill prescribes `status: blocked`, which the CLI and schema both refuse — so 0 of 99 blocks carry an expiry",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-ahvw",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-22T11:43:50Z",
      "updatedAt": "2026-09-22T11:50:46Z",
      "preview": "Found 2026-09-22 by a dispatched audit of the in-progress population, then\nre-derived from `origin/main` rather than from the audit's report.\n\n## The contradiction, checked three ways\n\n| source | says |\n|---|---|\n| `skills/sdlc/sdlc-core/bean-blocking.md` §\"When it really is blocked\" | its worked example is **`status: blocked`** · waits on · since · expires · handoff |\n| `beans update --help` | *\"",
      "file": "beans/defs/folio-assistant-zldg--blocking-is-unrecordable-the-skill-prescribes-stat.md"
    },
    {
      "id": "folio-assistant-zlmp",
      "title": "Drain the wrong-direction import edges so the repo split can cut",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T21:55:40Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "## The measurement\n\n`bun run cat check:partition`. A wrong-direction edge is a lower layer importing\nfrom a higher one; after a cut each is a **circular dependency between\nrepositories**, so the number has to reach zero.\n\n| | edges | unassigned |\n|---|---|---|\n| start, 2026-09-18 | 51 | 4 |\n| after `lean-packages` | 44 | 4 |\n| after `markdown-ast` | 43 | 4 |\n| after judging the last six | 49 | 0 |",
      "file": "beans/defs/folio-assistant-zlmp--drain-the-wrong-direction-import-edges-so-the-repo.md"
    },
    {
      "id": "folio-assistant-zlq9",
      "title": "CAT-QA-REPORTS: read and write either branch name before the rename (PR #1913, bean 32f6)",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-3fva",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-02T19:14:12Z",
      "updatedAt": "2026-10-02T22:05:44Z",
      "preview": "Requested by the merge steward (session 01ToWZR4…, owner-approved 2026-10-02): special branches get a cat- prefix (PR #1913, bean 32f6); qa-reports → cat-qa-reports is next. The steward will not rename until this arc confirms dual-name support is pushed and green.\n\n## Rule (from #1913)\ncat-qa-reports if it exists, else qa-reports if it exists, else cat-qa-reports. Writers use the same rule. Read #",
      "file": "beans/defs/folio-assistant-zlq9--cat-qa-reports-read-and-write-either-branch-name-b.md"
    },
    {
      "id": "folio-assistant-zmdo",
      "title": "SPLIT: bootstrap agentic-harness + folio-assist-core as forks, then prove an empty-repo bootstrap",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-vke6",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-18T17:24:16Z",
      "updatedAt": "2026-10-04T12:12:34Z",
      "preview": "## The ask\n\nOwner, in chat 2026-09-18, verbatim intent:\n\n> when we get to an MVP for agent-harness and folio-assist-core, create\n> the two repo as forks of folio-asst. then delete/modify the new repos\n> until we get to a state we can test under a new/empty repo \"bootstrap a\n> litlfred/folio-assistant here\"\n\nSo: **fork twice, subtract, then prove the result bootstraps from nothing.**\n\n## Why fork-a",
      "file": "beans/defs/folio-assistant-zmdo--split-bootstrap-agentic-harness-folio-assistant-co.md"
    },
    {
      "id": "folio-assistant-zmm2",
      "title": "B9d (#1168): rename voice source kgRef → path, skill front matter capability: → requiresCapability",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-tr05",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-30T10:54:25Z",
      "updatedAt": "2026-09-30T14:29:18Z",
      "preview": "Owner, 2026-09-30: Rename both. Voice source kgRef holds a file path (76 uses); skill front-matter capability: (19 files) collides with the Capability kind. Codemod plus retired-name record so the old names fail loudly.\n\n## Done when\n- [ ] both renamed across the corpus, readers updated\n- [ ] old names recorded as retired and rejected\n\n\n\n## 2026-09-30 progress\n- [x] voice source kgRef → path (37 v",
      "file": "beans/defs/folio-assistant-zmm2--b9d-1168-rename-voice-source-kgref-path-skill-fron.md"
    },
    {
      "id": "folio-assistant-zpso",
      "title": "Glass settings panel opens under the tile dock (navbar wireframe, seen on the build)",
      "status": "completed",
      "type": "bug",
      "priority": "normal",
      "parent": "folio-assistant-4ccr",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-06T18:52:19Z",
      "updatedAt": "2026-10-07T17:15:00Z",
      "preview": "Recorded in the navbar wireframe's Findings (\"Seen on the build, not one of the twelve\"), re-drawn in #2295 (bean `folio-assistant-1q4b`); first noted in #1810 as \"found, not fixed\".\n\n## Defect\n\nAt 1280×800, opening ⚙ Glass settings from the tile dock puts the panel at y = 591. Its body sits under the fixed tile dock until the reader scrolls the glass. The controls the tile has just opened cannot ",
      "file": "beans/defs/folio-assistant-zpso--glass-settings-panel-opens-under-the-tile-dock-nav.md"
    },
    {
      "id": "folio-assistant-zru7",
      "title": "ACCESSIBILITY: all 70 translated pages serve html lang=en-US; 56 are never corrected even at runtime",
      "status": "completed",
      "type": "bug",
      "priority": "high",
      "parent": "folio-assistant-bzyu",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-27T08:24:45Z",
      "updatedAt": "2026-10-07T18:03:00Z",
      "preview": "Found 2026-09-27 while settling `sfjo`'s last item. **Observed in a built site, not\ninferred** — which matters, because `sfjo` carries a correction about exactly the\nopposite mistake (inferring a consequence from a key's name).\n\n## Measured, by building the site with `bun run cat preview:site`\n\n    translated pages built                              70\n    declaring a `lang` that is NOT their loca",
      "file": "beans/defs/folio-assistant-zru7--accessibility-all-70-translated-pages-serve-html-l.md"
    },
    {
      "id": "folio-assistant-zxvh",
      "title": "Special-branch size budgets: declared in special-branches.json, checked by bun run cat health",
      "status": "completed",
      "type": "task",
      "priority": "normal",
      "parent": "folio-assistant-uhkv",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-10-04T06:49:43Z",
      "updatedAt": "2026-10-04T17:26:07Z",
      "preview": "Owner, 2026-10-04: \"also update healthchecks for limits on the other specal branches (e.g. lean cache 4gb, auto-docs 1gb, beans 100mb, todos 100mb)\"; lean cache = whole family; auto-docs = cat/cat-harness/auto-docs/* each <= 1gb (bean 06e3 / #2049 owns the branch and the docs-auto -> auto-docs rename, told 2026-10-04); qa-reports = own branch, 500 MB.\n\n- [x] budget field on special-branches.json r",
      "file": "beans/defs/folio-assistant-zxvh--special-branch-size-budgets-declared-in-special-br.md"
    },
    {
      "id": "folio-assistant-zzmr",
      "title": "KG: the knowledge graph's own structure, declaration and publication",
      "status": "in-progress",
      "type": "epic",
      "priority": "normal",
      "parent": "folio-assistant-vuip",
      "blocking": [],
      "blockedBy": [],
      "createdAt": "2026-09-19T11:43:44Z",
      "updatedAt": "2026-10-04T15:12:15Z",
      "preview": "The graph's own structure — how it declares itself, and how it reaches a reader.\n\n`1dfh` publishes it and `ovkk` is why the publication is currently lossy: the\n`@context` declares 19 terms while the graph uses 53, so a conforming JSON-LD\nprocessor drops thousands of property occurrences. Publishing a graph nobody\ncan parse is worse than not publishing it, so these two move together.\n\n`z4mq` and `c",
      "file": "beans/defs/folio-assistant-zzmr--kg-the-knowledge-graphs-own-structure-declaration.md"
    }
  ],
  "edges": [
    {
      "blocker": "folio-assistant-129h",
      "blocked": "folio-assistant-5hox",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-16ei",
      "blocked": "folio-assistant-2ae2",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-16ei",
      "blocked": "folio-assistant-c8uq",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-16ei",
      "blocked": "folio-assistant-cxcn",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-16ei",
      "blocked": "folio-assistant-d6bw",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-16ei",
      "blocked": "folio-assistant-id4s",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-1j3q",
      "blocked": "folio-assistant-xsrv",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-2ee5",
      "blocked": "folio-assistant-4ak5",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-3o5b",
      "blocked": "folio-assistant-ff09",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-4l4d",
      "blocked": "folio-assistant-5hox",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-5ki9",
      "blocked": "folio-assistant-70zt",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-5xzc",
      "blocked": "folio-assistant-jwox",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-5xzc",
      "blocked": "folio-assistant-v26p",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-63wl",
      "blocked": "folio-assistant-apcg",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-6o1z",
      "blocked": "folio-assistant-vjbl",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-70lx",
      "blocked": "folio-assistant-iai8",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-70lx",
      "blocked": "folio-assistant-w2gr",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-8lcl",
      "blocked": "folio-assistant-y9r6",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-9f05",
      "blocked": "folio-assistant-0qjq",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-9gkj",
      "blocked": "folio-assistant-wekz",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-a9tx",
      "blocked": "folio-assistant-h3tx",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-b8de",
      "blocked": "folio-assistant-apcg",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-e0hw",
      "blocked": "folio-assistant-4ak5",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-f16o",
      "blocked": "folio-assistant-xp5j",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-f3bh",
      "blocked": "folio-assistant-5hox",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-f8wp",
      "blocked": "folio-assistant-8lcl",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-ho66",
      "blocked": "folio-assistant-smbc",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-hx65",
      "blocked": "folio-assistant-7dek",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-hx65",
      "blocked": "folio-assistant-ejye",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-hx65",
      "blocked": "folio-assistant-ga6u",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-hx65",
      "blocked": "folio-assistant-j7ql",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-hx65",
      "blocked": "folio-assistant-rmi6",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-jg8s",
      "blocked": "folio-assistant-p67i",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-jwox",
      "blocked": "folio-assistant-qbfi",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-jwox",
      "blocked": "folio-assistant-txut",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-lb8h",
      "blocked": "folio-assistant-5hox",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-mac1",
      "blocked": "folio-assistant-wnhh",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-mfhc",
      "blocked": "folio-assistant-wm63",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-mgxw",
      "blocked": "folio-assistant-w0at",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-najo",
      "blocked": "folio-assistant-ixmq",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-nama",
      "blocked": "folio-assistant-4j86",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-ndp0",
      "blocked": "folio-assistant-t1vl",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-ns96",
      "blocked": "folio-assistant-uoob",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-ojcx",
      "blocked": "folio-assistant-txut",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-oqe3",
      "blocked": "folio-assistant-7mwa",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-p9bu",
      "blocked": "folio-assistant-vj2p",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-pyds",
      "blocked": "folio-assistant-70lx",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-pzwb",
      "blocked": "folio-assistant-4fv8",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-rfuq",
      "blocked": "folio-assistant-txue",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-tfo1",
      "blocked": "folio-assistant-d3yq",
      "declaredOn": [
        "blocking"
      ]
    },
    {
      "blocker": "folio-assistant-tfqf",
      "blocked": "folio-assistant-7mwa",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-tlat",
      "blocked": "folio-assistant-apcg",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-txut",
      "blocked": "folio-assistant-q4cm",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-wlyg",
      "blocked": "folio-assistant-lvk9",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-xd1g",
      "blocked": "folio-assistant-biz4",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-xffc",
      "blocked": "folio-assistant-d3yq",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-xsrv",
      "blocked": "folio-assistant-lbz8",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-y9r6",
      "blocked": "folio-assistant-vj2p",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-ygzh",
      "blocked": "folio-assistant-18p1",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-ygzh",
      "blocked": "folio-assistant-3o5b",
      "declaredOn": [
        "blocked_by"
      ]
    },
    {
      "blocker": "folio-assistant-z9hh",
      "blocked": "folio-assistant-gz47",
      "declaredOn": [
        "blocking"
      ]
    }
  ],
  "findings": [
    {
      "kind": "blocked-without-expiry",
      "bean": "folio-assistant-pzwb",
      "blocks": "folio-assistant-4fv8",
      "detail": "blocks `folio-assistant-4fv8` (declared by its blocked_by:), and neither states an expiry, so the block cannot be told from abandoned work"
    },
    {
      "kind": "blocker-closed",
      "bean": "folio-assistant-ygzh",
      "blocks": "folio-assistant-18p1",
      "detail": "is completed but still blocks `folio-assistant-18p1`, which is draft"
    },
    {
      "kind": "blocking-unknown",
      "bean": "folio-assistant-ojcx",
      "blocks": "folio-assistant-txut",
      "detail": "is named as blocking `folio-assistant-txut` (in `folio-assistant-txut`'s blocked_by:) but is not a bean in this store"
    }
  ],
  "plan": {
    "milestones": [
      {
        "id": "folio-assistant-vuip",
        "title": "GOAL 1: separation of repos into dir/repos, each harness instantiation with config and initiation steps skilled, tooled and tested",
        "file": "beans/defs/folio-assistant-vuip--goal-1-separation-of-repos-into-dirrepos-each-harn.md",
        "status": "in-progress",
        "epics": 12,
        "total": 311,
        "closed": 258,
        "open": 53,
        "inProgress": 24,
        "todo": 29,
        "draft": 0,
        "unclassified": 0,
        "share": 0.8295819935691319
      },
      {
        "id": "folio-assistant-p5wm",
        "title": "GOAL 2: LHS navbar working with instantiated harness, showing folios with the bootstrap exception, and stickies that move around on the folio",
        "file": "beans/defs/folio-assistant-p5wm--goal-2-lhs-navbar-working-with-instantiated-harnes.md",
        "status": "completed",
        "epics": 0,
        "total": 5,
        "closed": 5,
        "open": 0,
        "inProgress": 0,
        "todo": 0,
        "draft": 0,
        "unclassified": 0,
        "share": 1
      },
      {
        "id": "folio-assistant-yg29",
        "title": "GOAL 3: showing who-iris with its existing materialised assets, through a themed harness",
        "file": "beans/defs/folio-assistant-yg29--goal-3-showing-who-iris-with-its-existing-material.md",
        "status": "completed",
        "epics": 1,
        "total": 11,
        "closed": 11,
        "open": 0,
        "inProgress": 0,
        "todo": 0,
        "draft": 0,
        "unclassified": 0,
        "share": 1
      },
      {
        "id": "folio-assistant-rwmf",
        "title": "GOAL 4 / PLATFORM: the harness's own reliability — gates, process, QA, merge pipeline, deployment — which every GOAL stands on",
        "file": "beans/defs/folio-assistant-rwmf--goal-4-platform-the-harnesss-own-reliability-gates.md",
        "status": "in-progress",
        "epics": 20,
        "total": 631,
        "closed": 573,
        "open": 58,
        "inProgress": 24,
        "todo": 33,
        "draft": 1,
        "unclassified": 0,
        "share": 0.9080824088748018
      },
      {
        "id": "folio-assistant-npuo",
        "title": "GOAL 5 / CONTENT: the content model and the ingest pipeline that feeds it",
        "file": "beans/defs/folio-assistant-npuo--goal-5-content-the-content-model-and-the-ingest-pi.md",
        "status": "in-progress",
        "epics": 2,
        "total": 74,
        "closed": 61,
        "open": 13,
        "inProgress": 7,
        "todo": 6,
        "draft": 0,
        "unclassified": 0,
        "share": 0.8243243243243243
      }
    ],
    "orphanOpen": 5,
    "openTotal": 132,
    "coveredOpen": 124,
    "duplicateIds": 0
  }
}
