@bongos/core 1.19.637 → 1.19.639

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.
Files changed (40) hide show
  1. package/.bongos-core.json +80 -50
  2. package/.claude/skills/builder-sequence/SKILL.md +2 -2
  3. package/.claude/skills/design/SKILL.md +2 -2
  4. package/docs/adr/0274-one-kernel-three-role-packs.md +55 -0
  5. package/docs/adr/0275-one-source-for-a-written-role-responsibility.md +50 -0
  6. package/docs/adr/README.md +2 -0
  7. package/docs/copy-inventory.md +24 -23
  8. package/docs/copy-registry.json +39 -30
  9. package/docs/file-map.md +8 -4
  10. package/docs/module-api-changelog.md +4 -0
  11. package/docs/onboarding/slash-commands.md +2 -2
  12. package/docs/packs/artist.md +82 -0
  13. package/docs/packs/engineer.md +117 -0
  14. package/docs/packs/ideator.md +135 -0
  15. package/modules/grading/grader-prompt.js +14 -0
  16. package/modules/hall-ui/public/profile.css +17 -0
  17. package/modules/hall-ui/public/profile.js +25 -1
  18. package/modules/lifecycle/ship-card.js +19 -3
  19. package/package-lock.json +2 -2
  20. package/package.json +1 -1
  21. package/scripts/gds/claim.js +21 -9
  22. package/scripts/gds/discipline-modes.json +8 -8
  23. package/scripts/gds/fitness.js +10 -0
  24. package/scripts/gds/gen-role-responsibilities.js +134 -0
  25. package/scripts/gds/publish-manifest.js +9 -0
  26. package/scripts/gds/role-pack-guard.js +142 -0
  27. package/src/module-api.js +30 -1
  28. package/src/modules.js +12 -1
  29. package/src/role-responsibilities.js +80 -0
  30. package/tests/edit_hints.mjs +1 -1
  31. package/tests/fitness.mjs +96 -0
  32. package/tests/idea_ideate_full.mjs +10 -4
  33. package/tests/module-scope-map.mjs +4 -3
  34. package/tests/module_api.mjs +1 -0
  35. package/tests/publish_manifest.mjs +2 -1
  36. package/tests/role_responsibilities.mjs +187 -0
  37. package/tests/ship_card.mjs +18 -4
  38. package/.claude/skills/dev/SKILL.md +0 -49
  39. package/.claude/skills/ideate/SKILL.md +0 -164
  40. package/.claude/skills/paint/SKILL.md +0 -71
@@ -4,13 +4,13 @@
4
4
  > Deterministic on a given tree — regenerate and commit rather than hand-editing.
5
5
  > Machine-readable twin: [`copy-registry.json`](copy-registry.json).
6
6
 
7
- **1742 strings** across 3 surfaces · 1506 distinct pieces of copy · 1742 certain, 0 heuristic · 165 shown in more than one place.
7
+ **1743 strings** across 3 surfaces · 1507 distinct pieces of copy · 1743 certain, 0 heuristic · 165 shown in more than one place.
8
8
 
9
9
  ## Surfaces
10
10
 
11
11
  | surface | lives at | files | strings |
12
12
  |---|---|---|---|
13
- | `builders-hall` | `modules/hall-ui/public` | 80 | 1269 |
13
+ | `builders-hall` | `modules/hall-ui/public` | 80 | 1270 |
14
14
  | `status-dashboard` | `modules/status-ui/public` | 4 | 100 |
15
15
  | `landing` | `modules/public-landing/public` | 5 | 373 |
16
16
 
@@ -78,7 +78,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
78
78
  | `490b73a0c6e8` | 2x | Approve your Dev Box app — {{worldName}} | modules/hall-ui/public/pair.html:6, modules/hall-ui/public/pair.html:6 |
79
79
  | … | | _125 more in the JSON registry_ | |
80
80
 
81
- ## `builders-hall` — 1269 strings
81
+ ## `builders-hall` — 1270 strings
82
82
 
83
83
  | id | conf | text | where |
84
84
  |---|---|---|---|
@@ -99,7 +99,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
99
99
  | `1eee272d5ff4` | certain | (the droplet) is both the authority and production; | `modules/hall-ui/public/diagrams.html:74` |
100
100
  | `c7aecadc8133` | certain | (with {…}) | `modules/hall-ui/public/goals-render.js:569` |
101
101
  | `27d9721f358f` | certain | + Invite | `modules/hall-ui/public/goals-render.js:1136` |
102
- | `646fab1157fe` | certain | + {…} more project{…} not publicly listed. | `modules/hall-ui/public/profile.js:296` |
102
+ | `646fab1157fe` | certain | + {…} more project{…} not publicly listed. | `modules/hall-ui/public/profile.js:320` |
103
103
  | `05da3082c8c5` | certain | +{…} more | `modules/hall-ui/public/gate.js:134` |
104
104
  | `9c8aba2b2fa4` | certain | , // membership | `modules/hall-ui/public/board-room.js:252` |
105
105
  | `37964829d693` | certain | , and | `modules/hall-ui/public/government.html:55` |
@@ -155,6 +155,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
155
155
  | `da5368d10f85` | certain | Amendment {…} passed{…}, and the constitution below is not the one it decided: | `modules/hall-ui/public/government.js:669` |
156
156
  | `69f0ca4a4d84` | certain | Analytics scope | `modules/hall-ui/public/hall-render.js:1138` |
157
157
  | `14bdceaac078` | certain | Answer the five questions and this spark becomes a Full Idea. | `modules/hall-ui/public/ideas.js:586` |
158
+ | `0293418d5e8e` | certain | Answerable for: | `modules/hall-ui/public/profile.js:72` |
158
159
  | `52ed0e2e3470` | certain | Any rank | `modules/hall-ui/public/task-lib.js:62` |
159
160
  | `c89833aa985a` | certain | Approval failed — try again. | `modules/hall-ui/public/pair.js:92` |
160
161
  | `0832ba017c90` | certain | Approve & re-run | `modules/hall-ui/public/gate.js:107` |
@@ -307,7 +308,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
307
308
  | `7775fec0fa85` | certain | Could not load sessions. | `modules/hall-ui/public/sessions.js:243` |
308
309
  | `7775fec0fa85` | certain | Could not load sessions. | `modules/hall-ui/public/sessions.js:281` |
309
310
  | `b2147cc90e36` | certain | Could not load the idea template. Reload, or file from the terminal with capture.js. | `modules/hall-ui/public/ideas.js:611` |
310
- | `7604af13c40e` | certain | Could not load the profile. | `modules/hall-ui/public/profile.js:766` |
311
+ | `7604af13c40e` | certain | Could not load the profile. | `modules/hall-ui/public/profile.js:790` |
311
312
  | `8b69e445592a` | certain | Could not load the question labels; showing the answers as stored. | `modules/hall-ui/public/idea.js:244` |
312
313
  | `edd5bafbe075` | certain | Could not load the queue just now. | `modules/hall-ui/public/ideas.js:550` |
313
314
  | `02bb0570996a` | certain | Could not load the ranks. | `modules/hall-ui/public/ranks.js:197` |
@@ -528,7 +529,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
528
529
  | `d305f0df6f25` | certain | Jump to | `modules/hall-ui/public/palette.js:226` |
529
530
  | `2bfc5a50ce88` | certain | Jump to a page or record | `modules/hall-ui/public/shell.js:414` |
530
531
  | `eba610d25523` | certain | Jump to… | `modules/hall-ui/public/shell.js:416` |
531
- | `bc779353aa0c` | certain | Karma — peer recognition and approvals, a separate counter from {…}. | `modules/hall-ui/public/profile.js:70` |
532
+ | `bc779353aa0c` | certain | Karma — peer recognition and approvals, a separate counter from {…}. | `modules/hall-ui/public/profile.js:94` |
532
533
  | `de0e1590667f` | certain | Keep all {…} {…} — they are the values the code drops in, and the change cannot land without them. | `modules/hall-ui/public/copy-desk.js:442` |
533
534
  | `32d25ef2182d` | certain | Keep box | `modules/hall-ui/public/box-panel.js:164` |
534
535
  | `fbe40b5818a3` | certain | Key removed. | `modules/hall-ui/public/settings.js:1193` |
@@ -579,8 +580,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
579
580
  | `06b4ede3fb58` | certain | Machine principals | `modules/hall-ui/public/government.html:122` |
580
581
  | `6b3d660e0e31` | certain | Map view | `modules/hall-ui/public/atlas.html:46` |
581
582
  | `df335a1224ae` | certain | Member since {…} | `modules/hall-ui/public/hall-render.js:512` |
582
- | `df335a1224ae` | certain | Member since {…} | `modules/hall-ui/public/profile.js:70` |
583
- | `c7a670e9552d` | certain | Merged into | `modules/hall-ui/public/profile.js:382` |
583
+ | `df335a1224ae` | certain | Member since {…} | `modules/hall-ui/public/profile.js:94` |
584
+ | `c7a670e9552d` | certain | Merged into | `modules/hall-ui/public/profile.js:406` |
584
585
  | `7637613c231b` | certain | Metic rank and above may vote | `modules/hall-ui/public/builders.js:743` |
585
586
  | `1c485c956f90` | certain | Mingle pairs you with someone from a different craft. Saying no costs nothing at all — no rank, no karma, no s | `modules/hall-ui/public/collab.html:57` |
586
587
  | `d7ce4a3bb745` | certain | Minimize the welcome panel | `modules/hall-ui/public/hall-widgets.js:52` |
@@ -608,9 +609,9 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
608
609
  | `f52ba261d930` | certain | Next › | `modules/hall-ui/public/hall-kit.js:74` |
609
610
  | `41ec1cf65d6f` | certain | No GitHub account yet? Make a free one at | `modules/hall-ui/public/hall-render.js:289` |
610
611
  | `c255749ec989` | certain | No achievements earned yet. | `modules/hall-ui/public/builders.js:480` |
611
- | `c255749ec989` | certain | No achievements earned yet. | `modules/hall-ui/public/profile.js:120` |
612
+ | `c255749ec989` | certain | No achievements earned yet. | `modules/hall-ui/public/profile.js:144` |
612
613
  | `83f62fc94271` | certain | No builder account found for this sign-in. | `modules/hall-ui/public/settings.js:1384` |
613
- | `6d6fd2314248` | certain | No cross-project activity reported yet. | `modules/hall-ui/public/profile.js:299` |
614
+ | `6d6fd2314248` | certain | No cross-project activity reported yet. | `modules/hall-ui/public/profile.js:323` |
614
615
  | `b1ada579483c` | certain | No custom ranks yet | `modules/hall-ui/public/government.js:367` |
615
616
  | `6e2d2e11f84a` | certain | No description. | `modules/hall-ui/public/idea.js:122` |
616
617
  | `881d06b5e79f` | certain | No done-when criteria yet | `modules/hall-ui/public/goals-render.js:149` |
@@ -652,7 +653,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
652
653
  | `905e99f158c2` | certain | Nothing is discarded by omission: every task needs a decision before this can be submitted. Abandoning stamps | `modules/hall-ui/public/goals-render.js:1006` |
653
654
  | `2c6e0dfbd781` | certain | Nothing is waiting on you. Requests reach you by your craft — set yours in | `modules/hall-ui/public/collab.html:44` |
654
655
  | `2ec0fbb20a42` | certain | Nothing is waiting. A spark appears here when its author offers a quick idea up for development. | `modules/hall-ui/public/ideas.js:528` |
655
- | `ad9a17a8a5eb` | certain | Nothing shipped yet. | `modules/hall-ui/public/profile.js:218` |
656
+ | `ad9a17a8a5eb` | certain | Nothing shipped yet. | `modules/hall-ui/public/profile.js:242` |
656
657
  | `ad9a17a8a5eb` | certain | Nothing shipped yet. | `modules/hall-ui/public/work.js:1016` |
657
658
  | `f326632f2013` | certain | Nothing to submit — every module here ships with the core. | `modules/hall-ui/public/modules.js:258` |
658
659
  | `9d25ba1d2f17` | certain | Off voice — says it in the wrong register | `modules/hall-ui/public/copy-desk.html:89` |
@@ -707,7 +708,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
707
708
  | `2ec5f77eb6f0` | certain | Preferred disciplines | `modules/hall-ui/public/settings.html:126` |
708
709
  | `f03d68e60416` | certain | Preferred work | `modules/hall-ui/public/hall-render.js:575` |
709
710
  | `ed8edd684547` | certain | Preferred work: | `modules/hall-ui/public/hall-render.js:526` |
710
- | `ed8edd684547` | certain | Preferred work: | `modules/hall-ui/public/profile.js:64` |
711
+ | `ed8edd684547` | certain | Preferred work: | `modules/hall-ui/public/profile.js:87` |
711
712
  | `152331290026` | certain | Preview {…} sound | `modules/hall-ui/public/settings.js:313` |
712
713
  | `4644c8289f13` | certain | Previous page | `modules/hall-ui/public/hall-kit.js:74` |
713
714
  | `d637875ef146` | certain | Primer acknowledged. | `modules/hall-ui/public/primer.js:255` |
@@ -846,7 +847,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
846
847
  | `dc0f9fe50a65` | certain | Show the setup guide again | `modules/hall-ui/public/index.html:64` |
847
848
  | `2af4c0f2b4b9` | certain | Showing {…} of {…}. | `modules/hall-ui/public/ideas.js:532` |
848
849
  | `838b17fa8d93` | certain | Shown on your public profile — it helps others know what you work on. | `modules/hall-ui/public/profile-nudge.js:69` |
849
- | `9bea6404e6e1` | certain | Sign in | `modules/hall-ui/public/profile.js:184` |
850
+ | `9bea6404e6e1` | certain | Sign in | `modules/hall-ui/public/profile.js:208` |
850
851
  | `9bea6404e6e1` | certain | Sign in | `modules/hall-ui/public/settings.html:42` |
851
852
  | `2f12d46f96ca` | certain | Sign in from the app. | `modules/hall-ui/public/hall-render.js:774` |
852
853
  | `19ab56cc3932` | certain | Sign in to filter to your goals | `modules/hall-ui/public/goals-page.js:867` |
@@ -872,9 +873,9 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
872
873
  | `6d4a7bf5ab0e` | certain | Stale timer is now {…} days. | `modules/hall-ui/public/project-settings.js:176` |
873
874
  | `98d037e427b8` | certain | Stale — describes something that changed | `modules/hall-ui/public/copy-desk.html:92` |
874
875
  | `9d4372b173cf` | certain | Standing sections | `modules/hall-ui/public/index.html:79` |
875
- | `ec1c2dae4a90` | certain | Standing there | `modules/hall-ui/public/profile.js:290` |
876
+ | `ec1c2dae4a90` | certain | Standing there | `modules/hall-ui/public/profile.js:314` |
876
877
  | `eaad12cacb9d` | certain | Start over | `modules/hall-ui/public/studio.js:120` |
877
- | `efe530c0e3a7` | certain | Still open | `modules/hall-ui/public/profile.js:387` |
878
+ | `efe530c0e3a7` | certain | Still open | `modules/hall-ui/public/profile.js:411` |
878
879
  | `4e09b7f4288b` | certain | Stops and deletes your box. Provision a fresh one anytime. | `modules/hall-ui/public/box-panel.js:150` |
879
880
  | `6c6544f5c011` | certain | Stored encrypted; never shown again after saving — only its last four digits. | `modules/hall-ui/public/settings.html:193` |
880
881
  | `5831de503015` | certain | Studio — {{worldName}} | `modules/hall-ui/public/studio.html:10` |
@@ -901,7 +902,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
901
902
  | `2f4f047dc1b4` | certain | Text size | `modules/hall-ui/public/shell.js:419` |
902
903
  | `545c59c1deb7` | certain | That is the session you are using right now. Ending it signs you out of this page. | `modules/hall-ui/public/settings-sessions.js:74` |
903
904
  | `282c3fa2d456` | certain | That is the wording it already has. Change something, or file a flag instead if you only want to mark it. | `modules/hall-ui/public/copy-desk.js:438` |
904
- | `c0e28f30524d` | certain | That project's own standing, as reported by that project. | `modules/hall-ui/public/profile.js:290` |
905
+ | `c0e28f30524d` | certain | That project's own standing, as reported by that project. | `modules/hall-ui/public/profile.js:314` |
905
906
  | `e99d4a811e92` | certain | That request is no longer available. | `modules/hall-ui/public/profile-connections.js:270` |
906
907
  | `50198c465225` | certain | The 16-value rank enum in three bands, which ranks are live, and the permissions each rank holds. | `modules/hall-ui/public/diagrams.html:59` |
907
908
  | `c5e6bdd32fe3` | certain | The Board Room is open to the builders this project’s constitution seats on its board. | `modules/hall-ui/public/board-room.js:496` |
@@ -963,7 +964,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
963
964
  | `5151cf635644` | certain | They have asked to connect. | `modules/hall-ui/public/profile-connections.js:203` |
964
965
  | `6e46811189db` | certain | This PR is held by the gate-review check. | `modules/hall-ui/public/gate.js:129` |
965
966
  | `b7c288328f79` | certain | This builder hides their cross-project record. | `modules/hall-ui/public/watch.js:393` |
966
- | `ed313d96b419` | certain | This builder keeps their track record private. | `modules/hall-ui/public/profile.js:270` |
967
+ | `ed313d96b419` | certain | This builder keeps their track record private. | `modules/hall-ui/public/profile.js:294` |
967
968
  | `3f9e476e22db` | certain | This clears {…}. The gate check re-runs and the PR merges once it goes green. Your approval applies only to co | `modules/hall-ui/public/gate.js:94` |
968
969
  | `c2a0e726bd97` | certain | This goal is Archon-mediated — request to join instead. | `modules/hall-ui/public/goals-render.js:1201` |
969
970
  | `0dd14cf15c8b` | certain | This goal is blocked until each prerequisite goal is achieved | `modules/hall-ui/public/goals-render.js:836` |
@@ -975,7 +976,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
975
976
  | `ba404d3207f7` | certain | This goal isn't taking requests right now. | `modules/hall-ui/public/goals-render.js:1249` |
976
977
  | `c7d2bc751184` | certain | This goal was added to {…} after it had already started building — an Archon override of the scope gate | `modules/hall-ui/public/goals-render.js:867` |
977
978
  | `7cf191cb9a4a` | certain | This is the environment you will build in — no SSH, nothing to install. | `modules/hall-ui/public/hall-render.js:774` |
978
- | `23f531302e9e` | certain | This is you — | `modules/hall-ui/public/profile.js:266` |
979
+ | `23f531302e9e` | certain | This is you — | `modules/hall-ui/public/profile.js:290` |
979
980
  | `c4a7e427e82c` | certain | This one | `modules/hall-ui/public/settings.html:227` |
980
981
  | `c4a7e427e82c` | certain | This one | `modules/hall-ui/public/settings.html:228` |
981
982
  | `e54578188187` | certain | This page is for members of the board. | `modules/hall-ui/public/board-room.html:44` |
@@ -1048,7 +1049,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1048
1049
  | `a3ac116b499a` | certain | Why? | `modules/hall-ui/public/copy-desk.html:99` |
1049
1050
  | `0dcb485477b6` | certain | Windows (ARM) | `modules/hall-ui/public/hall-render.js:774` |
1050
1051
  | `c5fd76a9e03d` | certain | Won {…} | `modules/hall-ui/public/builders.js:487` |
1051
- | `c5fd76a9e03d` | certain | Won {…} | `modules/hall-ui/public/profile.js:127` |
1052
+ | `c5fd76a9e03d` | certain | Won {…} | `modules/hall-ui/public/profile.js:151` |
1052
1053
  | `986514f35589` | certain | Work board | `modules/hall-ui/public/work.html:31` |
1053
1054
  | `520d139df9eb` | certain | Work is complete but the version is held — no tasks are being claimed here right now. | `modules/hall-ui/public/roadmap.js:243` |
1054
1055
  | `0e6b8e8f26cc` | certain | Works completed | `modules/hall-ui/public/profile.html:140` |
@@ -1172,7 +1173,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1172
1173
  | `9018bf6e99eb` | certain | last used {…} · signed in {…} | `modules/hall-ui/public/settings-sessions.js:46` |
1173
1174
  | `2ce7738b1eb0` | certain | loading goals… | `modules/hall-ui/public/task-detail.js:394` |
1174
1175
  | `754bdec368ed` | certain | lowest credits | `modules/hall-ui/public/hall-widgets.js:136` |
1175
- | `cffba8409070` | certain | manage its visibility in Settings → Cross-project record | `modules/hall-ui/public/profile.js:266` |
1176
+ | `cffba8409070` | certain | manage its visibility in Settings → Cross-project record | `modules/hall-ui/public/profile.js:290` |
1176
1177
  | `5c3fdd34cd02` | certain | means expressible through the real configuration — a rank-based membership plus a pass rule — with no new code | `modules/hall-ui/public/government.js:856` |
1177
1178
  | `0eefd625d954` | certain | merged into | `modules/hall-ui/public/idea.js:210` |
1178
1179
  | `70c234985d42` | certain | most recent first | `modules/hall-ui/public/hall-widgets.js:134` |
@@ -1239,7 +1240,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1239
1240
  | `65702f92a8c8` | certain | to claim your first task. | `modules/hall-ui/public/hall-render.js:815` |
1240
1241
  | `5520469f2834` | certain | to copy the task prompt and paste it into a fresh Claude Code session to begin. | `modules/hall-ui/public/work.html:65` |
1241
1242
  | `b8e12f871044` | certain | to graduate and open the rest of {{worldName}}'s builder hub. | `modules/hall-ui/public/not-ready.html:33` |
1242
- | `7d54a818850d` | certain | to see the full record. | `modules/hall-ui/public/profile.js:184` |
1243
+ | `7d54a818850d` | certain | to see the full record. | `modules/hall-ui/public/profile.js:208` |
1243
1244
  | `23488ca48320` | certain | to take a task right here — no terminal needed. Then click | `modules/hall-ui/public/work.html:65` |
1244
1245
  | `1b88ce51fd84` | certain | to tend now · {…} | `modules/hall-ui/public/studio.js:87` |
1245
1246
  | `1b88ce51fd84` | certain | to tend now · {…} | `modules/hall-ui/public/studio.js:104` |
@@ -1282,7 +1283,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1282
1283
  | `cc5106af4b35` | certain | {…} of {…} criteria satisfied | `modules/hall-ui/public/goals-lib.js:32` |
1283
1284
  | `cc5106af4b35` | certain | {…} of {…} criteria satisfied | `modules/hall-ui/public/goals-render.js:676` |
1284
1285
  | `cc5106af4b35` | certain | {…} of {…} criteria satisfied | `modules/hall-ui/public/goals.js:45` |
1285
- | `c3d9687e2375` | certain | {…} of {…} shipped | `modules/hall-ui/public/profile.js:488` |
1286
+ | `c3d9687e2375` | certain | {…} of {…} shipped | `modules/hall-ui/public/profile.js:512` |
1286
1287
  | `f32710d0ef37` | certain | {…} of {…} steps cleared. | `modules/hall-ui/public/hall-render.js:1002` |
1287
1288
  | `60743fe1e40d` | certain | {…} per page | `modules/hall-ui/public/hall-kit.js:74` |
1288
1289
  | `154bc518bab4` | certain | {…} proposed | `modules/hall-ui/public/government.js:760` |
@@ -1308,7 +1309,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1308
1309
  | `d73256fbc395` | certain | {…} · who votes, and how it {…} | `modules/hall-ui/public/board-room.js:417` |
1309
1310
  | `cab2a4296aec` | certain | {…} · {…} · {…}{…} | `modules/hall-ui/public/goal-inbox.js:326` |
1310
1311
  | `085f93f3f775` | certain | {…} — see all standings | `modules/hall-ui/public/hall-render.js:80` |
1311
- | `f75ee96a7511` | certain | {…} — total payout from shipped work. | `modules/hall-ui/public/profile.js:70` |
1312
+ | `f75ee96a7511` | certain | {…} — total payout from shipped work. | `modules/hall-ui/public/profile.js:94` |
1312
1313
  | `2a2728a4ec4f` | certain | {…}% of tasks complete | `modules/hall-ui/public/roadmap.js:70` |
1313
1314
  | `15e545eb3ce2` | certain | {…}, no such task | `modules/hall-ui/public/task.js:691` |
1314
1315
  | `c43050b62297` | certain | {…}/100 complete | `modules/hall-ui/public/idea.js:87` |
@@ -3,9 +3,9 @@
3
3
  "generator": "scripts/gds/copy-inventory.js",
4
4
  "goal": 1000074,
5
5
  "counts": {
6
- "strings": 1742,
7
- "unique_ids": 1506,
8
- "certain": 1742,
6
+ "strings": 1743,
7
+ "unique_ids": 1507,
8
+ "certain": 1743,
9
9
  "heuristic": 0,
10
10
  "duplicate_ids": 165
11
11
  },
@@ -13,7 +13,7 @@
13
13
  "builders-hall": {
14
14
  "at": "modules/hall-ui/public",
15
15
  "files": 80,
16
- "strings": 1269
16
+ "strings": 1270
17
17
  },
18
18
  "status-dashboard": {
19
19
  "at": "modules/status-ui/public",
@@ -946,7 +946,7 @@
946
946
  "occurrences": 2,
947
947
  "at": [
948
948
  "modules/hall-ui/public/hall-render.js:512",
949
- "modules/hall-ui/public/profile.js:70"
949
+ "modules/hall-ui/public/profile.js:94"
950
950
  ]
951
951
  },
952
952
  {
@@ -996,7 +996,7 @@
996
996
  "occurrences": 2,
997
997
  "at": [
998
998
  "modules/hall-ui/public/builders.js:480",
999
- "modules/hall-ui/public/profile.js:120"
999
+ "modules/hall-ui/public/profile.js:144"
1000
1000
  ]
1001
1001
  },
1002
1002
  {
@@ -1015,7 +1015,7 @@
1015
1015
  "text": "Nothing shipped yet.",
1016
1016
  "occurrences": 2,
1017
1017
  "at": [
1018
- "modules/hall-ui/public/profile.js:218",
1018
+ "modules/hall-ui/public/profile.js:242",
1019
1019
  "modules/hall-ui/public/work.js:1016"
1020
1020
  ]
1021
1021
  },
@@ -1086,7 +1086,7 @@
1086
1086
  "occurrences": 2,
1087
1087
  "at": [
1088
1088
  "modules/hall-ui/public/hall-render.js:526",
1089
- "modules/hall-ui/public/profile.js:64"
1089
+ "modules/hall-ui/public/profile.js:87"
1090
1090
  ]
1091
1091
  },
1092
1092
  {
@@ -1295,7 +1295,7 @@
1295
1295
  "text": "Sign in",
1296
1296
  "occurrences": 2,
1297
1297
  "at": [
1298
- "modules/hall-ui/public/profile.js:184",
1298
+ "modules/hall-ui/public/profile.js:208",
1299
1299
  "modules/hall-ui/public/settings.html:42"
1300
1300
  ]
1301
1301
  },
@@ -1456,7 +1456,7 @@
1456
1456
  "occurrences": 2,
1457
1457
  "at": [
1458
1458
  "modules/hall-ui/public/builders.js:487",
1459
- "modules/hall-ui/public/profile.js:127"
1459
+ "modules/hall-ui/public/profile.js:151"
1460
1460
  ]
1461
1461
  },
1462
1462
  {
@@ -1919,7 +1919,7 @@
1919
1919
  "surface": "builders-hall",
1920
1920
  "text": "+ {…} more project{…} not publicly listed.",
1921
1921
  "file": "modules/hall-ui/public/profile.js",
1922
- "line": 296,
1922
+ "line": 320,
1923
1923
  "origin": "js-markup",
1924
1924
  "confidence": "certain"
1925
1925
  },
@@ -2418,6 +2418,15 @@
2418
2418
  "origin": "js-text-assign",
2419
2419
  "confidence": "certain"
2420
2420
  },
2421
+ {
2422
+ "id": "0293418d5e8e",
2423
+ "surface": "builders-hall",
2424
+ "text": "Answerable for:",
2425
+ "file": "modules/hall-ui/public/profile.js",
2426
+ "line": 72,
2427
+ "origin": "js-markup",
2428
+ "confidence": "certain"
2429
+ },
2421
2430
  {
2422
2431
  "id": "52ed0e2e3470",
2423
2432
  "surface": "builders-hall",
@@ -3791,7 +3800,7 @@
3791
3800
  "surface": "builders-hall",
3792
3801
  "text": "Could not load the profile.",
3793
3802
  "file": "modules/hall-ui/public/profile.js",
3794
- "line": 766,
3803
+ "line": 790,
3795
3804
  "origin": "js-notice",
3796
3805
  "confidence": "certain"
3797
3806
  },
@@ -5780,7 +5789,7 @@
5780
5789
  "surface": "builders-hall",
5781
5790
  "text": "Karma — peer recognition and approvals, a separate counter from {…}.",
5782
5791
  "file": "modules/hall-ui/public/profile.js",
5783
- "line": 70,
5792
+ "line": 94,
5784
5793
  "origin": "js-markup",
5785
5794
  "confidence": "certain"
5786
5795
  },
@@ -6239,7 +6248,7 @@
6239
6248
  "surface": "builders-hall",
6240
6249
  "text": "Member since {…}",
6241
6250
  "file": "modules/hall-ui/public/profile.js",
6242
- "line": 70,
6251
+ "line": 94,
6243
6252
  "origin": "js-markup",
6244
6253
  "confidence": "certain"
6245
6254
  },
@@ -6248,7 +6257,7 @@
6248
6257
  "surface": "builders-hall",
6249
6258
  "text": "Merged into",
6250
6259
  "file": "modules/hall-ui/public/profile.js",
6251
- "line": 382,
6260
+ "line": 406,
6252
6261
  "origin": "js-markup",
6253
6262
  "confidence": "certain"
6254
6263
  },
@@ -6500,7 +6509,7 @@
6500
6509
  "surface": "builders-hall",
6501
6510
  "text": "No achievements earned yet.",
6502
6511
  "file": "modules/hall-ui/public/profile.js",
6503
- "line": 120,
6512
+ "line": 144,
6504
6513
  "origin": "js-markup",
6505
6514
  "confidence": "certain"
6506
6515
  },
@@ -6518,7 +6527,7 @@
6518
6527
  "surface": "builders-hall",
6519
6528
  "text": "No cross-project activity reported yet.",
6520
6529
  "file": "modules/hall-ui/public/profile.js",
6521
- "line": 299,
6530
+ "line": 323,
6522
6531
  "origin": "js-markup",
6523
6532
  "confidence": "certain"
6524
6533
  },
@@ -6896,7 +6905,7 @@
6896
6905
  "surface": "builders-hall",
6897
6906
  "text": "Nothing shipped yet.",
6898
6907
  "file": "modules/hall-ui/public/profile.js",
6899
- "line": 218,
6908
+ "line": 242,
6900
6909
  "origin": "js-markup",
6901
6910
  "confidence": "certain"
6902
6911
  },
@@ -7391,7 +7400,7 @@
7391
7400
  "surface": "builders-hall",
7392
7401
  "text": "Preferred work:",
7393
7402
  "file": "modules/hall-ui/public/profile.js",
7394
- "line": 64,
7403
+ "line": 87,
7395
7404
  "origin": "js-markup",
7396
7405
  "confidence": "certain"
7397
7406
  },
@@ -8642,7 +8651,7 @@
8642
8651
  "surface": "builders-hall",
8643
8652
  "text": "Sign in",
8644
8653
  "file": "modules/hall-ui/public/profile.js",
8645
- "line": 184,
8654
+ "line": 208,
8646
8655
  "origin": "js-markup",
8647
8656
  "confidence": "certain"
8648
8657
  },
@@ -8876,7 +8885,7 @@
8876
8885
  "surface": "builders-hall",
8877
8886
  "text": "Standing there",
8878
8887
  "file": "modules/hall-ui/public/profile.js",
8879
- "line": 290,
8888
+ "line": 314,
8880
8889
  "origin": "js-markup",
8881
8890
  "confidence": "certain"
8882
8891
  },
@@ -8894,7 +8903,7 @@
8894
8903
  "surface": "builders-hall",
8895
8904
  "text": "Still open",
8896
8905
  "file": "modules/hall-ui/public/profile.js",
8897
- "line": 387,
8906
+ "line": 411,
8898
8907
  "origin": "js-markup",
8899
8908
  "confidence": "certain"
8900
8909
  },
@@ -9137,7 +9146,7 @@
9137
9146
  "surface": "builders-hall",
9138
9147
  "text": "That project's own standing, as reported by that project.",
9139
9148
  "file": "modules/hall-ui/public/profile.js",
9140
- "line": 290,
9149
+ "line": 314,
9141
9150
  "origin": "js-markup",
9142
9151
  "confidence": "certain"
9143
9152
  },
@@ -9695,7 +9704,7 @@
9695
9704
  "surface": "builders-hall",
9696
9705
  "text": "This builder keeps their track record private.",
9697
9706
  "file": "modules/hall-ui/public/profile.js",
9698
- "line": 270,
9707
+ "line": 294,
9699
9708
  "origin": "js-markup",
9700
9709
  "confidence": "certain"
9701
9710
  },
@@ -9803,7 +9812,7 @@
9803
9812
  "surface": "builders-hall",
9804
9813
  "text": "This is you —",
9805
9814
  "file": "modules/hall-ui/public/profile.js",
9806
- "line": 266,
9815
+ "line": 290,
9807
9816
  "origin": "js-markup",
9808
9817
  "confidence": "certain"
9809
9818
  },
@@ -10460,7 +10469,7 @@
10460
10469
  "surface": "builders-hall",
10461
10470
  "text": "Won {…}",
10462
10471
  "file": "modules/hall-ui/public/profile.js",
10463
- "line": 127,
10472
+ "line": 151,
10464
10473
  "origin": "js-markup",
10465
10474
  "confidence": "certain"
10466
10475
  },
@@ -11576,7 +11585,7 @@
11576
11585
  "surface": "builders-hall",
11577
11586
  "text": "manage its visibility in Settings → Cross-project record",
11578
11587
  "file": "modules/hall-ui/public/profile.js",
11579
- "line": 266,
11588
+ "line": 290,
11580
11589
  "origin": "js-markup",
11581
11590
  "confidence": "certain"
11582
11591
  },
@@ -12179,7 +12188,7 @@
12179
12188
  "surface": "builders-hall",
12180
12189
  "text": "to see the full record.",
12181
12190
  "file": "modules/hall-ui/public/profile.js",
12182
- "line": 184,
12191
+ "line": 208,
12183
12192
  "origin": "js-markup",
12184
12193
  "confidence": "certain"
12185
12194
  },
@@ -12566,7 +12575,7 @@
12566
12575
  "surface": "builders-hall",
12567
12576
  "text": "{…} of {…} shipped",
12568
12577
  "file": "modules/hall-ui/public/profile.js",
12569
- "line": 488,
12578
+ "line": 512,
12570
12579
  "origin": "js-markup",
12571
12580
  "confidence": "certain"
12572
12581
  },
@@ -12800,7 +12809,7 @@
12800
12809
  "surface": "builders-hall",
12801
12810
  "text": "{…} — total payout from shipped work.",
12802
12811
  "file": "modules/hall-ui/public/profile.js",
12803
- "line": 70,
12812
+ "line": 94,
12804
12813
  "origin": "js-markup",
12805
12814
  "confidence": "certain"
12806
12815
  },
package/docs/file-map.md CHANGED
@@ -59,6 +59,10 @@
59
59
  │ ├── handoff-template.md ← session-end template + Definition of Done
60
60
  │ ├── module-api-changelog.md ← the `CORE_VERSION` release ledger for the published doorway (ADR 0203, task 1003335). MOVED here out of src/module-api.js: the ADR 0161 CI carrier appends an entry on every release and pushes straight to main, which grew that .js file past the 1500-line oversized-file ratchet and turned `unit` red for main and every open PR. Markdown is exempt from the .js line budget. Written by scripts/gds/bump-version.js (entries oldest-first, each inserted above the closing divider); the CORE_VERSION literal itself stays in src/module-api.js
61
61
  │ ├── google-chat-broadcast.md ← team-chat integration plan
62
+ │ ├── packs/ ← the ROLE PACKS (task 1002990, criterion wa6-kernel-and-packs): the root CLAUDE.md is now a role-neutral KERNEL and each craft's operating playbook lives here. Bound to a discipline by scripts/gds/discipline-modes.json (the role registry), printed by claim.js, and budgeted by scripts/gds/role-pack-guard.js — which HARD-FAILS CI if a registry entry names a pack that isn't in the tree, because claim.js's own read fails open and would hide it. Replaces the deleted /dev, /ideate and /paint skills. Governor is deferred: three packs, not four
63
+ │ │ ├── engineer.md ← code, infra, Bongos itself: the understand → scoped-change → verify → ship loop, the working rules, the session protocol, the daily cadence
64
+ │ │ ├── artist.md ← how the project looks and reads: show-first, as little interpretation as possible, arrive precalculated — a place an artist wants to be, not a form
65
+ │ │ └── ideator.md ← Claude as sounding board, not author: quick ideas stay one line, then the offer to develop one into a Full Idea (five questions drawn out of the conversation, scored on completeness). Contract pinned by tests/idea_ideate_full.mjs
62
66
  │ ├── pms-v1-deploy.md ← step-by-step runbook to deploy PMS-V1 + status subdomain
63
67
  │ ├── recipes/ ← long-form operational guides (formerly learnings/) — Postgres, Caddy, the pixel-art pipeline, etc.
64
68
  │ │ ├── README.md
@@ -158,7 +162,7 @@
158
162
  │ ├── setup.js ← one-time GitHub Device Flow → ~/.config/otb/gds-session.json
159
163
  │ ├── start.js ← list claimable tasks + active claims (`/builder-start`)
160
164
  │ ├── claim.js ← atomic POST /api/gds/claims (`/builder-claim`); runs the worktree-per-claim guard (worktree-claim-guard.js) BEFORE the session check and the POST; prints the claim-time context pack incl. next-free ADR/migration numbers (V4.R26); printDisciplineMode() reads discipline-modes.json to route a claimed task to its playbook skill
161
- │ ├── discipline-modes.json ← discipline→operating-playbook map read by claim.js: ideator→/ideate, artist→/paint, engineer→/dev; absence of an entry = the default build-and-ship loop, fail-open ([#1267](https://example.com/builders#/task/1267))
165
+ │ ├── discipline-modes.json ← the ROLE REGISTRY read by claim.js: engineer/artist/ideator their role pack under docs/packs/, module-contributed ui → the /design skill; absence of an entry = the default build-and-ship loop, fail-open at claim time — but scripts/gds/role-pack-guard.js hard-fails CI if an entry names a pack that is not in the tree ([#1267](https://example.com/builders#/task/1267))
162
166
  │ ├── next-number.js ← deterministic next-free ADR + migration number from origin/main ∪ local working tree; supersedes the drift-prone claim-time DB counter (V4.R26, [#964](https://example.com/builders#/task/964)). `node scripts/gds/next-number.js [--json]`
163
167
  │ ├── gen-repo-map.js ← Path B (ADR 0063, [#1224](https://example.com/builders#/task/1224)): zero-dep, deterministic symbol-skeleton generator → docs/repo-map.md + the generated factual block in each nested CLAUDE.md; ranks exported symbols by reference frequency. `--check` = CI gate; regenerated on deploy by ship.js regenerateRepoMap()
164
168
  │ ├── gen-file-map.js ← ADR 0066 ([#1276](https://example.com/builders#/task/1276)): generates the `.claude/skills/` + `.claude/scheduled-tasks/` sections of docs/file-map.md from disk; per-entry notes come from docs/file-map.notes.json; `--check` fails on drift OR a skill/routine with no note (CI gate via fitness.js); regenerated on deploy by ship.js regenerateFileMap()
@@ -197,6 +201,8 @@
197
201
  │ ├── doc-comment-coverage.js ← ADR 0095 / task 1001654: the ADVISORY doc-comment nudge (fitness Check 28) — reports source files under src/·scripts/·modules/ that open with no module header. Never hard-fails: a doc-comment gate that blocks a ship buys filler prose, and making it blocking needs owner sign-off + its own ADR. CRLF-safe (unlike docs-entropy.js); an empty enumeration throws as a scan defect
198
202
  │ ├── copy-inventory.js ← R01 of goal 1000074 (the artist's loop): the COPY REGISTRY — every user-facing string across the hall / status / landing surfaces, each row naming the render path that shows it (html-text · html-attr · js-markup · js-notice · js-text-assign) + a stable id that survives a move. Writes docs/copy-registry.json + docs/copy-inventory.md; `--check` fails on drift. Precision over recall: a JS literal with no render path is not listed
199
203
  │ ├── copy-apply.js ← R03 of goal 1000074 (ADR 0233): lands a copy proposal as a REAL DIFF under a claim — the design half’s adapter.export() applied to text. Reads the fenced copy-proposal patch off a task (--task N; --dry-run, --patch-file), RE-DERIVES the string’s position by re-running copy-inventory’s own extractor over the working tree (the registry commits no offsets — they go stale, the id does not), re-injects the source’s own ${expr} into the proposal’s {…} holes, writes, regenerates the registry and verifies its own edit. Refuses BY NAME on target_gone / ambiguous_target / no_exact_span / placeholder_mismatch / path_outside_surface. The ONLY writer in the copy feature, and deliberately a command rather than a route
204
+ │ ├── gen-role-responsibilities.js ← writes each role pack's written-responsibility block from src/role-responsibilities.js (task 1003732, ADR 0275). Targets come from the role registry, not a hardcoded list, so a renamed pack or a fourth craft needs no edit here; the block takes the pack's own line ending (the packs are CRLF on Windows, LF in CI). `--check` is the CI gate, run by role-pack-guard.js — never hand-edit a block
205
+ │ ├── role-pack-guard.js ← the fitness check over the role packs (task 1002990, ADR 0274): every registry entry resolves to a real pack, every pack fits its char budget, three crafts carry one, and each pack's responsibility block is current. HARD-fails because claim.js reads the registry fail-open, so a broken pack path is silent at runtime
200
206
  │ ├── gen-diagrams.js ← generates the 5 onboarding diagrams (`.mmd`/`.svg`/`.png` + `assertions.json`) from templates in this file — never hand-edit a `.mmd`/assertions.json; runs on deploy
201
207
  │ ├── gen-api-docs.js ← ADR 0109: generates `docs/api/openapi.json` + `docs/api-reference.md` from the live route files via `route-rank-check.js` introspection, so the API reference cannot drift from what the server actually mounts
202
208
  │ ├── architect-audit.js ← MAS Phase 5 (ADR 0024): the Architect's bounded first-principles `--scope`/`--paths` audit CLI → `docs/audits/`
@@ -209,6 +215,7 @@
209
215
  │ ├── branding.js ← the branding contract resolver (env → config/branding.json → branding.neutral.json); single source for instance-identity strings + the configurable track set + db.database (ADR 0062 §3)
210
216
  │ ├── modules.js ← back-compat facade over src/module-loader/loader.js; stable exports: isModuleEnabled/enabledModules/enabledDisciplines/clientModules/resolveModules; vanilla=all off (ADR 0062 §4; ADR 0083; docs/modules-contract.md)
211
217
  │ ├── module-api.js ← THE PUBLISHED, SEMVER'D DOORWAY (ADR 0083): the ONLY core file a module may `require`. Re-exports kernel capabilities (auth gates, pool, db helpers, branding, seams, logger, CORE_VERSION). MINOR bump = additive export; MAJOR = breaking change; `bongos upgrade` pre-checks. The release ledger is NOT here — it moved to docs/module-api-changelog.md (ADR 0203); only the `const CORE_VERSION` literal lives in this file.
218
+ │ ├── role-responsibilities.js ← the ONE source of each craft's written responsibility — the owner's verbatim sentences (fixed 2026-09-08, criterion `wa6-written-responsibilities`; task 1003732, ADR 0275). Three consumers and no second copy: the hall profile via clientModules() → window.__MODULES__, the grader via the module-api doorway, and the role packs via a GENERATED block (scripts/gds/gen-role-responsibilities.js, freshness gated by role-pack-guard.js). A KERNEL_FILES entry (modules.js reads it) and exempt from the no-module-keys scan, because the ideator's statement contains the English word "ideas". Do not paraphrase the statements
212
219
  │ ├── module-seams.js ← kernel seam registry (ADR 0083 / design 04§1): PORTS (registerProvider/resolve/resolveOptional — single-provider required capabilities) + EVENTS (emit/on — optional reactions, isolated errors). Modules cooperate through here, never by importing each other. Re-exported through module-api.js.
213
220
  │ ├── module-loader/ ← the loader that makes `modules/<key>/` discoverable (BV1.R38–R41)
214
221
  │ │ ├── loader.js ← discover modules/*/module.json → validate manifest → coreVersion-check → enabled-filter → mount routes behind kernel auth → start pollers. <redacted> on empty modules/. Used by modules.js + routes.js.
@@ -400,7 +407,6 @@ tests/
400
407
  ├── close-box/SKILL.md ← /close-box — tear down the dev box you're working on, from inside the box terminal (POST /box/close)
401
408
  ├── design/SKILL.md ← /design — the UI design session: the operating playbook for ui-discipline work on ANY instance (load the instance's pack + DESIGN.md first, look before you ship, build inside the platform floors, ship the tests with the UI); routed from a `ui` claim via discipline-modes.json; shipped by the ui-design module (task 1003324, ADR 0197)
402
409
  ├── design-sync/SKILL.md ← /design-sync — export repo design tokens + surfaces into Claude Design (token-preview bundle) and land generated UI code back as a Bongos task (ADR 0081)
403
- ├── dev/SKILL.md ← /dev — engineering-session playbook for engineer-discipline tasks; the default understand→scoped-change→verify→ship loop made explicit ([#1272](https://example.com/builders#/task/1272))
404
410
  ├── feedback/SKILL.md ← /feedback — pull the latest Bongos feedback bundle (prompt.md + screenshot file paths) into a Claude Code session; backed by scripts/gds/feedback-latest.js (BV1.R13, ADR 0087)
405
411
  ├── figma-design-sync/SKILL.md ← sync UI-surface tokens/surfaces with Figma (push a frame plan, land a designer's Code Connect / MCP snapshot edit back as code) — the ADR 0081 human escape hatch; distinct from otb-figma-sync's pixel-art tile review (task 2048)
406
412
  ├── fix-task/SKILL.md ← /fix-task N — claim, fix (test-first), verify, and ship a single Bongos task by id end to end; defers to /builder-claim + /builder-ship for their own mechanics
@@ -410,7 +416,6 @@ tests/
410
416
  ├── grade-recover/SKILL.md ← /grade-recover N — the 'my grade failed, now what' loop: diagnose outage vs fabricated fail vs genuine fail from the persisted grade, then run the right recovery (--regrade or the auditable override-request); adds no ship-path gate (ADR 0162, task 1002655)
411
417
  ├── grader-health/SKILL.md ← /grader-health — read-only grader health check: outage runs (n_unavailable streaks, outage-vs-rejection confirmation), pass-rate drift vs baseline, per-grade cost anomalies, stale model pins; emits exact --regrade remediation lines; optional --probe live calibration (Metic+, paid) (task 1002656)
412
418
  ├── idea-triage/SKILL.md ← /idea-triage — daily walk through the Bongos idea_inbox (promote / discard / merge); Metic+
413
- ├── ideate/SKILL.md ← /ideate — ideation-session playbook for ideator-discipline tasks; inverts the loop (human drives, Claude is the sounding board) ([#1267](https://example.com/builders#/task/1267))
414
419
  ├── merge-mode/SKILL.md ← /merge-mode — manual fallback for the auto-merge: land every confirmed task (merge + smoke + deploy)
415
420
  ├── new-project/SKILL.md ← /new-project — the canonical zero-to-live onboarding runbook for a new STANDALONE instance (name+address → init → scaffold → provision → OAuth+verified-secret+sign-in → verify → brand); the CLI + hall wizard are forms over it ([#1981](https://example.com/builders#/task/1981))
416
421
  ├── otb-character-review/SKILL.md ← /otb-character-review — score a painterly character ANIMATION (same character / anatomy / pose / smooth motion) — the animation sibling of otb-design-review (ADR 0088)
@@ -418,7 +423,6 @@ tests/
418
423
  ├── otb-feedback-capture/SKILL.md ← /otb-feedback-capture — verbal design feedback → a durable style_guide.md rule
419
424
  ├── otb-figma-sync/SKILL.md ← /otb-figma-sync — push tiles into the Example Figma file as a review canvas
420
425
  ├── otb-tile-generate/SKILL.md ← /otb-tile-generate — run the pixel-art pipeline (generate world tiles/sprites)
421
- ├── paint/SKILL.md ← /paint — art-session playbook for artist-discipline tasks; show-first/low-text, drives the otb-* pixel-art pipeline underneath ([#1269](https://example.com/builders#/task/1269))
422
426
  ├── planning-session/SKILL.md ← /planning-session — run a structured planning session for an upcoming version (set criteria, brainstorm, rank, seed Bongos); Metic+
423
427
  ├── priority-session/SKILL.md ← /priority-session — a trusted builder answers plain-speech questions; the answers reweight the idea_inbox + suggest what to build next
424
428
  ├── read-session-export/SKILL.md ← /read-session-export — read a Claude Code /export zip fast (prompts + thinking + tool calls → stdout); reads the existing export, doesn't make one. Backed by scripts/gds/read-session-export.js
@@ -1723,5 +1723,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
1723
1723
  landed since 1.19.635 with no explicit bump. run 34434517065. (task 1002620)
1724
1724
  1.19.637 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
1725
1725
  landed since 1.19.636 with no explicit bump. run 34436870653. (task 1002620)
1726
+ 1.19.638 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
1727
+ landed since 1.19.637 with no explicit bump. run 34438897721. (task 1002620)
1728
+ 1.19.639 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
1729
+ landed since 1.19.638 with no explicit bump. run 34502609272. (task 1002620)
1726
1730
  ---------------------------------------------------------------------------
1727
1731
  ```
@@ -60,9 +60,9 @@ Every one of these talks to the build system. They're grouped by when you'd reac
60
60
  | `/priority-session` | Reweight the inbox from a few plain-speech answers |
61
61
  | `/merge-mode` | Manual fallback when a confirmed task didn't land |
62
62
 
63
- ### Discipline modes
63
+ ### Discipline modes — not slash commands any more
64
64
 
65
- `/dev` (engineering the default loop), `/paint` (art), `/ideate` (ideation). A claimed task's discipline routes you to one of these.
65
+ The three core crafts no longer have a slash command. `/dev`, `/paint` and `/ideate` were **deleted** when the root instructions split into a role-neutral kernel (`CLAUDE.md`) plus one **role pack** per craft: `docs/packs/engineer.md`, `docs/packs/artist.md`, `docs/packs/ideator.md`. A claimed task's discipline routes you to your pack — `claim.js` prints its path — and you read it. A module-contributed discipline can still ship a skill, which is how `ui` → `/design` below works.
66
66
 
67
67
  ### Design and art pipeline
68
68