@bongos/core 1.19.902 → 1.19.904

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/.bongos-core.json +37 -67
  2. package/bin/bongos.js +7 -13
  3. package/docs/copy-inventory.md +6 -7
  4. package/docs/copy-registry.json +9 -18
  5. package/docs/module-api-changelog.md +4 -0
  6. package/docs/recipes/bongos-cli-release.md +3 -2
  7. package/docs/recipes/instance-first-run.md +1 -2
  8. package/docs/recipes/local-dev.md +0 -2
  9. package/modules/hall-ui/public/collab-lib.js +22 -0
  10. package/modules/hall-ui/public/collab.js +17 -2
  11. package/modules/hall-ui/public/hall-kit.js +11 -5
  12. package/modules/hall-ui/public/profile-charts.js +1 -1
  13. package/package-lock.json +2 -2
  14. package/package.json +1 -1
  15. package/scripts/gds/api.js +1 -25
  16. package/scripts/gds/build-cli-package.js +17 -35
  17. package/scripts/gds/claude-materialize.js +1 -1
  18. package/scripts/gds/cli-lib.js +5 -127
  19. package/scripts/gds/go-live.js +1 -1
  20. package/scripts/gds/login.js +1 -1
  21. package/scripts/gds/plain-cards.js +0 -8
  22. package/scripts/gds/ship-land.js +2 -18
  23. package/src/module-api.js +1 -1
  24. package/tests/bongos_dispatch.mjs +4 -4
  25. package/tests/claude_materialize.mjs +1 -1
  26. package/tests/cli_package.mjs +1 -4
  27. package/tests/cli_surface.mjs +1 -88
  28. package/tests/collab_page.mjs +44 -0
  29. package/tests/hall_kit_charts.mjs +38 -0
  30. package/tests/plain_cards.mjs +2 -2
  31. package/tests/rank_tier_single_source.mjs +3 -5
  32. package/scripts/gds/box-connect-lib.js +0 -550
  33. package/scripts/gds/code.js +0 -105
  34. package/scripts/gds/shell.js +0 -102
  35. package/tests/bongos_box_connect.mjs +0 -166
  36. package/tests/box_scope_predicate.mjs +0 -117
  37. package/tests/cli_box_scope.mjs +0 -92
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.902",
6
- "core_contract": "1.19.902",
7
- "source_commit": "2ec480ac926f1b9c899eef2576b1e6a7409e9013",
5
+ "core_version": "1.19.904",
6
+ "core_contract": "1.19.904",
7
+ "source_commit": "a20b94f5efe38b09072d0456c5e352a2cf7bba1c",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-09-20T07:49:00.223Z",
9
+ "built_at": "2026-09-20T12:45:09.857Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 502,
13
13
  "agent_docs_stubbed": 26,
14
- "functional_verbatim": 2284,
14
+ "functional_verbatim": 2278,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 2812,
20
- "tree_sha256": "e1c4784e88618bc042732cabcda2e40e5af8c8a4f21282de67baa72990fe7b6b",
19
+ "file_count": 2806,
20
+ "tree_sha256": "e03f442cd778ef6dd35a6c2f47a07e0f4d7c72a8d86882256367239d4b87989b",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -342,7 +342,7 @@
342
342
  {
343
343
  "path": "bin/bongos.js",
344
344
  "mode": "0000644",
345
- "sha256": "36d11612cace3d69bd2e98c8f7b5b7d737d8bba5fd8fe1a0554a85e3cb1973ca"
345
+ "sha256": "ba5f4b2a9e61712cd1da655265c8baffcb732b65690fb81297ce5dcf12fa93cf"
346
346
  },
347
347
  {
348
348
  "path": "clients/bongos-client/README.md",
@@ -2097,12 +2097,12 @@
2097
2097
  {
2098
2098
  "path": "docs/copy-inventory.md",
2099
2099
  "mode": "0000644",
2100
- "sha256": "bee7d1411eaf22aaaf7887b53e1151a0654055f8b4a7f6d78802b1eea766aa71"
2100
+ "sha256": "3f1539c0050241b9dd7200170d664fc193c977958c2fee57e4bf5309591ccae6"
2101
2101
  },
2102
2102
  {
2103
2103
  "path": "docs/copy-registry.json",
2104
2104
  "mode": "0000644",
2105
- "sha256": "120d68ae5ad77ce670704ccd385b14b523ff7a530742b0038788e480084c6e34"
2105
+ "sha256": "1be015a58b02240690be5a2c5fcad56b42074500dcc7ebb8255ffa5156063748"
2106
2106
  },
2107
2107
  {
2108
2108
  "path": "docs/design/apex-pass-2-direction.md",
@@ -2632,7 +2632,7 @@
2632
2632
  {
2633
2633
  "path": "docs/module-api-changelog.md",
2634
2634
  "mode": "0000644",
2635
- "sha256": "367d63ea84eaa28d8ccbadc967d41fb94a689906a8d8438e8b6a123c6ff4489e"
2635
+ "sha256": "25f3aef34d52ca5c8a93b25fa0cd79aeba0e2395e2f66d2e192ca57464d71b65"
2636
2636
  },
2637
2637
  {
2638
2638
  "path": "docs/modules-contract.md",
@@ -2742,7 +2742,7 @@
2742
2742
  {
2743
2743
  "path": "docs/recipes/bongos-cli-release.md",
2744
2744
  "mode": "0000644",
2745
- "sha256": "de596822f2f5925fd9e4008cc0214c025a73f5ec3a0275aa6f9a117368ed2a76"
2745
+ "sha256": "c8e3322e6399678c343bc45456fba2c17d9d0410af225ed7be9f9466414d3d80"
2746
2746
  },
2747
2747
  {
2748
2748
  "path": "docs/recipes/claude-design-loop.md",
@@ -2777,7 +2777,7 @@
2777
2777
  {
2778
2778
  "path": "docs/recipes/instance-first-run.md",
2779
2779
  "mode": "0000644",
2780
- "sha256": "259148d6e612209502b3f46e82e57c62da049fac4d883755e151be37de92fbf7"
2780
+ "sha256": "5d20c34b8d61a72bf19ac18dbcf85545331c94d70634b7806a9d77799852e304"
2781
2781
  },
2782
2782
  {
2783
2783
  "path": "docs/recipes/instance-service-restart.md",
@@ -2787,7 +2787,7 @@
2787
2787
  {
2788
2788
  "path": "docs/recipes/local-dev.md",
2789
2789
  "mode": "0000644",
2790
- "sha256": "0e46f17cd96def91e202e7e4c42c54d569dca25fab2e43d5744199dd263b751f"
2790
+ "sha256": "44ab0e2bf513149d530cd7d02d341ec12d4a902e0de8312faaee13f698a99aa0"
2791
2791
  },
2792
2792
  {
2793
2793
  "path": "docs/recipes/managed-settings-remote-control.md",
@@ -4647,7 +4647,7 @@
4647
4647
  {
4648
4648
  "path": "modules/hall-ui/public/collab-lib.js",
4649
4649
  "mode": "0000644",
4650
- "sha256": "c8c30e5f3cb5982a8218b6e8b135923c76b75604be553dcf3ed46fca0466e67f"
4650
+ "sha256": "bfadae8700cc22ea13f8bc39a3e2a1876b58da6151032e9a973402bc9bd0aaa7"
4651
4651
  },
4652
4652
  {
4653
4653
  "path": "modules/hall-ui/public/collab.css",
@@ -4662,7 +4662,7 @@
4662
4662
  {
4663
4663
  "path": "modules/hall-ui/public/collab.js",
4664
4664
  "mode": "0000644",
4665
- "sha256": "7d589e6c98f9f52831a9be9429493b49e68c3aa62f98f19cbcb77adbac70c0ca"
4665
+ "sha256": "91a0751cebcbc179f28ad1cac7a6c447f90369ae40f29e5f60c1bd934ac68f85"
4666
4666
  },
4667
4667
  {
4668
4668
  "path": "modules/hall-ui/public/collab.states.json",
@@ -4857,7 +4857,7 @@
4857
4857
  {
4858
4858
  "path": "modules/hall-ui/public/hall-kit.js",
4859
4859
  "mode": "0000644",
4860
- "sha256": "febbc27ca107c7da31f997119be95a73446bab70139339c10c951440fe2e1d28"
4860
+ "sha256": "1be3b170f1aff7e830f661c14df487bc30ec33e15499449f68748acad63794f8"
4861
4861
  },
4862
4862
  {
4863
4863
  "path": "modules/hall-ui/public/hall-render.js",
@@ -5012,7 +5012,7 @@
5012
5012
  {
5013
5013
  "path": "modules/hall-ui/public/profile-charts.js",
5014
5014
  "mode": "0000644",
5015
- "sha256": "809c92461d3569e431afcb9e060c687722bccfdfd7f4b028bca5133d7df0c2ab"
5015
+ "sha256": "456f477da6893e61f66778ea5cb6a15dc3c21ea4038f0a8184a4deca840f237c"
5016
5016
  },
5017
5017
  {
5018
5018
  "path": "modules/hall-ui/public/profile-connections.js",
@@ -7762,12 +7762,12 @@
7762
7762
  {
7763
7763
  "path": "package-lock.json",
7764
7764
  "mode": "0000644",
7765
- "sha256": "b072b5799f9a792ea474fc50364b099b477a89037abac29f31a80a4e0afd56a4"
7765
+ "sha256": "f6623c9d73536e00c2c9a3d44dc68f3e8bdbe44e47543c32aaa22f3059efa410"
7766
7766
  },
7767
7767
  {
7768
7768
  "path": "package.json",
7769
7769
  "mode": "0000644",
7770
- "sha256": "70ca20ce45a63886eff37d367e9574ab1ecc6d77191d500bc9c080ac80e71f8a"
7770
+ "sha256": "f092d5149aa7e2518d2ddd4b940e92c4d61f8c553afedd810d97752efa9a207e"
7771
7771
  },
7772
7772
  {
7773
7773
  "path": "public-docs/index.html",
@@ -7862,7 +7862,7 @@
7862
7862
  {
7863
7863
  "path": "scripts/gds/api.js",
7864
7864
  "mode": "0000644",
7865
- "sha256": "d36fa664267d64796faf071278437cb7cfa8c2b1c7ae2140bcb01d7c2ddf16e1"
7865
+ "sha256": "6f6db1b581ac3a56bd8be0c5e8bee7189ee1621608f6c8751f908228c6325b21"
7866
7866
  },
7867
7867
  {
7868
7868
  "path": "scripts/gds/api.ps1",
@@ -8034,11 +8034,6 @@
8034
8034
  "mode": "0000644",
8035
8035
  "sha256": "9ae0402d6bec0d746ec6b09effe8165a237ed9dc8983de8613b969f82aa3a2c1"
8036
8036
  },
8037
- {
8038
- "path": "scripts/gds/box-connect-lib.js",
8039
- "mode": "0000644",
8040
- "sha256": "dbc4dd22d858a7d17c34ebf211edbd6d885afa39ab7b9e3032a7390cd5526638"
8041
- },
8042
8037
  {
8043
8038
  "path": "scripts/gds/box-infra.js",
8044
8039
  "mode": "0000644",
@@ -8072,7 +8067,7 @@
8072
8067
  {
8073
8068
  "path": "scripts/gds/build-cli-package.js",
8074
8069
  "mode": "0000644",
8075
- "sha256": "fcb5bdfe3341b177018a080c2cd7295bad3b1772696e61bef6154ec1e5767300"
8070
+ "sha256": "a7a19db7b156f7e411e2a77146c2f9418b5b9ff7fa52be1e3dca56848307f98d"
8076
8071
  },
8077
8072
  {
8078
8073
  "path": "scripts/gds/bump-version.js",
@@ -8117,7 +8112,7 @@
8117
8112
  {
8118
8113
  "path": "scripts/gds/claude-materialize.js",
8119
8114
  "mode": "0000644",
8120
- "sha256": "8ac759488eef696a18a0035f51deed3b537c44f28d0191a108692b2399ae1787"
8115
+ "sha256": "37cbab033c9ba88ae557e8569fcabca9d361b4e26fc335ed5adacddf245ab38d"
8121
8116
  },
8122
8117
  {
8123
8118
  "path": "scripts/gds/claude-md-template.js",
@@ -8132,18 +8127,13 @@
8132
8127
  {
8133
8128
  "path": "scripts/gds/cli-lib.js",
8134
8129
  "mode": "0000644",
8135
- "sha256": "d320945b629ad20f4e6cc272f3b531d6f98ed2dae2f07286b459db5b15d2c07a"
8130
+ "sha256": "cbe71309f4e100b096eee7d91b90a4cc9e549caa3df51473f2ca3029ca4c8ba5"
8136
8131
  },
8137
8132
  {
8138
8133
  "path": "scripts/gds/client-baseurl-guard.js",
8139
8134
  "mode": "0000644",
8140
8135
  "sha256": "8ac4c8909b75aa5e2022a967ba9ac0cbcdac60da9d75757603827b86964c825b"
8141
8136
  },
8142
- {
8143
- "path": "scripts/gds/code.js",
8144
- "mode": "0000644",
8145
- "sha256": "6a726d269ec9a44fac6bdc7bdeb74bafbc2e3f303755296959b3a08642f98943"
8146
- },
8147
8137
  {
8148
8138
  "path": "scripts/gds/codemod-rename-src-gds.js",
8149
8139
  "mode": "0000644",
@@ -8457,7 +8447,7 @@
8457
8447
  {
8458
8448
  "path": "scripts/gds/go-live.js",
8459
8449
  "mode": "0000644",
8460
- "sha256": "f246947d973eec84ea174736bc87bf52b4716c939fc86bff4037b330f6790f9a"
8450
+ "sha256": "3ff8b2370bd93c5469708900ba3d36066aa82f4858831ce6e4b1b7e817e29dcb"
8461
8451
  },
8462
8452
  {
8463
8453
  "path": "scripts/gds/goal-names.js",
@@ -8572,7 +8562,7 @@
8572
8562
  {
8573
8563
  "path": "scripts/gds/login.js",
8574
8564
  "mode": "0000644",
8575
- "sha256": "5699ace73061de80bfc44213775cdecefc6d597f656abe76f67061eb43fd440c"
8565
+ "sha256": "fcb70ddb8175d4cbbfd3217dcb9352e6280d5597c8caffe88a6399b54041e93b"
8576
8566
  },
8577
8567
  {
8578
8568
  "path": "scripts/gds/main-audit.js",
@@ -8677,7 +8667,7 @@
8677
8667
  {
8678
8668
  "path": "scripts/gds/plain-cards.js",
8679
8669
  "mode": "0000644",
8680
- "sha256": "63344839b3cb2cba39757b5501759aaef8e1bf100468d7304a56d4e709f2f8cf"
8670
+ "sha256": "e65a6264bbf4e28da17a46c0f8400e53207e141ed57e0e4826d7320f91b25f46"
8681
8671
  },
8682
8672
  {
8683
8673
  "path": "scripts/gds/portability-smoke-art.sh",
@@ -9084,11 +9074,6 @@
9084
9074
  "mode": "0000644",
9085
9075
  "sha256": "79027b353a20b02c363d691ba30eda7d3456b8a081199ddc2c2559162523d66c"
9086
9076
  },
9087
- {
9088
- "path": "scripts/gds/shell.js",
9089
- "mode": "0000644",
9090
- "sha256": "087def1396283b19cb8a6deea4cc7f362d7a2f164d496a587220f0a48568aae6"
9091
- },
9092
9077
  {
9093
9078
  "path": "scripts/gds/ship-check.js",
9094
9079
  "mode": "0000644",
@@ -9142,7 +9127,7 @@
9142
9127
  {
9143
9128
  "path": "scripts/gds/ship-land.js",
9144
9129
  "mode": "0000644",
9145
- "sha256": "53f43c609206ea62e71f562aaceed316b6aea217612f74dcd800e30f06b17ea5"
9130
+ "sha256": "1a659cdc35cfda09e6e28cff97313871c648cfca24c08c6c97116e84649e6f67"
9146
9131
  },
9147
9132
  {
9148
9133
  "path": "scripts/gds/ship-memory-sync.js",
@@ -9777,7 +9762,7 @@
9777
9762
  {
9778
9763
  "path": "src/module-api.js",
9779
9764
  "mode": "0000644",
9780
- "sha256": "46c60fef08ac1cdeedec15a52a867d37f30a61e0ddbf9092a489fc7f5eae3a01"
9765
+ "sha256": "f15a6c9c7458ce744ffbe72c8997b25e0098a2a26b2f6f41e7e3513fc073110d"
9781
9766
  },
9782
9767
  {
9783
9768
  "path": "src/module-loader/catalog.js",
@@ -10309,11 +10294,6 @@
10309
10294
  "mode": "0000644",
10310
10295
  "sha256": "786a97b9cb24ed38c8703113533d733eb475ed671e3fc5b5ca5ce679b8d4a4a4"
10311
10296
  },
10312
- {
10313
- "path": "tests/bongos_box_connect.mjs",
10314
- "mode": "0000644",
10315
- "sha256": "6ca9d015de848e7a96a47bbe7f12564c7b8f9652339674f5e127068800ebb21c"
10316
- },
10317
10297
  {
10318
10298
  "path": "tests/bongos_cli.mjs",
10319
10299
  "mode": "0000644",
@@ -10322,7 +10302,7 @@
10322
10302
  {
10323
10303
  "path": "tests/bongos_dispatch.mjs",
10324
10304
  "mode": "0000644",
10325
- "sha256": "f378b55969f723290ead5e959eef038745ba24e628418ed04c88671ead7354d3"
10305
+ "sha256": "befc2f51a56d220107e825453148203a0cb7d9877bd8ab17bc71c8e93658efee"
10326
10306
  },
10327
10307
  {
10328
10308
  "path": "tests/bongos_downloads.mjs",
@@ -10389,11 +10369,6 @@
10389
10369
  "mode": "0000644",
10390
10370
  "sha256": "59b8fb0907125768a87a1ee24d74b1e0fa6b3e6ca6bed823fdd4db176e65b03a"
10391
10371
  },
10392
- {
10393
- "path": "tests/box_scope_predicate.mjs",
10394
- "mode": "0000644",
10395
- "sha256": "9dc459d61e6d47311609ff4639bb5ff9c9c36172ef5441204731a4a7818be0cd"
10396
- },
10397
10372
  {
10398
10373
  "path": "tests/box_scope_session.mjs",
10399
10374
  "mode": "0000644",
@@ -10562,18 +10537,13 @@
10562
10537
  {
10563
10538
  "path": "tests/claude_materialize.mjs",
10564
10539
  "mode": "0000644",
10565
- "sha256": "6354cd31332b41d64ada0c89363c5a17b9bbb5e5589e3bcf993afc7614591782"
10540
+ "sha256": "60eb54f19f26f3557afd6b12f0f2867208638a2b6547f58abd192b6f07e805c3"
10566
10541
  },
10567
10542
  {
10568
10543
  "path": "tests/clawback_confirmed_backlog.mjs",
10569
10544
  "mode": "0000644",
10570
10545
  "sha256": "dca080c2976cdde34584a823aaae08d0175f34694c10897adb777a3f0ffb8cab"
10571
10546
  },
10572
- {
10573
- "path": "tests/cli_box_scope.mjs",
10574
- "mode": "0000644",
10575
- "sha256": "b9258f690d5dc7c87bcbb12d510b3071a38669777ae9a92a99e683e76ea15e83"
10576
- },
10577
10547
  {
10578
10548
  "path": "tests/cli_dispatcher.mjs",
10579
10549
  "mode": "0000644",
@@ -10592,7 +10562,7 @@
10592
10562
  {
10593
10563
  "path": "tests/cli_package.mjs",
10594
10564
  "mode": "0000644",
10595
- "sha256": "e16f3fd835e440bad8a24ea1807663f08709bfe21b65cc25772b7d707bbba540"
10565
+ "sha256": "e7839e6ac47b12fe4decd50e31d37fba3bad7ac475e8f24e948bb49b52a3e83e"
10596
10566
  },
10597
10567
  {
10598
10568
  "path": "tests/cli_sessions.mjs",
@@ -10602,7 +10572,7 @@
10602
10572
  {
10603
10573
  "path": "tests/cli_surface.mjs",
10604
10574
  "mode": "0000644",
10605
- "sha256": "1475bff8f7e51244f451401f92ac647ddf859eacecf277a8b3f9990a23b84059"
10575
+ "sha256": "cc10440e148e19a157cd18f0325e121f5492484e09550578e98870dba61090a9"
10606
10576
  },
10607
10577
  {
10608
10578
  "path": "tests/cli_token_reissue.mjs",
@@ -10632,7 +10602,7 @@
10632
10602
  {
10633
10603
  "path": "tests/collab_page.mjs",
10634
10604
  "mode": "0000644",
10635
- "sha256": "d7bbf03d41d8808f5f86f333a9e925291a628b5e5b4cac483be34880a6d42d04"
10605
+ "sha256": "b710669fabe9e747fe37abf429356e80c1f7a36cd63ac308dda2a933243e2e6d"
10636
10606
  },
10637
10607
  {
10638
10608
  "path": "tests/compose_demo_credentials.mjs",
@@ -11627,7 +11597,7 @@
11627
11597
  {
11628
11598
  "path": "tests/hall_kit_charts.mjs",
11629
11599
  "mode": "0000644",
11630
- "sha256": "5654f4366ddcfcb61848a119a2dba3827f3fe19c0151005558a803c2e09db573"
11600
+ "sha256": "d9d37e08fb0293f83a7d218edd789de9eb63aca1e9cd7f910c5ffba41639918e"
11631
11601
  },
11632
11602
  {
11633
11603
  "path": "tests/hall_landing_boot.mjs",
@@ -12527,7 +12497,7 @@
12527
12497
  {
12528
12498
  "path": "tests/plain_cards.mjs",
12529
12499
  "mode": "0000644",
12530
- "sha256": "925f4ffa450b2eddff31712b8ea1cd3e7853110f156d8fd4574f1ba1d05d16a8"
12500
+ "sha256": "7549965b77f59c63fc2ac5fe5eb6cb4d292da9140bff5d589c47f99b784ab579"
12531
12501
  },
12532
12502
  {
12533
12503
  "path": "tests/planning_session_skill.mjs",
@@ -12967,7 +12937,7 @@
12967
12937
  {
12968
12938
  "path": "tests/rank_tier_single_source.mjs",
12969
12939
  "mode": "0000644",
12970
- "sha256": "fa78ebe4b9be867c6fc546ab53cd6cc4b76c532ae4effcce6bce83f6386e1ab3"
12940
+ "sha256": "c6c5832636160010eb44af6a5fb049756d778e413d532643f2d3be4d69651303"
12971
12941
  },
12972
12942
  {
12973
12943
  "path": "tests/rate_limit_public.mjs",
package/bin/bongos.js CHANGED
@@ -11,9 +11,10 @@
11
11
  // code. No auth/API logic lives here; the target scripts already share
12
12
  // scripts/gds/cli-lib.js.
13
13
  //
14
- // Phases 2-4 extend this same CLI with `shell`/`code` (VS Code Remote-SSH into
15
- // the dev box), a one-line installer + standalone binary, and instance-agnostic
16
- // `login`/`init`/`upgrade`.
14
+ // Phases 2-4 extend this same CLI with a one-line installer + standalone binary
15
+ // and instance-agnostic `login`/`init`/`upgrade`. (They also added `shell`/`code`,
16
+ // VS Code Remote-SSH into a per-builder dev box; the dev box was retired and
17
+ // those verbs removed with it — task 1003889.)
17
18
 
18
19
  'use strict';
19
20
 
@@ -52,8 +53,6 @@ const BUNDLED_RUNNERS = {
52
53
  // bare laptop has the standalone binary and nothing else (task 1003961).
53
54
  'paste-token.js': () => require('../scripts/gds/paste-token.js'),
54
55
  'api.js': () => require('../scripts/gds/api.js'),
55
- 'shell.js': () => require('../scripts/gds/shell.js'),
56
- 'code.js': () => require('../scripts/gds/code.js'),
57
56
  'init.js': () => require('../scripts/gds/init.js'),
58
57
  'onboard.js': () => require('../scripts/gds/onboard.js'),
59
58
  };
@@ -70,7 +69,7 @@ if (VERSION === '0.0.0') { try { VERSION = require('../package.json').version ||
70
69
  // `script` a file under scripts/gds/ (or api.js for actions with no
71
70
  // dedicated builder script yet).
72
71
  // `prefixArgs` inserted before the user's args — used to drive the generic
73
- // api.js caller (e.g. waking your box is just POST /box/ensure).
72
+ // api.js caller for an action with no dedicated script.
74
73
  // `selfHelp` the script prints its own (richer) usage on --help/-h, so the
75
74
  // dispatcher forwards the flag instead of answering it (task
76
75
  // 1002625). Only set it after verifying the script really does —
@@ -96,9 +95,6 @@ const VERBS = {
96
95
  // name, the way claim/ship/release already are (ADR 0104).
97
96
  'paste-token': { script: 'paste-token.js', group: 'account', summary: 'Finish re-auth: store the token copied from Settings (bongos paste-token <token>)' },
98
97
  doctor: { script: 'doctor.js', group: 'account', summary: 'Check your local toolchain + session' },
99
- box: { script: 'api.js', prefixArgs: ['POST', '/api/gds/box/ensure'], group: 'account', summary: 'Turn on / wake your cloud dev box' },
100
- shell: { script: 'shell.js', group: 'account', summary: 'Open a terminal on your dev box (--local for a local clone)' },
101
- code: { script: 'code.js', group: 'account', summary: 'Open VS Code on your dev box over Remote-SSH (--local for a local clone)' },
102
98
 
103
99
  init: { script: 'init.js', group: 'instance', summary: 'Scaffold a new instance (config + first version + kickoff tasks)' },
104
100
  dev: { script: 'dev.js', group: 'instance', summary: 'Run THIS instance locally in one command (Postgres + migrate + server + sign-in)', selfHelp: true },
@@ -245,12 +241,10 @@ function runBundled(verb, def, forwarded) {
245
241
  if (!runner) {
246
242
  process.stderr.write(
247
243
  `bongos: "${verb}" needs the full project (git + a repo clone), which the standalone binary doesn't carry.\n\n` +
248
- `Get onto a real environment first, then run it there:\n` +
244
+ `Get a checkout of the project repo, then run it there:\n` +
249
245
  ` bongos login <instance-url> sign in to an instance\n` +
250
- ` bongos code open VS Code on your cloud dev box (has everything)\n` +
251
- ` bongos shell open a terminal on your cloud dev box\n` +
252
246
  ` bongos init scaffold a new instance here\n\n` +
253
- `The standalone binary covers the on-ramp: login, box, shell, code, init, reauth, paste-token.\n`
247
+ `The standalone binary covers the on-ramp: login, init, reauth, paste-token.\n`
254
248
  );
255
249
  return 2;
256
250
  }
@@ -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
- **1827 strings** across 3 surfaces · 1585 distinct pieces of copy · 1827 certain, 0 heuristic · 166 shown in more than one place.
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 | 1337 |
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` — 1337 strings
81
+ ## `builders-hall` — 1336 strings
82
82
 
83
83
  | id | conf | text | where |
84
84
  |---|---|---|---|
@@ -135,7 +135,6 @@ 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:421` |
139
138
  | `996edffc1966` | certain | Access requests | `modules/hall-ui/public/watch.html:46` |
140
139
  | `996edffc1966` | certain | Access requests | `modules/hall-ui/public/watch.html:61` |
141
140
  | `303f8d90266f` | certain | Achievements could not be loaded. | `modules/hall-ui/public/builders.js:1196` |
@@ -304,7 +303,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
304
303
  | `90691bceaf68` | certain | Could not load | `modules/hall-ui/public/task.js:982` |
305
304
  | `589a4cfc5442` | certain | Could not load idea {…}. | `modules/hall-ui/public/ideas.js:644` |
306
305
  | `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:514` |
306
+ | `9912c3835136` | certain | Could not load requests — reload to try again. | `modules/hall-ui/public/collab.js:529` |
308
307
  | `7775fec0fa85` | certain | Could not load sessions. | `modules/hall-ui/public/sessions.js:399` |
309
308
  | `7775fec0fa85` | certain | Could not load sessions. | `modules/hall-ui/public/sessions.js:437` |
310
309
  | `a2f2e8babef5` | certain | Could not load that page. Try again. | `modules/hall-ui/public/blockers.js:274` |
@@ -669,7 +668,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
669
668
  | `c72e0bdb834a` | certain | Not declared in module.json — this is who ships the module. | `modules/hall-ui/public/modules.js:62` |
670
669
  | `361b353ded5e` | certain | Not enough shipped work yet to chart. | `modules/hall-ui/public/hall-widgets.js:184` |
671
670
  | `90230572d017` | certain | Not found | `modules/hall-ui/public/task.js:970` |
672
- | `8226c979db4d` | certain | Not now | `modules/hall-ui/public/collab.js:421` |
671
+ | `8226c979db4d` | certain | Not now | `modules/hall-ui/public/collab.js:435` |
673
672
  | `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
673
  | `61250b49a90b` | certain | Not scored. | `modules/hall-ui/public/idea.js:84` |
675
674
  | `8d6afe6def47` | certain | Not signed in | `modules/hall-ui/public/settings.html:40` |
@@ -847,7 +846,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
847
846
  | `42cbc20a6ec8` | certain | Saves when you press Save; your next | `modules/hall-ui/public/settings.html:136` |
848
847
  | `645dd8117cf3` | certain | Say why it is being retired — the reason goes in the record. | `modules/hall-ui/public/task.js:924` |
849
848
  | `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:421` |
849
+ | `12c1ec21a2c6` | certain | Say yes | `modules/hall-ui/public/collab.js:435` |
851
850
  | `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
851
  | `5d2ba8e72fa1` | certain | Search failed. | `modules/hall-ui/public/copy-desk.js:343` |
853
852
  | `373a7639bcb9` | certain | Sections in this primer | `modules/hall-ui/public/primer.html:52` |
@@ -3,9 +3,9 @@
3
3
  "generator": "scripts/gds/copy-inventory.js",
4
4
  "goal": 1000074,
5
5
  "counts": {
6
- "strings": 1827,
7
- "unique_ids": 1585,
8
- "certain": 1827,
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": 1337
16
+ "strings": 1336
17
17
  },
18
18
  "status-dashboard": {
19
19
  "at": "modules/status-ui/public",
@@ -2253,15 +2253,6 @@
2253
2253
  "origin": "js-markup",
2254
2254
  "confidence": "certain"
2255
2255
  },
2256
- {
2257
- "id": "9fe51a2e1e71",
2258
- "surface": "builders-hall",
2259
- "text": "A {…} — you are a {…}. Mingle pairs across roles.",
2260
- "file": "modules/hall-ui/public/collab.js",
2261
- "line": 421,
2262
- "origin": "js-markup",
2263
- "confidence": "certain"
2264
- },
2265
2256
  {
2266
2257
  "id": "996edffc1966",
2267
2258
  "surface": "builders-hall",
@@ -3775,11 +3766,11 @@
3775
3766
  "confidence": "certain"
3776
3767
  },
3777
3768
  {
3778
- "id": "8a4b590fa1a0",
3769
+ "id": "9912c3835136",
3779
3770
  "surface": "builders-hall",
3780
- "text": "Could not load requests.",
3771
+ "text": "Could not load requests — reload to try again.",
3781
3772
  "file": "modules/hall-ui/public/collab.js",
3782
- "line": 514,
3773
+ "line": 529,
3783
3774
  "origin": "js-text-assign",
3784
3775
  "confidence": "certain"
3785
3776
  },
@@ -7064,7 +7055,7 @@
7064
7055
  "surface": "builders-hall",
7065
7056
  "text": "Not now",
7066
7057
  "file": "modules/hall-ui/public/collab.js",
7067
- "line": 421,
7058
+ "line": 435,
7068
7059
  "origin": "js-markup",
7069
7060
  "confidence": "certain"
7070
7061
  },
@@ -8666,7 +8657,7 @@
8666
8657
  "surface": "builders-hall",
8667
8658
  "text": "Say yes",
8668
8659
  "file": "modules/hall-ui/public/collab.js",
8669
- "line": 421,
8660
+ "line": 435,
8670
8661
  "origin": "js-markup",
8671
8662
  "confidence": "certain"
8672
8663
  },
@@ -2278,5 +2278,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
2278
2278
  landed since 1.19.900 with no explicit bump. run 35494090938. (task 1002620)
2279
2279
  1.19.902 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
2280
2280
  landed since 1.19.901 with no explicit bump. run 35497860558. (task 1002620)
2281
+ 1.19.903 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
2282
+ landed since 1.19.902 with no explicit bump. run 35510679104. (task 1002620)
2283
+ 1.19.904 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
2284
+ landed since 1.19.903 with no explicit bump. run 35511494246. (task 1002620)
2281
2285
  ---------------------------------------------------------------------------
2282
2286
  ```
@@ -30,7 +30,8 @@ brew install example-owner/bongos/bongos # macOS/Linux
30
30
  scoop bucket add bongos https://github.com/example-owner/scoop-bongos; scoop install bongos
31
31
  ```
32
32
 
33
- Then: `bongos login <instance-url>` → `bongos code` / `bongos shell` onto a dev box.
33
+ Then: `bongos login <instance-url>` → `bongos start`. Writing code needs a checkout of the
34
+ project repo, where the full CLI is installed.
34
35
 
35
36
  ## One-time owner setup (tracked as the open blocker on [#1248](https://example.com/builders#/task/1248))
36
37
 
@@ -61,6 +62,6 @@ Verify: `curl -fsSL https://example.com/downloads/bongos/version` shows the new
61
62
  `bin/bongos.js` is one dispatcher with two runtimes ([task 1248](https://example.com/builders#/task/1248)):
62
63
 
63
64
  - **repo / `npm i -g`** → runs under `node`; spawns each sibling `scripts/gds/*.js` (unchanged).
64
- - **compiled binary** → `process.execPath` is the `bongos` binary (no `node`, no scripts on disk), so it dispatches the **bundled on-ramp verbs in-process**: `login`/`setup`, `reauth`, `box`, `shell`, `code`, `init`. The heavy work verbs (`ship`/`claim`/`start`/`status`/`recall`/`cost`/`release`/`module`/`package-core`) and `doctor` are **not** bundled — they need a full repo + git to run, and pulling their dependency trees in would bloat the binary. Run those on a dev box (`bongos code`/`shell`) or in a clone (where `npm i -g` gives the full CLI). A bare-binary user who invokes one gets a clear "get onto a real environment first" message.
65
+ - **compiled binary** → `process.execPath` is the `bongos` binary (no `node`, no scripts on disk), so it dispatches the **bundled on-ramp verbs in-process**: `login`/`setup`, `reauth`, `paste-token`, `api`, `init`, `onboard`. The heavy work verbs (`ship`/`claim`/`start`/`status`/`recall`/`cost`/`release`/`module`/`package-core`) and `doctor` are **not** bundled — they need a full repo + git to run, and pulling their dependency trees in would bloat the binary. Run those in a clone, where `npm i -g` gives the full CLI. A bare-binary user who invokes one gets a clear "get onto a real environment first" message.
65
66
 
66
67
  Follow-ups (not blocking the first release): SHA-pin `oven-sh/setup-bun`, code-sign the mac/win binaries, and expand the bundled verb set if a self-host workflow needs more offline.
@@ -48,8 +48,7 @@ npm install
48
48
  npx bongos dev # Postgres → createdb → migrate → server → sign-in, in one step
49
49
  ```
50
50
 
51
- Full guide: [`docs/recipes/local-dev.md`](local-dev.md) (ADR 0149). Prefer a cloud dev box
52
- over running locally? Use `bongos box` + `bongos code`.
51
+ Full guide: [`docs/recipes/local-dev.md`](local-dev.md) (ADR 0149).
53
52
 
54
53
  ## Notes
55
54
 
@@ -77,8 +77,6 @@ the Client ID + secret to `~/.config/<configDir>/gds-github.json` as
77
77
  go back to a hosted instance later, `bongos login https://<that-instance>`.
78
78
  - **Multiple projects at once** each get their own database + port, so their `bongos dev`
79
79
  servers don't collide.
80
- - **Prefer the cloud?** `bongos box` + `bongos code` give you a remote dev box instead — no
81
- local database or server to run.
82
80
  - **Ready for a real host?** `bongos serve` runs this *same* boot path on a server —
83
81
  systemd-supervised, bind address derived from your public origin, no browser needed. See
84
82
  [`server-bring-up.md`](server-bring-up.md) ([ADR 0169](../adr/0169-bongos-serve-server-bring-up.md)).
@@ -313,6 +313,27 @@
313
313
  return req.needs_craft ? who + ' asked ' + req.needs_craft + 's' : who + ' asked';
314
314
  }
315
315
 
316
+ // "an engineer", "an artist", "an ideator" — but "a UI", which is why this cannot be a
317
+ // plain vowel test. roleWord() carries the same acronym exception one file over.
318
+ function aOrAn(word) {
319
+ const w = String(word || '');
320
+ if (/^ui$/i.test(w)) return 'a';
321
+ return /^[aeiou]/i.test(w) ? 'an' : 'a';
322
+ }
323
+
324
+ // The mingle row's sub-line (task 1003967, artist review of 1003960). Takes the two
325
+ // roles ALREADY RESOLVED to their sentence words, so this stays pure and the caller
326
+ // owns the vocabulary — and so this can be RUN in a test rather than grepped, which is
327
+ // the only way a swapped article gets caught. An empty side means the pair has a role
328
+ // nobody set: the comparison then has nothing to compare, so it is dropped rather than
329
+ // rendered with the database's own word in it.
330
+ function pairSentence(theirWord, myWord) {
331
+ if (!theirWord || !myWord) return 'Mingle pairs across roles.';
332
+ const lead = `${aOrAn(theirWord)} ${theirWord}`;
333
+ return `${lead.charAt(0).toUpperCase()}${lead.slice(1)} — you are ${aOrAn(myWord)} ${myWord}. `
334
+ + 'Mingle pairs across roles.';
335
+ }
336
+
316
337
  window.OTBCollabLib = {
317
338
  BANDS: BANDS, ageBand: ageBand, ageLabel: ageLabel,
318
339
  byAgeOldestFirst: byAgeOldestFirst, byNewestFirst: byNewestFirst,
@@ -320,5 +341,6 @@
320
341
  directionLine: directionLine, boardLine: boardLine,
321
342
  titleOf: titleOf, summaryOf: summaryOf, clipWords: clipWords, LEAD_MAX: LEAD_MAX, groupOf: groupOf,
322
343
  httpUrl: httpUrl, initialOf: initialOf, faceOf: faceOf, askers: askers, splitShown: splitShown,
344
+ aOrAn: aOrAn, pairSentence: pairSentence,
323
345
  };
324
346
  })();