@bongos/core 1.24.47 → 1.24.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.bongos-core.json CHANGED
@@ -2,22 +2,22 @@
2
2
  "artifact": "bongos-core",
3
3
  "manifest_schema": 1,
4
4
  "generator": "scripts/bongos/package-core.js",
5
- "core_version": "1.24.47",
6
- "core_contract": "1.24.47",
7
- "source_commit": "816b62ec33f75857ddfcfa52c46ce158bb97ca2d",
5
+ "core_version": "1.24.48",
6
+ "core_contract": "1.24.48",
7
+ "source_commit": "91038abe3953708f82a550014cb12edef2958336",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-11-07T08:16:53.782Z",
9
+ "built_at": "2026-11-07T08:42:12.588Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 637,
13
13
  "agent_docs_stubbed": 32,
14
- "functional_verbatim": 3866,
14
+ "functional_verbatim": 3868,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 4536,
20
- "tree_sha256": "e4985b2bf6f45f1ad5eb8044399df15f306f782c573cd8b5ee82407668324cef",
19
+ "file_count": 4538,
20
+ "tree_sha256": "6cf965537d37465adf43eecca79b7c00d1a7ca0788d6cf784cafddc3f09afa0f",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -2992,7 +2992,7 @@
2992
2992
  {
2993
2993
  "path": "docs/file-map.md",
2994
2994
  "mode": "0000644",
2995
- "sha256": "09e7065922a688cf3da3962c48c96513b5a35da269e44edb662c7323cf52db39"
2995
+ "sha256": "619986eb313ae589c6591ae0633e944dd132021b79829d6cd9c898aa8f795113"
2996
2996
  },
2997
2997
  {
2998
2998
  "path": "docs/handoff-template.md",
@@ -3002,7 +3002,7 @@
3002
3002
  {
3003
3003
  "path": "docs/module-api-changelog.md",
3004
3004
  "mode": "0000644",
3005
- "sha256": "7e0741cbd3de2eef3830cb9fc9d2320fa222e377cae25b9338ca35da03388c80"
3005
+ "sha256": "81df38e1a47ef91af298335da877aeb3c8d7a3c542226c3bd3be178be17b60a5"
3006
3006
  },
3007
3007
  {
3008
3008
  "path": "docs/modules-contract.md",
@@ -3092,7 +3092,7 @@
3092
3092
  {
3093
3093
  "path": "docs/page-readings.json",
3094
3094
  "mode": "0000644",
3095
- "sha256": "0fd1f930b8f3f4876d9d83c5d12076aa7464bf125219e51ad54adf0c3d601485"
3095
+ "sha256": "7ff43e165c82a1cb0f86e12b00c30d8b5d299df9b65dd1e394d9e1f5be31b7a5"
3096
3096
  },
3097
3097
  {
3098
3098
  "path": "docs/project-context.template.md",
@@ -6147,7 +6147,7 @@
6147
6147
  {
6148
6148
  "path": "modules/hall-ui/public/collab.css",
6149
6149
  "mode": "0000644",
6150
- "sha256": "4ee8e77a58b688c93d9d0588ec2a5e47ce7d751ae84101a8547f45f07a34b71f"
6150
+ "sha256": "9101ff72d9e4e5da7bf4156cd053cd81a2dbabc5a06ff1449f7732c116f039a7"
6151
6151
  },
6152
6152
  {
6153
6153
  "path": "modules/hall-ui/public/collab.html",
@@ -6189,6 +6189,11 @@
6189
6189
  "mode": "0000644",
6190
6190
  "sha256": "db7478f38975612c4915b79dc750fbe673cfaaf87f6e975049f53fce6bff772d"
6191
6191
  },
6192
+ {
6193
+ "path": "modules/hall-ui/public/controls.css",
6194
+ "mode": "0000644",
6195
+ "sha256": "07ebeae9de859a306f71f8c725557ddc314b542926fdd513f71743c0249f55bb"
6196
+ },
6192
6197
  {
6193
6198
  "path": "modules/hall-ui/public/copy-desk.css",
6194
6199
  "mode": "0000644",
@@ -6432,7 +6437,7 @@
6432
6437
  {
6433
6438
  "path": "modules/hall-ui/public/goals.css",
6434
6439
  "mode": "0000644",
6435
- "sha256": "a4a78aba4ce27b5c680215dab5f498f71df1da4e3cf601577541ec1495a6e476"
6440
+ "sha256": "00c85425311d3cc9989248d1de992d4e61793f37f22e2c31ecde58f6a57e7076"
6436
6441
  },
6437
6442
  {
6438
6443
  "path": "modules/hall-ui/public/goals.html",
@@ -6757,7 +6762,7 @@
6757
6762
  {
6758
6763
  "path": "modules/hall-ui/public/my-agents.css",
6759
6764
  "mode": "0000644",
6760
- "sha256": "34c747d8f4cd616050ded791b25d7de7ab53e1fc7be753c464be66415fc17fa6"
6765
+ "sha256": "ec956004b01636f6e6e728983d615b0e2796a479e26443947210ad311ad4629d"
6761
6766
  },
6762
6767
  {
6763
6768
  "path": "modules/hall-ui/public/my-agents.html",
@@ -6787,7 +6792,7 @@
6787
6792
  {
6788
6793
  "path": "modules/hall-ui/public/oversight.css",
6789
6794
  "mode": "0000644",
6790
- "sha256": "582ab7d5151e8125537f7a2d969485a446ed7b69b4c4dba1e6b43168afaf1a0e"
6795
+ "sha256": "07085be0e846d943a328216e40bffbfbc04abffbc56eb2604b9a1c412a2a1eaf"
6791
6796
  },
6792
6797
  {
6793
6798
  "path": "modules/hall-ui/public/page-notes.css",
@@ -6812,7 +6817,7 @@
6812
6817
  {
6813
6818
  "path": "modules/hall-ui/public/panel.css",
6814
6819
  "mode": "0000644",
6815
- "sha256": "24c8e77d50078b6f0a208e12564071eecdd298a0e27c3f4254e14489f443a22c"
6820
+ "sha256": "171505cf912faff8ed616c83992e374e930697506192797efab6ca5d6f6b7354"
6816
6821
  },
6817
6822
  {
6818
6823
  "path": "modules/hall-ui/public/primer-live.js",
@@ -7082,7 +7087,7 @@
7082
7087
  {
7083
7088
  "path": "modules/hall-ui/public/speciality-tools.js",
7084
7089
  "mode": "0000644",
7085
- "sha256": "b43d15e173b5a2075e80dc721b75c63d9d77fb0e60fe701c70f24deefd48bbf0"
7090
+ "sha256": "a001e2b73a600a11c693d0876638d56d2bd3f94208d8e16d9ed8a94ec14d2a5c"
7086
7091
  },
7087
7092
  {
7088
7093
  "path": "modules/hall-ui/public/street-amend.js",
@@ -7187,7 +7192,7 @@
7187
7192
  {
7188
7193
  "path": "modules/hall-ui/public/style.css",
7189
7194
  "mode": "0000644",
7190
- "sha256": "2bb31cbf3168e2bda1ad93e0d605fbfe223e4989116ede5094bcef1636b6ecf3"
7195
+ "sha256": "18f8138403c4a96bfd56f2ae7968990f85c2b102a2cafaca2e66e932806ad1b9"
7191
7196
  },
7192
7197
  {
7193
7198
  "path": "modules/hall-ui/public/task-detail.js",
@@ -11822,12 +11827,12 @@
11822
11827
  {
11823
11828
  "path": "package-lock.json",
11824
11829
  "mode": "0000644",
11825
- "sha256": "0c6db315913a8bb217d9d1471bdac4a9d5a60b4ce9b2084274bfc65d7c12d063"
11830
+ "sha256": "0c03976bf2421bf20f6c67d7758c0d54425b100222e27a63c955db73ea1603b2"
11826
11831
  },
11827
11832
  {
11828
11833
  "path": "package.json",
11829
11834
  "mode": "0000644",
11830
- "sha256": "68de6f15e7414272a1d127ab7fc2537f877d162cf8e6e5a18a1129bcdde95062"
11835
+ "sha256": "7f9e0a6d94e07f58ba95fca1a0527b148b1ca37e0f0e38c9f8cab7f1726de065"
11831
11836
  },
11832
11837
  {
11833
11838
  "path": "public-docs/index.html",
@@ -11847,7 +11852,7 @@
11847
11852
  {
11848
11853
  "path": "release-notes.json",
11849
11854
  "mode": "0000644",
11850
- "sha256": "3de9500808c88490e2021024389877b315c754829e5f478cf17d6be43847da0d"
11855
+ "sha256": "8a2964cb48a46e00aad4e45644c3fb29f5ebe165ed83e2361c123ca49fb3a214"
11851
11856
  },
11852
11857
  {
11853
11858
  "path": "scripts/bongos/CLAUDE.md",
@@ -15757,7 +15762,7 @@
15757
15762
  {
15758
15763
  "path": "src/module-api.js",
15759
15764
  "mode": "0000644",
15760
- "sha256": "638af2a4f3e8dbec321dc394c74384ebb29acc8e2b214dae528e3e689d40c9db"
15765
+ "sha256": "d8fb88197b3ad84172d48cbf5a08c84790c4aea8e88542b074c31a864b4cf5e2"
15761
15766
  },
15762
15767
  {
15763
15768
  "path": "src/module-loader/catalog.js",
@@ -16607,7 +16612,7 @@
16607
16612
  {
16608
16613
  "path": "tests/bulk_toolbar.mjs",
16609
16614
  "mode": "0000644",
16610
- "sha256": "3c0ed61e6b12548d4b54ac74a62cb1bcbdeec6030688bd917db3b6e9e4aa769d"
16615
+ "sha256": "d1848f277b63adb714c1f0f3734d8a4be9f65e7bfdc607217a4abd42e6d1d250"
16611
16616
  },
16612
16617
  {
16613
16618
  "path": "tests/bump_version.mjs",
@@ -18562,12 +18567,12 @@
18562
18567
  {
18563
18568
  "path": "tests/hall_board_world.mjs",
18564
18569
  "mode": "0000644",
18565
- "sha256": "33a9904829773113513fd3aca1b836bd3d352cbe3cf7443516040df56314c979"
18570
+ "sha256": "59e4e6cacd3fec0caf3a54b3b84367cf82f3447669f2cb4d8820d2a3922c4571"
18566
18571
  },
18567
18572
  {
18568
18573
  "path": "tests/hall_builders_page_pass.mjs",
18569
18574
  "mode": "0000644",
18570
- "sha256": "1517bb1b75a3f6373486bc96bb1aee0a5acf89b3f23b01d489392cbb6a27b09b"
18575
+ "sha256": "fd1c2fe5e906a7e534ffbba4b0e4cb66b4520057b75f410c3d985169991f4297"
18571
18576
  },
18572
18577
  {
18573
18578
  "path": "tests/hall_buildouts.mjs",
@@ -18619,6 +18624,11 @@
18619
18624
  "mode": "0000644",
18620
18625
  "sha256": "8389bf8de996930b3fdbd5b50411a784c0b2be7a611d92c13a2f484a22d62a2b"
18621
18626
  },
18627
+ {
18628
+ "path": "tests/hall_controls.mjs",
18629
+ "mode": "0000644",
18630
+ "sha256": "9ca93e9b9f65e02dc838d6dec7324be9bb8f21fc5513ded90eebadff11e3248d"
18631
+ },
18622
18632
  {
18623
18633
  "path": "tests/hall_error_envelope.mjs",
18624
18634
  "mode": "0000644",
@@ -18722,7 +18732,7 @@
18722
18732
  {
18723
18733
  "path": "tests/hall_oversight_world.mjs",
18724
18734
  "mode": "0000644",
18725
- "sha256": "7da613a413885168106af97c67777de41b11ec9f8e532e616fa7c661a6232175"
18735
+ "sha256": "95a3349e0da106ba6c8a1a10cd79e7508247896c528ea18562034009784f4666"
18726
18736
  },
18727
18737
  {
18728
18738
  "path": "tests/hall_page_gate_map.mjs",
@@ -18777,7 +18787,7 @@
18777
18787
  {
18778
18788
  "path": "tests/hall_record_world.mjs",
18779
18789
  "mode": "0000644",
18780
- "sha256": "cf868999a3c025940da3b443fc80f92b8be9dee5aa9a045791a8e2334ad03975"
18790
+ "sha256": "14a62cbb87534a4d4b3d5b9e0947562fed0190f4a5b35939b44e487fe41b0c0b"
18781
18791
  },
18782
18792
  {
18783
18793
  "path": "tests/hall_records.mjs",
@@ -18797,7 +18807,7 @@
18797
18807
  {
18798
18808
  "path": "tests/hall_settings_world.mjs",
18799
18809
  "mode": "0000644",
18800
- "sha256": "54e7f607ea32c6e727a0e4b121e67f1b846a6e1463a504e456db042d1158db2d"
18810
+ "sha256": "cf50e4a03eb7a0ad0e2452550ead68e3afc781b93b222177d9c1545514876ee5"
18801
18811
  },
18802
18812
  {
18803
18813
  "path": "tests/hall_signout.mjs",
package/docs/file-map.md CHANGED
@@ -112,7 +112,7 @@
112
112
  │ ├── sessions/ ← CORE-DOMAIN carve (BV1.R82, default-on): the session_records corpus + data plane (upload, cross-builder search/deep-dive), the BFG read-the-room scorer, session-pulse/stale-claim helpers. Registers no port — reached via HTTP POST to its own /sessions route; resolves the economy `reward` port for the cost-plus token reward. CLAUDE.md, module.json, routes/sessions.js, bfg.js, pulse.js.
113
113
  │ ├── autonomy/ ← CORE-DOMAIN carve (BV1.R83, default-on): the MAS autonomy surfaces — the $0 deterministic autonomy gate (System 3, inert until armed), the conductor/architect CLIs, and the in-process routine timers (incl. the weekly peer-vote-tally poller). Registers no port; resolves the lifecycle `tallyPeerVotes` doorway. CLAUDE.md, module.json, routes/autonomy.js, autonomy.js.
114
114
  │ ├── status-ui/ ← CORE-DOMAIN WEB-SURFACE carve (BV1.R84, default-on): the public status dashboard at status.<apex>, moved from public-status/. NO routes/db/port — declares contributes.webSurfaces:[{host:"status.",dir:"public"}], served by the loader web-surface seam (moduleWebSurfaces → serve-internal). CLAUDE.md, module.json, public/{index.html,status.js,style.css,cursors/,snapshots/}.
115
- │ ├── hall-ui/ ← CORE-DOMAIN WEB-SURFACE carve (BV1.R85, default-on): the authenticated builders' hall at builders.<apex>, moved from public-builders/ (~13k LOC, the largest). NO routes/db/port — declares contributes.webSurfaces:[{host:"builders.",dir:"public"}] for discovery, but UNLIKE status-ui keeps its DEDICATED serving block in serve-internal (the /builders shim + canonical redirects + citizen/Archon page gates + asset-stamping + hall-widget injection), partitioned out of the generic web-surface loop and served from BUILDERS_DIR. CLAUDE.md, module.json, records/ (one file per page family — what each family's redesign settled; CLAUDE.md points at them, and a new record is a new file there so concurrent hall tasks stop colliding on one insertion point, task 1003499), public/{index.html,builders.js,style.css,work,watch,gate,settings,ranks,sessions,primer,diagrams,atlas,...}.{html,js},cursors/,chime.wav. Four ARCHETYPE sheets sit beside the per-page ones: `record.css` (the task + idea records, task 1003305), `room.css` (the READING ROOMS — the primer + the diagrams index, task 1003306: the reading measure and rhythm, the table of contents, the progress hairline and the framed figure diagram-viewer.js upgrades on both pages), `oversight.css` (the OVERSIGHT family — government, watch, gate, task 1003469 (harbor was its fourth until task 1003890 removed the dev box): the row, the figure band inside a panel, the group head, the inline form, the grant toggle and the shared confirm modal; named oversight because the vocabulary wall bans "governance" on the government surface) and `panel.css` (the PANEL family — settings, profile, task 1003308 (pair was its third until task 1003890 removed the dev box): the row, the switch, the field with its label above, the chip control, the four voices and the sign-in gate; the hall's my-projects page was DELETED in the same task — "my projects" is the hub's user-level page, and the hall keeps no link or redirect; the family's fourth page `not-ready.html` was deleted by task 1003450, along with the emptied `requireNonXenosPage` gate that was the only thing redirecting to it). A page sheet then holds only what one page has and the others do not — `primer.css` the acknowledge gate, `diagrams.css` the legend strip, `gate.css` the hold reasons and file chips, `watch.css` the severities, the report reader and the grade trend, `settings.css` the rail layout, the group head, the token ladder and the voices grid, `profile.css` the identity band and the shelf, `roster.css` the Builders roster's identity cell (was `people.css`, shared with the cross-project `/people` directory until task 1003444 deleted that page — `/people` and its legacy door `/scouting` now 302 to `/roster`), `thinking.css` THE SKY's one sheet (task 1004231 / sky part 3 — `thinking.html` at `/thinking` is the prototype the owner adopted as the design of record, `docs/design/mocks/sky/`, built over `GET /sky` + `GET /sky/mine`; its script is the seven `sky-*.js` files on one shared `window.OTBSky`; it replaced THE ROOM of task 1004098, which survives as the list drawer, and the old `/sky` page, whose URL 301s here; `idea-objects.js` beside it is the shared five-object vocabulary).
115
+ │ ├── hall-ui/ ← CORE-DOMAIN WEB-SURFACE carve (BV1.R85, default-on): the authenticated builders' hall at builders.<apex>, moved from public-builders/ (~13k LOC, the largest). NO routes/db/port — declares contributes.webSurfaces:[{host:"builders.",dir:"public"}] for discovery, but UNLIKE status-ui keeps its DEDICATED serving block in serve-internal (the /builders shim + canonical redirects + citizen/Archon page gates + asset-stamping + hall-widget injection), partitioned out of the generic web-surface loop and served from BUILDERS_DIR. CLAUDE.md, module.json, records/ (one file per page family — what each family's redesign settled; CLAUDE.md points at them, and a new record is a new file there so concurrent hall tasks stop colliding on one insertion point, task 1003499), public/{index.html,builders.js,style.css,work,watch,gate,settings,ranks,sessions,primer,diagrams,atlas,...}.{html,js},cursors/,chime.wav. `controls.css`, which style.css @imports right after the shared token sheet, is the hall's ONE button (`.btn` + `--ghost`/`--sm`/`--text`, with the older names pages still write as aliases) and ONE text field / select / textarea (task 1005084). Four ARCHETYPE sheets sit beside the per-page ones: `record.css` (the task + idea records, task 1003305), `room.css` (the READING ROOMS — the primer + the diagrams index, task 1003306: the reading measure and rhythm, the table of contents, the progress hairline and the framed figure diagram-viewer.js upgrades on both pages), `oversight.css` (the OVERSIGHT family — government, watch, gate, task 1003469 (harbor was its fourth until task 1003890 removed the dev box): the row, the figure band inside a panel, the group head, the inline form, the grant toggle and the shared confirm modal; named oversight because the vocabulary wall bans "governance" on the government surface) and `panel.css` (the PANEL family — settings, profile, task 1003308 (pair was its third until task 1003890 removed the dev box): the row, the switch, the field with its label above, the chip control, the four voices and the sign-in gate; the hall's my-projects page was DELETED in the same task — "my projects" is the hub's user-level page, and the hall keeps no link or redirect; the family's fourth page `not-ready.html` was deleted by task 1003450, along with the emptied `requireNonXenosPage` gate that was the only thing redirecting to it). A page sheet then holds only what one page has and the others do not — `primer.css` the acknowledge gate, `diagrams.css` the legend strip, `gate.css` the hold reasons and file chips, `watch.css` the severities, the report reader and the grade trend, `settings.css` the rail layout, the group head, the token ladder and the voices grid, `profile.css` the identity band and the shelf, `roster.css` the Builders roster's identity cell (was `people.css`, shared with the cross-project `/people` directory until task 1003444 deleted that page — `/people` and its legacy door `/scouting` now 302 to `/roster`), `thinking.css` THE SKY's one sheet (task 1004231 / sky part 3 — `thinking.html` at `/thinking` is the prototype the owner adopted as the design of record, `docs/design/mocks/sky/`, built over `GET /sky` + `GET /sky/mine`; its script is the seven `sky-*.js` files on one shared `window.OTBSky`; it replaced THE ROOM of task 1004098, which survives as the list drawer, and the old `/sky` page, whose URL 301s here; `idea-objects.js` beside it is the shared five-object vocabulary).
116
116
  │ ├── lifecycle/ ← CORE-DOMAIN carve (BV1.R86, default-on): the build state machine — tasks · claims · versions · done-when · goals · dependencies · claim→ship→grade→credit · github-push + merge-lock + conflict-resolve + publish-reconciler. The LAST, most-coupled carve; registers the `lifecycle` kernel port (createTask, classifyTaskKind, tallyPeerVotes, work-tracking reads). CLAUDE.md, module.json, routes/{tasks,claims,versions,done-when,goals,dependencies,analytics}.js, lifecycle.js, github-push.js, merge-lock.js, conflict-resolve.js, publish-reconciler.js, task-visuals.js + task-visual-db.js + routes/visuals.js (the optional ship-time visual, task 1003109 — the route file is NOT named task-*.js on purpose; see the module CLAUDE.md).
117
117
  │ ├── copy-desk/ ← CORE-DOMAIN module (task 1003113 / R02 of goal 1000074, default-on): the COPY half of the design contract — ADR 0081 gave design TOKENS a repo-owned source of truth, text had none. Owns the FLAG (anyone in any role marks a string or a whole surface as needing an artist's attention, with a reason required in BOTH the route and a CHECK constraint) and the QUEUE an artist reads it from. READS R01's committed registry (docs/copy-registry.json, generated by scripts/bongos/copy-inventory.js) and never writes it. NO LIVE CMS is the hard non-goal: no column here could hold replacement text, and copy_no_cms.mjs pins that. Key is `copy-desk`, not `copy` — the branding contract already owns a `copy` block, so the bare word reds the "core carries no module code" fitness check. R03 (task 1003114, ADR 0233) added the PROPOSAL: an artist writes the replacement wording and it becomes a Bongos task carrying a fenced copy-proposal patch — no row, NO second migration (a proposals table is the forbidden column with extra steps), and scripts/bongos/copy-apply.js lands it as a real diff under a claim. BV2.TW05 (task 1004316, ADR 0341 D8) added Tweak Mode's three derived READS — GET /copy-desk/pages, /copy-desk/pages/:pageId, /copy-desk/tally: page status and count, changelog, drift, "N of M tweaked" per surface, and the artist's tally — over the page-tweak tasks (lifecycle port), docs/page-inventory.json and docs/page-readings.json (both now in the publish manifest), with no status table. BV2.TW06 (task 1004317, ADR 0341 D2, D5, D6) added its first two page WRITES: POST /copy-desk/pages/:pageId/claim (an artist-craft builder opens or takes the page's tweak round as a web-claimed task, through the lifecycle port's webClaimPageTweak, under an advisory lock on the page) and POST /copy-desk/pages/:pageId/asks (anyone files a page ask, a copy_desk_flags row with scope 'page', added by copy_desk_002_page_asks.sql). CLAUDE.md, module.json, registry.js, flags.js, proposals.js, pages.js (the page-tweak block format), page-status.js (the pure derivation), page-data.js (the page artifacts' read side), routes/copy-desk.js, migrations/copy_desk_001_flags.sql, migrations/copy_desk_002_page_asks.sql, tests/{copy_flags,copy_queue,copy_no_cms,copy_proposals,copy_page_status}.mjs + tests/fixtures/page-tweak.cjs. Its hall surface lives with hall-ui (public/copy-desk.{html,js,css}), per the one-key-per-web-surface precedent. skills/tweak/SKILL.md is the /tweak skill (contributes.skills; moved out of .claude/skills/ in task 1004471, hidden from the model listing, typed as /tweak).
118
118
  │ ├── page-notes/ ← the artist's page feedback docs (task 1004496, default-on): the Artistry palette button's store. A doc about one hall page, with up to eight reference images (stored in the DB, images only), turned into ideas by an AI split on submit and kept as the page's reference (?note=N). Apart from copy-desk, which may hold no wording. module.json, CLAUDE.md, notes.js (pure), split.js, db.js, routes/, migrations/.
@@ -3348,5 +3348,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
3348
3348
  landed since 1.24.45 with no explicit bump. run 42303836499. (task 1002620)
3349
3349
  1.24.47 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3350
3350
  landed since 1.24.46 with no explicit bump. run 42354688707. (task 1002620)
3351
+ 1.24.48 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3352
+ landed since 1.24.47 with no explicit bump. run 42356516568. (task 1002620)
3351
3353
  ---------------------------------------------------------------------------
3352
3354
  ```
@@ -12,7 +12,7 @@
12
12
  "surface": "builders",
13
13
  "title": "Studio",
14
14
  "states_read": ["pick","describe","make","waiting","result","result-own","failed","balance","balance-all","out"],
15
- "files_hash": "9ef6203cbb5b4769",
15
+ "files_hash": "b2b3e95de42dfc5c",
16
16
  "reading_hash": "e381a3141dc6b9cb",
17
17
  "counts": {"lines":105,"placed":38,"shared":9,"unplaced":58},
18
18
  "omitted": {"data":15},
@@ -130,7 +130,7 @@
130
130
  "surface": "builders",
131
131
  "title": "Repo Atlas",
132
132
  "states_read": ["map","truth","detail","index","out"],
133
- "files_hash": "720e8bedbb9c80e9",
133
+ "files_hash": "4a9e888b87175c2c",
134
134
  "reading_hash": "94058beb635218ba",
135
135
  "counts": {"lines":24,"placed":11,"shared":9,"unplaced":4},
136
136
  "omitted": {"data":3},
@@ -167,7 +167,7 @@
167
167
  "surface": "builders",
168
168
  "title": "Blockers",
169
169
  "states_read": ["default"],
170
- "files_hash": "7dec561c54f04ad1",
170
+ "files_hash": "b7b2c69edd2925bb",
171
171
  "reading_hash": "ab984bd8e91a5a9d",
172
172
  "counts": {"lines":35,"placed":14,"shared":9,"unplaced":12},
173
173
  "omitted": {"data":49},
@@ -215,7 +215,7 @@
215
215
  "surface": "builders",
216
216
  "title": "Board Room",
217
217
  "states_read": ["room","out","sitting-meta","objection-form"],
218
- "files_hash": "a194fd4f46e71bf8",
218
+ "files_hash": "5b70c7c9abe5b61c",
219
219
  "reading_hash": "020553cb2a438d56",
220
220
  "counts": {"lines":51,"placed":18,"shared":9,"unplaced":24},
221
221
  "omitted": {"data":15},
@@ -279,7 +279,7 @@
279
279
  "surface": "builders",
280
280
  "title": "The city",
281
281
  "states_read": ["city","fullscreen","switched","focus","pins","living","card","card-ask"],
282
- "files_hash": "e6beded3aa212df3",
282
+ "files_hash": "ee8ecdada2e4c990",
283
283
  "reading_hash": "11234462e18a0037",
284
284
  "counts": {"lines":44,"placed":10,"shared":9,"unplaced":25},
285
285
  "omitted": {"data":18},
@@ -336,7 +336,7 @@
336
336
  "surface": "builders",
337
337
  "title": "Collab",
338
338
  "states_read": ["board","out"],
339
- "files_hash": "8fad76f468fe3161",
339
+ "files_hash": "d4d9b179752abab9",
340
340
  "reading_hash": "2d5df14f73c44d86",
341
341
  "counts": {"lines":81,"placed":33,"shared":8,"unplaced":40},
342
342
  "omitted": {"data":21},
@@ -430,7 +430,7 @@
430
430
  "surface": "builders",
431
431
  "title": "Commands",
432
432
  "states_read": ["in","out"],
433
- "files_hash": "7468976c3fa7b540",
433
+ "files_hash": "0a9ebb56026d24c8",
434
434
  "reading_hash": "b7107deecbf6bf46",
435
435
  "counts": {"lines":70,"placed":46,"shared":9,"unplaced":15},
436
436
  "omitted": {"data":175},
@@ -513,7 +513,7 @@
513
513
  "surface": "builders",
514
514
  "title": "Copy desk",
515
515
  "states_read": ["queue","out","search","composer","closer","proposer"],
516
- "files_hash": "d1ea9c5b0816fe58",
516
+ "files_hash": "e65191cdc56aa926",
517
517
  "reading_hash": "4476deef6b37ffe5",
518
518
  "counts": {"lines":78,"placed":39,"shared":9,"unplaced":30},
519
519
  "omitted": {"data":119},
@@ -604,7 +604,7 @@
604
604
  "surface": "builders",
605
605
  "title": "Deploy",
606
606
  "states_read": ["work","out"],
607
- "files_hash": "5f2f55021fe5614e",
607
+ "files_hash": "d241408469807fcc",
608
608
  "reading_hash": "76c11d0fbc739610",
609
609
  "counts": {"lines":19,"placed":5,"shared":9,"unplaced":5},
610
610
  "omitted": {"data":3},
@@ -636,7 +636,7 @@
636
636
  "surface": "builders",
637
637
  "title": "The sky",
638
638
  "states_read": ["tour","sky","wells","ledger","full","full-back","out"],
639
- "files_hash": "5785ad36ba3661b9",
639
+ "files_hash": "9ff671db54d1d21e",
640
640
  "reading_hash": "2ae796b3e72c6d26",
641
641
  "counts": {"lines":49,"placed":22,"shared":8,"unplaced":19},
642
642
  "omitted": {"data":8},
@@ -698,7 +698,7 @@
698
698
  "surface": "builders",
699
699
  "title": "Goals",
700
700
  "states_read": ["list","filters","cards","detail","dependencies","out","uat","uat-panel","author"],
701
- "files_hash": "ca53c3a922103bd2",
701
+ "files_hash": "8bc7e03c5c44ae81",
702
702
  "reading_hash": "82f9b0ae157d2700",
703
703
  "counts": {"lines":186,"placed":58,"shared":9,"unplaced":119},
704
704
  "omitted": {"data":313},
@@ -897,7 +897,7 @@
897
897
  "surface": "builders",
898
898
  "title": "Government",
899
899
  "states_read": ["constitution","out","permissions","board","constitution-tab"],
900
- "files_hash": "97db2e33377e06cc",
900
+ "files_hash": "093b867279ca2a9d",
901
901
  "reading_hash": "0d1ee732e57189fb",
902
902
  "counts": {"lines":64,"placed":24,"shared":9,"unplaced":31},
903
903
  "omitted": {"data":274},
@@ -974,8 +974,8 @@
974
974
  "surface": "builders",
975
975
  "title": "Builders' Hall",
976
976
  "states_read": ["home","out","founding","genesis","decide","demo"],
977
- "files_hash": "244228482ef6e944",
978
- "reading_hash": "4daef7a5e606ab4a",
977
+ "files_hash": "96df8d2b56fcf48e",
978
+ "reading_hash": "e958c51fbd7cd953",
979
979
  "counts": {"lines":28,"placed":9,"shared":10,"unplaced":9},
980
980
  "omitted": {"data":4},
981
981
  "notes": ["founding: an action failed (page.focus: Timeout 6000ms exceeded.); read as it stood"],
@@ -999,7 +999,7 @@
999
999
  {"key":"L0017","section":"Needs your attention13","text":"Ideas awaiting triage","placement":"placed","file":"modules/hall-ui/public/builders.js","line":320,"string_id":"e181637c5a5e"},
1000
1000
  {"key":"L0018","section":"Needs your attention13","text":"Requires project {…} fix","placement":"unplaced"},
1001
1001
  {"key":"L0019","section":"footer","text":"Sign out","placement":"shared","file":"modules/hall-ui/public/shell.js","line":533,"string_id":"1883ad7f07fc"},
1002
- {"key":"L0020","section":"Needs your attention13","text":"core 1.24.45","placement":"unplaced"},
1002
+ {"key":"L0020","section":"Needs your attention13","text":"core 1.24.46","placement":"unplaced"},
1003
1003
  {"key":"L0021","section":"Needs your attention13","text":"Skip","placement":"unplaced"},
1004
1004
  {"key":"L0022","section":"Needs your attention13","text":"Built on","placement":"placed","file":"modules/hall-ui/public/welcome-boot.js","line":183,"string_id":"fef59346ffee"},
1005
1005
  {"key":"L0023","section":"Needs your attention13","text":"cloudbongos.com","placement":"unplaced"},
@@ -1015,7 +1015,7 @@
1015
1015
  "surface": "builders",
1016
1016
  "title": "Idea",
1017
1017
  "states_read": ["record","missing"],
1018
- "files_hash": "10dd7675dac80a44",
1018
+ "files_hash": "2bf22509542248f6",
1019
1019
  "reading_hash": "d227c6c40b282e6b",
1020
1020
  "counts": {"lines":50,"placed":20,"shared":10,"unplaced":20},
1021
1021
  "omitted": {"data":22},
@@ -1078,7 +1078,7 @@
1078
1078
  "surface": "builders",
1079
1079
  "title": "Ideas",
1080
1080
  "states_read": ["compose","full","develop"],
1081
- "files_hash": "a9f44d401aacba59",
1081
+ "files_hash": "68555a38475ce139",
1082
1082
  "reading_hash": "9ed251f7cc60a885",
1083
1083
  "counts": {"lines":67,"placed":31,"shared":9,"unplaced":27},
1084
1084
  "omitted": {"data":116},
@@ -1158,7 +1158,7 @@
1158
1158
  "surface": "builders",
1159
1159
  "title": "Market Watch",
1160
1160
  "states_read": ["desk","settings","out"],
1161
- "files_hash": "9855e0eeb2da0308",
1161
+ "files_hash": "3afd7efc2329a1ec",
1162
1162
  "reading_hash": "de1a8fdf7ebcc959",
1163
1163
  "counts": {"lines":13,"placed":3,"shared":9,"unplaced":1},
1164
1164
  "omitted": {"data":2},
@@ -1184,7 +1184,7 @@
1184
1184
  "surface": "builders",
1185
1185
  "title": "Market Watch",
1186
1186
  "states_read": ["dossier","out","propose","correct","filtered"],
1187
- "files_hash": "fd6a9f01ed534bc3",
1187
+ "files_hash": "4a48ae259435e2bb",
1188
1188
  "reading_hash": "12483255342bd007",
1189
1189
  "counts": {"lines":14,"placed":4,"shared":9,"unplaced":1},
1190
1190
  "omitted": {"data":2},
@@ -1211,7 +1211,7 @@
1211
1211
  "surface": "builders",
1212
1212
  "title": "Market Watch rules",
1213
1213
  "states_read": ["in","scoring","names","propose","out"],
1214
- "files_hash": "5b13769037f28355",
1214
+ "files_hash": "45f9e23cbe590739",
1215
1215
  "reading_hash": "bf661622dd283b83",
1216
1216
  "counts": {"lines":48,"placed":13,"shared":9,"unplaced":26},
1217
1217
  "omitted": {"data":45},
@@ -1272,7 +1272,7 @@
1272
1272
  "surface": "builders",
1273
1273
  "title": "Modules",
1274
1274
  "states_read": ["browse","search-empty","lens","details","out"],
1275
- "files_hash": "e982ba404d663f2c",
1275
+ "files_hash": "1d7a40310561b79e",
1276
1276
  "reading_hash": "cdf89441f9e9516e",
1277
1277
  "counts": {"lines":60,"placed":26,"shared":9,"unplaced":25},
1278
1278
  "omitted": {"data":105},
@@ -1345,7 +1345,7 @@
1345
1345
  "surface": "builders",
1346
1346
  "title": "Money",
1347
1347
  "states_read": ["money","hosting","out"],
1348
- "files_hash": "86e239e5c7c41266",
1348
+ "files_hash": "b6d08701a120d7a3",
1349
1349
  "reading_hash": "285d714c7aba1fc9",
1350
1350
  "counts": {"lines":82,"placed":25,"shared":9,"unplaced":48},
1351
1351
  "omitted": {"data":25},
@@ -1440,7 +1440,7 @@
1440
1440
  "surface": "builders",
1441
1441
  "title": "My agents",
1442
1442
  "states_read": ["desk","factory","saved","what-it-knows","speciality-walk","speciality-forms","nobody"],
1443
- "files_hash": "2e97591accb7d667",
1443
+ "files_hash": "8cf2940504ee588f",
1444
1444
  "reading_hash": "74d10b6c2a24ce2e",
1445
1445
  "counts": {"lines":138,"placed":60,"shared":9,"unplaced":69},
1446
1446
  "omitted": {"data":171},
@@ -1591,7 +1591,7 @@
1591
1591
  "surface": "builders",
1592
1592
  "title": "Primer",
1593
1593
  "states_read": ["in","toc-open","jump","out"],
1594
- "files_hash": "ac61677f94c8dcea",
1594
+ "files_hash": "26df9d5f81d36102",
1595
1595
  "reading_hash": "395c98d876001b5a",
1596
1596
  "counts": {"lines":486,"placed":54,"shared":9,"unplaced":423},
1597
1597
  "omitted": {"data":16},
@@ -2090,7 +2090,7 @@
2090
2090
  "surface": "builders",
2091
2091
  "title": "Profile",
2092
2092
  "states_read": ["own","works","activity","yours","activity-artist","activity-ideator","other","artist","ideator","out"],
2093
- "files_hash": "2e28f4868788fbce",
2093
+ "files_hash": "fa653436e07a2d38",
2094
2094
  "reading_hash": "fe899712427882ff",
2095
2095
  "counts": {"lines":219,"placed":77,"shared":9,"unplaced":133},
2096
2096
  "omitted": {"data":250},
@@ -2322,7 +2322,7 @@
2322
2322
  "surface": "builders",
2323
2323
  "title": "Project settings",
2324
2324
  "states_read": ["default"],
2325
- "files_hash": "647003a87c1893c6",
2325
+ "files_hash": "b2205a61aaea52ec",
2326
2326
  "reading_hash": "849399ad428ae9c7",
2327
2327
  "counts": {"lines":42,"placed":22,"shared":9,"unplaced":11},
2328
2328
  "omitted": {"data":31},
@@ -2377,7 +2377,7 @@
2377
2377
  "surface": "builders",
2378
2378
  "title": "Builders",
2379
2379
  "states_read": ["roster","artists","search","out"],
2380
- "files_hash": "a11550eb586bf474",
2380
+ "files_hash": "9df6bd67a83c8939",
2381
2381
  "reading_hash": "ab1f237b3ce6f134",
2382
2382
  "counts": {"lines":58,"placed":14,"shared":9,"unplaced":35},
2383
2383
  "omitted": {"data":135},
@@ -2448,7 +2448,7 @@
2448
2448
  "surface": "builders",
2449
2449
  "title": "Settings",
2450
2450
  "states_read": ["account","access","preferences","install-reports","sound","update"],
2451
- "files_hash": "86a56205992d4700",
2451
+ "files_hash": "ba164ba22127e8b1",
2452
2452
  "reading_hash": "085bb32894909ee0",
2453
2453
  "counts": {"lines":137,"placed":90,"shared":9,"unplaced":38},
2454
2454
  "omitted": {"data":16},
@@ -2598,7 +2598,7 @@
2598
2598
  "surface": "builders",
2599
2599
  "title": "The street",
2600
2600
  "states_read": ["street","fullscreen","card","switched","focus","here","inside-rules","inside-disputes","inside-people","inside-planning","inside-automation","inside-review","inside-release","inside-treasury","floor","amend","district","desk","desk-facts","desk-quiet","desk-people-builders","desk-people-tier","desk-disputes","desk-automation-goals","desk-release-core","desk-rules","desk-rules-category","desk-planning-priorities","desk-planning-ideas","desk-planning-blockers","pins","pins-pager","living","deck","deck-treasury","sitting","object","voted","admission","settled","blocker","blocker-more","report","report-more","core","core-more","recheck","recheck-more","idea","idea-more","queue","queue-more","automation","automation-more"],
2601
- "files_hash": "092a9b020b29a9de",
2601
+ "files_hash": "fdd3dbf438c2c2ba",
2602
2602
  "reading_hash": "36b43da5ed5a0613",
2603
2603
  "counts": {"lines":473,"placed":69,"shared":9,"unplaced":395},
2604
2604
  "omitted": {"data":432},
@@ -3084,7 +3084,7 @@
3084
3084
  "surface": "builders",
3085
3085
  "title": "Studio",
3086
3086
  "states_read": ["home","out","flow","flow-pick","status","words-offer","words-edit","reviews","full","full-back","approvals","approvals-before","approvals-phone","approvals-note","approved","sent-back","approvals-page"],
3087
- "files_hash": "71398025bdb545cf",
3087
+ "files_hash": "03d939466a3752c2",
3088
3088
  "reading_hash": "99e3725589540c63",
3089
3089
  "counts": {"lines":51,"placed":27,"shared":9,"unplaced":15},
3090
3090
  "omitted": {"data":21},
@@ -3148,7 +3148,7 @@
3148
3148
  "surface": "builders",
3149
3149
  "title": "Task",
3150
3150
  "states_read": ["record","from-goal","missing"],
3151
- "files_hash": "73127b3c907b78b3",
3151
+ "files_hash": "b6feadda3c2fc3ad",
3152
3152
  "reading_hash": "ecaa5fba5bc119a8",
3153
3153
  "counts": {"lines":150,"placed":43,"shared":11,"unplaced":96},
3154
3154
  "omitted": {"data":109},
@@ -3311,7 +3311,7 @@
3311
3311
  "surface": "builders",
3312
3312
  "title": "Your thinking",
3313
3313
  "states_read": ["tour","sky","list","simple","full-idea","full","full-list","full-back","out"],
3314
- "files_hash": "4ca98a16e27cf85b",
3314
+ "files_hash": "d8d3cc54d4b6874c",
3315
3315
  "reading_hash": "8113aa9e50ec5600",
3316
3316
  "counts": {"lines":49,"placed":22,"shared":8,"unplaced":19},
3317
3317
  "omitted": {"data":8},
@@ -3373,7 +3373,7 @@
3373
3373
  "surface": "builders",
3374
3374
  "title": "Tweak a page",
3375
3375
  "states_read": ["doc","typed","chrome","submitted","picking","out"],
3376
- "files_hash": "b299caee71cbddd0",
3376
+ "files_hash": "26c8eb382c06952b",
3377
3377
  "reading_hash": "711c540ebc7ef977",
3378
3378
  "counts": {"lines":23,"placed":15,"shared":1,"unplaced":7},
3379
3379
  "omitted": {"data":35},
@@ -3409,7 +3409,7 @@
3409
3409
  "surface": "builders",
3410
3410
  "title": "Watch",
3411
3411
  "states_read": ["board","out","operations","security","sessions","autobongos"],
3412
- "files_hash": "0c0a10d2a4b1eff1",
3412
+ "files_hash": "5e8d5a519b83bc07",
3413
3413
  "reading_hash": "2e2e07eab2e3e772",
3414
3414
  "counts": {"lines":69,"placed":28,"shared":9,"unplaced":32},
3415
3415
  "omitted": {"data":50},
@@ -3491,7 +3491,7 @@
3491
3491
  "surface": "builders",
3492
3492
  "title": "Tasks",
3493
3493
  "states_read": ["ready","in-progress","backlog","completed","filters-open","out","founding"],
3494
- "files_hash": "c29db6dce3bf7854",
3494
+ "files_hash": "630269bdec6fabc0",
3495
3495
  "reading_hash": "f1d7a8ed45e60ffa",
3496
3496
  "counts": {"lines":122,"placed":47,"shared":9,"unplaced":66},
3497
3497
  "omitted": {"data":321},
@@ -201,16 +201,8 @@
201
201
  capitals — .btn-ghost lowercases its label, and this one is a named action the
202
202
  owner wrote, so it does not borrow that class. */
203
203
  .cb-ask { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 7px 0 0; }
204
- .cb-ask__door {
205
- font: inherit;
206
- font-size: 12.5px;
207
- color: var(--accent-ink);
208
- background: none;
209
- border: 0;
210
- padding: 0;
211
- cursor: pointer;
212
- }
213
- .cb-ask__door:hover { text-decoration: underline; }
204
+ /* .cb-ask__door is the shared text button (controls.css, task 1005084): it
205
+ measured 19px tall as a bare text control, under the 24px floor. */
214
206
  .cb-ask__copy {
215
207
  font: inherit;
216
208
  font-size: 12px;
@@ -290,22 +282,11 @@
290
282
  condensed to three rows precisely so the page stays readable. */
291
283
  .cb-reply-form { margin: 9px 0 0; max-width: var(--measure); }
292
284
  .cb-reply-input {
285
+ /* the shared textarea (controls.css, task 1005084); the form only sizes it */
293
286
  width: 100%;
294
- font: inherit;
295
- font-size: 13px;
296
287
  line-height: 1.55;
297
- color: var(--ink);
298
- background: var(--glass);
299
- border: 1px solid var(--rule);
300
- border-radius: var(--radius-sm);
301
- padding: 9px 11px;
302
288
  resize: vertical;
303
289
  }
304
- /* NO `outline: none` HERE. The shell already draws the hall's one focus ring on
305
- :focus-visible, and dropping it to style a field is exactly what the hall's
306
- own audit refuses — it caught this line. The border tint is an ADDITION to
307
- that ring, not a replacement for it. */
308
- .cb-reply-input:focus { border-color: var(--accent-ink); }
309
290
  .cb-reply-actions { display: flex; gap: 8px; margin: 7px 0 0; }
310
291
 
311
292
  /* ---- the archive (task 1004224) -------------------------------------------