@bongos/core 1.19.688 → 1.19.690
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 +22 -17
- package/docs/copy-inventory.md +31 -31
- package/docs/copy-registry.json +36 -36
- package/docs/module-api-changelog.md +4 -0
- package/modules/hall-ui/public/settings.js +30 -10
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/gds/conductor-dispatch.js +15 -4
- package/src/bongos/claim-attribution.js +49 -0
- package/src/module-api.js +1 -1
- package/tests/conductor.mjs +103 -3
- package/tests/hall_settings_world.mjs +28 -2
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.690",
|
|
6
|
+
"core_contract": "1.19.690",
|
|
7
|
+
"source_commit": "60679343d4642880b9d09e266fdf8847948e63c4",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-09-
|
|
9
|
+
"built_at": "2026-09-13T00:15:19.171Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 477,
|
|
13
13
|
"agent_docs_stubbed": 24,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 2126,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 2627,
|
|
20
|
+
"tree_sha256": "62df4f01b358cfb184df394a6f373977f6638d2b4ce8f58df8e78f66259bfb95",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -1952,12 +1952,12 @@
|
|
|
1952
1952
|
{
|
|
1953
1953
|
"path": "docs/copy-inventory.md",
|
|
1954
1954
|
"mode": "0000644",
|
|
1955
|
-
"sha256": "
|
|
1955
|
+
"sha256": "06669e4ff16041426605f0a419c090bc1bb703cfe0ca6ee420651d0081424e29"
|
|
1956
1956
|
},
|
|
1957
1957
|
{
|
|
1958
1958
|
"path": "docs/copy-registry.json",
|
|
1959
1959
|
"mode": "0000644",
|
|
1960
|
-
"sha256": "
|
|
1960
|
+
"sha256": "aae00576adf9a4beb3658a181f0d8b0b2616f7c4c9ddf5809740fd84bd5db45c"
|
|
1961
1961
|
},
|
|
1962
1962
|
{
|
|
1963
1963
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -2802,7 +2802,7 @@
|
|
|
2802
2802
|
{
|
|
2803
2803
|
"path": "docs/module-api-changelog.md",
|
|
2804
2804
|
"mode": "0000644",
|
|
2805
|
-
"sha256": "
|
|
2805
|
+
"sha256": "a8b10d6556ee013925b76fab635bbf14e1299216be69b54959b07de8cf47b8da"
|
|
2806
2806
|
},
|
|
2807
2807
|
{
|
|
2808
2808
|
"path": "docs/modules-contract.md",
|
|
@@ -5412,7 +5412,7 @@
|
|
|
5412
5412
|
{
|
|
5413
5413
|
"path": "modules/hall-ui/public/settings.js",
|
|
5414
5414
|
"mode": "0000644",
|
|
5415
|
-
"sha256": "
|
|
5415
|
+
"sha256": "f96c78c7411e60810c8f1149217d2b7c1be21c22a5fac6f4feea4881ce20c9e4"
|
|
5416
5416
|
},
|
|
5417
5417
|
{
|
|
5418
5418
|
"path": "modules/hall-ui/public/settings.states.json",
|
|
@@ -7782,12 +7782,12 @@
|
|
|
7782
7782
|
{
|
|
7783
7783
|
"path": "package-lock.json",
|
|
7784
7784
|
"mode": "0000644",
|
|
7785
|
-
"sha256": "
|
|
7785
|
+
"sha256": "260ff5666981dd27b2112c4e0ed8618761d10fe9c505630e3b75eaac3d588f73"
|
|
7786
7786
|
},
|
|
7787
7787
|
{
|
|
7788
7788
|
"path": "package.json",
|
|
7789
7789
|
"mode": "0000644",
|
|
7790
|
-
"sha256": "
|
|
7790
|
+
"sha256": "6164b80832d080ed4ec27d8e4678ffbbab1344cf876af1b46702e5e4e2988924"
|
|
7791
7791
|
},
|
|
7792
7792
|
{
|
|
7793
7793
|
"path": "public-docs/index.html",
|
|
@@ -8077,7 +8077,7 @@
|
|
|
8077
8077
|
{
|
|
8078
8078
|
"path": "scripts/gds/conductor-dispatch.js",
|
|
8079
8079
|
"mode": "0000644",
|
|
8080
|
-
"sha256": "
|
|
8080
|
+
"sha256": "b0e5767d0a30e57130169b41f1dd0add6cfc54237bca6d731219d5aff5d38168"
|
|
8081
8081
|
},
|
|
8082
8082
|
{
|
|
8083
8083
|
"path": "scripts/gds/context-pack.js",
|
|
@@ -9289,6 +9289,11 @@
|
|
|
9289
9289
|
"mode": "0000644",
|
|
9290
9290
|
"sha256": "7290d5d15b4c8283ebb17e28b17739b9dc5de4da3e916e9491248ba8acc24619"
|
|
9291
9291
|
},
|
|
9292
|
+
{
|
|
9293
|
+
"path": "src/bongos/claim-attribution.js",
|
|
9294
|
+
"mode": "0000644",
|
|
9295
|
+
"sha256": "1c3c7bc5d3c72de526334866a966a2fc7c5c8a486e19d65fefd50431f982d77b"
|
|
9296
|
+
},
|
|
9292
9297
|
{
|
|
9293
9298
|
"path": "src/bongos/db-kernel.js",
|
|
9294
9299
|
"mode": "0000644",
|
|
@@ -9547,7 +9552,7 @@
|
|
|
9547
9552
|
{
|
|
9548
9553
|
"path": "src/module-api.js",
|
|
9549
9554
|
"mode": "0000644",
|
|
9550
|
-
"sha256": "
|
|
9555
|
+
"sha256": "3db8b41741ace6b9070683824e39c1fa8e7c2724bef4585e91734ffd43afa382"
|
|
9551
9556
|
},
|
|
9552
9557
|
{
|
|
9553
9558
|
"path": "src/module-loader/catalog.js",
|
|
@@ -10207,7 +10212,7 @@
|
|
|
10207
10212
|
{
|
|
10208
10213
|
"path": "tests/conductor.mjs",
|
|
10209
10214
|
"mode": "0000644",
|
|
10210
|
-
"sha256": "
|
|
10215
|
+
"sha256": "e0d75747731cf45280dca2d36260a8b7799923dc1a2ffeb775cd37a0eb1f837c"
|
|
10211
10216
|
},
|
|
10212
10217
|
{
|
|
10213
10218
|
"path": "tests/confirm_attribution.mjs",
|
|
@@ -11177,7 +11182,7 @@
|
|
|
11177
11182
|
{
|
|
11178
11183
|
"path": "tests/hall_settings_world.mjs",
|
|
11179
11184
|
"mode": "0000644",
|
|
11180
|
-
"sha256": "
|
|
11185
|
+
"sha256": "5e2429ec47f2037d26a18b3813dd145fab1e83af232fb1a883093d6c4d563118"
|
|
11181
11186
|
},
|
|
11182
11187
|
{
|
|
11183
11188
|
"path": "tests/hall_signout.mjs",
|
package/docs/copy-inventory.md
CHANGED
|
@@ -225,7 +225,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
225
225
|
| `e6982a9ff948` | certain | Charter library | `modules/hall-ui/public/government.js:799` |
|
|
226
226
|
| `f8725cf3ba62` | certain | Checking dependency order… | `modules/hall-ui/public/work.js:853` |
|
|
227
227
|
| `7a41b18c0de8` | certain | Checking for conflicts… | `modules/hall-ui/public/work.js:832` |
|
|
228
|
-
| `aa3ba7d28a76` | certain | Checking your key… | `modules/hall-ui/public/settings.js:
|
|
228
|
+
| `aa3ba7d28a76` | certain | Checking your key… | `modules/hall-ui/public/settings.js:1138` |
|
|
229
229
|
| `b3d0e2af5176` | certain | Choose a goal first. | `modules/hall-ui/public/task.js:666` |
|
|
230
230
|
| `1c6b0e3ffc0e` | certain | Choose a setup | `modules/hall-ui/public/hall-render.js:779` |
|
|
231
231
|
| `6c88cdf417f1` | certain | Choose which sound plays for each build event — one when Claude waits for your input, another when a task ship | `modules/hall-ui/public/settings.html:329` |
|
|
@@ -291,7 +291,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
291
291
|
| `b9e53fbd90e6` | certain | Could not change standing: {…} | `modules/hall-ui/public/watch.js:845` |
|
|
292
292
|
| `1ef1efc15b6c` | certain | Could not change that just now. | `modules/hall-ui/public/goals-render.js:1235` |
|
|
293
293
|
| `78e18ea59b9f` | certain | Could not close: {…} | `modules/hall-ui/public/harbor.js:136` |
|
|
294
|
-
| `c3f99e7c6e6b` | certain | Could not copy automatically — select and copy manually. ({…}) | `modules/hall-ui/public/settings.js:
|
|
294
|
+
| `c3f99e7c6e6b` | certain | Could not copy automatically — select and copy manually. ({…}) | `modules/hall-ui/public/settings.js:1017` |
|
|
295
295
|
| `e3fd1febf63d` | certain | Could not copy to the clipboard. Try again. | `modules/hall-ui/public/goals-page.js:374` |
|
|
296
296
|
| `e3fd1febf63d` | certain | Could not copy to the clipboard. Try again. | `modules/hall-ui/public/work.js:614` |
|
|
297
297
|
| `487e0b39ac8f` | certain | Could not copy — select and copy by hand. | `modules/hall-ui/public/box-panel.js:413` |
|
|
@@ -313,22 +313,22 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
313
313
|
| `edd5bafbe075` | certain | Could not load the queue just now. | `modules/hall-ui/public/ideas.js:550` |
|
|
314
314
|
| `02bb0570996a` | certain | Could not load the ranks. | `modules/hall-ui/public/ranks.js:197` |
|
|
315
315
|
| `2878778cf9f3` | certain | Could not load this page. | `modules/hall-ui/public/watch.js:1311` |
|
|
316
|
-
| `4b0c8d94541c` | certain | Could not load your account. Reload the page to try again. | `modules/hall-ui/public/settings.js:
|
|
316
|
+
| `4b0c8d94541c` | certain | Could not load your account. Reload the page to try again. | `modules/hall-ui/public/settings.js:1396` |
|
|
317
317
|
| `2a9fb4046bc4` | certain | Could not load your rank. Return to the hall and try again. | `modules/hall-ui/public/ranks.js:196` |
|
|
318
318
|
| `9d533e811dec` | certain | Could not load your sessions: {…} | `modules/hall-ui/public/settings-sessions.js:114` |
|
|
319
|
-
| `64f9d51f0fa2` | certain | Could not load your settings. | `modules/hall-ui/public/settings.js:
|
|
319
|
+
| `64f9d51f0fa2` | certain | Could not load your settings. | `modules/hall-ui/public/settings.js:1399` |
|
|
320
320
|
| `de244c45d916` | certain | Could not load {…} | `modules/hall-ui/public/task.js:703` |
|
|
321
321
|
| `2366356926b4` | certain | Could not mark the primer just now. Try again. | `modules/hall-ui/public/primer.js:260` |
|
|
322
322
|
| `753987b5da13` | certain | Could not reach the submit endpoint. | `modules/hall-ui/public/modules.js:297` |
|
|
323
323
|
| `6f500726f0ac` | certain | Could not read the report: {…} | `modules/hall-ui/public/watch.js:640` |
|
|
324
|
-
| `8b470cebf53d` | certain | Could not remove your key. Try again. | `modules/hall-ui/public/settings.js:
|
|
325
|
-
| `4cf6bc8b377b` | certain | Could not remove. Try again. | `modules/hall-ui/public/settings.js:
|
|
324
|
+
| `8b470cebf53d` | certain | Could not remove your key. Try again. | `modules/hall-ui/public/settings.js:1218` |
|
|
325
|
+
| `4cf6bc8b377b` | certain | Could not remove. Try again. | `modules/hall-ui/public/settings.js:1217` |
|
|
326
326
|
| `7a778d188e87` | certain | Could not remove: {…} | `modules/hall-ui/public/government.js:369` |
|
|
327
327
|
| `bb5a7753e62b` | certain | Could not reset: {…} | `modules/hall-ui/public/government.js:301` |
|
|
328
328
|
| `b526ee0b8c48` | certain | Could not save just now. Try again. | `modules/hall-ui/public/builders.js:464` |
|
|
329
329
|
| `41a351aea8d4` | certain | Could not save the volume. Try again. | `modules/hall-ui/public/settings.js:221` |
|
|
330
330
|
| `5305186a4154` | certain | Could not save your choice. Try again. | `modules/hall-ui/public/settings.js:104` |
|
|
331
|
-
| `ea4fb30debd0` | certain | Could not save your key. Try again. | `modules/hall-ui/public/settings.js:
|
|
331
|
+
| `ea4fb30debd0` | certain | Could not save your key. Try again. | `modules/hall-ui/public/settings.js:1162` |
|
|
332
332
|
| `ef609f2c0cb3` | certain | Could not save your name. Try again. | `modules/hall-ui/public/settings.js:863` |
|
|
333
333
|
| `59ecd5c52f59` | certain | Could not save your preference. Try again. | `modules/hall-ui/public/builders.js:361` |
|
|
334
334
|
| `59ecd5c52f59` | certain | Could not save your preference. Try again. | `modules/hall-ui/public/settings.js:783` |
|
|
@@ -343,10 +343,10 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
343
343
|
| `8c234d5c8bd4` | certain | Could not save. Try again. | `modules/hall-ui/public/settings.js:683` |
|
|
344
344
|
| `8c234d5c8bd4` | certain | Could not save. Try again. | `modules/hall-ui/public/settings.js:782` |
|
|
345
345
|
| `8c234d5c8bd4` | certain | Could not save. Try again. | `modules/hall-ui/public/settings.js:862` |
|
|
346
|
-
| `8c234d5c8bd4` | certain | Could not save. Try again. | `modules/hall-ui/public/settings.js:
|
|
346
|
+
| `8c234d5c8bd4` | certain | Could not save. Try again. | `modules/hall-ui/public/settings.js:1161` |
|
|
347
347
|
| `31c6e3fd754b` | certain | Could not send the request just now. | `modules/hall-ui/public/goals-render.js:1250` |
|
|
348
|
-
| `1f4d9a989606` | certain | Could not set up key storage. Try again. | `modules/hall-ui/public/settings.js:
|
|
349
|
-
| `e65b392144ac` | certain | Could not set up storage. Try again. | `modules/hall-ui/public/settings.js:
|
|
348
|
+
| `1f4d9a989606` | certain | Could not set up key storage. Try again. | `modules/hall-ui/public/settings.js:1198` |
|
|
349
|
+
| `e65b392144ac` | certain | Could not set up storage. Try again. | `modules/hall-ui/public/settings.js:1197` |
|
|
350
350
|
| `d4601887a058` | certain | Could not sign out everywhere: {…} | `modules/hall-ui/public/settings-sessions.js:102` |
|
|
351
351
|
| `b1602d01f4bb` | certain | Could not unblock: {…} | `modules/hall-ui/public/harbor.js:187` |
|
|
352
352
|
| `3db890b074a7` | certain | Could not update visibility just now. | `modules/hall-ui/public/goals-render.js:1219` |
|
|
@@ -420,7 +420,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
420
420
|
| `04bbccfe7465` | certain | Everything a new builder needs before claiming their first task. About a ten-minute read. | `modules/hall-ui/public/primer.html:42` |
|
|
421
421
|
| `647513e4838a` | certain | Everything this builder has shipped. Seen one craft at a time, with goals and ideas, under | `modules/hall-ui/public/profile.html:108` |
|
|
422
422
|
| `efdb46f76b02` | certain | Everything this instance can run: what the core ships, what this project built, and who keeps each one true as | `modules/hall-ui/public/modules.html:32` |
|
|
423
|
-
| `d629e152f074` | certain | Expires {…} · refreshes on use. | `modules/hall-ui/public/settings.js:
|
|
423
|
+
| `d629e152f074` | certain | Expires {…} · refreshes on use. | `modules/hall-ui/public/settings.js:1007` |
|
|
424
424
|
| `de62f4cc7d2e` | certain | File a bug or idea | `modules/hall-ui/public/ideas.html:59` |
|
|
425
425
|
| `0f166311ff3f` | certain | File it | `modules/hall-ui/public/ideas.html:99` |
|
|
426
426
|
| `0c4632f983db` | certain | File the change | `modules/hall-ui/public/copy-desk.html:173` |
|
|
@@ -444,7 +444,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
444
444
|
| `6149e9ca69f7` | certain | Fleet summary | `modules/hall-ui/public/harbor.html:44` |
|
|
445
445
|
| `617f13fa3fdb` | certain | Flip the switch. | `modules/hall-ui/public/hall-render.js:779` |
|
|
446
446
|
| `42cee5cb3584` | certain | Fold this idea into # | `modules/hall-ui/public/task-detail.js:473` |
|
|
447
|
-
| `647bcfcfdb03` | certain | Fresh CLI token issued. Paste it in your terminal: | `modules/hall-ui/public/settings.js:
|
|
447
|
+
| `647bcfcfdb03` | certain | Fresh CLI token issued. Paste it in your terminal: | `modules/hall-ui/public/settings.js:997` |
|
|
448
448
|
| `55c71d76a94c` | certain | From creation to production — and the exact step where {{currency}} are awarded (at | `modules/hall-ui/public/diagrams.html:52` |
|
|
449
449
|
| `d32c5e058d1e` | certain | From the system | `modules/hall-ui/public/hall-render.js:658` |
|
|
450
450
|
| `fc6fdfa639a7` | certain | Full log | `modules/hall-ui/public/task.js:443` |
|
|
@@ -453,7 +453,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
453
453
|
| `c93912bbad76` | certain | Gathering the reviews and flagged copy that wait for you. | `modules/hall-ui/public/studio.html:46` |
|
|
454
454
|
| `4638e024f0af` | certain | Generated from the code on the last deploy · | `modules/hall-ui/public/atlas.js:431` |
|
|
455
455
|
| `3c1a5d27ef0b` | certain | Generated from the code on the last deploy. | `modules/hall-ui/public/atlas.js:431` |
|
|
456
|
-
| `2ae2114b61db` | certain | Get a free key ↗ | `modules/hall-ui/public/settings.js:
|
|
456
|
+
| `2ae2114b61db` | certain | Get a free key ↗ | `modules/hall-ui/public/settings.js:1041` |
|
|
457
457
|
| `4794a991de3d` | certain | Getting started | `modules/hall-ui/public/hall-widgets.js:59` |
|
|
458
458
|
| `a28b1a567f1a` | certain | GitHub username | `modules/hall-ui/public/hall-render.js:294` |
|
|
459
459
|
| `8e52f0649662` | certain | Give the category a label. | `modules/hall-ui/public/project-settings.js:189` |
|
|
@@ -508,7 +508,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
508
508
|
| `ef224c9de7c8` | certain | Ideas — {{worldName}} | `modules/hall-ui/public/ideas.html:6` |
|
|
509
509
|
| `9e9f8a44276b` | certain | Identity vouched | `modules/hall-ui/public/watch.js:373` |
|
|
510
510
|
| `7d6a7de7a69e` | certain | If the {…} has invited you, sign in with GitHub and you're in. If not, ask them for an invite — this project d | `modules/hall-ui/public/hall-render.js:286` |
|
|
511
|
-
| `b6c47d4ee42c` | certain | Image key removed. | `modules/hall-ui/public/settings.js:
|
|
511
|
+
| `b6c47d4ee42c` | certain | Image key removed. | `modules/hall-ui/public/settings.js:1214` |
|
|
512
512
|
| `783853467d52` | certain | Image-generation key | `modules/hall-ui/public/settings.html:184` |
|
|
513
513
|
| `5c2e2bcbd5fb` | certain | In Progress | `modules/hall-ui/public/work.html:95` |
|
|
514
514
|
| `75cfcdd41661` | certain | In this primer | `modules/hall-ui/public/primer.html:58` |
|
|
@@ -535,16 +535,16 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
535
535
|
| `bc779353aa0c` | certain | Karma — peer recognition and approvals, a separate counter from {…}. | `modules/hall-ui/public/profile.js:94` |
|
|
536
536
|
| `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` |
|
|
537
537
|
| `32d25ef2182d` | certain | Keep box | `modules/hall-ui/public/box-panel.js:164` |
|
|
538
|
-
| `fbe40b5818a3` | certain | Key removed. | `modules/hall-ui/public/settings.js:
|
|
539
|
-
| `93c17262bacf` | certain | Key storage is being set up by an Archon — check back shortly. {…} | `modules/hall-ui/public/settings.js:
|
|
540
|
-
| `2a3c9e501f8e` | certain | Key storage isn't set up yet. As an Archon you can turn it on now — the server generates and safely stores the | `modules/hall-ui/public/settings.js:
|
|
538
|
+
| `fbe40b5818a3` | certain | Key removed. | `modules/hall-ui/public/settings.js:1213` |
|
|
539
|
+
| `93c17262bacf` | certain | Key storage is being set up by an Archon — check back shortly. {…} | `modules/hall-ui/public/settings.js:1092` |
|
|
540
|
+
| `2a3c9e501f8e` | certain | Key storage isn't set up yet. As an Archon you can turn it on now — the server generates and safely stores the | `modules/hall-ui/public/settings.js:1088` |
|
|
541
541
|
| `7d6eaa8d4514` | certain | Kinds of work shipped | `modules/hall-ui/public/hall-render.js:1194` |
|
|
542
542
|
| `81f62e066dbf` | certain | Last 14 days: {…} / 10 average across {…} graded work{…} ({…} passed). | `modules/hall-ui/public/builders.js:595` |
|
|
543
543
|
| `35a15eb0a117` | certain | Last 30 days | `modules/hall-ui/public/hall-widgets.js:129` |
|
|
544
544
|
| `9be8b839eff8` | certain | Last 7 days | `modules/hall-ui/public/hall-widgets.js:129` |
|
|
545
545
|
| `59f0bc78a28f` | certain | Last 90 days | `modules/hall-ui/public/hall-widgets.js:130` |
|
|
546
546
|
| `13bae4dfb28e` | certain | Last claimed by | `modules/hall-ui/public/task.js:549` |
|
|
547
|
-
| `1526a7ae8c85` | certain | Latest version: v{…}. | `modules/hall-ui/public/settings.js:
|
|
547
|
+
| `1526a7ae8c85` | certain | Latest version: v{…}. | `modules/hall-ui/public/settings.js:1482` |
|
|
548
548
|
| `19ad2430937d` | certain | Learning capture | `modules/hall-ui/public/ideas.html:78` |
|
|
549
549
|
| `7c9b7a89353b` | certain | Leave goal | `modules/hall-ui/public/goals-render.js:931` |
|
|
550
550
|
| `f192ff6563f9` | certain | Leave your GitHub username and an Archon will let you in. No coding needed to start — once you're approved, si | `modules/hall-ui/public/hall-render.js:294` |
|
|
@@ -616,7 +616,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
616
616
|
| `c255749ec989` | certain | No achievements earned yet. | `modules/hall-ui/public/builders.js:480` |
|
|
617
617
|
| `c255749ec989` | certain | No achievements earned yet. | `modules/hall-ui/public/profile.js:144` |
|
|
618
618
|
| `479c1a45f39d` | certain | No backlog tasks match these filters. Try widening them. | `modules/hall-ui/public/work.js:1120` |
|
|
619
|
-
| `83f62fc94271` | certain | No builder account found for this sign-in. | `modules/hall-ui/public/settings.js:
|
|
619
|
+
| `83f62fc94271` | certain | No builder account found for this sign-in. | `modules/hall-ui/public/settings.js:1404` |
|
|
620
620
|
| `6d6fd2314248` | certain | No cross-project activity reported yet. | `modules/hall-ui/public/profile.js:323` |
|
|
621
621
|
| `b1ada579483c` | certain | No custom ranks yet | `modules/hall-ui/public/government.js:358` |
|
|
622
622
|
| `6e2d2e11f84a` | certain | No description. | `modules/hall-ui/public/idea.js:122` |
|
|
@@ -702,8 +702,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
702
702
|
| `5ded44da0cc5` | certain | Override requests | `modules/hall-ui/public/watch.html:143` |
|
|
703
703
|
| `15a49bf15007` | certain | Page {…} of {…} | `modules/hall-ui/public/hall-kit.js:112` |
|
|
704
704
|
| `8595b0aa76a0` | certain | Pair Claude Desktop | `modules/hall-ui/public/settings.html:242` |
|
|
705
|
-
| `cf68a394cfa5` | certain | Paste command copied. | `modules/hall-ui/public/settings.js:
|
|
706
|
-
| `a495649d1f82` | certain | Paste your key first. | `modules/hall-ui/public/settings.js:
|
|
705
|
+
| `cf68a394cfa5` | certain | Paste command copied. | `modules/hall-ui/public/settings.js:1016` |
|
|
706
|
+
| `a495649d1f82` | certain | Paste your key first. | `modules/hall-ui/public/settings.js:1137` |
|
|
707
707
|
| `542f801cc77f` | certain | Path-based estimate from declared files. Glob-aware detection with claim collisions — and lead resolution acti | `modules/hall-ui/public/goals-render.js:582` |
|
|
708
708
|
| `54fa47e421a5` | certain | Peer recognition | `modules/hall-ui/public/hall-widgets.js:168` |
|
|
709
709
|
| `47d609ece51c` | certain | Pending invitations | `modules/hall-ui/public/goals-render.js:1290` |
|
|
@@ -748,7 +748,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
748
748
|
| `6824ec470f99` | certain | Ranks — {{worldName}} | `modules/hall-ui/public/ranks.html:6` |
|
|
749
749
|
| `6824ec470f99` | certain | Ranks — {{worldName}} | `modules/hall-ui/public/ranks.html:6` |
|
|
750
750
|
| `e60039795803` | certain | Re-issue CLI token | `modules/hall-ui/public/settings.html:151` |
|
|
751
|
-
| `101a51902f53` | certain | Re-issue failed: {…} | `modules/hall-ui/public/settings.js:
|
|
751
|
+
| `101a51902f53` | certain | Re-issue failed: {…} | `modules/hall-ui/public/settings.js:1021` |
|
|
752
752
|
| `fae2f90927bd` | certain | Read an idea, then decide. An objection needs a reason and the section it faults. | `modules/hall-ui/public/board-room.html:51` |
|
|
753
753
|
| `b03e17693dcd` | certain | Read it as a table | `modules/hall-ui/public/drachmae.js:148` |
|
|
754
754
|
| `b03e17693dcd` | certain | Read it as a table | `modules/hall-ui/public/watch.js:1126` |
|
|
@@ -777,7 +777,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
777
777
|
| `c49f9b9f8864` | certain | Remake or tweak | `modules/hall-ui/public/studio.js:181` |
|
|
778
778
|
| `9c74a2572f4d` | certain | Remote control (recommended) | `modules/hall-ui/public/hall-render.js:779` |
|
|
779
779
|
| `65e3399a8fbf` | certain | Remove filter | `modules/hall-ui/public/hall-kit.js:311` |
|
|
780
|
-
| `dacd113fb3b2` | certain | Remove your image-generation key? Art generation will stop until you add one again. | `modules/hall-ui/public/settings.js:
|
|
780
|
+
| `dacd113fb3b2` | certain | Remove your image-generation key? Art generation will stop until you add one again. | `modules/hall-ui/public/settings.js:1205` |
|
|
781
781
|
| `20882d6ffdd0` | certain | Removed {…} from builder {…}. | `modules/hall-ui/public/government.js:365` |
|
|
782
782
|
| `b06589044b0b` | certain | Render session cards as widgets (prettier, costs tokens) instead of plain text (cheaper, identical info). | `modules/hall-ui/public/settings.js:507` |
|
|
783
783
|
| `9f4e519ea3e2` | certain | Repo Atlas | `modules/hall-ui/public/atlas.html:18` |
|
|
@@ -813,7 +813,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
813
813
|
| `f7ed4ba07178` | certain | Roadmap — {{worldName}} | `modules/hall-ui/public/roadmap.html:6` |
|
|
814
814
|
| `f7ed4ba07178` | certain | Roadmap — {{worldName}} | `modules/hall-ui/public/roadmap.html:6` |
|
|
815
815
|
| `b6596905f845` | certain | Said more than once | `modules/hall-ui/public/copy-desk.html:56` |
|
|
816
|
-
| `0c79b504aebe` | certain | Save key | `modules/hall-ui/public/settings.js:
|
|
816
|
+
| `0c79b504aebe` | certain | Save key | `modules/hall-ui/public/settings.js:1073` |
|
|
817
817
|
| `11486793742e` | certain | Saves the moment you toggle; applies from your next session. | `modules/hall-ui/public/settings.html:284` |
|
|
818
818
|
| `e8e4e49fe8f4` | certain | Saves when you press Save; shows everywhere at once. | `modules/hall-ui/public/settings.html:88` |
|
|
819
819
|
| `42cbc20a6ec8` | certain | Saves when you press Save; your next | `modules/hall-ui/public/settings.html:136` |
|
|
@@ -840,9 +840,9 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
840
840
|
| `55e0a34bafed` | certain | Session log{…} | `modules/hall-ui/public/task.js:447` |
|
|
841
841
|
| `cccb362bd6da` | certain | Sessions — {{worldName}} | `modules/hall-ui/public/sessions.html:6` |
|
|
842
842
|
| `cccb362bd6da` | certain | Sessions — {{worldName}} | `modules/hall-ui/public/sessions.html:6` |
|
|
843
|
-
| `b823d9a37a35` | certain | Set up key storage | `modules/hall-ui/public/settings.js:
|
|
843
|
+
| `b823d9a37a35` | certain | Set up key storage | `modules/hall-ui/public/settings.js:1089` |
|
|
844
844
|
| `84f31c3c3797` | certain | Set up your machine / get the code | `modules/hall-ui/public/hall-render.js:846` |
|
|
845
|
-
| `f639250de42f` | certain | Setting up key storage… | `modules/hall-ui/public/settings.js:
|
|
845
|
+
| `f639250de42f` | certain | Setting up key storage… | `modules/hall-ui/public/settings.js:1173` |
|
|
846
846
|
| `44bd6c3a2471` | certain | Setting up your box… (about a minute) | `modules/hall-ui/public/box-panel.js:298` |
|
|
847
847
|
| `65509721fe12` | certain | Setting up… | `modules/hall-ui/public/box-panel.js:352` |
|
|
848
848
|
| `62c3ea026095` | certain | Settings sections | `modules/hall-ui/public/settings.html:51` |
|
|
@@ -1090,15 +1090,15 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1090
1090
|
| `4ca77de13df4` | certain | Your dev box is stopped — turn it back on below. | `modules/hall-ui/public/box-panel.js:332` |
|
|
1091
1091
|
| `909b0b7c6ffa` | certain | Your display name | `modules/hall-ui/public/settings.html:84` |
|
|
1092
1092
|
| `51cae49539b5` | certain | Your files are kept | `modules/hall-ui/public/box-panel.js:323` |
|
|
1093
|
-
| `a47f15b6a33c` | certain | Your image-generation key settings could not be loaded. Reload the page to try again. | `modules/hall-ui/public/settings.js:
|
|
1094
|
-
| `51fd6f1ecb2f` | certain | Your key | `modules/hall-ui/public/settings.js:
|
|
1093
|
+
| `a47f15b6a33c` | certain | Your image-generation key settings could not be loaded. Reload the page to try again. | `modules/hall-ui/public/settings.js:1240` |
|
|
1094
|
+
| `51fd6f1ecb2f` | certain | Your key | `modules/hall-ui/public/settings.js:1069` |
|
|
1095
1095
|
| `20d453b11ae5` | certain | Your name | `modules/hall-ui/public/hall-render.js:294` |
|
|
1096
1096
|
| `6dadadffa36e` | certain | Your name cannot be blank. | `modules/hall-ui/public/settings.js:832` |
|
|
1097
1097
|
| `bd77210a8c90` | certain | Your name must be {…} characters or fewer. | `modules/hall-ui/public/settings.js:837` |
|
|
1098
1098
|
| `c0a01a95e97e` | certain | Your own idea. You may vote, but it can’t be decided by your vote alone, and a vote on your own idea earns no | `modules/hall-ui/public/board-room.js:274` |
|
|
1099
1099
|
| `8fc605026acf` | certain | Your pending join {…}: {…} — awaiting approval. | `modules/hall-ui/public/goal-inbox.js:88` |
|
|
1100
1100
|
| `e91418db3962` | certain | Your preferences, {…}. | `modules/hall-ui/public/settings.js:856` |
|
|
1101
|
-
| `e91418db3962` | certain | Your preferences, {…}. | `modules/hall-ui/public/settings.js:
|
|
1101
|
+
| `e91418db3962` | certain | Your preferences, {…}. | `modules/hall-ui/public/settings.js:1413` |
|
|
1102
1102
|
| `b6dceaace783` | certain | Your profile page setting applies now — private already answers "not found" everywhere your profile is read. R | `modules/hall-ui/public/settings.html:119` |
|
|
1103
1103
|
| `f39746e3d66b` | certain | Your rendering preference could not be loaded. Reload the page to try again. | `modules/hall-ui/public/settings.js:554` |
|
|
1104
1104
|
| `b2dfd7120052` | certain | Your request is sent ✓ | `modules/hall-ui/public/hall-render.js:391` |
|
|
@@ -1218,7 +1218,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1218
1218
|
| `7b85e6494596` | certain | opens a new tab | `modules/hall-ui/public/palette.js:190` |
|
|
1219
1219
|
| `c38db02adb61` | certain | or above | `modules/hall-ui/public/government.js:564` |
|
|
1220
1220
|
| `66f7e9c2dde0` | certain | or right-click — plain Ctrl+V will not paste here. Claude takes over the terminal with its own interface once | `modules/hall-ui/public/hall-render.js:779` |
|
|
1221
|
-
| `884948925fcb` | certain | paste command | `modules/hall-ui/public/settings.js:
|
|
1221
|
+
| `884948925fcb` | certain | paste command | `modules/hall-ui/public/settings.js:999` |
|
|
1222
1222
|
| `25d2c940e672` | certain | paste it into your terminal — bypasses Device Flow. | `modules/hall-ui/public/settings.html:152` |
|
|
1223
1223
|
| `2fb1dad96280` | certain | pending, on the People tab | `modules/hall-ui/public/watch.html:46` |
|
|
1224
1224
|
| `3b22c5af029b` | certain | rank or above, or that it is your own. | `modules/hall-ui/public/copy-desk.html:47` |
|
|
@@ -1315,7 +1315,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1315
1315
|
| `8186b562553a` | certain | {…} {…} waiting | `modules/hall-ui/public/work.js:407` |
|
|
1316
1316
|
| `0d4016a5531c` | certain | {…} {…}{…} | `modules/hall-ui/public/watch.js:474` |
|
|
1317
1317
|
| `0d4016a5531c` | certain | {…} {…}{…} | `modules/hall-ui/public/work.js:249` |
|
|
1318
|
-
| `b3757ba3bb46` | certain | {…} · Stored encrypted; never shown again after saving. | `modules/hall-ui/public/settings.js:
|
|
1318
|
+
| `b3757ba3bb46` | certain | {…} · Stored encrypted; never shown again after saving. | `modules/hall-ui/public/settings.js:1075` |
|
|
1319
1319
|
| `94445e6ed5e8` | certain | {…} · code | `modules/hall-ui/public/pair.js:53` |
|
|
1320
1320
|
| `d73256fbc395` | certain | {…} · who votes, and how it {…} | `modules/hall-ui/public/board-room.js:357` |
|
|
1321
1321
|
| `cab2a4296aec` | certain | {…} · {…} · {…}{…} | `modules/hall-ui/public/goal-inbox.js:326` |
|
package/docs/copy-registry.json
CHANGED
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"modules/hall-ui/public/settings.js:683",
|
|
82
82
|
"modules/hall-ui/public/settings.js:782",
|
|
83
83
|
"modules/hall-ui/public/settings.js:862",
|
|
84
|
-
"modules/hall-ui/public/settings.js:
|
|
84
|
+
"modules/hall-ui/public/settings.js:1161"
|
|
85
85
|
]
|
|
86
86
|
},
|
|
87
87
|
{
|
|
@@ -1468,7 +1468,7 @@
|
|
|
1468
1468
|
"occurrences": 2,
|
|
1469
1469
|
"at": [
|
|
1470
1470
|
"modules/hall-ui/public/settings.js:856",
|
|
1471
|
-
"modules/hall-ui/public/settings.js:
|
|
1471
|
+
"modules/hall-ui/public/settings.js:1413"
|
|
1472
1472
|
]
|
|
1473
1473
|
},
|
|
1474
1474
|
{
|
|
@@ -3055,7 +3055,7 @@
|
|
|
3055
3055
|
"surface": "builders-hall",
|
|
3056
3056
|
"text": "Checking your key…",
|
|
3057
3057
|
"file": "modules/hall-ui/public/settings.js",
|
|
3058
|
-
"line":
|
|
3058
|
+
"line": 1138,
|
|
3059
3059
|
"origin": "js-text-assign",
|
|
3060
3060
|
"confidence": "certain"
|
|
3061
3061
|
},
|
|
@@ -3649,7 +3649,7 @@
|
|
|
3649
3649
|
"surface": "builders-hall",
|
|
3650
3650
|
"text": "Could not copy automatically — select and copy manually. ({…})",
|
|
3651
3651
|
"file": "modules/hall-ui/public/settings.js",
|
|
3652
|
-
"line":
|
|
3652
|
+
"line": 1017,
|
|
3653
3653
|
"origin": "js-notice",
|
|
3654
3654
|
"confidence": "certain"
|
|
3655
3655
|
},
|
|
@@ -3847,7 +3847,7 @@
|
|
|
3847
3847
|
"surface": "builders-hall",
|
|
3848
3848
|
"text": "Could not load your account. Reload the page to try again.",
|
|
3849
3849
|
"file": "modules/hall-ui/public/settings.js",
|
|
3850
|
-
"line":
|
|
3850
|
+
"line": 1396,
|
|
3851
3851
|
"origin": "js-text-assign",
|
|
3852
3852
|
"confidence": "certain"
|
|
3853
3853
|
},
|
|
@@ -3874,7 +3874,7 @@
|
|
|
3874
3874
|
"surface": "builders-hall",
|
|
3875
3875
|
"text": "Could not load your settings.",
|
|
3876
3876
|
"file": "modules/hall-ui/public/settings.js",
|
|
3877
|
-
"line":
|
|
3877
|
+
"line": 1399,
|
|
3878
3878
|
"origin": "js-notice",
|
|
3879
3879
|
"confidence": "certain"
|
|
3880
3880
|
},
|
|
@@ -3919,7 +3919,7 @@
|
|
|
3919
3919
|
"surface": "builders-hall",
|
|
3920
3920
|
"text": "Could not remove your key. Try again.",
|
|
3921
3921
|
"file": "modules/hall-ui/public/settings.js",
|
|
3922
|
-
"line":
|
|
3922
|
+
"line": 1218,
|
|
3923
3923
|
"origin": "js-notice",
|
|
3924
3924
|
"confidence": "certain"
|
|
3925
3925
|
},
|
|
@@ -3928,7 +3928,7 @@
|
|
|
3928
3928
|
"surface": "builders-hall",
|
|
3929
3929
|
"text": "Could not remove. Try again.",
|
|
3930
3930
|
"file": "modules/hall-ui/public/settings.js",
|
|
3931
|
-
"line":
|
|
3931
|
+
"line": 1217,
|
|
3932
3932
|
"origin": "js-text-assign",
|
|
3933
3933
|
"confidence": "certain"
|
|
3934
3934
|
},
|
|
@@ -3982,7 +3982,7 @@
|
|
|
3982
3982
|
"surface": "builders-hall",
|
|
3983
3983
|
"text": "Could not save your key. Try again.",
|
|
3984
3984
|
"file": "modules/hall-ui/public/settings.js",
|
|
3985
|
-
"line":
|
|
3985
|
+
"line": 1162,
|
|
3986
3986
|
"origin": "js-notice",
|
|
3987
3987
|
"confidence": "certain"
|
|
3988
3988
|
},
|
|
@@ -4117,7 +4117,7 @@
|
|
|
4117
4117
|
"surface": "builders-hall",
|
|
4118
4118
|
"text": "Could not save. Try again.",
|
|
4119
4119
|
"file": "modules/hall-ui/public/settings.js",
|
|
4120
|
-
"line":
|
|
4120
|
+
"line": 1161,
|
|
4121
4121
|
"origin": "js-text-assign",
|
|
4122
4122
|
"confidence": "certain"
|
|
4123
4123
|
},
|
|
@@ -4135,7 +4135,7 @@
|
|
|
4135
4135
|
"surface": "builders-hall",
|
|
4136
4136
|
"text": "Could not set up key storage. Try again.",
|
|
4137
4137
|
"file": "modules/hall-ui/public/settings.js",
|
|
4138
|
-
"line":
|
|
4138
|
+
"line": 1198,
|
|
4139
4139
|
"origin": "js-notice",
|
|
4140
4140
|
"confidence": "certain"
|
|
4141
4141
|
},
|
|
@@ -4144,7 +4144,7 @@
|
|
|
4144
4144
|
"surface": "builders-hall",
|
|
4145
4145
|
"text": "Could not set up storage. Try again.",
|
|
4146
4146
|
"file": "modules/hall-ui/public/settings.js",
|
|
4147
|
-
"line":
|
|
4147
|
+
"line": 1197,
|
|
4148
4148
|
"origin": "js-text-assign",
|
|
4149
4149
|
"confidence": "certain"
|
|
4150
4150
|
},
|
|
@@ -4810,8 +4810,8 @@
|
|
|
4810
4810
|
"surface": "builders-hall",
|
|
4811
4811
|
"text": "Expires {…} · refreshes on use.",
|
|
4812
4812
|
"file": "modules/hall-ui/public/settings.js",
|
|
4813
|
-
"line":
|
|
4814
|
-
"origin": "js-
|
|
4813
|
+
"line": 1007,
|
|
4814
|
+
"origin": "js-text-assign",
|
|
4815
4815
|
"confidence": "certain"
|
|
4816
4816
|
},
|
|
4817
4817
|
{
|
|
@@ -5026,8 +5026,8 @@
|
|
|
5026
5026
|
"surface": "builders-hall",
|
|
5027
5027
|
"text": "Fresh CLI token issued. Paste it in your terminal:",
|
|
5028
5028
|
"file": "modules/hall-ui/public/settings.js",
|
|
5029
|
-
"line":
|
|
5030
|
-
"origin": "js-
|
|
5029
|
+
"line": 997,
|
|
5030
|
+
"origin": "js-text-assign",
|
|
5031
5031
|
"confidence": "certain"
|
|
5032
5032
|
},
|
|
5033
5033
|
{
|
|
@@ -5107,7 +5107,7 @@
|
|
|
5107
5107
|
"surface": "builders-hall",
|
|
5108
5108
|
"text": "Get a free key ↗",
|
|
5109
5109
|
"file": "modules/hall-ui/public/settings.js",
|
|
5110
|
-
"line":
|
|
5110
|
+
"line": 1041,
|
|
5111
5111
|
"origin": "js-markup",
|
|
5112
5112
|
"confidence": "certain"
|
|
5113
5113
|
},
|
|
@@ -5602,7 +5602,7 @@
|
|
|
5602
5602
|
"surface": "builders-hall",
|
|
5603
5603
|
"text": "Image key removed.",
|
|
5604
5604
|
"file": "modules/hall-ui/public/settings.js",
|
|
5605
|
-
"line":
|
|
5605
|
+
"line": 1214,
|
|
5606
5606
|
"origin": "js-notice",
|
|
5607
5607
|
"confidence": "certain"
|
|
5608
5608
|
},
|
|
@@ -5845,7 +5845,7 @@
|
|
|
5845
5845
|
"surface": "builders-hall",
|
|
5846
5846
|
"text": "Key removed.",
|
|
5847
5847
|
"file": "modules/hall-ui/public/settings.js",
|
|
5848
|
-
"line":
|
|
5848
|
+
"line": 1213,
|
|
5849
5849
|
"origin": "js-text-assign",
|
|
5850
5850
|
"confidence": "certain"
|
|
5851
5851
|
},
|
|
@@ -5854,7 +5854,7 @@
|
|
|
5854
5854
|
"surface": "builders-hall",
|
|
5855
5855
|
"text": "Key storage is being set up by an Archon — check back shortly. {…}",
|
|
5856
5856
|
"file": "modules/hall-ui/public/settings.js",
|
|
5857
|
-
"line":
|
|
5857
|
+
"line": 1092,
|
|
5858
5858
|
"origin": "js-markup",
|
|
5859
5859
|
"confidence": "certain"
|
|
5860
5860
|
},
|
|
@@ -5863,7 +5863,7 @@
|
|
|
5863
5863
|
"surface": "builders-hall",
|
|
5864
5864
|
"text": "Key storage isn't set up yet. As an Archon you can turn it on now — the server generates and safely stores the master key (no terminal needed).",
|
|
5865
5865
|
"file": "modules/hall-ui/public/settings.js",
|
|
5866
|
-
"line":
|
|
5866
|
+
"line": 1088,
|
|
5867
5867
|
"origin": "js-markup",
|
|
5868
5868
|
"confidence": "certain"
|
|
5869
5869
|
},
|
|
@@ -5926,7 +5926,7 @@
|
|
|
5926
5926
|
"surface": "builders-hall",
|
|
5927
5927
|
"text": "Latest version: v{…}.",
|
|
5928
5928
|
"file": "modules/hall-ui/public/settings.js",
|
|
5929
|
-
"line":
|
|
5929
|
+
"line": 1482,
|
|
5930
5930
|
"origin": "js-text-assign",
|
|
5931
5931
|
"confidence": "certain"
|
|
5932
5932
|
},
|
|
@@ -6574,7 +6574,7 @@
|
|
|
6574
6574
|
"surface": "builders-hall",
|
|
6575
6575
|
"text": "No builder account found for this sign-in.",
|
|
6576
6576
|
"file": "modules/hall-ui/public/settings.js",
|
|
6577
|
-
"line":
|
|
6577
|
+
"line": 1404,
|
|
6578
6578
|
"origin": "js-text-assign",
|
|
6579
6579
|
"confidence": "certain"
|
|
6580
6580
|
},
|
|
@@ -7348,7 +7348,7 @@
|
|
|
7348
7348
|
"surface": "builders-hall",
|
|
7349
7349
|
"text": "Paste command copied.",
|
|
7350
7350
|
"file": "modules/hall-ui/public/settings.js",
|
|
7351
|
-
"line":
|
|
7351
|
+
"line": 1016,
|
|
7352
7352
|
"origin": "js-notice",
|
|
7353
7353
|
"confidence": "certain"
|
|
7354
7354
|
},
|
|
@@ -7357,7 +7357,7 @@
|
|
|
7357
7357
|
"surface": "builders-hall",
|
|
7358
7358
|
"text": "Paste your key first.",
|
|
7359
7359
|
"file": "modules/hall-ui/public/settings.js",
|
|
7360
|
-
"line":
|
|
7360
|
+
"line": 1137,
|
|
7361
7361
|
"origin": "js-notice",
|
|
7362
7362
|
"confidence": "certain"
|
|
7363
7363
|
},
|
|
@@ -7762,7 +7762,7 @@
|
|
|
7762
7762
|
"surface": "builders-hall",
|
|
7763
7763
|
"text": "Re-issue failed: {…}",
|
|
7764
7764
|
"file": "modules/hall-ui/public/settings.js",
|
|
7765
|
-
"line":
|
|
7765
|
+
"line": 1021,
|
|
7766
7766
|
"origin": "js-notice",
|
|
7767
7767
|
"confidence": "certain"
|
|
7768
7768
|
},
|
|
@@ -8023,7 +8023,7 @@
|
|
|
8023
8023
|
"surface": "builders-hall",
|
|
8024
8024
|
"text": "Remove your image-generation key? Art generation will stop until you add one again.",
|
|
8025
8025
|
"file": "modules/hall-ui/public/settings.js",
|
|
8026
|
-
"line":
|
|
8026
|
+
"line": 1205,
|
|
8027
8027
|
"origin": "js-notice",
|
|
8028
8028
|
"confidence": "certain"
|
|
8029
8029
|
},
|
|
@@ -8347,7 +8347,7 @@
|
|
|
8347
8347
|
"surface": "builders-hall",
|
|
8348
8348
|
"text": "Save key",
|
|
8349
8349
|
"file": "modules/hall-ui/public/settings.js",
|
|
8350
|
-
"line":
|
|
8350
|
+
"line": 1073,
|
|
8351
8351
|
"origin": "js-markup",
|
|
8352
8352
|
"confidence": "certain"
|
|
8353
8353
|
},
|
|
@@ -8590,7 +8590,7 @@
|
|
|
8590
8590
|
"surface": "builders-hall",
|
|
8591
8591
|
"text": "Set up key storage",
|
|
8592
8592
|
"file": "modules/hall-ui/public/settings.js",
|
|
8593
|
-
"line":
|
|
8593
|
+
"line": 1089,
|
|
8594
8594
|
"origin": "js-markup",
|
|
8595
8595
|
"confidence": "certain"
|
|
8596
8596
|
},
|
|
@@ -8608,7 +8608,7 @@
|
|
|
8608
8608
|
"surface": "builders-hall",
|
|
8609
8609
|
"text": "Setting up key storage…",
|
|
8610
8610
|
"file": "modules/hall-ui/public/settings.js",
|
|
8611
|
-
"line":
|
|
8611
|
+
"line": 1173,
|
|
8612
8612
|
"origin": "js-text-assign",
|
|
8613
8613
|
"confidence": "certain"
|
|
8614
8614
|
},
|
|
@@ -10840,7 +10840,7 @@
|
|
|
10840
10840
|
"surface": "builders-hall",
|
|
10841
10841
|
"text": "Your image-generation key settings could not be loaded. Reload the page to try again.",
|
|
10842
10842
|
"file": "modules/hall-ui/public/settings.js",
|
|
10843
|
-
"line":
|
|
10843
|
+
"line": 1240,
|
|
10844
10844
|
"origin": "js-markup",
|
|
10845
10845
|
"confidence": "certain"
|
|
10846
10846
|
},
|
|
@@ -10849,7 +10849,7 @@
|
|
|
10849
10849
|
"surface": "builders-hall",
|
|
10850
10850
|
"text": "Your key",
|
|
10851
10851
|
"file": "modules/hall-ui/public/settings.js",
|
|
10852
|
-
"line":
|
|
10852
|
+
"line": 1069,
|
|
10853
10853
|
"origin": "js-markup",
|
|
10854
10854
|
"confidence": "certain"
|
|
10855
10855
|
},
|
|
@@ -10912,7 +10912,7 @@
|
|
|
10912
10912
|
"surface": "builders-hall",
|
|
10913
10913
|
"text": "Your preferences, {…}.",
|
|
10914
10914
|
"file": "modules/hall-ui/public/settings.js",
|
|
10915
|
-
"line":
|
|
10915
|
+
"line": 1413,
|
|
10916
10916
|
"origin": "js-text-assign",
|
|
10917
10917
|
"confidence": "certain"
|
|
10918
10918
|
},
|
|
@@ -11992,8 +11992,8 @@
|
|
|
11992
11992
|
"surface": "builders-hall",
|
|
11993
11993
|
"text": "paste command",
|
|
11994
11994
|
"file": "modules/hall-ui/public/settings.js",
|
|
11995
|
-
"line":
|
|
11996
|
-
"origin": "js-
|
|
11995
|
+
"line": 999,
|
|
11996
|
+
"origin": "js-text-assign",
|
|
11997
11997
|
"confidence": "certain"
|
|
11998
11998
|
},
|
|
11999
11999
|
{
|
|
@@ -12865,7 +12865,7 @@
|
|
|
12865
12865
|
"surface": "builders-hall",
|
|
12866
12866
|
"text": "{…} · Stored encrypted; never shown again after saving.",
|
|
12867
12867
|
"file": "modules/hall-ui/public/settings.js",
|
|
12868
|
-
"line":
|
|
12868
|
+
"line": 1075,
|
|
12869
12869
|
"origin": "js-markup",
|
|
12870
12870
|
"confidence": "certain"
|
|
12871
12871
|
},
|
|
@@ -1835,5 +1835,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
1835
1835
|
landed since 1.19.686 with no explicit bump. run 34724811506. (task 1002620)
|
|
1836
1836
|
1.19.688 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1837
1837
|
landed since 1.19.687 with no explicit bump. run 34725902871. (task 1002620)
|
|
1838
|
+
1.19.689 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1839
|
+
landed since 1.19.688 with no explicit bump. run 34726470555. (task 1002620)
|
|
1840
|
+
1.19.690 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1841
|
+
landed since 1.19.689 with no explicit bump. run 34727464797. (task 1002620)
|
|
1838
1842
|
---------------------------------------------------------------------------
|
|
1839
1843
|
```
|
|
@@ -982,18 +982,38 @@
|
|
|
982
982
|
const body = (res.data || {});
|
|
983
983
|
if (!res.ok) throw new Error(body.message || `HTTP ${res.status}`);
|
|
984
984
|
const expires = body.expires_at ? new Date(body.expires_at).toLocaleString() : 'unknown';
|
|
985
|
+
const pasteCommand = body.paste_command || '';
|
|
985
986
|
// The secret is QUOTED (settings.css `.quote`): a 64-character token cannot
|
|
986
|
-
// be a line of prose, so it sits one tonal step down with its own foot.
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
987
|
+
// be a line of prose, so it sits one tonal step down with its own foot. Same
|
|
988
|
+
// markup as the innerHTML template it replaces (task 1003644) — what changes
|
|
989
|
+
// is that the token arrives via textContent, where it is text by construction
|
|
990
|
+
// rather than by an escape call someone has to remember at every
|
|
991
|
+
// interpolation. Each literal is assigned DIRECTLY, never passed through the
|
|
992
|
+
// helper: `.textContent = '…'` is the render path copy-inventory.js follows,
|
|
993
|
+
// and threading them through `el(tag, cls, text)` reads tidier but drops all
|
|
994
|
+
// three out of the copy registry, blinding the artist's queue to this panel.
|
|
995
|
+
const el = (tag, cls) => Object.assign(document.createElement(tag), { className: cls });
|
|
996
|
+
const say = el('p', 'cli-result__say');
|
|
997
|
+
say.textContent = 'Fresh CLI token issued. Paste it in your terminal:';
|
|
998
|
+
const eyebrow = el('p', 'quote__eyebrow');
|
|
999
|
+
eyebrow.textContent = 'paste command';
|
|
1000
|
+
const pre = el('pre', 'quote__pre');
|
|
1001
|
+
pre.textContent = pasteCommand;
|
|
1002
|
+
const copyBtn = el('button', 'settings-btn settings-btn--quiet');
|
|
1003
|
+
copyBtn.type = 'button';
|
|
1004
|
+
copyBtn.id = 'cli-reissue-copy';
|
|
1005
|
+
copyBtn.textContent = 'Copy';
|
|
1006
|
+
const hint = el('span', 'settings-card__hint');
|
|
1007
|
+
hint.textContent = `Expires ${expires} · refreshes on use.`;
|
|
1008
|
+
const foot = el('div', 'quote__foot');
|
|
1009
|
+
foot.append(copyBtn, hint);
|
|
1010
|
+
const quote = el('div', 'quote');
|
|
1011
|
+
quote.append(eyebrow, pre, foot);
|
|
1012
|
+
result.textContent = ''; // a re-issue replaces the previous token, as innerHTML did
|
|
1013
|
+
result.append(say, quote);
|
|
993
1014
|
result.hidden = false;
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
try { await navigator.clipboard.writeText(body.paste_command); toast('Paste command copied.'); }
|
|
1015
|
+
copyBtn.addEventListener('click', async () => {
|
|
1016
|
+
try { await navigator.clipboard.writeText(pasteCommand); toast('Paste command copied.'); }
|
|
997
1017
|
catch (err) { toast(`Could not copy automatically — select and copy manually. (${err.message})`); }
|
|
998
1018
|
});
|
|
999
1019
|
} catch (err) {
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.690",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.19.
|
|
9
|
+
"version": "1.19.690",
|
|
10
10
|
"license": "AGPL-3.0-or-later",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"express": "^4.21.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.690",
|
|
4
4
|
"description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"main": "src/platform-server.js",
|
|
@@ -65,6 +65,9 @@ const { isSensitive } = require('../../src/bongos/sensitive-surfaces');
|
|
|
65
65
|
// re-hand-rolled this coverage logic — the exact drift this PR fixed for the
|
|
66
66
|
// sensitive-surface set. Route through the one matcher instead.)
|
|
67
67
|
const { matchOne } = require('../../src/bongos/path-match');
|
|
68
|
+
// The worktree→claim rule, shared with .claude/hooks/conductor.js — the third
|
|
69
|
+
// member of this file's "one definition, both conductors" set (task 1003837).
|
|
70
|
+
const { claimForWorktree } = require('../../src/bongos/claim-attribution');
|
|
68
71
|
|
|
69
72
|
const GRADER_DIFF_CHAR_CAP = 250_000;
|
|
70
73
|
const GRADER_TIMEOUT_MS = 240_000;
|
|
@@ -209,10 +212,11 @@ function diffStatsSince(base, untracked) {
|
|
|
209
212
|
//
|
|
210
213
|
// Claims from before the column existed carry a null worktree_name and are
|
|
211
214
|
// simply not matched here — the heuristic still covers them.
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
215
|
+
//
|
|
216
|
+
// The rule itself moved to src/bongos/claim-attribution.js in task 1003837, so
|
|
217
|
+
// the conductor HOOK can answer the same question the same way without pulling
|
|
218
|
+
// this module (and cli-lib, and the grader) into a per-prompt hook. Re-exported
|
|
219
|
+
// below, so every existing importer and test is unchanged.
|
|
216
220
|
|
|
217
221
|
// Pick the active claim whose touches[] best overlap the changed files — the
|
|
218
222
|
// claim the current diff most plausibly belongs to. With multiple (possibly
|
|
@@ -296,6 +300,13 @@ async function resolveTaskContext(changedFiles) {
|
|
|
296
300
|
// one answered is reported to the reader rather than hidden.
|
|
297
301
|
const attribution = attributeClaim(claims, changedFiles, path.basename(process.cwd()));
|
|
298
302
|
const c = attribution.claim;
|
|
303
|
+
// attributeClaim's documented { claim: null, signal: 'none' } return —
|
|
304
|
+
// not dead defensive code, and not a crash path: the throw is caught by
|
|
305
|
+
// this function's own catch below, which is where the no-claim context
|
|
306
|
+
// is synthesized. Unreachable only because the caller happens to check
|
|
307
|
+
// claims.length first; it states the seam's contract rather than relying
|
|
308
|
+
// on that. (Task 1003834's grade panel read it as a dead branch and
|
|
309
|
+
// filed it as a nit; kept, with this sentence, per task 1003837.)
|
|
299
310
|
if (!c) throw new Error('no claim attributed');
|
|
300
311
|
// Pull the full description for richer context (best-effort). Coerce
|
|
301
312
|
// task_id to an integer before interpolating it into the URL path —
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// src/bongos/claim-attribution.js — which of a builder's open claims does THIS
|
|
3
|
+
// working tree belong to? (task 1003837)
|
|
4
|
+
//
|
|
5
|
+
// WHY. Two things answer that question — `scripts/gds/conductor-dispatch.js`,
|
|
6
|
+
// which briefs a reviewer on the claim a diff belongs to, and
|
|
7
|
+
// `.claude/hooks/conductor.js`, which measures "changed files outside your
|
|
8
|
+
// claim's declared touches[]" on every prompt. They must not answer it
|
|
9
|
+
// differently, and the hook cannot simply require the dispatcher: the dispatcher
|
|
10
|
+
// pulls in cli-lib, the grader and the autonomy gate at module scope, and the
|
|
11
|
+
// hook's cost posture is explicit that it runs on EVERY prompt and must never
|
|
12
|
+
// crash one. So the rule lives here, in a dependency-free core module both can
|
|
13
|
+
// resolve — the same shape `sensitive-surfaces.js` and `path-match.js` already
|
|
14
|
+
// take for this exact pair, after the Phase 4 dogfood flagged a hand-copied
|
|
15
|
+
// pattern set as a drift risk.
|
|
16
|
+
//
|
|
17
|
+
// The worktree is a FACT, not a guess. `claim.js` records the worktree it was
|
|
18
|
+
// run in, and the project default is one claim per worktree (task 1642), so a
|
|
19
|
+
// name match attributes the tree with certainty. That is worth keeping separate
|
|
20
|
+
// from the dispatcher's touches[]-overlap heuristic, which is a guess and is
|
|
21
|
+
// labelled as one.
|
|
22
|
+
|
|
23
|
+
const path = require('node:path');
|
|
24
|
+
|
|
25
|
+
// The claim bound to `worktreeName`, or null. Exact match: the worktree name is
|
|
26
|
+
// a recorded identifier, not a pattern, so a near-miss is a different tree.
|
|
27
|
+
function claimForWorktree(claims, worktreeName) {
|
|
28
|
+
if (!Array.isArray(claims) || !worktreeName) return null;
|
|
29
|
+
return claims.find((c) => c && c.worktree_name && c.worktree_name === worktreeName) || null;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// The worktree name for a directory — its basename, which is what `claim.js`
|
|
33
|
+
// stores. Returns null for an empty/garbage input so callers get "unknown"
|
|
34
|
+
// rather than a name that cannot match anything.
|
|
35
|
+
//
|
|
36
|
+
// Backslashes are normalized BEFORE the basename, then `path.posix` does the
|
|
37
|
+
// split, so the answer does not depend on which platform is asking. Plain
|
|
38
|
+
// `path.basename` is the platform's: on POSIX it splits only on `/`, so a
|
|
39
|
+
// Windows path arrives back whole — `C:\…\task-1003837` would BE the worktree
|
|
40
|
+
// name, matching nothing. This repo keeps finding that same defect (task
|
|
41
|
+
// 1003821 was two CI-invisible instances of it), and `scripts/gds/worktree.js`
|
|
42
|
+
// already normalizes backslashes first for exactly this reason.
|
|
43
|
+
function worktreeNameFor(dir) {
|
|
44
|
+
const d = String(dir || '').trim().replace(/\\/g, '/').replace(/\/+$/, '');
|
|
45
|
+
if (!d) return null;
|
|
46
|
+
return path.posix.basename(d) || null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
module.exports = { claimForWorktree, worktreeNameFor };
|
package/src/module-api.js
CHANGED
|
@@ -71,7 +71,7 @@ const { responsibilityFor, ROLE_RESPONSIBILITIES } = require('./role-responsibil
|
|
|
71
71
|
// there. scripts/gds/bump-version.js still rewrites the literal below; it appends
|
|
72
72
|
// the entry to that file. Look for a version's history there, not here.
|
|
73
73
|
// ---------------------------------------------------------------------------
|
|
74
|
-
const CORE_VERSION = '1.19.
|
|
74
|
+
const CORE_VERSION = '1.19.690'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
|
|
75
75
|
|
|
76
76
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
77
77
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|
package/tests/conductor.mjs
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
import { strict as assert } from 'node:assert';
|
|
12
12
|
import { createRequire } from 'node:module';
|
|
13
|
+
import { readFileSync } from 'node:fs';
|
|
13
14
|
import { requireHostModule } from './helpers.mjs';
|
|
14
15
|
|
|
15
16
|
const require = createRequire(import.meta.url);
|
|
@@ -129,11 +130,15 @@ test('wandering: lowest priority — emitted after methodology/status advisories
|
|
|
129
130
|
assert.equal(a[a.length - 1].id, 'wandering', 'wandering is emitted last');
|
|
130
131
|
});
|
|
131
132
|
|
|
133
|
+
// The nudge says "your claim's", singular, so it is measured against the claim
|
|
134
|
+
// bound to THIS worktree (task 1003837). These three carry a worktree_name and a
|
|
135
|
+
// matching `worktree` for that reason; the four below pin what changed.
|
|
132
136
|
test('outside-touches fires for files outside the claim touches[]', () => {
|
|
133
137
|
const a = conductor.evaluateTriggers({
|
|
134
138
|
changedFiles: ['src/bongos/grader.js', 'server.js'],
|
|
135
139
|
prompt: 'edits',
|
|
136
|
-
activeClaims: [{ task_id: 1, title: 't', touches: ['src/bongos/grader.js'] }],
|
|
140
|
+
activeClaims: [{ task_id: 1, title: 't', touches: ['src/bongos/grader.js'], worktree_name: 'task-1' }],
|
|
141
|
+
worktree: 'task-1',
|
|
137
142
|
});
|
|
138
143
|
const outside = a.find((x) => x.id === 'outside-touches');
|
|
139
144
|
assert.ok(outside, 'expected outside-touches advisory');
|
|
@@ -144,7 +149,8 @@ test('outside-touches does NOT fire when all changes are covered', () => {
|
|
|
144
149
|
const a = conductor.evaluateTriggers({
|
|
145
150
|
changedFiles: ['src/bongos/grader.js', 'migrations/053_x.sql'],
|
|
146
151
|
prompt: 'edits',
|
|
147
|
-
activeClaims: [{ task_id: 1, title: 't', touches: ['src/bongos/grader.js', 'migrations/'] }],
|
|
152
|
+
activeClaims: [{ task_id: 1, title: 't', touches: ['src/bongos/grader.js', 'migrations/'], worktree_name: 'task-1' }],
|
|
153
|
+
worktree: 'task-1',
|
|
148
154
|
});
|
|
149
155
|
assert.ok(!ids(a).includes('outside-touches'));
|
|
150
156
|
});
|
|
@@ -153,7 +159,71 @@ test('outside-touches does NOT fire when the claim has empty touches[] (fresh ta
|
|
|
153
159
|
const a = conductor.evaluateTriggers({
|
|
154
160
|
changedFiles: ['src/bongos/grader.js'],
|
|
155
161
|
prompt: 'edits',
|
|
156
|
-
activeClaims: [{ task_id: 1, title: 't', touches: [] }],
|
|
162
|
+
activeClaims: [{ task_id: 1, title: 't', touches: [], worktree_name: 'task-1' }],
|
|
163
|
+
worktree: 'task-1',
|
|
164
|
+
});
|
|
165
|
+
assert.ok(!ids(a).includes('outside-touches'));
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
// THE BUG (task 1003837). The pool measured the line partly against somebody
|
|
169
|
+
// else's declared paths. The shape is the one observed on 2026-09-10: the claim
|
|
170
|
+
// you are in declares three exact files, a concurrent claim declares four broad
|
|
171
|
+
// directories, and those directories cover the very files the nudge should have
|
|
172
|
+
// named. Under the pool this fired with ONE file; it must name both.
|
|
173
|
+
test('outside-touches ignores a CONCURRENT claim\'s touches[] — the under-report', () => {
|
|
174
|
+
const a = conductor.evaluateTriggers({
|
|
175
|
+
changedFiles: ['modules/hall-ui/public/studio.js', 'scripts/gds/ship.js', 'docs/adr/0280-x.md'],
|
|
176
|
+
prompt: 'edits',
|
|
177
|
+
activeClaims: [
|
|
178
|
+
{ task_id: 1, title: 'mine', touches: ['modules/hall-ui/public/studio.js'], worktree_name: 'task-1' },
|
|
179
|
+
{ task_id: 2, title: 'theirs', touches: ['scripts/gds/', 'src/bongos/', 'modules/', 'clients/'], worktree_name: 'task-2' },
|
|
180
|
+
],
|
|
181
|
+
worktree: 'task-1',
|
|
182
|
+
});
|
|
183
|
+
const outside = a.find((x) => x.id === 'outside-touches');
|
|
184
|
+
assert.ok(outside, 'expected outside-touches advisory');
|
|
185
|
+
// studio.js is covered by MY claim; the other two are not covered by anything
|
|
186
|
+
// of mine. Under the pool, `modules/` and `scripts/gds/` swallowed them and
|
|
187
|
+
// the line read "1 changed file(s)".
|
|
188
|
+
assert.match(outside.text, /^2 changed file\(s\)/, 'both uncovered files must be counted, not one');
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
test('outside-touches counts only what MY claim fails to cover', () => {
|
|
192
|
+
const a = conductor.evaluateTriggers({
|
|
193
|
+
changedFiles: ['modules/hall-ui/public/studio.js', 'scripts/gds/ship.js', 'docs/adr/0280-x.md'],
|
|
194
|
+
prompt: 'edits',
|
|
195
|
+
activeClaims: [
|
|
196
|
+
{ task_id: 1, title: 'mine', touches: ['modules/hall-ui/public/studio.js'], worktree_name: 'task-1' },
|
|
197
|
+
{ task_id: 2, title: 'theirs', touches: ['scripts/gds/', 'modules/'], worktree_name: 'task-2' },
|
|
198
|
+
],
|
|
199
|
+
worktree: 'task-1',
|
|
200
|
+
});
|
|
201
|
+
const outside = a.find((x) => x.id === 'outside-touches');
|
|
202
|
+
assert.match(outside.text, /scripts\/gds\/ship\.js/, "the other claim's directory must not cover my diff");
|
|
203
|
+
assert.match(outside.text, /docs\/adr\/0280-x\.md/);
|
|
204
|
+
assert.doesNotMatch(outside.text, /studio\.js/, 'my own declared file is still covered');
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
// The owner's call, recorded in the task: an unbound tree is SILENT rather than
|
|
208
|
+
// falling back to the pool. There is no "your claim" to measure against, and a
|
|
209
|
+
// number derived from another claim's touches[] is the defect, not a degraded
|
|
210
|
+
// version of it. Trigger 1 still covers having no claim at all.
|
|
211
|
+
test('outside-touches is SILENT when no claim is bound to this worktree', () => {
|
|
212
|
+
const claims = [{ task_id: 2, title: 'theirs', touches: ['scripts/gds/'], worktree_name: 'task-2' }];
|
|
213
|
+
for (const worktree of ['cloud-bongos', null, undefined, '']) {
|
|
214
|
+
const a = conductor.evaluateTriggers({
|
|
215
|
+
changedFiles: ['server.js', 'scripts/gds/ship.js'], prompt: 'edits', activeClaims: claims, worktree,
|
|
216
|
+
});
|
|
217
|
+
assert.ok(!ids(a).includes('outside-touches'), `unbound tree (${String(worktree)}) must not borrow another claim's touches[]`);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
test('outside-touches is SILENT for a claim predating the worktree_name column', () => {
|
|
222
|
+
const a = conductor.evaluateTriggers({
|
|
223
|
+
changedFiles: ['server.js'],
|
|
224
|
+
prompt: 'edits',
|
|
225
|
+
activeClaims: [{ task_id: 1, title: 'old', touches: ['src/bongos/'], worktree_name: null }],
|
|
226
|
+
worktree: 'task-1',
|
|
157
227
|
});
|
|
158
228
|
assert.ok(!ids(a).includes('outside-touches'));
|
|
159
229
|
});
|
|
@@ -478,6 +548,36 @@ test('attribution: claimForWorktree ignores claims with no recorded worktree', (
|
|
|
478
548
|
assert.equal(dispatch.claimForWorktree(null, 'task-x'), null);
|
|
479
549
|
});
|
|
480
550
|
|
|
551
|
+
// ONE DEFINITION, BOTH CONDUCTORS (task 1003837). The dispatcher and the hook
|
|
552
|
+
// answer "which claim is this tree?" and must not answer it differently — the
|
|
553
|
+
// drift this file's own header warns about, after the Phase 4 dogfood found a
|
|
554
|
+
// hand-copied pattern set. The dispatcher re-exports the shared rule, so identity
|
|
555
|
+
// is the assertion: a second copy would pass a behavioural test and fail this one.
|
|
556
|
+
test('attribution: the hook and the dispatcher share ONE claimForWorktree', () => {
|
|
557
|
+
const shared = require('../src/bongos/claim-attribution.js');
|
|
558
|
+
assert.equal(dispatch.claimForWorktree, shared.claimForWorktree, 'the dispatcher must re-export the shared rule, not re-derive it');
|
|
559
|
+
// …and the hook resolves that same module rather than inlining a find().
|
|
560
|
+
const hookSrc = readFileSync(new URL('../.claude/hooks/conductor.js', import.meta.url), 'utf8');
|
|
561
|
+
assert.match(hookSrc, /requireCore\('src\/bongos\/claim-attribution'\)/, 'the hook resolves the shared module');
|
|
562
|
+
assert.doesNotMatch(hookSrc, /flatMap\(\(c\) => \(Array\.isArray\(c\.touches\)/, 'the touches POOL must not come back');
|
|
563
|
+
});
|
|
564
|
+
|
|
565
|
+
// PLATFORM-INDEPENDENT on purpose. These assertions must hold identically on the
|
|
566
|
+
// Windows box a builder runs on and the POSIX box CI runs on — `path.basename`
|
|
567
|
+
// splits only on `/` under POSIX, so a Windows path would come back whole and
|
|
568
|
+
// match no claim, and this test would red on CI while passing locally.
|
|
569
|
+
test('attribution: worktreeNameFor is the basename claim.js records, on either platform', () => {
|
|
570
|
+
const { worktreeNameFor } = require('../src/bongos/claim-attribution.js');
|
|
571
|
+
assert.equal(worktreeNameFor('/repo/.claude/worktrees/task-1003837'), 'task-1003837');
|
|
572
|
+
assert.equal(worktreeNameFor('C:\\repo\\.claude\\worktrees\\task-1003837'), 'task-1003837', 'a Windows path must resolve the same way under POSIX');
|
|
573
|
+
assert.equal(worktreeNameFor('C:/repo/.claude/worktrees/task-1003837'), 'task-1003837');
|
|
574
|
+
assert.equal(worktreeNameFor('/repo/.claude/worktrees/task-1003837/'), 'task-1003837', 'a trailing separator must not erase the name');
|
|
575
|
+
assert.equal(worktreeNameFor('C:\\repo\\worktrees\\task-1003837\\'), 'task-1003837');
|
|
576
|
+
assert.equal(worktreeNameFor(null), null);
|
|
577
|
+
assert.equal(worktreeNameFor(''), null);
|
|
578
|
+
assert.equal(worktreeNameFor(' '), null);
|
|
579
|
+
});
|
|
580
|
+
|
|
481
581
|
test('isCovered now delegates to the canonical matcher (still correct)', () => {
|
|
482
582
|
// Regression guard for the dedup: isCovered is a thin wrapper over
|
|
483
583
|
// path-match.matchOne (relocated from the deleted touches-scan in task 879),
|
|
@@ -229,14 +229,40 @@ test('white on the accent is gone, and the Discord mark is the one named excepti
|
|
|
229
229
|
test('the CLI token is quoted — one tonal step down, wrapping anywhere', () => {
|
|
230
230
|
const fn = settingsJs.match(/async function issueCliToken\([\s\S]*?\n \}\n/);
|
|
231
231
|
assert.ok(fn, 'issueCliToken is a whole function');
|
|
232
|
-
|
|
233
|
-
|
|
232
|
+
// The composition is unchanged by task 1003644 — only how it is built. These
|
|
233
|
+
// used to read `class="quote"` out of a template string; they read the same
|
|
234
|
+
// four class names out of the createElement calls.
|
|
235
|
+
for (const cls of ['quote', 'quote__eyebrow', 'quote__pre', 'quote__foot']) {
|
|
236
|
+
assert.match(fn[0], new RegExp(`'${cls}'`), `the result renders .${cls}`);
|
|
237
|
+
}
|
|
234
238
|
assert.doesNotMatch(fn[0], /style="/, 'no inline style on the foot');
|
|
235
239
|
const pre = ruleOf(settingsCss, '.quote__pre');
|
|
236
240
|
assert.match(pre, /overflow-wrap:\s*anywhere/, 'a 64-character token wraps inside its quote instead of widening the panel');
|
|
237
241
|
assert.match(ruleOf(settingsCss, '.quote') || '', /background:\s*var\(--glass\)/, 'one tonal step down from the panel');
|
|
238
242
|
});
|
|
239
243
|
|
|
244
|
+
// The node that renders a live credential builds it, never writes it (task
|
|
245
|
+
// 1003644). The old form was correct — every interpolation was wrapped in
|
|
246
|
+
// escapeHtml — but correct by memory: the escape was a call someone had to keep
|
|
247
|
+
// making, and the string being interpolated is a bearer token. Built as nodes,
|
|
248
|
+
// the token is text by construction and there is no call to forget.
|
|
249
|
+
test('the CLI token reaches the page as text, not as markup', () => {
|
|
250
|
+
const fn = settingsJs.match(/async function issueCliToken\([\s\S]*?\n \}\n/);
|
|
251
|
+
assert.ok(fn, 'issueCliToken is a whole function');
|
|
252
|
+
// An ASSIGNMENT, not the bare word — the function's own comment names innerHTML
|
|
253
|
+
// to say why it isn't used, and a test that its explanation trips is a test that
|
|
254
|
+
// punishes documenting the decision.
|
|
255
|
+
assert.doesNotMatch(fn[0], /\.innerHTML\s*=/, 'the credential node must not be assembled by writing innerHTML');
|
|
256
|
+
assert.match(fn[0], /createElement/, 'it is built with createElement');
|
|
257
|
+
assert.match(fn[0], /textContent/, 'and filled with textContent');
|
|
258
|
+
// The secret and the clipboard read the SAME resolved value, so the button can
|
|
259
|
+
// never copy a different string than the one on screen — nor the literal
|
|
260
|
+
// "undefined", which writeText(body.paste_command) produced on a body without one.
|
|
261
|
+
assert.match(fn[0], /const pasteCommand = body\.paste_command \|\| ''/, 'one resolved value');
|
|
262
|
+
assert.match(fn[0], /writeText\(pasteCommand\)/, 'the clipboard copies that same value');
|
|
263
|
+
assert.match(fn[0], /result\.textContent = ''/, 're-issuing replaces the previous token rather than stacking a second');
|
|
264
|
+
});
|
|
265
|
+
|
|
240
266
|
// The hall's my-projects page is GONE (owner decision, task 1003308): "my
|
|
241
267
|
// projects" is a user-level page that already lives on the hub, so the hall
|
|
242
268
|
// carries neither the page nor a link nor a redirect to it.
|