U13 · reusable modules · library-ui-spec §6

The twelve parts, rendered once each

Every family below composes these. One HTML partial each in parts/, one stylesheet, dark tokens, no framework. View source: each block on this page is one partial fed one JSON object, shown under it.

12 parts + 5 atomstruthful empty statesreal 404Action Model presentation, receipts kept
00

Why parts

his words · the reading
  1. His words 1

    verbatim, from 00_AGENT_ZERO/source/ — never paraphrased

    Design these once, then compose the families above: Global CRM shell, grouped navigation, search and collapse control. Page heading, breadcrumb, purpose/subtitle and meaningful state badges. Authored reasoning block with source/interpretation distinction. Ecosystem loop and typed relationship map, with accessible text equivalents.library-ui-spec.md §6 Reusable page modules · LIBRARY-ZERO · 6 Sep 13:29 (commit 0aaac7a 13:35) · source
  2. Reading authored by the seat

    Every family composes the same parts; build them once as partials or every page drifts (the atlas already has 24 hand-written pages). The Action Model pages are the proof that these parts render from real data.

    Readers. Human: consistent reading. Agent: consistent DOM to parse.

    1. Which parts exist and what data does each take?
  3. What this page may claim

    Claim ceilingA part renders only what its JSON carries; empty means empty.
    Data it rendersa fixture page with all parts + their JSON shapes.
    Privacy
    Empty stateeach part has a truthful empty state (and the site has a real 404, GAPS F-3).
    Agent entryparts/<name>.html · the JSON shape under each block here
01

Index

  1. 1
    01 · Global shell builtthe CRM GroupedRail: grouped navigation, search, collapse; the rail on this page
  2. 2
    02 · Heading builtbreadcrumb · kicker · title · purpose · state badges · status panel
  3. 3
    03 · Reasoning block builthis words (source) vs the seat's reading, then the claim ceiling, data, privacy, empty state, agent entry
  4. 4
    04 · Map · typed relationship map + ecosystem loop builtthe mind map: repos, Works, questions, industries, people, nodes as a graph, with its text equivalent; and the loop
  5. 5
    05 · Repository cards builtevery repo incl. private: head, time, branch, visibility, access, rights
  6. 6
    06 · Sauce cards built3–7 genuinely useful assets, examples, datasets or receipts
  7. 7
    07 · Contents + procedure builtcapability list with states, and the ordered flow steps
  8. 8
    08 · Agent quick-start builtentry file, actual commands, owner, verification line, machine context
  9. 9
    09 · Evidence / limits / version builtfacts with receipts vs proposals, visibly distinct; limits; version
  10. 10
    10 · Activity strip builtobservation date and coverage, a density strip, the dated lines
  11. 11
    11 · Searchable catalogue builtcards with kicker, summary, state; text filter and select filters; visible count; truthful empty state
  12. 12
    12 · Related work builtnext reading, typed; never filler
  13. 13
    + · Atoms the parts share builtchips · metrics · words · timeline · section head
01

Global shell

the CRM GroupedRail: grouped navigation, search, collapse; the rail on this page · parts/../shell.mjs · shell/rail.{css,js} · robbed from SISOCRM GroupedRail (copied, not adapted)
The shell is the rail at the left of this page. Its markup comes from shell.mjs rail(); press [ and ⌘K.
JSON this part takes
null
02

Heading

breadcrumb · kicker · title · purpose · state badges · status panel · parts/heading.html · robbed from AM hero + status panel (system-map/part-page.css:8-15)
Work · knowledge_system · active

Foundry · industries, valuation, landscape watch

Industry research and value inputs for every SISO offer; 17 industry records, a law-firm pilot live.

public reposection ResearchV40 a9ffd16
JSON this part takes
{
  "breadcrumb": [
    {
      "label": "Works",
      "href": "#"
    },
    {
      "label": "siso-foundry"
    }
  ],
  "kicker": "Work <span class=\"sep\">·</span> knowledge_system <span class=\"sep\">·</span> <span class=\"dim\">active</span>",
  "title": "Foundry · industries, valuation, landscape watch",
  "subtitle": "Industry research and value inputs for every SISO offer; 17 industry records, a law-firm pilot live.",
  "badges": [
    {
      "label": "public repo",
      "tone": "now",
      "dot": true
    },
    {
      "label": "section Research",
      "tone": "research"
    },
    {
      "label": "V40 a9ffd16",
      "tone": "muted"
    }
  ],
  "status": {
    "kicker": "Current posture",
    "value": "active · 7 modules",
    "note": "Observed 6 Sep 13:42 from catalog.json.",
    "facts": [
      {
        "k": "owner",
        "v": "FOUNDRY-ZERO"
      },
      {
        "k": "last",
        "v": "6 Sep 13:42"
      }
    ]
  }
}
03

Reasoning block

his words (source) vs the seat's reading, then the claim ceiling, data, privacy, empty state, agent entry · parts/reasoning.html · robbed from AM research reader CLAIM CEILING · system-map evidence ladder
  1. His words 1

    verbatim, from 00_AGENT_ZERO/source/ — never paraphrased

    we also need to put reasoning in each of these templates because like right now it's quite simpleShaan · 6 Sep 18:19
  2. Reading authored by the seat

    A page without its reasoning is a layout. The block keeps what he said apart from what the seat read into it.

    Readers. Human: judge the reading against the words. Agent: the claim ceiling is the contract.

    1. Why does this page exist?
    2. What may it claim?
  3. What this page may claim

    Claim ceilingOnly what the record says; authored text is labelled.
    Data it rendersplan/templates.json reasoning block.
    PrivacyPublic.
    Empty stateNo source → the source column says so.
    Agent entrytemplates/<id>/README.md
JSON this part takes
{
  "source": [
    {
      "text": "we also need to put reasoning in each of these templates because like right now it's quite simple",
      "who": "Shaan",
      "at": "6 Sep 18:19"
    }
  ],
  "why": "A page without its reasoning is a layout. The block keeps what he said apart from what the seat read into it.",
  "readers": "Human: judge the reading against the words. Agent: the claim ceiling is the contract.",
  "questions": [
    "Why does this page exist?",
    "What may it claim?"
  ],
  "claim_ceiling": "Only what the record says; authored text is labelled.",
  "data": "plan/templates.json reasoning block.",
  "privacy": "Public.",
  "empty_state": "No source → the source column says so.",
  "agent_entry": "templates/<id>/README.md"
}
04

Map · typed relationship map + ecosystem loop

the mind map: repos, Works, questions, industries, people, nodes as a graph, with its text equivalent; and the loop · parts/map.html · loop.html · robbed from AM dependency link chips (system-map/index.html:152-157); loop from library-ui-spec §6
The ecosystem loop
JSON this part takes
{
  "centre": {
    "label": "Great Library",
    "href": "#"
  },
  "types": [
    {
      "type": "repo",
      "label": "Repos",
      "tone": "projects",
      "items": [
        {
          "label": "great-library-of-siso",
          "href": "#",
          "rel": "source"
        },
        {
          "label": "siso-shell",
          "href": "#",
          "rel": "shell"
        }
      ]
    },
    {
      "type": "question",
      "label": "Questions",
      "tone": "research",
      "items": [
        {
          "label": "GQ-012 context",
          "href": "#",
          "rel": "serves"
        },
        {
          "label": "GQ-013 building set",
          "href": "#",
          "rel": "serves"
        }
      ]
    },
    {
      "type": "people",
      "label": "People",
      "tone": "clients",
      "items": [
        {
          "label": "LIBRARY-ZERO",
          "href": "#",
          "rel": "seat"
        }
      ]
    },
    {
      "type": "node",
      "label": "Nodes",
      "tone": "now",
      "items": [
        {
          "label": "laptop",
          "href": "#",
          "rel": "built on"
        },
        {
          "label": "Cloudflare Pages",
          "href": "#",
          "rel": "served"
        }
      ]
    }
  ]
}
05

Repository cards

every repo incl. private: head, time, branch, visibility, access, rights · parts/repos.html · robbed from AM registry card grid; his 16:36 "even if they private"
sisodias/great-library-of-siso
https://github.com/sisodias/great-library-of-siso
public
main branch head 0aaac7a 6 Sep 13:42
The Library site build and registry.
sisodias/halocrm-mirror
no public locator
private
main branch head 37 commits 5 Sep
Private mirror; dated activity only, never payload.
client accountclient
No public payload
JSON this part takes
[
  {
    "repo": "sisodias/great-library-of-siso",
    "url": "https://github.com/sisodias/great-library-of-siso",
    "branch": "main",
    "head": "0aaac7a",
    "head_at": "6 Sep 13:42",
    "private": false,
    "what": "The Library site build and registry."
  },
  {
    "repo": "sisodias/halocrm-mirror",
    "private": true,
    "branch": "main",
    "head": "37 commits",
    "head_at": "5 Sep",
    "access": "client account",
    "rights": "client",
    "what": "Private mirror; dated activity only, never payload."
  }
]
06

Sauce cards

3–7 genuinely useful assets, examples, datasets or receipts · parts/sauce.html · robbed from AM resource room card grid (site/index.html:403-416)
JSON this part takes
[
  {
    "kind": "dataset",
    "title": "catalog.json",
    "href": "https://great-library-of-siso.pages.dev/catalog.json",
    "what": "47 Works, 27 repos, 86 releases as machine data.",
    "proof": "HTTP 200 · 6 Sep",
    "tone": "research"
  },
  {
    "kind": "receipt",
    "title": "J2 acceptance.json",
    "href": "#",
    "what": "Two arms, 12 holdout checks each, both pass.",
    "proof": "domains/compute/runs/2026-09-06-j2/acceptance.json",
    "tone": "research"
  },
  {
    "kind": "play",
    "title": "P1 publish",
    "href": "#",
    "what": "Publish a static dir to Cloudflare Pages with an exact readback.",
    "proof": "skills/publish v0.1.2",
    "tone": "agents"
  }
]
07

Contents + procedure

capability list with states, and the ordered flow steps · parts/contents.html · robbed from AM flow / process steps (blueprint .flow-step; system-map/index.html:93-104)
  1. 1
    S1 · CRM rail on every route partialverification: [ collapses on all three sites
  2. 2
    P1 · publish play landedHub 0.1.2
  3. 3
    L2 · 14 GQ pages leftfall through to root today
Registergls add work
Buildsrc/build.mjs
Verifynpm run verify
Publishpublish play, exact readback
JSON this part takes
{
  "items": [
    {
      "label": "S1 · CRM rail on every route",
      "what": "verification: [ collapses on all three sites",
      "state": "partial",
      "tone": "warn"
    },
    {
      "label": "P1 · publish play",
      "what": "Hub 0.1.2",
      "state": "landed",
      "tone": "now"
    },
    {
      "label": "L2 · 14 GQ pages",
      "what": "fall through to root today",
      "state": "left",
      "tone": "blocked"
    }
  ],
  "steps": [
    {
      "label": "Register",
      "what": "gls add work"
    },
    {
      "label": "Build",
      "what": "src/build.mjs"
    },
    {
      "label": "Verify",
      "what": "npm run verify"
    },
    {
      "label": "Publish",
      "what": "publish play, exact readback"
    }
  ]
}
08

Agent quick-start

entry file, actual commands, owner, verification line, machine context · parts/quickstart.html · robbed from library-ui-spec §6
.agents/PAGE.md
  1. npm run verify
  2. node bin/gls add work --file work.json --reviewed-public --dry-run
Agent entry
Read first
.agents/PAGE.md
Owner
LIBRARY-ZERO · last writeback 6 Sep 13:42
Machine
https://great-library-of-siso.pages.dev/works/siso-foundry/index.json
Done when
Open /works/siso-foundry/ and see eight sections in order.
JSON this part takes
{
  "entry": {
    "path": ".agents/PAGE.md"
  },
  "owner": {
    "name": "LIBRARY-ZERO",
    "last": "6 Sep 13:42"
  },
  "context_url": "https://great-library-of-siso.pages.dev/works/siso-foundry/index.json",
  "verification": "Open /works/siso-foundry/ and see eight sections in order.",
  "commands": [
    "npm run verify",
    "node bin/gls add work --file work.json --reviewed-public --dry-run"
  ]
}
09

Evidence / limits / version

facts with receipts vs proposals, visibly distinct; limits; version · parts/evidence.html · robbed from AM evidence ladder (system-map root) · reader file chips (lines · bytes · sha256)
fact · has a receiptproposal · not yet
Ratio medium/xhigh input tokens 1.00× (122,427 vs 122,327).domains/compute/runs/2026-09-06-j2/acceptance.json · 6 Sep
xhigh costs about four times medium.claim from a chart; not supplied; effort applied was null in both rollouts
Limits
  • One brief, one run per arm.
Version
j2.json · measured_with_limits
2026-09-06
JSON this part takes
{
  "facts": [
    {
      "claim": "Ratio medium/xhigh input tokens 1.00× (122,427 vs 122,327).",
      "receipt": "domains/compute/runs/2026-09-06-j2/acceptance.json",
      "at": "6 Sep"
    }
  ],
  "proposals": [
    {
      "claim": "xhigh costs about four times medium.",
      "why": "claim from a chart; not supplied; effort applied was null in both rollouts"
    }
  ],
  "limits": [
    "One brief, one run per arm."
  ],
  "version": {
    "label": "j2.json · measured_with_limits",
    "at": "2026-09-06"
  }
}
10

Activity strip

observation date and coverage, a density strip, the dated lines · parts/activity.html · robbed from AM freshness lane card · research-os CURRENT POSTURE
observed 6 Sep 19:14 UTC+07coverage · OWNERS.md last 48 h
  • 2026-09-06 18:48AGENT-ZEROSpawned TEMPLATE-BANK-ZERO
  • 2026-09-06 17:11AGENT-ZEROCRM GroupedRail ported to the atlas (v1)
JSON this part takes
{
  "observed_at": "6 Sep 19:14 UTC+07",
  "coverage": "OWNERS.md last 48 h",
  "days": [
    {
      "label": "5 Sep",
      "w": 0.6,
      "title": "5 Sep · 41 lines"
    },
    {
      "label": "6 Sep",
      "w": 1,
      "title": "6 Sep · 63 lines"
    }
  ],
  "items": [
    {
      "at": "2026-09-06 18:48",
      "who": "AGENT-ZERO",
      "what": "Spawned TEMPLATE-BANK-ZERO",
      "tone": "agents"
    },
    {
      "at": "2026-09-06 17:11",
      "who": "AGENT-ZERO",
      "what": "CRM GroupedRail ported to the atlas (v1)",
      "tone": "agents"
    }
  ]
}
11

Searchable catalogue

cards with kicker, summary, state; text filter and select filters; visible count; truthful empty state · parts/catalogue.html · catalogue.js · robbed from AM searchable track filter (blueprint/index.html:357-400) · registry card grid (system-map/registry.css:14-20)
JSON this part takes
{
  "id": "fixture",
  "filters": [
    {
      "key": "type",
      "label": "type",
      "values": [
        "research_question",
        "project"
      ]
    }
  ],
  "items": [
    {
      "id": "gq-011",
      "kicker": "research_question <span class=\"sep\">·</span> active",
      "title": "GQ-011 · Astra, Luna and delegation",
      "summary": "How do they yield more accepted work?",
      "href": "#",
      "status": "active",
      "tone": "research",
      "tags": [
        {
          "key": "type",
          "value": "research_question"
        }
      ],
      "search": "gq-011 astra luna delegation"
    },
    {
      "id": "library",
      "kicker": "project <span class=\"sep\">·</span> active",
      "title": "Great Library of SISO",
      "summary": "47 Works, 86 Releases, 94 pages.",
      "href": "#",
      "status": "active",
      "tone": "projects",
      "tags": [
        {
          "key": "type",
          "value": "project"
        }
      ],
      "search": "library works releases"
    }
  ]
}
+

Atoms the parts share

chips · metrics · words · timeline · section head · parts/chips.html · metrics.html · words.html · timeline.html · section.html · robbed from AM status chips · metric strip; his timeline picks (21st.dev nyxbui/timeline, great-ui revision timeline) for the lane idea
livepartialblockedprivate
47Works
86Releases
22God Questions
27repos · 23 public / 4 private
agents should be ephemeral … the projects are foreverShaan · 6 Sep 16:50
09-0509-06commits2026-09-05 20:11 · siso-shell adea8862026-09-05 23:50 · auto backupseats2026-09-06 16:31 · AGENT-ZERO born2026-09-06 18:47 · TEMPLATE-BANK-ZERO borndecisions2026-09-06 18:32 · D-30 Haiku sub-agents2026-09-06 18:47 · D-31…D-35his words2026-09-06 16:50 · not what I asked; CRM side nav2026-09-06 18:19 · templates, reasoning, side nav, order2026-09-06 18:41 · build the damn thing
commitsseatsdecisionshis words
JSON this part takes
{
  "chips": [
    {
      "label": "live",
      "tone": "now",
      "dot": true
    },
    {
      "label": "partial",
      "tone": "warn"
    },
    {
      "label": "blocked",
      "tone": "blocked"
    },
    {
      "label": "private",
      "tone": "clients",
      "icon": "lock"
    }
  ],
  "metrics": [
    {
      "value": 47,
      "label": "Works",
      "tone": "projects"
    },
    {
      "value": 86,
      "label": "Releases",
      "tone": "research"
    },
    {
      "value": 22,
      "label": "God Questions",
      "tone": "research"
    },
    {
      "value": 27,
      "label": "repos · 23 public / 4 private",
      "tone": "clients"
    }
  ],
  "words": [
    {
      "text": "agents should be ephemeral … the projects are forever",
      "who": "Shaan",
      "at": "6 Sep 16:50"
    }
  ],
  "timeline": {
    "from": "2026-09-05 12:00",
    "to": "2026-09-06 19:00",
    "lanes": [
      {
        "id": "commits",
        "label": "commits",
        "tone": "projects"
      },
      {
        "id": "seats",
        "label": "seats",
        "tone": "agents"
      },
      {
        "id": "decisions",
        "label": "decisions",
        "tone": "research"
      },
      {
        "id": "words",
        "label": "his words",
        "tone": "clients"
      }
    ],
    "events": [
      {
        "at": "2026-09-05 20:11",
        "lane": "commits",
        "label": "siso-shell adea886"
      },
      {
        "at": "2026-09-06 16:31",
        "lane": "seats",
        "label": "AGENT-ZERO born"
      },
      {
        "at": "2026-09-06 18:47",
        "lane": "seats",
        "label": "TEMPLATE-BANK-ZERO born"
      },
      {
        "at": "2026-09-06 18:32",
        "lane": "decisions",
        "label": "D-30 Haiku sub-agents"
      },
      {
        "at": "2026-09-06 18:47",
        "lane": "decisions",
        "label": "D-31…D-35"
      },
      {
        "at": "2026-09-06 16:50",
        "lane": "words",
        "label": "not what I asked; CRM side nav"
      },
      {
        "at": "2026-09-06 18:19",
        "lane": "words",
        "label": "templates, reasoning, side nav, order"
      },
      {
        "at": "2026-09-06 18:41",
        "lane": "words",
        "label": "build the damn thing"
      },
      {
        "at": "2026-09-05 23:50",
        "lane": "commits",
        "label": "auto backup",
        "auto": true
      }
    ]
  }
}
13

Empty, blocked, 404

each part has a truthful empty state; the site has a real 404 (GAPS F-3)
Empty list
No repository registered. Register one: node bin/gls add work --file … --reviewed-public
Empty catalogue
0 of 0
0 records; nothing registered yet. Register with node bin/gls add work --file … --reviewed-public.
Blocked / 404
404 · no page at this address. The bank's real 404 is /404.html, served by Cloudflare Pages for any unknown path.