@bongos/core 1.19.638 → 1.19.640
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 +53 -33
- package/docs/adr/0275-one-source-for-a-written-role-responsibility.md +50 -0
- package/docs/adr/README.md +1 -0
- package/docs/copy-inventory.md +24 -23
- package/docs/copy-registry.json +39 -30
- package/docs/file-map.md +3 -0
- package/docs/module-api-changelog.md +4 -0
- package/docs/packs/artist.md +6 -2
- package/docs/packs/engineer.md +10 -0
- package/docs/packs/ideator.md +10 -0
- package/modules/builder-settings/builder-needs.js +6 -3
- package/modules/discord/board-broadcast.js +10 -3
- package/modules/grading/grader-prompt.js +14 -0
- package/modules/hall-ui/public/profile.css +17 -0
- package/modules/hall-ui/public/profile.js +25 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/gds/fitness.js +4 -0
- package/scripts/gds/gen-role-responsibilities.js +134 -0
- package/scripts/gds/role-pack-guard.js +21 -0
- package/scripts/gds/sequence.js +111 -3
- package/src/module-api.js +30 -1
- package/src/modules.js +12 -1
- package/src/role-responsibilities.js +80 -0
- package/tests/discord_board_broadcast.mjs +4 -2
- package/tests/government_board_hash_redirect.mjs +60 -0
- package/tests/government_board_summons.mjs +8 -4
- package/tests/module_api.mjs +1 -0
- package/tests/role_responsibilities.mjs +187 -0
- package/tests/sequence.mjs +157 -0
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.640",
|
|
6
|
+
"core_contract": "1.19.640",
|
|
7
|
+
"source_commit": "2ab73a01133b60e930ce77745cd7bab2be53d517",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-09-
|
|
9
|
+
"built_at": "2026-09-10T17:05:44.826Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
|
-
"docs_redacted":
|
|
12
|
+
"docs_redacted": 470,
|
|
13
13
|
"agent_docs_stubbed": 24,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 2104,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 2598,
|
|
20
|
+
"tree_sha256": "5d4e0f8138d98ccd04fe0ae74d565738470c6b6210f6ccad1084e067ed8eab63",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/backlog-review/SKILL.md",
|
|
@@ -1879,10 +1879,15 @@
|
|
|
1879
1879
|
"mode": "0000644",
|
|
1880
1880
|
"sha256": "0dad96decb62fe911ab644dad16e70a0ffe2482dfe12bcec9f2dd6329733b97d"
|
|
1881
1881
|
},
|
|
1882
|
+
{
|
|
1883
|
+
"path": "docs/adr/0275-one-source-for-a-written-role-responsibility.md",
|
|
1884
|
+
"mode": "0000644",
|
|
1885
|
+
"sha256": "3c74137149d48fb08f4d4e865d16b21197f017d39465217dc50f4aa735307e80"
|
|
1886
|
+
},
|
|
1882
1887
|
{
|
|
1883
1888
|
"path": "docs/adr/README.md",
|
|
1884
1889
|
"mode": "0000644",
|
|
1885
|
-
"sha256": "
|
|
1890
|
+
"sha256": "b26332010b617b0ef5a981fe8e1e30df66e145d25c9f0b0ae5d59cb398972d10"
|
|
1886
1891
|
},
|
|
1887
1892
|
{
|
|
1888
1893
|
"path": "docs/api-reference.md",
|
|
@@ -1917,12 +1922,12 @@
|
|
|
1917
1922
|
{
|
|
1918
1923
|
"path": "docs/copy-inventory.md",
|
|
1919
1924
|
"mode": "0000644",
|
|
1920
|
-
"sha256": "
|
|
1925
|
+
"sha256": "f65ce51b3d412f794bf3778d002e18a58d08925f2fd8eb0480152105c407f225"
|
|
1921
1926
|
},
|
|
1922
1927
|
{
|
|
1923
1928
|
"path": "docs/copy-registry.json",
|
|
1924
1929
|
"mode": "0000644",
|
|
1925
|
-
"sha256": "
|
|
1930
|
+
"sha256": "8506914c63a2fa17b19dda0fb56dbd0e8c12f4710c94d95741c33bf7731e944a"
|
|
1926
1931
|
},
|
|
1927
1932
|
{
|
|
1928
1933
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -2757,7 +2762,7 @@
|
|
|
2757
2762
|
{
|
|
2758
2763
|
"path": "docs/file-map.md",
|
|
2759
2764
|
"mode": "0000644",
|
|
2760
|
-
"sha256": "
|
|
2765
|
+
"sha256": "cb99e968645b768fe425af7c6be53f38b5f52e6185f179cee471da9c2f818c45"
|
|
2761
2766
|
},
|
|
2762
2767
|
{
|
|
2763
2768
|
"path": "docs/handoff-template.md",
|
|
@@ -2767,7 +2772,7 @@
|
|
|
2767
2772
|
{
|
|
2768
2773
|
"path": "docs/module-api-changelog.md",
|
|
2769
2774
|
"mode": "0000644",
|
|
2770
|
-
"sha256": "
|
|
2775
|
+
"sha256": "27b63233558ace04674687e72734ac62bf14b5ff1bc8f0f218ace0b708121a82"
|
|
2771
2776
|
},
|
|
2772
2777
|
{
|
|
2773
2778
|
"path": "docs/modules-contract.md",
|
|
@@ -2842,17 +2847,17 @@
|
|
|
2842
2847
|
{
|
|
2843
2848
|
"path": "docs/packs/artist.md",
|
|
2844
2849
|
"mode": "0000644",
|
|
2845
|
-
"sha256": "
|
|
2850
|
+
"sha256": "9df84ab3113b861e29ce6ef62d7540394e683edae155168167f8702ffdb8cef6"
|
|
2846
2851
|
},
|
|
2847
2852
|
{
|
|
2848
2853
|
"path": "docs/packs/engineer.md",
|
|
2849
2854
|
"mode": "0000644",
|
|
2850
|
-
"sha256": "
|
|
2855
|
+
"sha256": "87ecb718bbac689f52e3bc640f900e738f7b79015f2ca2157c56a86d748f322c"
|
|
2851
2856
|
},
|
|
2852
2857
|
{
|
|
2853
2858
|
"path": "docs/packs/ideator.md",
|
|
2854
2859
|
"mode": "0000644",
|
|
2855
|
-
"sha256": "
|
|
2860
|
+
"sha256": "72ea3a488d28add39788e8d0be043ce62323a063d740bd0b189cb5f10ecc4c6d"
|
|
2856
2861
|
},
|
|
2857
2862
|
{
|
|
2858
2863
|
"path": "docs/project-context.template.md",
|
|
@@ -3862,7 +3867,7 @@
|
|
|
3862
3867
|
{
|
|
3863
3868
|
"path": "modules/builder-settings/builder-needs.js",
|
|
3864
3869
|
"mode": "0000644",
|
|
3865
|
-
"sha256": "
|
|
3870
|
+
"sha256": "fb576eb616b62b6616ee4875745f062ff01c8be2c31e88b11cf058bee3a6b71a"
|
|
3866
3871
|
},
|
|
3867
3872
|
{
|
|
3868
3873
|
"path": "modules/builder-settings/db.js",
|
|
@@ -4262,7 +4267,7 @@
|
|
|
4262
4267
|
{
|
|
4263
4268
|
"path": "modules/discord/board-broadcast.js",
|
|
4264
4269
|
"mode": "0000644",
|
|
4265
|
-
"sha256": "
|
|
4270
|
+
"sha256": "1d3cfd6ef66c5dfb40d8e39cad9a2683d0a7cfd692c6da85f0a008008bfd4185"
|
|
4266
4271
|
},
|
|
4267
4272
|
{
|
|
4268
4273
|
"path": "modules/discord/bug-attachments.js",
|
|
@@ -4642,7 +4647,7 @@
|
|
|
4642
4647
|
{
|
|
4643
4648
|
"path": "modules/grading/grader-prompt.js",
|
|
4644
4649
|
"mode": "0000644",
|
|
4645
|
-
"sha256": "
|
|
4650
|
+
"sha256": "6eda45aa3b849bc9e54bfc2636f26b41f2a12f9470bbb61d99f4bcc2bc06722f"
|
|
4646
4651
|
},
|
|
4647
4652
|
{
|
|
4648
4653
|
"path": "modules/grading/grader-rubric.json",
|
|
@@ -5217,7 +5222,7 @@
|
|
|
5217
5222
|
{
|
|
5218
5223
|
"path": "modules/hall-ui/public/profile.css",
|
|
5219
5224
|
"mode": "0000644",
|
|
5220
|
-
"sha256": "
|
|
5225
|
+
"sha256": "00324b1682f02e426b3ae009c441f288e4e6d224240479c63d8e180d0394e5a7"
|
|
5221
5226
|
},
|
|
5222
5227
|
{
|
|
5223
5228
|
"path": "modules/hall-ui/public/profile.html",
|
|
@@ -5227,7 +5232,7 @@
|
|
|
5227
5232
|
{
|
|
5228
5233
|
"path": "modules/hall-ui/public/profile.js",
|
|
5229
5234
|
"mode": "0000644",
|
|
5230
|
-
"sha256": "
|
|
5235
|
+
"sha256": "f6666fc07a1790e80cbe04d4a30f42a7faf7b2ad2ebcd4070f156606517518d3"
|
|
5231
5236
|
},
|
|
5232
5237
|
{
|
|
5233
5238
|
"path": "modules/hall-ui/public/profile.states.json",
|
|
@@ -7712,12 +7717,12 @@
|
|
|
7712
7717
|
{
|
|
7713
7718
|
"path": "package-lock.json",
|
|
7714
7719
|
"mode": "0000644",
|
|
7715
|
-
"sha256": "
|
|
7720
|
+
"sha256": "cd5ac6c00223a78f16aae563bafeadb8d919a15eb46aa70a955b31f1e4a4d14b"
|
|
7716
7721
|
},
|
|
7717
7722
|
{
|
|
7718
7723
|
"path": "package.json",
|
|
7719
7724
|
"mode": "0000644",
|
|
7720
|
-
"sha256": "
|
|
7725
|
+
"sha256": "3220018d398311cd5dad8ad43c895021eb38edcfa607bcbd72d16afae8323a6f"
|
|
7721
7726
|
},
|
|
7722
7727
|
{
|
|
7723
7728
|
"path": "public-docs/index.html",
|
|
@@ -8177,7 +8182,7 @@
|
|
|
8177
8182
|
{
|
|
8178
8183
|
"path": "scripts/gds/fitness.js",
|
|
8179
8184
|
"mode": "0000644",
|
|
8180
|
-
"sha256": "
|
|
8185
|
+
"sha256": "3593c992b397333ee85f11dc2ea6325c3c96a2d1e5b813204da32c34c493b236"
|
|
8181
8186
|
},
|
|
8182
8187
|
{
|
|
8183
8188
|
"path": "scripts/gds/gate-review.js",
|
|
@@ -8249,6 +8254,11 @@
|
|
|
8249
8254
|
"mode": "0000644",
|
|
8250
8255
|
"sha256": "b224041e4f6f71a581cfdaf8f2c0eb45b983b166b86bbeb23f9f80b209454936"
|
|
8251
8256
|
},
|
|
8257
|
+
{
|
|
8258
|
+
"path": "scripts/gds/gen-role-responsibilities.js",
|
|
8259
|
+
"mode": "0000644",
|
|
8260
|
+
"sha256": "87ca0ef984dd2caa2ad6e176d4d6faedd82515c33f49ebb35f63229217c5e2e0"
|
|
8261
|
+
},
|
|
8252
8262
|
{
|
|
8253
8263
|
"path": "scripts/gds/gen-session-index.js",
|
|
8254
8264
|
"mode": "0000644",
|
|
@@ -8612,7 +8622,7 @@
|
|
|
8612
8622
|
{
|
|
8613
8623
|
"path": "scripts/gds/role-pack-guard.js",
|
|
8614
8624
|
"mode": "0000644",
|
|
8615
|
-
"sha256": "
|
|
8625
|
+
"sha256": "7ac55428d01852cd169bd5cb319af306a8f7798489fa89780921f4119c2f552f"
|
|
8616
8626
|
},
|
|
8617
8627
|
{
|
|
8618
8628
|
"path": "scripts/gds/route-shadow-guard.js",
|
|
@@ -8792,7 +8802,7 @@
|
|
|
8792
8802
|
{
|
|
8793
8803
|
"path": "scripts/gds/sequence.js",
|
|
8794
8804
|
"mode": "0000644",
|
|
8795
|
-
"sha256": "
|
|
8805
|
+
"sha256": "966e2caee9fff17d57d523402af8f39b02572270b1f4437377eb4b64a8bb494d"
|
|
8796
8806
|
},
|
|
8797
8807
|
{
|
|
8798
8808
|
"path": "scripts/gds/session-cost.js",
|
|
@@ -9467,7 +9477,7 @@
|
|
|
9467
9477
|
{
|
|
9468
9478
|
"path": "src/module-api.js",
|
|
9469
9479
|
"mode": "0000644",
|
|
9470
|
-
"sha256": "
|
|
9480
|
+
"sha256": "ae0011557d1a9e04d4193538369dfc2c1cad08dfcefa0898c904566fd2374fe5"
|
|
9471
9481
|
},
|
|
9472
9482
|
{
|
|
9473
9483
|
"path": "src/module-loader/catalog.js",
|
|
@@ -9502,13 +9512,18 @@
|
|
|
9502
9512
|
{
|
|
9503
9513
|
"path": "src/modules.js",
|
|
9504
9514
|
"mode": "0000644",
|
|
9505
|
-
"sha256": "
|
|
9515
|
+
"sha256": "dff7e5ff44a647d514dac9935453620aff12de6842f50521e80eca6c1f531571"
|
|
9506
9516
|
},
|
|
9507
9517
|
{
|
|
9508
9518
|
"path": "src/platform-server.js",
|
|
9509
9519
|
"mode": "0000644",
|
|
9510
9520
|
"sha256": "4ba8c3b2e17c2faa38a872fe679e0dc7d032e79e05eb7277d76736201311dcdd"
|
|
9511
9521
|
},
|
|
9522
|
+
{
|
|
9523
|
+
"path": "src/role-responsibilities.js",
|
|
9524
|
+
"mode": "0000644",
|
|
9525
|
+
"sha256": "fef8870d5f9f76f0bf8eb7bc0bb7b99badf27263fc05b00d933e19d043f54967"
|
|
9526
|
+
},
|
|
9512
9527
|
{
|
|
9513
9528
|
"path": "src/stale-timer.js",
|
|
9514
9529
|
"mode": "0000644",
|
|
@@ -10347,7 +10362,7 @@
|
|
|
10347
10362
|
{
|
|
10348
10363
|
"path": "tests/discord_board_broadcast.mjs",
|
|
10349
10364
|
"mode": "0000644",
|
|
10350
|
-
"sha256": "
|
|
10365
|
+
"sha256": "df417a2907c9436d2645dc63121ddb7b7152bf9d3aeb0adeffcc67febb7e43ef"
|
|
10351
10366
|
},
|
|
10352
10367
|
{
|
|
10353
10368
|
"path": "tests/discord_bot.mjs",
|
|
@@ -10742,7 +10757,7 @@
|
|
|
10742
10757
|
{
|
|
10743
10758
|
"path": "tests/government_board_hash_redirect.mjs",
|
|
10744
10759
|
"mode": "0000644",
|
|
10745
|
-
"sha256": "
|
|
10760
|
+
"sha256": "8dbd98e30dc2ece5896a2f412f6ad8a677ee37025f66f3e21c92b90da5bb192d"
|
|
10746
10761
|
},
|
|
10747
10762
|
{
|
|
10748
10763
|
"path": "tests/government_board_majority.mjs",
|
|
@@ -10767,7 +10782,7 @@
|
|
|
10767
10782
|
{
|
|
10768
10783
|
"path": "tests/government_board_summons.mjs",
|
|
10769
10784
|
"mode": "0000644",
|
|
10770
|
-
"sha256": "
|
|
10785
|
+
"sha256": "2fc96deb1fb0521befd18b8f2c569076f0047ffe8da49a8129a24b5eb8fd0fcf"
|
|
10771
10786
|
},
|
|
10772
10787
|
{
|
|
10773
10788
|
"path": "tests/government_board_view.mjs",
|
|
@@ -11572,7 +11587,7 @@
|
|
|
11572
11587
|
{
|
|
11573
11588
|
"path": "tests/module_api.mjs",
|
|
11574
11589
|
"mode": "0000644",
|
|
11575
|
-
"sha256": "
|
|
11590
|
+
"sha256": "79b699129e16c31d3b3088e1e00d71f0d7f5b11e4b5d3627d4a2a32f8bc0ef79"
|
|
11576
11591
|
},
|
|
11577
11592
|
{
|
|
11578
11593
|
"path": "tests/module_api_lazy.mjs",
|
|
@@ -12204,6 +12219,11 @@
|
|
|
12204
12219
|
"mode": "0000644",
|
|
12205
12220
|
"sha256": "34bb386f994042067d9efa33e9b8840b0764bd4046541ccff9f1c7e4723fadf0"
|
|
12206
12221
|
},
|
|
12222
|
+
{
|
|
12223
|
+
"path": "tests/role_responsibilities.mjs",
|
|
12224
|
+
"mode": "0000644",
|
|
12225
|
+
"sha256": "9c8ecadb5ffdd9dc8a7632d432f40364fde9ab21c390cbb4530005b990601c87"
|
|
12226
|
+
},
|
|
12207
12227
|
{
|
|
12208
12228
|
"path": "tests/rot_inbox.mjs",
|
|
12209
12229
|
"mode": "0000644",
|
|
@@ -12342,7 +12362,7 @@
|
|
|
12342
12362
|
{
|
|
12343
12363
|
"path": "tests/sequence.mjs",
|
|
12344
12364
|
"mode": "0000644",
|
|
12345
|
-
"sha256": "
|
|
12365
|
+
"sha256": "5f5933b629b39b90ce3a3ebb5e44b42d573dcb58985716fdcd1a50190754e7a5"
|
|
12346
12366
|
},
|
|
12347
12367
|
{
|
|
12348
12368
|
"path": "tests/served_paths_shipped.mjs",
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# ADR 0275 — A role's written responsibility has one source, and the pack's copy is generated
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-09-10
|
|
4
|
+
**Context:** BONGOS-V2, goal [1000095](https://cloudbongos.com/builders#/goal/1000095) (Working area 6), criterion `wa6-written-responsibilities`, task [1003732](https://cloudbongos.com/builders#/task/1003732). Depends on [ADR 0274](<redacted>.md) (the kernel/pack split, which reserved the seam this fills) and [ADR 0272](<redacted>.md) (`CORE_DISCIPLINES`). The three sentences were fixed by the area owner on 2026-09-08.
|
|
5
|
+
**Status:** Accepted.
|
|
6
|
+
|
|
7
|
+
## Problem
|
|
8
|
+
|
|
9
|
+
The criterion is one sentence: *"Each role's responsibilities are written down, and that text is what the pack teaches and the grader judges by. One source, shown on the profile, injected into the pack, referenced by grading."* Before this task the statements existed only inside the criterion record — nowhere in the tree.
|
|
10
|
+
|
|
11
|
+
The interesting half is **why one source, and not three good copies.** Three consumers need the same words: the hall profile shows a person what they are answerable for, the role pack instructs their session, and the grader judges the result. If each holds its own copy, the copies drift — and the drift has a specific, unfair shape. The project can show a builder one standard on their profile, teach a session a second, and grade the shipped work against a third. Someone is then judged by a rule they were never shown. That is the failure mode; a typo is not.
|
|
12
|
+
|
|
13
|
+
## Decision
|
|
14
|
+
|
|
15
|
+
**One source at `src/role-responsibilities.js`, three consumers, and the one copy that *can* drift is generated and CI-gated.**
|
|
16
|
+
|
|
17
|
+
1. **The source** is a frozen map of `discipline → the owner's sentence`, verbatim, with provenance. It imports nothing.
|
|
18
|
+
|
|
19
|
+
2. **The hall reads it through the projection that already exists.** `clientModules()` gains `responsibilities`, scoped to the disciplines the instance offers. That projection is already injected into every served page as `window.__MODULES__`, so the profile renders the statement with no new route, no fetch, and no second copy.
|
|
20
|
+
|
|
21
|
+
3. **The grader reads it through the doorway.** `module-api` exposes `responsibilityFor()`; `grader-prompt.js` states the craft's standard in the prompt and says plainly that it is the project's written standard, not the grader's preference.
|
|
22
|
+
|
|
23
|
+
4. **The packs carry a GENERATED block.** `scripts/gds/gen-role-responsibilities.js` writes it between markers; `role-pack-guard.js` fails CI when it drifts.
|
|
24
|
+
|
|
25
|
+
### Why the pack's copy is the one that needs a gate
|
|
26
|
+
|
|
27
|
+
The profile and the grader read the source at runtime and *cannot* drift — they have no copy to go stale. A markdown pack cannot require a JS module, so its copy is the only one that can. It is also the worst one to lose: the pack is what a session is actually instructed by. So the promise "one source" is enforced exactly where it is falsifiable, and asserted nowhere it is free.
|
|
28
|
+
|
|
29
|
+
The generator reads the **role registry** for its targets rather than hardcoding three filenames, so a renamed pack or a fourth craft (Governor, when the owner decides) is picked up with no edit to it.
|
|
30
|
+
|
|
31
|
+
### Why the statement is on the kernel roster
|
|
32
|
+
|
|
33
|
+
`src/modules.js` is a `KERNEL_FILES` file and may import only the kernel, so the source joins that roster. It earns the place: two separate modules consume the same sentences, modules never import each other, and the file imports nothing — so holding it to the kernel rule costs nothing.
|
|
34
|
+
|
|
35
|
+
## Consequences
|
|
36
|
+
|
|
37
|
+
- **`fitness.js` needed an exemption for the owner's own prose.** The ideator's statement opens *"Make good ideas"*, and `ideas` is a module key — so the no-module-keys-in-the-kernel scan flagged an English word as a module reference. Paraphrasing to satisfy a scanner is exactly what this task forbids, so the file is exempted with that reason written down. Its import *direction* is still guarded.
|
|
38
|
+
- **`fitness.js` was one line from its size budget, which changed the design for the better.** Registering the pack-block freshness inside `checkGeneratedArtifactsFresh` pushed the file past the 1,500-line ratchet. Rather than raise the baseline — which the check explicitly forbids — the assertion moved into `role-pack-guard.js`, which already owns the packs. One check now answers "are the packs correct": they resolve, they fit their budget, and they carry the current statement.
|
|
39
|
+
- **The generator matches each pack's own line ending.** The packs are `.md`: CRLF on a Windows checkout, LF in CI. A generator that always wrote `\n` would make the committed bytes platform-dependent and the freshness gate red on one checkout and green on the other, for a file nobody touched.
|
|
40
|
+
- **A craft with no statement renders nothing, everywhere.** `ui` is module-contributed (ADR 0272) and Governor is deferred (ADR 0274). Every consumer treats absence as a legitimate answer — no empty quote on the profile, no line in the grader prompt. A grader told "this role has no written standard" would supply its own, which is the invention this ADR exists to prevent.
|
|
41
|
+
- **The profile's avatar needed realigning.** The head grid is `align-items: center`, which read fine while the identity column was three short lines; the responsibility block made it tall enough that the avatar floated beside the middle of the prose instead of beside the name. Pinned to the top row. Verified in both themes in the hall preview.
|
|
42
|
+
- **A test enforces "no second copy" directly.** `tests/role_responsibilities.mjs` sweeps `src/`, `scripts/`, `modules/`, `tests/` and `docs/packs/` for any file repeating a statement outside the source, its generated blocks and the test's own fixture. That is the criterion's actual content, so it is asserted rather than described.
|
|
43
|
+
|
|
44
|
+
## Rejected
|
|
45
|
+
|
|
46
|
+
- **Three hand-written paragraphs, one per pack.** The thing the criterion forbids, and the drift would be invisible.
|
|
47
|
+
- **A new route (`GET /role-responsibilities`) for the hall.** A fetch, a loading state and a failure mode, for static text already riding a rail that reaches every page.
|
|
48
|
+
- **Storing the statements in the DB.** They are not live state — they are the project's own written standard, versioned with the code that teaches and enforces them. A DB row would put the text outside code review, which is the opposite of what "written down" is for here.
|
|
49
|
+
- **Letting the grader compose its own description of a craft from the discipline name.** That is the invented standard the whole task removes.
|
|
50
|
+
- **Raising `oversized_file_count` to let `fitness.js` grow.** The ratchet says never raise the baseline to pass, and the constraint produced a better home for the check.
|
package/docs/adr/README.md
CHANGED
|
@@ -366,3 +366,4 @@ This keeps the decision history honest and traceable.
|
|
|
366
366
|
| 0273 | [**The hall nav can gate on a permission, and the Board Room leaves Government** ([task 1003744](https://cloudbongos.com/builders#/task/1003744) · goal 1000111 — *Working area 7, Government*, criterion `wa7-government`; owner decision 2026-09-09). `shell.js` `gateAllows()` resolved six gate keys and every one was a RANK, so a nav item whose page is gated on an ATOM had to borrow the nearest rank floor and hope the two agreed. [ADR 0266](<redacted>.md) ended that: the Board Room page asks `board.vote.cast`, which floors at XENOS deliberately (`board.js` — the floor is low *so that widening the board works*), while its nav item read the Government group's metic floor; the carve filed the gap rather than guessing at it. Latent today because the constitution seats `rank:archon`, live the moment an instance widens membership below Metic — the exact act [ADR 0175](<redacted>.md) §6 exists to make a CONFIG change — at which point those members reach the room by URL and by the `board_votes` deep link with no sidebar entry. **Decision: a `perm:<atom>` gate key, answered by the SERVER.** `NAV_PERMISSION_ATOMS` in `routes/me.js` is a frozen allowlist of the atoms a nav item may gate on; `/me` resolves each through the `government` port and returns `permissions: { atom: boolean }`; `gateAllows` reads that map and never re-derives it (the social-mode precedent — a page that decided for itself could disagree with the rest of the hall); the Board Room item declares the SAME key `requireBoardVotePage` checks, so the two cannot drift. An ALLOWLIST rather than the full resolved set, because the full set is the shape of the instance's governance and a cosmetic sidebar has no business shipping it on every page load. `permissions: null` (government off, port missing, resolver threw) means *cannot say*, not *holds nothing*, and HIDES the link — `default: false` and OFF-is-the-fallback, applied. Cosmetic throughout ([ADR 0016](<redacted>.md)): the page gate and each route's `requirePermission` are the wall. **The placement was the owner's call, and the reason this task existed:** gating honestly while leaving the item in the Government group would put a WIDER item under a narrower head, so a newcomer board member would see a group labelled "Government" holding one link — more authority than they hold. Declined; the item MOVES to the unlabeled project group after Tasks, because a sitting is work the project does, not a monitoring surface. Government's audience, head and floor are unchanged and it is rank surface throughout again. Also rejected: widening the Government head to show whenever any item inside is visible, and a single-item "Board" group. `tests/hall_nav.mjs` gained the MISSING HALF of its group invariant — it checked only that a head is never wider than its items, never that an item is wider than its own head (an orphan link under a hidden label, exactly the declined arrangement) — and `GATE_WIDTH` learned `government`, which had been `undefined` so every comparison against that group passed vacuously. The harness `/me` fixture carries `permissions`, or the item would be permanently invisible in `scripts/hall-preview`. **Not done:** no other item re-gated — `people` still reads `government` for `project.curate`.](<redacted>.md) | hall nav / permissions / government |
|
|
367
367
|
| 0272 | [**A craft is an identity, not a toolchain: `artist` becomes core** ([task 1003719](https://cloudbongos.com/builders#/task/1003719) · goal 1000111 — *Government*). Reported from Discord on 2026-08-15 as "cant save preferences of role types in account page"; reproduced live 2026-09-09: `GET /me` returns `preferred_disciplines: ["artist","ideator"]` and `PATCH /me/disciplines` with that SAME array returns `422 invalid_discipline {bad:["artist"]}` — the API handing a builder a value and refusing to accept it back. **Cause:** `updateBuilderDisciplines` validates against `enabledDisciplines()`, and R59 (task 1198) put `artist` in the module half on the reasoning that the craft existed to make the game pixel art, so it rode `art-pipeline`. **That gate had stopped existing** — art-pipeline was never converted to a discovered module, there is no `modules/art-pipeline/module.json`, and so NOTHING declared `contributes.disciplines: ["artist"]`. Measured on a FULL repo checkout with the pipeline present on disk: `["engineer","ideator","ui"]`. The craft was offered by no instance in any configuration, and is unreachable by construction on a published core anyway, since [ADR 0098](<redacted>.md) excludes `modules/art-pipeline/` for a hard copyright reason (ripped reference maps). Meanwhile it stayed first-class everywhere else: the `builders.preferred_disciplines` CHECK (086/176), `tasks.discipline`, and the help-request craft roster all accept it — so a TASK could be an artist task and a PERSON could not be an artist. **The tests were green because they skipped:** the artist assertion sat behind `if (!EFFECTIVE["art-pipeline"]) return;`, always false, so the only real leg never ran. **Decision:** `artist` joins `CORE_DISCIPLINES` → `["engineer","artist","ideator"]` (migration 176 enum order); modules still contribute their own (ui-design → ui). A craft names WHO A BUILDER IS, not which toolchain ships — an instance can have artists without a pixel-art pipeline, and binding the identity to one optional module was the category error. The new invariant, pinned with no skip guard over the widest module set: anything the DB CHECK will store, some instance shape must offer. Rejected: enabling art-pipeline (impossible — absent from the package, and enabling an absent module throws at boot); writing the missing manifest (works only in a full checkout); an instance-declared discipline list (leaves the core CHECK describing a craft core cannot offer, and does not fix the vanilla case); stripping unofferable crafts from stored rows (deletes a builder stated identity to make a validator mistake look consistent). No migration — the rows were always CHECK-valid; only the validator disagreed.](<redacted>.md) | crafts / instance composition |
|
|
368
368
|
| 0274 | [**One kernel, three role packs: the always-loaded instructions stop being an engineer's** ([task 1002990](https://cloudbongos.com/builders#/task/1002990) · goal 1000095 — *Working area 6, Governor / Builder / Artist / Ideator experience*, criterion `wa6-kernel-and-packs`). The root `CLAUDE.md` loads in full every session for every craft, and it was an engineer's document: 250 lines / 32,422 chars of claim-before-working, worktree-per-claim, `DEPS_NOT_SHIPPED`, `touches[]` and `/merge-mode`. An ideator and an artist each paid the full token cost of a pipeline they were not going to run and read it as instructions addressed to them — and it CONTRADICTED the same goal's `wa6-drift-stops-the-session`, which says ideation *"needs no claim"*, while the kernel's hard rule said every change is backed by one. The craft-specific half lived in three SKILLS (`/dev`, `/ideate`, `/paint`), the wrong carrier twice over: a skill's description is resident in every session's listing whatever craft is running (27,022 chars against a ~8,000 budget, three of them over-length), and a skill must be INVOKED — a session that never types the command works from the kernel alone, which is the engineer's document again. **Decision: a role-neutral kernel plus one pack per craft under `docs/packs/`, bound by a registry CI checks.** The kernel keeps what is true for every craft (the lifecycle, the money, the trust boundary, the identity split, the charter, navigation) and drops to 216 lines / 22,572 chars, clearing the character target it had been over; the per-line test gains a second half — *is it true for every craft?* The Engineer pack inherits today's methodology; the Ideator pack absorbs `/ideate` and writes down the two grades the criterion names (a quick idea stays ONE LINE, then Claude ASKS whether to develop it into a Full Idea — five questions drawn out of the conversation, in the ideator's own words, scored on completeness); the Artist pack absorbs `/paint`, generalised off the pixel-art pipeline per [ADR 0272](<redacted>.md) — show-first, as little interpretation as possible, and ARRIVE PRECALCULATED, because a session that opens with intake questions is a form. The three skills are deleted. `scripts/gds/discipline-modes.json` becomes the ROLE REGISTRY: a core craft names a `pack` (a file to read), a module-contributed discipline may still name a `skill` (`ui` → `/design`, unchanged as ADR 0272 requires), and `claim.js` prints whichever with the right verb. **`scripts/gds/role-pack-guard.js` HARD-FAILS CI** on a pack path that resolves to nothing, an entry with neither pointer, fewer than three packs, or a pack over budget (16,000 hard / 13,000 target) — hard precisely BECAUSE `claim.js` fails open: a broken path degrades to silence, the role is hollow, and no error says so, so CI is the only gate ("CI budgets each pack"). `docs/packs/` over `.claude/packs/` because `docs/` is already owned by the `methodology` scope key — a new top-level path resolves to NO key, and the scope map's own comment records the cost (a missing key is an empty wall, and goal-scope-check then denies every member-authored task); it is registered explicitly in the default-deny publish allowlist, in lockstep with the registry, or a released core would print an unresolvable pack path on every claim. `ship-card.js` moved with the claim (it would have shipped an "Open the work" button firing a deleted command — the 1003487 divergence in reverse) and `tests/idea_ideate_full.mjs` moved with its subject, its thirteen Full-Idea assertions passing against the pack unchanged. Governor is deliberately DEFERRED — three packs, not four, until the owner decides; the guard floors at three. Rejected: keeping the skills beside the packs (two homes drift, and the listing cost stays); packs AS skills (the exact failure being fixed); duplicating the safety rules into all three packs (the charter forbids it — three copies drift and the kernel becomes the one nobody trusts); leaving the guard advisory like the doc-comment check (that one gates a judgement, this one gates a resolvable path). **Not done:** the kernel is 216 lines against a ~200 target — still a warning, as it was at 250; the line count is the context-budget cluster's work (tasks 1003620/1003687/1003688), which the goal's audit sequenced behind this one.](<redacted>.md) | methodology / roles / context budget |
|
|
369
|
+
| 0275 | [**A role's written responsibility has one source, and the pack's copy is generated** ([task 1003732](https://cloudbongos.com/builders#/task/1003732) · goal 1000095 — *Working area 6*, criterion `wa6-written-responsibilities`; statements fixed by the area owner 2026-09-08). The criterion is one sentence — *"one source, shown on the profile, injected into the pack, referenced by grading"* — and before this task the three statements existed only in the criterion record, nowhere in the tree. The interesting half is why ONE source and not three good copies: if each consumer holds its own, they drift, and the drift has a specific unfair shape — the project shows a builder one standard on their profile, teaches their session a second, and grades the shipped work against a third, so someone is judged by a rule they were never shown. **Decision: a frozen map at `src/role-responsibilities.js` (verbatim owner text, imports nothing), read by three consumers, with the one copy that CAN drift generated and CI-gated.** The hall reads it through `clientModules()` — already injected into every served page as `window.__MODULES__` and already carrying the discipline roster the statements are keyed by, so the profile renders with no new route, no fetch and no copy. The grader reads `responsibilityFor()` through the module doorway and states the standard in the prompt as the project's, not its own. The PACKS get a generated block: markdown cannot require a JS module, so their copy is the only one that can go stale — and it is the worst to lose, being what a session is actually instructed by. `gen-role-responsibilities.js` writes it from the ROLE REGISTRY (so a renamed pack, or Governor when the owner decides, needs no edit), and `role-pack-guard.js` fails CI on drift. Three consequences worth the record. (1) `fitness.js` needed an EXEMPTION for the owner's own prose: the ideator's statement opens "Make good ideas" and `ideas` is a module key, so the no-module-keys scan flagged an English word — paraphrasing to satisfy a scanner is precisely what the task forbids, so the reason is written down and the file's import DIRECTION is still guarded. (2) Registering the freshness check inside `checkGeneratedArtifactsFresh` pushed `fitness.js` one line past its 1,500-line ratchet; rather than raise the baseline (which the check forbids in its own message) the assertion MOVED into `role-pack-guard.js`, which already owns the packs — one check now answers "are the packs correct". (3) The generator matches each pack's own line ending, because `.md` checks out CRLF on Windows and LF in CI, and a generator that always wrote `\n` would make the gate red on one checkout and green on the other for a file nobody touched. A craft with no statement (`ui`, module-contributed per [ADR 0272](<redacted>.md); Governor, deferred per [ADR 0274](<redacted>.md)) renders NOTHING everywhere — no empty quote, no grader line — because a grader told a role has no written standard would supply its own. The profile's avatar was repinned to the top row (the head grid is `align-items:center`, fine for three short lines, wrong once the block made the column tall); verified in both themes in the hall preview. `tests/role_responsibilities.mjs` asserts the criterion's actual content by sweeping `src/`, `scripts/`, `modules/`, `tests/` and `docs/packs/` for any second copy. Rejected: three hand-written paragraphs (the drift would be invisible); a dedicated route for the hall (a fetch and a failure mode for static text already on a rail); storing the statements in the DB (not live state — a row puts the project's written standard outside code review); letting the grader describe a craft from its name (the invented standard this removes); raising `oversized_file_count` to let `fitness.js` grow.](<redacted>.md) | roles / grading / generated artifacts |
|
package/docs/copy-inventory.md
CHANGED
|
@@ -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
|
-
**
|
|
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 |
|
|
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` —
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
583
|
-
| `c7a670e9552d` | certain | Merged into | `modules/hall-ui/public/profile.js:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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` |
|