@bongos/core 1.19.881 → 1.19.883
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 +63 -58
- package/clients/bongos-client/index.d.ts +2 -2
- package/docs/adr/0304-routine-reads-run-without-a-prompt-and-anything-a-flag-can-turn-into-a-write-is-exact-form.md +79 -4
- package/docs/adr/0309-durable-module-enablement-db-override.md +116 -0
- package/docs/adr/README.md +1 -0
- package/docs/api/openapi.json +6 -0
- package/docs/copy-inventory.md +24 -23
- package/docs/copy-registry.json +34 -25
- package/docs/file-map.md +2 -2
- package/docs/module-api-changelog.md +4 -0
- package/docs/recipes/bongos-cli-release.md +1 -1
- package/docs/recipes/managed-settings-remote-control.md +1 -1
- package/migrations/core_248_module_enablement_overrides.sql +50 -0
- package/modules/dev-box/app/README.md +4 -3
- package/modules/hall-ui/public/collab-lib.js +33 -1
- package/modules/hall-ui/public/collab.css +33 -4
- package/modules/hall-ui/public/collab.html +9 -2
- package/modules/hall-ui/public/collab.js +68 -15
- package/modules/hall-ui/public/dom-utils.js +23 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/gds/claude-materialize.js +39 -34
- package/scripts/hall-preview/server.js +38 -1
- package/src/bongos/module-overrides.js +117 -0
- package/src/bongos/routes/modules.js +56 -23
- package/src/module-api.js +1 -1
- package/src/modules.js +120 -14
- package/src/platform-server.js +47 -5
- package/tests/allow_rule_guard.mjs +192 -0
- package/tests/box_ship_permissions.mjs +143 -62
- package/tests/box_sweep_docs.mjs +7 -3
- package/tests/claude_materialize.mjs +8 -4
- package/tests/collab_page.mjs +136 -1
- package/tests/host_topology_skips.mjs +1 -0
- package/tests/modules.mjs +110 -0
- package/tests/modules_route_wiring.mjs +103 -0
- package/docs/recipes/builder-box-lifecycle.md +0 -181
- package/docs/recipes/devbox-app-release.md +0 -103
- package/docs/recipes/devbox-app-windows-test.md +0 -128
- package/docs/recipes/work-on-a-task-from-your-dev-box.md +0 -122
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
|
+
**1826 strings** across 3 surfaces · 1584 distinct pieces of copy · 1826 certain, 0 heuristic · 166 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` | 84 |
|
|
13
|
+
| `builders-hall` | `modules/hall-ui/public` | 84 | 1336 |
|
|
14
14
|
| `status-dashboard` | `modules/status-ui/public` | 4 | 100 |
|
|
15
15
|
| `landing` | `modules/public-landing/public` | 5 | 390 |
|
|
16
16
|
|
|
@@ -78,7 +78,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
78
78
|
| `996edffc1966` | 2x | Access requests | modules/hall-ui/public/watch.html:46, modules/hall-ui/public/watch.html:61 |
|
|
79
79
|
| … | | _126 more in the JSON registry_ | |
|
|
80
80
|
|
|
81
|
-
## `builders-hall` —
|
|
81
|
+
## `builders-hall` — 1336 strings
|
|
82
82
|
|
|
83
83
|
| id | conf | text | where |
|
|
84
84
|
|---|---|---|---|
|
|
@@ -135,7 +135,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
135
135
|
| `0b9adf029094` | certain | A task cannot wait for itself. | `modules/hall-ui/public/task.js:890` |
|
|
136
136
|
| `0aaa0f2c4bdc` | certain | A title is required. | `modules/hall-ui/public/blockers.js:345` |
|
|
137
137
|
| `daf73127afff` | certain | A word on why | `modules/hall-ui/public/hall-render.js:294` |
|
|
138
|
-
| `9fe51a2e1e71` | certain | A {…} — you are a {…}. Mingle pairs across roles. | `modules/hall-ui/public/collab.js:
|
|
138
|
+
| `9fe51a2e1e71` | certain | A {…} — you are a {…}. Mingle pairs across roles. | `modules/hall-ui/public/collab.js:421` |
|
|
139
139
|
| `996edffc1966` | certain | Access requests | `modules/hall-ui/public/watch.html:46` |
|
|
140
140
|
| `996edffc1966` | certain | Access requests | `modules/hall-ui/public/watch.html:61` |
|
|
141
141
|
| `303f8d90266f` | certain | Achievements could not be loaded. | `modules/hall-ui/public/builders.js:1196` |
|
|
@@ -153,7 +153,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
153
153
|
| `8b736e365191` | certain | All builders | `modules/hall-ui/public/hall-render.js:1238` |
|
|
154
154
|
| `b5e03617b319` | certain | All goals | `modules/hall-ui/public/goals.html:53` |
|
|
155
155
|
| `e08d410571e9` | certain | All kinds | `modules/hall-ui/public/sessions.js:286` |
|
|
156
|
-
| `9c34bccb06ef` | certain | All open asks | `modules/hall-ui/public/collab.html:
|
|
156
|
+
| `9c34bccb06ef` | certain | All open asks | `modules/hall-ui/public/collab.html:71` |
|
|
157
157
|
| `bea7817e57a4` | certain | All surfaces | `modules/hall-ui/public/copy-desk.js:301` |
|
|
158
158
|
| `627c683a5e5d` | certain | All time | `modules/hall-ui/public/hall-widgets.js:130` |
|
|
159
159
|
| `b38c01691857` | certain | All your work → | `modules/hall-ui/public/hall-widgets.js:110` |
|
|
@@ -164,7 +164,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
164
164
|
| `69f0ca4a4d84` | certain | Analytics scope | `modules/hall-ui/public/hall-render.js:1236` |
|
|
165
165
|
| `14bdceaac078` | certain | Answer the five questions and this spark becomes a Full Idea. | `modules/hall-ui/public/ideas.js:601` |
|
|
166
166
|
| `0293418d5e8e` | certain | Answerable for: | `modules/hall-ui/public/profile.js:72` |
|
|
167
|
-
| `05761b08ec8f` | certain | Answering is optional and declining costs nothing. Nobody is assigned by being asked. | `modules/hall-ui/public/collab.html:
|
|
167
|
+
| `05761b08ec8f` | certain | Answering is optional and declining costs nothing. Nobody is assigned by being asked. | `modules/hall-ui/public/collab.html:97` |
|
|
168
168
|
| `52ed0e2e3470` | certain | Any rank | `modules/hall-ui/public/task-lib.js:62` |
|
|
169
169
|
| `8832c7204180` | certain | Anyone in the owning project | `modules/hall-ui/public/settings.html:291` |
|
|
170
170
|
| `7d2ab55d4112` | certain | Anyone on this instance | `modules/hall-ui/public/settings.html:292` |
|
|
@@ -176,8 +176,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
176
176
|
| `d9dd46194f35` | certain | Argue from mechanism, not vibes. Always name the assumption a number rests on. | `modules/hall-ui/public/settings.html:285` |
|
|
177
177
|
| `5fcfdf8975cf` | certain | As configuration: | `modules/hall-ui/public/government.js:829` |
|
|
178
178
|
| `01a0f29ff406` | certain | As first filed | `modules/hall-ui/public/idea.js:252` |
|
|
179
|
-
| `688cc6dd38ee` | certain | Asked of you | `modules/hall-ui/public/collab.html:
|
|
180
|
-
| `b2656d0b2402` | certain | Asked {…} | `modules/hall-ui/public/collab.js:
|
|
179
|
+
| `688cc6dd38ee` | certain | Asked of you | `modules/hall-ui/public/collab.html:48` |
|
|
180
|
+
| `b2656d0b2402` | certain | Asked {…} | `modules/hall-ui/public/collab.js:58` |
|
|
181
181
|
| `b2656d0b2402` | certain | Asked {…} | `modules/hall-ui/public/watch.js:488` |
|
|
182
182
|
| `8c8ec2597036` | certain | Assigned {…} to builder {…}. | `modules/hall-ui/public/government.js:463` |
|
|
183
183
|
| `46714066f2da` | certain | Audit log | `modules/hall-ui/public/watch.html:141` |
|
|
@@ -276,7 +276,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
276
276
|
| `12ee050d0180` | certain | Copy desk | `modules/hall-ui/public/copy-desk.html:27` |
|
|
277
277
|
| `1214ea8e0d1b` | certain | Copy desk — {{worldName}} | `modules/hall-ui/public/copy-desk.html:6` |
|
|
278
278
|
| `1214ea8e0d1b` | certain | Copy desk — {{worldName}} | `modules/hall-ui/public/copy-desk.html:6` |
|
|
279
|
-
| `30764a4f0e28` | certain | Copy for Session Start | `modules/hall-ui/public/collab.js:
|
|
279
|
+
| `30764a4f0e28` | certain | Copy for Session Start | `modules/hall-ui/public/collab.js:90` |
|
|
280
280
|
| `ebc8a6c16a22` | certain | Copy parallel prompt | `modules/hall-ui/public/work.html:146` |
|
|
281
281
|
| `a873e7c29d80` | certain | Copy prompt | `modules/hall-ui/public/task.js:795` |
|
|
282
282
|
| `a873e7c29d80` | certain | Copy prompt | `modules/hall-ui/public/task.js:816` |
|
|
@@ -304,7 +304,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
304
304
|
| `90691bceaf68` | certain | Could not load | `modules/hall-ui/public/task.js:982` |
|
|
305
305
|
| `589a4cfc5442` | certain | Could not load idea {…}. | `modules/hall-ui/public/ideas.js:644` |
|
|
306
306
|
| `192c893fc64e` | certain | Could not load modules. | `modules/hall-ui/public/modules.js:318` |
|
|
307
|
-
| `8a4b590fa1a0` | certain | Could not load requests. | `modules/hall-ui/public/collab.js:
|
|
307
|
+
| `8a4b590fa1a0` | certain | Could not load requests. | `modules/hall-ui/public/collab.js:514` |
|
|
308
308
|
| `7775fec0fa85` | certain | Could not load sessions. | `modules/hall-ui/public/sessions.js:399` |
|
|
309
309
|
| `7775fec0fa85` | certain | Could not load sessions. | `modules/hall-ui/public/sessions.js:437` |
|
|
310
310
|
| `a2f2e8babef5` | certain | Could not load that page. Try again. | `modules/hall-ui/public/blockers.js:274` |
|
|
@@ -604,7 +604,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
604
604
|
| `c7a670e9552d` | certain | Merged into | `modules/hall-ui/public/profile.js:406` |
|
|
605
605
|
| `dce0546c9e34` | certain | Merging work does not put it in front of anyone. This is the step that does: it moves this platform — or any p | `modules/hall-ui/public/deploy.html:39` |
|
|
606
606
|
| `7637613c231b` | certain | Metic rank and above may vote | `modules/hall-ui/public/builders.js:781` |
|
|
607
|
-
| `91328a97fe68` | certain | Mingle pairs you with someone from another role. Saying no costs nothing. | `modules/hall-ui/public/collab.html:
|
|
607
|
+
| `91328a97fe68` | certain | Mingle pairs you with someone from another role. Saying no costs nothing. | `modules/hall-ui/public/collab.html:87` |
|
|
608
608
|
| `d7ce4a3bb745` | certain | Minimize the welcome panel | `modules/hall-ui/public/hall-widgets.js:52` |
|
|
609
609
|
| `19b0ed5781ae` | certain | Minimum rank required to claim this task | `modules/hall-ui/public/task-lib.js:65` |
|
|
610
610
|
| `64e91044df43` | certain | Mint a fresh CLI token using this browser session and paste it into your terminal — the quick way back in when | `modules/hall-ui/public/settings.html:145` |
|
|
@@ -645,7 +645,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
645
645
|
| `fbb887a9b678` | certain | No goal has criteria met yet — work is in the task queue. | `modules/hall-ui/public/roadmap.js:128` |
|
|
646
646
|
| `6771a8966ec3` | certain | No goals declared yet — this version is tracked by its {…} done-when criteria. | `modules/hall-ui/public/roadmap.js:106` |
|
|
647
647
|
| `abc64639b134` | certain | No goals seeded yet. | `modules/hall-ui/public/roadmap.js:205` |
|
|
648
|
-
| `139ec3636c22` | certain | No introductions right now. One appears here when a pairing round runs. | `modules/hall-ui/public/collab.html:
|
|
648
|
+
| `139ec3636c22` | certain | No introductions right now. One appears here when a pairing round runs. | `modules/hall-ui/public/collab.html:90` |
|
|
649
649
|
| `3b9823dd4579` | certain | No maintenance declared — nobody is on the hook for this module as the core advances. | `modules/hall-ui/public/modules.js:92` |
|
|
650
650
|
| `64a4281934d1` | certain | No match. Try a page name, or an id like | `modules/hall-ui/public/palette.js:182` |
|
|
651
651
|
| `4f89817b92e5` | certain | No onboarding steps recorded yet. | `modules/hall-ui/public/hall-render.js:941` |
|
|
@@ -663,13 +663,13 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
663
663
|
| `c9800f8b6bc8` | certain | No versions declared yet. | `modules/hall-ui/public/roadmap.js:427` |
|
|
664
664
|
| `4654849396a3` | certain | No work reviewed yet. | `modules/hall-ui/public/hall-widgets.js:150` |
|
|
665
665
|
| `086665af6208` | certain | No {…} sessions recorded. Choose another kind to widen the ledger. | `modules/hall-ui/public/sessions.js:145` |
|
|
666
|
-
| `1967d2176f2e` | certain | Nobody has an open ask right now. | `modules/hall-ui/public/collab.html:
|
|
667
|
-
| `c65c9f5c02e3` | certain | Nobody is waiting on you. Requests reach you by role — | `modules/hall-ui/public/collab.html:
|
|
666
|
+
| `1967d2176f2e` | certain | Nobody has an open ask right now. | `modules/hall-ui/public/collab.html:75` |
|
|
667
|
+
| `c65c9f5c02e3` | certain | Nobody is waiting on you. Requests reach you by role — | `modules/hall-ui/public/collab.html:53` |
|
|
668
668
|
| `91c409a4aea5` | certain | Nobody vouched for this name — anyone can file a request naming anyone. Confirm who is asking before you admit | `modules/hall-ui/public/watch.js:374` |
|
|
669
669
|
| `c72e0bdb834a` | certain | Not declared in module.json — this is who ships the module. | `modules/hall-ui/public/modules.js:62` |
|
|
670
670
|
| `361b353ded5e` | certain | Not enough shipped work yet to chart. | `modules/hall-ui/public/hall-widgets.js:184` |
|
|
671
671
|
| `90230572d017` | certain | Not found | `modules/hall-ui/public/task.js:970` |
|
|
672
|
-
| `8226c979db4d` | certain | Not now | `modules/hall-ui/public/collab.js:
|
|
672
|
+
| `8226c979db4d` | certain | Not now | `modules/hall-ui/public/collab.js:421` |
|
|
673
673
|
| `5ffcdc1a0176` | certain | Not scored — this builder’s own profile waived every signal, or the session predates this measure. | `modules/hall-ui/public/sessions.js:100` |
|
|
674
674
|
| `61250b49a90b` | certain | Not scored. | `modules/hall-ui/public/idea.js:84` |
|
|
675
675
|
| `8d6afe6def47` | certain | Not signed in | `modules/hall-ui/public/settings.html:40` |
|
|
@@ -781,7 +781,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
781
781
|
| `b03e17693dcd` | certain | Read it as a table | `modules/hall-ui/public/drachmae.js:148` |
|
|
782
782
|
| `b03e17693dcd` | certain | Read it as a table | `modules/hall-ui/public/watch.js:1132` |
|
|
783
783
|
| `b6fcfdd652a7` | certain | Read it here | `modules/hall-ui/public/work.html:45` |
|
|
784
|
-
| `053df132e22c` | certain | Read the full ask | `modules/hall-ui/public/collab.js:
|
|
784
|
+
| `053df132e22c` | certain | Read the full ask | `modules/hall-ui/public/collab.js:90` |
|
|
785
785
|
| `c5f19a888a15` | certain | Read the handoff notes | `modules/hall-ui/public/task.js:481` |
|
|
786
786
|
| `f9e998f4af3d` | certain | Read to the end and the button below unlocks. It is an honour system — nothing here checks your comprehension. | `modules/hall-ui/public/primer.html:100` |
|
|
787
787
|
| `26e6c9879035` | certain | Reading the diagrams | `modules/hall-ui/public/diagrams.html:39` |
|
|
@@ -847,7 +847,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
847
847
|
| `42cbc20a6ec8` | certain | Saves when you press Save; your next | `modules/hall-ui/public/settings.html:136` |
|
|
848
848
|
| `645dd8117cf3` | certain | Say why it is being retired — the reason goes in the record. | `modules/hall-ui/public/task.js:924` |
|
|
849
849
|
| `fc9d783ed0f5` | certain | Say why it is better. Whoever reviews this decides it from your reason, without asking you. | `modules/hall-ui/public/copy-desk.js:446` |
|
|
850
|
-
| `12c1ec21a2c6` | certain | Say yes | `modules/hall-ui/public/collab.js:
|
|
850
|
+
| `12c1ec21a2c6` | certain | Say yes | `modules/hall-ui/public/collab.js:421` |
|
|
851
851
|
| `46711f7bc3df` | certain | Search every string the product shows a person, by what it says or the file it lives in. | `modules/hall-ui/public/copy-desk.html:65` |
|
|
852
852
|
| `5d2ba8e72fa1` | certain | Search failed. | `modules/hall-ui/public/copy-desk.js:343` |
|
|
853
853
|
| `373a7639bcb9` | certain | Sections in this primer | `modules/hall-ui/public/primer.html:52` |
|
|
@@ -882,7 +882,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
882
882
|
| `ac44b08aec92` | certain | Ship it | `modules/hall-ui/public/task.js:710` |
|
|
883
883
|
| `b94a6b5b3d8c` | certain | Shipped with the core | `modules/hall-ui/public/modules.html:56` |
|
|
884
884
|
| `0c0a50ba1666` | certain | Shipped {…}{…}, {…}. | `modules/hall-ui/public/task.js:691` |
|
|
885
|
-
| `6dde12eb0c78` | certain | Show all {…} | `modules/hall-ui/public/collab.js:
|
|
885
|
+
| `6dde12eb0c78` | certain | Show all {…} | `modules/hall-ui/public/collab.js:253` |
|
|
886
886
|
| `14d32a35c15f` | certain | Show my cross-project record | `modules/hall-ui/public/settings.js:514` |
|
|
887
887
|
| `dc0f9fe50a65` | certain | Show the setup guide again | `modules/hall-ui/public/index.html:64` |
|
|
888
888
|
| `2af4c0f2b4b9` | certain | Showing {…} of {…}. | `modules/hall-ui/public/ideas.js:547` |
|
|
@@ -905,7 +905,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
905
905
|
| `87cee78ca134` | certain | Skip to content | `modules/hall-ui/public/shell.js:663` |
|
|
906
906
|
| `688ca7b6e30f` | certain | Slop — reads as machine-written | `modules/hall-ui/public/copy-desk.html:90` |
|
|
907
907
|
| `82df09a08476` | certain | So the Archon knows who you are | `modules/hall-ui/public/hall-render.js:294` |
|
|
908
|
-
| `7da6a848cd26` | certain | Someone helped | `modules/hall-ui/public/collab.js:
|
|
908
|
+
| `7da6a848cd26` | certain | Someone helped | `modules/hall-ui/public/collab.js:203` |
|
|
909
909
|
| `e7b592185803` | certain | Someone is holding a claim on this task. It has to be released before the task can be retired. | `modules/hall-ui/public/task.js:753` |
|
|
910
910
|
| `867df58c9aaa` | certain | Something else | `modules/hall-ui/public/copy-desk.html:95` |
|
|
911
911
|
| `c377d8ed744b` | certain | Something went wrong. Try again. | `modules/hall-ui/public/profile-connections.js:275` |
|
|
@@ -1096,6 +1096,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1096
1096
|
| `ecfd34bf5e6f` | certain | What’s stuck (optional) | `modules/hall-ui/public/blockers.js:306` |
|
|
1097
1097
|
| `ec1a438eee3f` | certain | Where each comes from and where each goes. {{Currency}} = credits; karma is a separate peer-trust signal, not | `modules/hall-ui/public/diagrams.html:68` |
|
|
1098
1098
|
| `c44892e8870d` | certain | Where it went | `modules/hall-ui/public/drachmae.js:218` |
|
|
1099
|
+
| `5999540bb2da` | certain | Where the asks stand | `modules/hall-ui/public/collab.html:43` |
|
|
1099
1100
|
| `4052378c3e04` | certain | Where the words stand | `modules/hall-ui/public/copy-desk.html:38` |
|
|
1100
1101
|
| `158499e38ceb` | certain | Where you stand | `modules/hall-ui/public/ranks.html:36` |
|
|
1101
1102
|
| `b216e7af8140` | certain | Where your work runs and how it reaches production, in one diagram. Your | `modules/hall-ui/public/diagrams.html:74` |
|
|
@@ -1131,14 +1132,14 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1131
1132
|
| `23c68db6db4e` | certain | You created this task, but it has already moved past planning. Retiring it now is a change to the record, so i | `modules/hall-ui/public/task.js:776` |
|
|
1132
1133
|
| `cf0c107a39fc` | certain | You created this task, but it has shipped. Shipped work is immutable history — nobody can retire it, whatever | `modules/hall-ui/public/task.js:769` |
|
|
1133
1134
|
| `b91183c02c63` | certain | You created this task, but someone is holding a claim on it. Once that is released you can retire it yourself. | `modules/hall-ui/public/task.js:774` |
|
|
1134
|
-
| `da274462bb30` | certain | You have no open asks. | `modules/hall-ui/public/collab.html:
|
|
1135
|
+
| `da274462bb30` | certain | You have no open asks. | `modules/hall-ui/public/collab.html:64` |
|
|
1135
1136
|
| `6b759151f722` | certain | You have reached the end. The button below is now active. | `modules/hall-ui/public/primer.js:309` |
|
|
1136
1137
|
| `6d5a4ca58dd6` | certain | You haven’t joined any goals yet. | `modules/hall-ui/public/goals.js:83` |
|
|
1137
1138
|
| `8e527ab12334` | certain | You {…}. One vote per member. | `modules/hall-ui/public/board-room.js:348` |
|
|
1138
1139
|
| `8e1915b19274` | certain | You're in the {…} server with your rank role. | `modules/hall-ui/public/settings.js:833` |
|
|
1139
1140
|
| `d8c542541c15` | certain | You're not signed in yet. Sign in to manage your connections, your keys, your dev box and the way the hall beh | `modules/hall-ui/public/settings.html:41` |
|
|
1140
1141
|
| `3a6ed99ec333` | certain | You've been approved before — sign in and pick up where you left off. | `modules/hall-ui/public/hall-render.js:367` |
|
|
1141
|
-
| `7d26333b5fb0` | certain | Your asks | `modules/hall-ui/public/collab.html:
|
|
1142
|
+
| `7d26333b5fb0` | certain | Your asks | `modules/hall-ui/public/collab.html:61` |
|
|
1142
1143
|
| `f96bc227dba0` | certain | Your choice | `modules/hall-ui/public/settings.html:359` |
|
|
1143
1144
|
| `f20a4adfd5a8` | certain | Your dev box builds itself in a minute or two and the app chimes when it's ready. It lives in the menu bar on | `modules/hall-ui/public/hall-render.js:825` |
|
|
1144
1145
|
| `909b0b7c6ffa` | certain | Your display name | `modules/hall-ui/public/settings.html:84` |
|
|
@@ -1282,7 +1283,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1282
1283
|
| `594962dc9ec3` | certain | s into the view containers below (falling back to | `modules/hall-ui/public/index.html:52` |
|
|
1283
1284
|
| `2a42549b34ae` | certain | said, when flagged: | `modules/hall-ui/public/copy-desk.js:124` |
|
|
1284
1285
|
| `9bec9eb4829e` | certain | scope: {…} | `modules/hall-ui/public/goals-render.js:836` |
|
|
1285
|
-
| `a13ee0cde7f2` | certain | set yours in Settings | `modules/hall-ui/public/collab.html:
|
|
1286
|
+
| `a13ee0cde7f2` | certain | set yours in Settings | `modules/hall-ui/public/collab.html:54` |
|
|
1286
1287
|
| `a6f55d7aa6f7` | certain | shipped (live) | `modules/hall-ui/public/roadmap.js:298` |
|
|
1287
1288
|
| `026ba1289d4d` | certain | shipped · | `modules/hall-ui/public/goals-render.js:758` |
|
|
1288
1289
|
| `ec6d8c900bc8` | certain | sign in | `modules/hall-ui/public/profile-charts.js:502` |
|
|
@@ -1313,7 +1314,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1313
1314
|
| `f98966dc7cac` | certain | upkeep undeclared | `modules/hall-ui/public/modules.js:92` |
|
|
1314
1315
|
| `4de556377db2` | certain | verdict {…} | `modules/hall-ui/public/task.js:435` |
|
|
1315
1316
|
| `969577b937d6` | certain | versions in flight | `modules/hall-ui/public/roadmap.js:298` |
|
|
1316
|
-
| `8cd3cc4005fc` | certain | via goal | `modules/hall-ui/public/dom-utils.js:
|
|
1317
|
+
| `8cd3cc4005fc` | certain | via goal | `modules/hall-ui/public/dom-utils.js:441` |
|
|
1317
1318
|
| `007b28a56031` | certain | view diff | `modules/hall-ui/public/gate.js:160` |
|
|
1318
1319
|
| `35be9e0923da` | certain | walks the whole path in plain language. | `modules/hall-ui/public/hall-render.js:890` |
|
|
1319
1320
|
| `17705daf7b85` | certain | what counts as passing | `modules/hall-ui/public/government.html:55` |
|
package/docs/copy-registry.json
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"generator": "scripts/gds/copy-inventory.js",
|
|
4
4
|
"goal": 1000074,
|
|
5
5
|
"counts": {
|
|
6
|
-
"strings":
|
|
7
|
-
"unique_ids":
|
|
8
|
-
"certain":
|
|
6
|
+
"strings": 1826,
|
|
7
|
+
"unique_ids": 1584,
|
|
8
|
+
"certain": 1826,
|
|
9
9
|
"heuristic": 0,
|
|
10
10
|
"duplicate_ids": 166
|
|
11
11
|
},
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"builders-hall": {
|
|
14
14
|
"at": "modules/hall-ui/public",
|
|
15
15
|
"files": 84,
|
|
16
|
-
"strings":
|
|
16
|
+
"strings": 1336
|
|
17
17
|
},
|
|
18
18
|
"status-dashboard": {
|
|
19
19
|
"at": "modules/status-ui/public",
|
|
@@ -540,7 +540,7 @@
|
|
|
540
540
|
"text": "Asked {…}",
|
|
541
541
|
"occurrences": 2,
|
|
542
542
|
"at": [
|
|
543
|
-
"modules/hall-ui/public/collab.js:
|
|
543
|
+
"modules/hall-ui/public/collab.js:58",
|
|
544
544
|
"modules/hall-ui/public/watch.js:488"
|
|
545
545
|
]
|
|
546
546
|
},
|
|
@@ -2258,7 +2258,7 @@
|
|
|
2258
2258
|
"surface": "builders-hall",
|
|
2259
2259
|
"text": "A {…} — you are a {…}. Mingle pairs across roles.",
|
|
2260
2260
|
"file": "modules/hall-ui/public/collab.js",
|
|
2261
|
-
"line":
|
|
2261
|
+
"line": 421,
|
|
2262
2262
|
"origin": "js-markup",
|
|
2263
2263
|
"confidence": "certain"
|
|
2264
2264
|
},
|
|
@@ -2420,7 +2420,7 @@
|
|
|
2420
2420
|
"surface": "builders-hall",
|
|
2421
2421
|
"text": "All open asks",
|
|
2422
2422
|
"file": "modules/hall-ui/public/collab.html",
|
|
2423
|
-
"line":
|
|
2423
|
+
"line": 71,
|
|
2424
2424
|
"origin": "html-text",
|
|
2425
2425
|
"confidence": "certain"
|
|
2426
2426
|
},
|
|
@@ -2519,7 +2519,7 @@
|
|
|
2519
2519
|
"surface": "builders-hall",
|
|
2520
2520
|
"text": "Answering is optional and declining costs nothing. Nobody is assigned by being asked.",
|
|
2521
2521
|
"file": "modules/hall-ui/public/collab.html",
|
|
2522
|
-
"line":
|
|
2522
|
+
"line": 97,
|
|
2523
2523
|
"origin": "html-text",
|
|
2524
2524
|
"confidence": "certain"
|
|
2525
2525
|
},
|
|
@@ -2627,7 +2627,7 @@
|
|
|
2627
2627
|
"surface": "builders-hall",
|
|
2628
2628
|
"text": "Asked of you",
|
|
2629
2629
|
"file": "modules/hall-ui/public/collab.html",
|
|
2630
|
-
"line":
|
|
2630
|
+
"line": 48,
|
|
2631
2631
|
"origin": "html-text",
|
|
2632
2632
|
"confidence": "certain"
|
|
2633
2633
|
},
|
|
@@ -2636,7 +2636,7 @@
|
|
|
2636
2636
|
"surface": "builders-hall",
|
|
2637
2637
|
"text": "Asked {…}",
|
|
2638
2638
|
"file": "modules/hall-ui/public/collab.js",
|
|
2639
|
-
"line":
|
|
2639
|
+
"line": 58,
|
|
2640
2640
|
"origin": "js-markup",
|
|
2641
2641
|
"confidence": "certain"
|
|
2642
2642
|
},
|
|
@@ -3527,7 +3527,7 @@
|
|
|
3527
3527
|
"surface": "builders-hall",
|
|
3528
3528
|
"text": "Copy for Session Start",
|
|
3529
3529
|
"file": "modules/hall-ui/public/collab.js",
|
|
3530
|
-
"line":
|
|
3530
|
+
"line": 90,
|
|
3531
3531
|
"origin": "js-markup",
|
|
3532
3532
|
"confidence": "certain"
|
|
3533
3533
|
},
|
|
@@ -3779,7 +3779,7 @@
|
|
|
3779
3779
|
"surface": "builders-hall",
|
|
3780
3780
|
"text": "Could not load requests.",
|
|
3781
3781
|
"file": "modules/hall-ui/public/collab.js",
|
|
3782
|
-
"line":
|
|
3782
|
+
"line": 514,
|
|
3783
3783
|
"origin": "js-text-assign",
|
|
3784
3784
|
"confidence": "certain"
|
|
3785
3785
|
},
|
|
@@ -6479,7 +6479,7 @@
|
|
|
6479
6479
|
"surface": "builders-hall",
|
|
6480
6480
|
"text": "Mingle pairs you with someone from another role. Saying no costs nothing.",
|
|
6481
6481
|
"file": "modules/hall-ui/public/collab.html",
|
|
6482
|
-
"line":
|
|
6482
|
+
"line": 87,
|
|
6483
6483
|
"origin": "html-text",
|
|
6484
6484
|
"confidence": "certain"
|
|
6485
6485
|
},
|
|
@@ -6848,7 +6848,7 @@
|
|
|
6848
6848
|
"surface": "builders-hall",
|
|
6849
6849
|
"text": "No introductions right now. One appears here when a pairing round runs.",
|
|
6850
6850
|
"file": "modules/hall-ui/public/collab.html",
|
|
6851
|
-
"line":
|
|
6851
|
+
"line": 90,
|
|
6852
6852
|
"origin": "html-text",
|
|
6853
6853
|
"confidence": "certain"
|
|
6854
6854
|
},
|
|
@@ -7010,7 +7010,7 @@
|
|
|
7010
7010
|
"surface": "builders-hall",
|
|
7011
7011
|
"text": "Nobody has an open ask right now.",
|
|
7012
7012
|
"file": "modules/hall-ui/public/collab.html",
|
|
7013
|
-
"line":
|
|
7013
|
+
"line": 75,
|
|
7014
7014
|
"origin": "html-text",
|
|
7015
7015
|
"confidence": "certain"
|
|
7016
7016
|
},
|
|
@@ -7019,7 +7019,7 @@
|
|
|
7019
7019
|
"surface": "builders-hall",
|
|
7020
7020
|
"text": "Nobody is waiting on you. Requests reach you by role —",
|
|
7021
7021
|
"file": "modules/hall-ui/public/collab.html",
|
|
7022
|
-
"line":
|
|
7022
|
+
"line": 53,
|
|
7023
7023
|
"origin": "html-text",
|
|
7024
7024
|
"confidence": "certain"
|
|
7025
7025
|
},
|
|
@@ -7064,7 +7064,7 @@
|
|
|
7064
7064
|
"surface": "builders-hall",
|
|
7065
7065
|
"text": "Not now",
|
|
7066
7066
|
"file": "modules/hall-ui/public/collab.js",
|
|
7067
|
-
"line":
|
|
7067
|
+
"line": 421,
|
|
7068
7068
|
"origin": "js-markup",
|
|
7069
7069
|
"confidence": "certain"
|
|
7070
7070
|
},
|
|
@@ -8072,7 +8072,7 @@
|
|
|
8072
8072
|
"surface": "builders-hall",
|
|
8073
8073
|
"text": "Read the full ask",
|
|
8074
8074
|
"file": "modules/hall-ui/public/collab.js",
|
|
8075
|
-
"line":
|
|
8075
|
+
"line": 90,
|
|
8076
8076
|
"origin": "js-markup",
|
|
8077
8077
|
"confidence": "certain"
|
|
8078
8078
|
},
|
|
@@ -8666,7 +8666,7 @@
|
|
|
8666
8666
|
"surface": "builders-hall",
|
|
8667
8667
|
"text": "Say yes",
|
|
8668
8668
|
"file": "modules/hall-ui/public/collab.js",
|
|
8669
|
-
"line":
|
|
8669
|
+
"line": 421,
|
|
8670
8670
|
"origin": "js-markup",
|
|
8671
8671
|
"confidence": "certain"
|
|
8672
8672
|
},
|
|
@@ -8981,7 +8981,7 @@
|
|
|
8981
8981
|
"surface": "builders-hall",
|
|
8982
8982
|
"text": "Show all {…}",
|
|
8983
8983
|
"file": "modules/hall-ui/public/collab.js",
|
|
8984
|
-
"line":
|
|
8984
|
+
"line": 253,
|
|
8985
8985
|
"origin": "js-text-assign",
|
|
8986
8986
|
"confidence": "certain"
|
|
8987
8987
|
},
|
|
@@ -9188,7 +9188,7 @@
|
|
|
9188
9188
|
"surface": "builders-hall",
|
|
9189
9189
|
"text": "Someone helped",
|
|
9190
9190
|
"file": "modules/hall-ui/public/collab.js",
|
|
9191
|
-
"line":
|
|
9191
|
+
"line": 203,
|
|
9192
9192
|
"origin": "js-markup",
|
|
9193
9193
|
"confidence": "certain"
|
|
9194
9194
|
},
|
|
@@ -10902,6 +10902,15 @@
|
|
|
10902
10902
|
"origin": "js-markup",
|
|
10903
10903
|
"confidence": "certain"
|
|
10904
10904
|
},
|
|
10905
|
+
{
|
|
10906
|
+
"id": "5999540bb2da",
|
|
10907
|
+
"surface": "builders-hall",
|
|
10908
|
+
"text": "Where the asks stand",
|
|
10909
|
+
"file": "modules/hall-ui/public/collab.html",
|
|
10910
|
+
"line": 43,
|
|
10911
|
+
"origin": "html-attr:aria-label",
|
|
10912
|
+
"confidence": "certain"
|
|
10913
|
+
},
|
|
10905
10914
|
{
|
|
10906
10915
|
"id": "4052378c3e04",
|
|
10907
10916
|
"surface": "builders-hall",
|
|
@@ -11222,7 +11231,7 @@
|
|
|
11222
11231
|
"surface": "builders-hall",
|
|
11223
11232
|
"text": "You have no open asks.",
|
|
11224
11233
|
"file": "modules/hall-ui/public/collab.html",
|
|
11225
|
-
"line":
|
|
11234
|
+
"line": 64,
|
|
11226
11235
|
"origin": "html-text",
|
|
11227
11236
|
"confidence": "certain"
|
|
11228
11237
|
},
|
|
@@ -11285,7 +11294,7 @@
|
|
|
11285
11294
|
"surface": "builders-hall",
|
|
11286
11295
|
"text": "Your asks",
|
|
11287
11296
|
"file": "modules/hall-ui/public/collab.html",
|
|
11288
|
-
"line":
|
|
11297
|
+
"line": 61,
|
|
11289
11298
|
"origin": "html-text",
|
|
11290
11299
|
"confidence": "certain"
|
|
11291
11300
|
},
|
|
@@ -12581,7 +12590,7 @@
|
|
|
12581
12590
|
"surface": "builders-hall",
|
|
12582
12591
|
"text": "set yours in Settings",
|
|
12583
12592
|
"file": "modules/hall-ui/public/collab.html",
|
|
12584
|
-
"line":
|
|
12593
|
+
"line": 54,
|
|
12585
12594
|
"origin": "html-text",
|
|
12586
12595
|
"confidence": "certain"
|
|
12587
12596
|
},
|
|
@@ -12860,7 +12869,7 @@
|
|
|
12860
12869
|
"surface": "builders-hall",
|
|
12861
12870
|
"text": "via goal",
|
|
12862
12871
|
"file": "modules/hall-ui/public/dom-utils.js",
|
|
12863
|
-
"line":
|
|
12872
|
+
"line": 441,
|
|
12864
12873
|
"origin": "js-markup",
|
|
12865
12874
|
"confidence": "certain"
|
|
12866
12875
|
},
|
package/docs/file-map.md
CHANGED
|
@@ -70,7 +70,6 @@
|
|
|
70
70
|
│ │ ├── windows-builders.md ← (task 1002809) the Windows + Git Bash builder loop: worktree junction trap, api.js MSYS auto-repair, --body-file pattern, local test baseline
|
|
71
71
|
│ │ ├── pixel-art-pipeline.md
|
|
72
72
|
│ │ ├── overnight-builder.md ← (#358) operator runbook for the autonomous overnight session-runner
|
|
73
|
-
│ │ ├── builder-box-lifecycle.md ← (#598/ADR 0031) operator runbook: provision/park/wake/deprovision dev boxes, the two sweeps, config env, going-live steps
|
|
74
73
|
│ │ └── managed-settings-remote-control.md ← (#599/ADR 0031 §1, #760/ADR 0038) operator+builder guide: distribute the locked Claude Desktop SSH config; the browser web-terminal (ttyd + Cloudflare Tunnel) on-ramp
|
|
75
74
|
│ ├── research/ ← investigations that answer a question rather than record a decision (an ADR) or a procedure (a recipe)
|
|
76
75
|
│ │ ├── task-network-map-readability.md ← (task 1003282, goal 1000072) the spike verdict: a node-link map of ~1,357 tasks is unreadable at every dependency density — 59–97% isolated dots, and the dense fix overplots 84% of them into the 40-node goal graph. Build the goal graph + a per-goal dependency forest; measure the real density with `--from` first
|
|
@@ -268,7 +267,7 @@
|
|
|
268
267
|
│ (public-builders/ moved to modules/hall-ui/public/ in BV1.R85 — the authenticated builders' hall; see the modules/ block above. It keeps its DEDICATED serving block in src/bongos/serve-internal.js: the builders.<apex> + apex /builders/* shim, canonical redirects, the citizen/Archon page gates, asset-stamping, and the module hall-widget injection — partitioned out of the generic web-surface loop. index.html=the hall dashboard; work/board/roadmap/goals/watch/gate/settings/ranks/sessions/primer/diagrams/atlas pages (harbor + pair left with the dev box, task 1003890); ideas.{html,js,css}=the Full Idea composer (task 1002928 / R152 of goal 1000062 — the five R141 fields with a live R142 completeness meter, both fetched from the server so the page carries no copy of the rules; drafts in localStorage so navigation costs nothing. Task 1002930 / R154 added the SPARK QUEUE above it and a second mode: `?develop=<id>` reuses the same form to develop a spark — the spark's words shown above the fields, its title read-only, and the file routed to POST /inbox/:id/develop instead of POST /inbox, under its own per-idea draft key); idea.html/idea.js=the idea-detail PAGE (/idea/:id, task 1002929 / R153 — the SECOND two-segment hall page after /task/:id: grade, the five answers in template order, the score, and both attributions. The GRADE decides what the page contains — a quick idea gets no five-field skeleton. task-detail.js keeps the #/idea/N overlay because ~320 of its lines are the Metic+ triage panel; the overlay now links here); profile.html/profile.js=the public, shareable builder profile page (/profile?id=N — rank, works, credits, karma, achievements; task 1467); profile-connections.js=section 6 of that page, the hub-only connections block (task 1002296 / R20 of goal 1000045 — the viewer-relative 1st/2nd/3rd/out-of-network label, the mutuals it was computed from, the connect button, and on your own profile both request queues plus your connections ledger. Loaded BEFORE profile.js, which calls window.OTBConnections.render behind a guard, so a page that omits the script simply has no section; the section reveals only when the hub's /connections routes answer, exactly as the cross-project record does. ADR 0212 records why it is on this page rather than the not-yet-built /u/<handle>, and why it addresses a builder by github_login and then uses the canonical handle the API echoes back); profile-canonical.js=the canonical-profile wiring for that page (task 1002804 / P08, ADR 0214 — on a FEDERATED instance the rel=canonical plus the visible "see the cross-project record" link-out ADR 0171 D1 asks for; on the HUB the numeric ?id= form redirects to the handle URL instead, because a page cannot both redirect to a URL and declare it canonical. All three read ONE resolver, modules/platform-identity/canonical-profile.js, which answers null while /u/<handle> does not exist — so everything is dark today and one boolean turns it all on together); task.html/task.js=the task-detail page (/task/:id, task 751 — replaced the old #/task/N overlay); builders.js=the controller; dom-utils.js/hall-widgets.js=the widget+settings-panel registries.)
|
|
269
268
|
│
|
|
270
269
|
├── infra/ ← ON-BOX scripts (task 1002699): the four reporter/heartbeat crons every dev box runs from its /workspace clone — box-heartbeat.sh (idle-sweep activity signal), box-report-version.sh (HEAD → POST /box/version), box-report-host-keys.sh (SSH host keys → POST /box/host-keys), box-report-terminal.sh (ttyd URL+credential → POST /box/terminal). Delivered by the workspace clone itself (modules/dev-box/box-access.js sparse scope includes infra/); crons self-installed by box-source-fetch.sh's per-tick bring-up. API base resolves GDS_BASE env → session-file api_base → skip (no hardcoded host in the neutral core).
|
|
271
|
-
├── devbox-app/ ← OTB Dev Box — Electron menu-bar/tray switch for the builder's box (#904, ADR 0045; internal). SELF-CONTAINED: own package.json (never feeds the droplet's npm ci); built by .github/workflows/build-devbox-app.yml; published to the public releases repo per config/devbox-app.json
|
|
270
|
+
├── devbox-app/ ← OTB Dev Box — Electron menu-bar/tray switch for the builder's box (#904, ADR 0045; internal). SELF-CONTAINED: own package.json (never feeds the droplet's npm ci); built by .github/workflows/build-devbox-app.yml; published to the public releases repo per config/devbox-app.json
|
|
272
271
|
│ ├── src/ ← main process: main.js (tray/window/IPC), brand.js (ADR 0004 — the ONE civ-name string), pairing.js, box-controller.js, gds-client.js, session-store.js (shares ~/.config/otb/gds-session.json with the CLI), ssh-setup.js (key 600 + known_hosts replace + managed-settings install w/ elevation), tray.js, preload.js
|
|
273
272
|
│ ├── renderer/ ← the panel UI (sandboxed; parchment theme)
|
|
274
273
|
│ ├── assets/tray/ + build-resources/ ← generated icons (scripts/gen-icons.js; build-resources name dodges the global build/ gitignore)
|
|
@@ -481,6 +480,7 @@ To install on a new machine, symlink each routine's directory under `~/.claude/s
|
|
|
481
480
|
├── run-node.sh ← the node resolver every hook command runs through (task 1003548): $OTB_NODE_BIN → PATH → known install dirs → nvm; one actionable line + exit 1 when none is found. 1,055 hook runs had died silently with `node: command not found`
|
|
482
481
|
├── edit-hints.js ← PostToolUse (Edit|Write|MultiEdit): lints a saved SKILL.md's frontmatter (scripts/gds/skill-lint.js) and names the generator an edited path makes stale (copy-registry, repo-map blocks, file-map, openapi, §13 snippet) with its command (task 1003548)
|
|
483
482
|
├── git-guard.js ← PreToolUse (Bash|PowerShell): same contract as secret-gate — blocks `git stash` (repo-global stack, learning 1000215), raw `git worktree remove` (follows the node_modules junction, task 1002809), `git push origin main` (PR-only) and `git branch -D`, each with its remedy; kill-switch BONGOS_GIT_GUARD_OFF=1 (task 1003365)
|
|
483
|
+
├── allow-rule-guard.js ← PreToolUse (PowerShell): a command that names something the project's allow-list pre-approves ASKS unless it is PLAIN — command names, bare-word arguments, `$name` reads, literal strings, `; | && ||`, `2>&1` / `> $null`, and nothing else. An allowlist of shape, not a denylist of tricks (the denylist cut was evaded eleven ways in review). Never blocks, fails open, silent for commands nobody pre-allowed. Exists because the client ordering that already does this for PowerShell is undocumented (ADR 0304 amendment, task 1004014); kill-switch BONGOS_ALLOW_RULE_GUARD_OFF=1
|
|
484
484
|
├── _core-resolve.js ← shared helper, not a hook: locates a core module/script across the monolith vs `node_modules/@cloudbongos/core` layouts; required by most hooks here and by four routine scripts under `.claude/scheduled-tasks/`
|
|
485
485
|
├── cascade-route.js ← PreToolUse (Task|Agent): cheapest-sufficient start-model advisory for a subagent spawn (ADR 0024); inert unless OTB_AUTONOMY_ENABLED=1
|
|
486
486
|
├── land-watch-card.js ← UserPromptSubmit: delivers the SHIPPED banner once an async CI land completes (reads `scripts/gds/land-watch.js`)
|
|
@@ -2236,5 +2236,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
2236
2236
|
landed since 1.19.879 with no explicit bump. run 35453118533. (task 1002620)
|
|
2237
2237
|
1.19.881 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2238
2238
|
landed since 1.19.880 with no explicit bump. run 35455207976. (task 1002620)
|
|
2239
|
+
1.19.882 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2240
|
+
landed since 1.19.881 with no explicit bump. run 35463113839. (task 1002620)
|
|
2241
|
+
1.19.883 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2242
|
+
landed since 1.19.882 with no explicit bump. run 35463573638. (task 1002620)
|
|
2239
2243
|
---------------------------------------------------------------------------
|
|
2240
2244
|
```
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
How the compiled `bongos` binaries get built, published, and installed — the
|
|
4
4
|
"no Node, no repo" on-ramp (task [#1248](https://example.com/builders#/task/1248), V4.R81).
|
|
5
|
-
Mirrors the Dev Box app
|
|
5
|
+
Mirrors the release flow the retired Dev Box app used:
|
|
6
6
|
**CI builds, the operator publishes to a public releases repo, the server serves
|
|
7
7
|
branded redirects.** There is no cross-repo write token in CI — publishing is a
|
|
8
8
|
deliberate operator step.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Recipe - managed-settings SSH + browser-terminal on-ramps
|
|
2
2
|
|
|
3
|
-
> **Task [#599](https://example.com/builders#/task/599) · [ADR 0031](../adr/0031-cloud-dev-environments-for-builders.md) §1.** This is the operator guide for distributing a locked Claude Desktop SSH connection to builders and for serving the browser web-terminal on the box.
|
|
3
|
+
> **Task [#599](https://example.com/builders#/task/599) · [ADR 0031](../adr/0031-cloud-dev-environments-for-builders.md) §1.** This is the operator guide for distributing a locked Claude Desktop SSH connection to builders and for serving the browser web-terminal on the box. It assumes a box is already provisioned and running; the lifecycle runbook that explained how to get one (`builder-box-lifecycle.md`) was retired with the rest of the published dev-box recipes (task 1004013, [ADR 0305](../adr/0305-a-recipe-lives-with-what-it-documents.md)). This recipe documents the same module and is queued to follow it.
|
|
4
4
|
|
|
5
5
|
> **Chromebook/browser path (ADR 0038 → [ADR 0040](../adr/0040-remote-control-default-browser-onramp.md), [#760](https://example.com/builders#/task/760) / [#824](https://example.com/builders#/task/824)):** the box serves its own web terminal - `ttyd` bound to localhost, exposed via an outbound-only Cloudflare Tunnel - and the builder runs a NORMAL interactive `claude` inside it from any browser. Because there is a real human at a real browser-backed terminal, `/login`, workspace-trust, and Trusted-Devices enrollment all succeed (the things that made headless `claude rc` unworkable). **ADR 0040 narrows that terminal to a one-time launchpad:** the builder logs in there once, runs the in-session **`/remote-control`** slash command, and then drives the box from the Claude web/mobile app — the terminal is no longer their daily surface. **The SSH path (Mac/Windows) below is unaffected and works.**
|
|
6
6
|
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
-- core_248_module_enablement_overrides.sql — task 1002857: a module toggle that
|
|
2
|
+
-- survives the next deploy.
|
|
3
|
+
--
|
|
4
|
+
-- THE BUG THIS CLOSES. The hall's Modules-tab toggle (task 1776, ADR 0107 §9)
|
|
5
|
+
-- writes config/modules.json and reloads the in-process cache, so the effect is
|
|
6
|
+
-- immediate — but that file is the COMMITTED instance pack, and the pull-deploy
|
|
7
|
+
-- runs `git reset --hard origin/main` (scripts/gds/upgrade.js, ship.js). An
|
|
8
|
+
-- operator's toggle therefore reverted silently on the next deploy unless a human
|
|
9
|
+
-- remembered to commit it. Silently is the problem: nothing announced the
|
|
10
|
+
-- reversion, so a module could come back on hours after somebody turned it off.
|
|
11
|
+
--
|
|
12
|
+
-- WHY A TABLE AND NOT AN AUTO-COMMIT. The other way to make a toggle durable is
|
|
13
|
+
-- for the HTTP handler to commit and push config/modules.json to main. That
|
|
14
|
+
-- bypasses the ship/grade/deploy pipeline and the ADR 0016 trust boundary — an
|
|
15
|
+
-- HTTP request would become a writer on main — so the task ruled it out
|
|
16
|
+
-- explicitly. The DB is already the source of truth for live state; enablement is
|
|
17
|
+
-- live state.
|
|
18
|
+
--
|
|
19
|
+
-- WHY `scope` IS PART OF THE KEY. One deployed checkout can run two instances
|
|
20
|
+
-- differentiated ONLY by GDS_MODULES_FILE / GDS_BRANDING_FILE (src/modules.js
|
|
21
|
+
-- loadModules): the default instance on config/modules.json, and a vanilla
|
|
22
|
+
-- sibling on config/modules.neutral.json. They share this database. A single
|
|
23
|
+
-- global row per module would let one sibling's toggle silently flip the other's
|
|
24
|
+
-- module — so the scope key is the resolved instance pack path, relative to the
|
|
25
|
+
-- instance root and posix-separated, which is exactly the axis those two
|
|
26
|
+
-- processes already differ on. See moduleScopeKey() in src/modules.js.
|
|
27
|
+
--
|
|
28
|
+
-- ABSENCE MEANS "NO OPINION", NOT "OFF". A module with no row here resolves
|
|
29
|
+
-- exactly as it did before this migration: neutral pack, then instance pack, then
|
|
30
|
+
-- env, then the registry default. That is what makes an unreachable database a
|
|
31
|
+
-- no-op rather than an outage — see loadOverrides() in src/bongos/module-overrides.js.
|
|
32
|
+
|
|
33
|
+
CREATE TABLE IF NOT EXISTS module_enablement_overrides (
|
|
34
|
+
-- Which instance in this database the row speaks for (see above).
|
|
35
|
+
scope text NOT NULL,
|
|
36
|
+
-- The module key as src/modules.js knows it ('dev-box', 'game', …). Deliberately
|
|
37
|
+
-- NOT FK'd to anything: the set of installed modules is a property of the build
|
|
38
|
+
-- on disk, not of the database, and a row for a module this build does not carry
|
|
39
|
+
-- must be inert rather than a constraint violation.
|
|
40
|
+
module_key text NOT NULL,
|
|
41
|
+
enabled boolean NOT NULL,
|
|
42
|
+
-- Who flipped it, for the audit trail the file-write path never had.
|
|
43
|
+
set_by bigint REFERENCES builders(id) ON DELETE SET NULL,
|
|
44
|
+
set_at timestamptz NOT NULL DEFAULT now(),
|
|
45
|
+
PRIMARY KEY (scope, module_key)
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
-- No separate index on `scope`: the PRIMARY KEY (scope, module_key) already leads
|
|
49
|
+
-- with it, so the one read this table serves ("every override for THIS scope",
|
|
50
|
+
-- once per refresh) uses the PK's btree. A second index would only add write cost.
|
|
@@ -35,7 +35,7 @@ What it does beyond the switch — each fixing a failure observed in the
|
|
|
35
35
|
and, when the published release is strictly newer, shows the Update banner; the
|
|
36
36
|
Update button downloads the installer and hands it to the OS (browser-download
|
|
37
37
|
fallback on any error). **Bumping `config/devbox-app.json` version is what makes
|
|
38
|
-
the banner appear in the field
|
|
38
|
+
the banner appear in the field.**
|
|
39
39
|
- `renderer/` — the panel UI (sandboxed, contextIsolated; preload exposes
|
|
40
40
|
named verbs only).
|
|
41
41
|
- `scripts/gen-icons.js` — regenerates all icons from pixel grids (`npm run
|
|
@@ -66,8 +66,9 @@ CI builds both on every push that touches `devbox-app/**`
|
|
|
66
66
|
(`.github/workflows/build-devbox-app.yml`) and uploads them as artifacts.
|
|
67
67
|
Publishing = attach the artifacts to a release on the PUBLIC releases repo
|
|
68
68
|
named in `config/devbox-app.json`, then bump that config and ship — the
|
|
69
|
-
branded `/downloads/devbox/*` redirects follow the config.
|
|
70
|
-
|
|
69
|
+
branded `/downloads/devbox/*` redirects follow the config. (The long-form
|
|
70
|
+
release recipe was retired with the other published dev-box recipes —
|
|
71
|
+
task 1004013, ADR 0305.)
|
|
71
72
|
|
|
72
73
|
This subproject is self-contained on purpose: its `package.json` never feeds
|
|
73
74
|
the droplet's `npm ci`, and nothing under `devbox-app/` runs server-side.
|
|
@@ -42,6 +42,37 @@
|
|
|
42
42
|
return BANDS[BANDS.length - 1];
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
// THE BAND SAYS HOW BAD; THE LABEL SAYS HOW LONG (artist verdict, task 1004041).
|
|
46
|
+
//
|
|
47
|
+
// The bands alone gave every row past a week the identical four words in the
|
|
48
|
+
// identical ink: the artist counted fourteen 'waiting over a week' pills on
|
|
49
|
+
// fourteen rows, and a signal that never varies is not a signal — the eye
|
|
50
|
+
// learns within one screen to stop reading it, and the loudest element on the
|
|
51
|
+
// page ends up carrying the least information. So the band still picks the
|
|
52
|
+
// TREATMENT (which is what a glance down the column reads) and the words now
|
|
53
|
+
// carry the REAL age, which differs from row to row.
|
|
54
|
+
//
|
|
55
|
+
// Coarse past a fortnight on purpose. 'waiting 5 weeks' is the fact a reader
|
|
56
|
+
// acts on; 'waiting 38 days' is a precision nobody acts on, and the original
|
|
57
|
+
// band comment's argument against an exact hour count holds just as well
|
|
58
|
+
// against an exact day count once the ask is old enough to be measured in
|
|
59
|
+
// weeks. Under a day stays 'just asked' rather than counting hours, for the
|
|
60
|
+
// same reason.
|
|
61
|
+
//
|
|
62
|
+
// An unparseable date reads as 'just asked', matching ageBand: an unknown age
|
|
63
|
+
// must never be rendered as an accusation.
|
|
64
|
+
function ageLabel(createdAt, nowMs) {
|
|
65
|
+
var then = createdAt ? Date.parse(createdAt) : NaN;
|
|
66
|
+
var now = typeof nowMs === 'number' ? nowMs : Date.now();
|
|
67
|
+
if (isNaN(then)) return 'just asked';
|
|
68
|
+
var days = Math.floor((now - then) / DAY_MS);
|
|
69
|
+
if (days < 1) return 'just asked';
|
|
70
|
+
if (days === 1) return 'waiting a day';
|
|
71
|
+
if (days < 14) return 'waiting ' + days + ' days';
|
|
72
|
+
var weeks = Math.floor(days / 7);
|
|
73
|
+
return 'waiting ' + weeks + ' weeks';
|
|
74
|
+
}
|
|
75
|
+
|
|
45
76
|
// Oldest first WITHIN the page, because the thing most at risk of dying
|
|
46
77
|
// silently should be read first. This is in ADDITION to the band, never
|
|
47
78
|
// instead of it.
|
|
@@ -283,7 +314,8 @@
|
|
|
283
314
|
}
|
|
284
315
|
|
|
285
316
|
window.OTBCollabLib = {
|
|
286
|
-
BANDS: BANDS, ageBand: ageBand,
|
|
317
|
+
BANDS: BANDS, ageBand: ageBand, ageLabel: ageLabel,
|
|
318
|
+
byAgeOldestFirst: byAgeOldestFirst, byNewestFirst: byNewestFirst,
|
|
287
319
|
askerOf: askerOf, contextOf: contextOf,
|
|
288
320
|
directionLine: directionLine, boardLine: boardLine,
|
|
289
321
|
titleOf: titleOf, summaryOf: summaryOf, clipWords: clipWords, LEAD_MAX: LEAD_MAX, groupOf: groupOf,
|