@bongos/core 1.20.77 → 1.20.78
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 +79 -54
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +2 -0
- package/clients/bongos-client/index.cjs +2 -0
- package/clients/bongos-client/index.d.ts +3 -0
- package/clients/bongos-client/index.mjs +2 -0
- package/docs/adr/0136-update-channel-subscription-policy.md +1 -1
- package/docs/adr/0360-bongos-follows-every-candidate-every-other-project-follows-releases.md +66 -0
- package/docs/adr/README.md +1 -0
- package/docs/api/openapi.json +70 -3
- package/docs/api-reference.md +3 -2
- package/docs/copy-inventory.md +22 -14
- package/docs/copy-registry.json +125 -41
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-inventory.json +5 -1
- package/docs/page-readings.json +150 -137
- package/docs/recipes/upgrading-the-core.md +11 -2
- package/modules/copy-desk/artist-stats.js +15 -1
- package/modules/copy-desk/module.json +1 -1
- package/modules/copy-desk/page-status.js +41 -0
- package/modules/copy-desk/routes/copy-desk-artist.js +44 -0
- package/modules/copy-desk/tests/copy_no_cms.mjs +11 -2
- package/modules/hall-ui/public/deploy.states.json +1 -1
- package/modules/hall-ui/public/profile-crafts.js +231 -0
- package/modules/hall-ui/public/profile.css +60 -0
- package/modules/hall-ui/public/profile.html +31 -12
- package/modules/hall-ui/public/profile.js +180 -75
- package/modules/hall-ui/public/profile.states.json +34 -0
- package/modules/hall-ui/public/sky-draw.js +66 -39
- package/modules/hall-ui/public/sky-interaction.js +1 -1
- package/modules/hall-ui/public/sky-panel.js +1 -1
- package/modules/hall-ui/public/thinking.css +52 -24
- package/modules/hall-ui/records/profile-roles.md +18 -0
- package/modules/npm-release/public/work.js +72 -0
- package/modules/npm-release/work.js +67 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +18 -0
- package/scripts/gds/update-channel.js +68 -1
- package/scripts/gds/update-sweep.js +100 -4
- package/scripts/migrate.sh +6 -2
- package/src/module-api.js +1 -1
- package/tests/hall_sky.mjs +77 -0
- package/tests/helpers.mjs +32 -7
- package/tests/migrate_applied_check.mjs +94 -0
- package/tests/npm_release_page.mjs +67 -0
- package/tests/npm_release_work.mjs +82 -0
- package/tests/profile_activity.mjs +23 -15
- package/tests/profile_role_headline.mjs +4 -4
- package/tests/profile_role_tabs.mjs +163 -0
- package/tests/update_channel.mjs +80 -1
- package/tests/update_subscription_engine.mjs +99 -0
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.20.
|
|
6
|
-
"core_contract": "1.20.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.20.78",
|
|
6
|
+
"core_contract": "1.20.78",
|
|
7
|
+
"source_commit": "54fe45a4edf4789308fc09a05904110b20b555ff",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-10-
|
|
9
|
+
"built_at": "2026-10-01T20:43:40.208Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
|
-
"docs_redacted":
|
|
12
|
+
"docs_redacted": 575,
|
|
13
13
|
"agent_docs_stubbed": 27,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 2811,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 3414,
|
|
20
|
+
"tree_sha256": "f7d14f92e9dd084e4959190624762c8a22148f6700e48f0ef079e9988a92a5dc",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -317,12 +317,12 @@
|
|
|
317
317
|
{
|
|
318
318
|
"path": "clients/bongos-client/README.md",
|
|
319
319
|
"mode": "0000644",
|
|
320
|
-
"sha256": "
|
|
320
|
+
"sha256": "63c9cef50cf602cac2c7b7cb24c878acd07d11d1c4354ef68d75987b9ecae150"
|
|
321
321
|
},
|
|
322
322
|
{
|
|
323
323
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
324
324
|
"mode": "0000644",
|
|
325
|
-
"sha256": "
|
|
325
|
+
"sha256": "bb9b35d76798248f6e711f5b95af076cac45b1cc373ca02733aad95d3990db27"
|
|
326
326
|
},
|
|
327
327
|
{
|
|
328
328
|
"path": "clients/bongos-client/examples/hello-world.mjs",
|
|
@@ -332,17 +332,17 @@
|
|
|
332
332
|
{
|
|
333
333
|
"path": "clients/bongos-client/index.cjs",
|
|
334
334
|
"mode": "0000644",
|
|
335
|
-
"sha256": "
|
|
335
|
+
"sha256": "89eda37c197dc32fea981b5f07bc6aaafffe67d902117ca212231dd13bef1913"
|
|
336
336
|
},
|
|
337
337
|
{
|
|
338
338
|
"path": "clients/bongos-client/index.d.ts",
|
|
339
339
|
"mode": "0000644",
|
|
340
|
-
"sha256": "
|
|
340
|
+
"sha256": "c71b82943cd6bd76f0740f6da9b44a212a3a4da3f7d7ccdc4d4c6d6e10d20802"
|
|
341
341
|
},
|
|
342
342
|
{
|
|
343
343
|
"path": "clients/bongos-client/index.mjs",
|
|
344
344
|
"mode": "0000644",
|
|
345
|
-
"sha256": "
|
|
345
|
+
"sha256": "2beca96b15c5ac7a97553c3bfd0757bf8c3ec449cc72db760cc8840f2ef68c54"
|
|
346
346
|
},
|
|
347
347
|
{
|
|
348
348
|
"path": "clients/bongos-client/package.json",
|
|
@@ -1122,7 +1122,7 @@
|
|
|
1122
1122
|
{
|
|
1123
1123
|
"path": "docs/adr/0136-update-channel-subscription-policy.md",
|
|
1124
1124
|
"mode": "0000644",
|
|
1125
|
-
"sha256": "
|
|
1125
|
+
"sha256": "0a34cc18b4c8d18a0f8960dd5fbc09399a58e5ac7cffb4a5c55fd46a65ebb36a"
|
|
1126
1126
|
},
|
|
1127
1127
|
{
|
|
1128
1128
|
"path": "docs/adr/0137-upstream-publish-policy-manual-owner-gated.md",
|
|
@@ -2259,20 +2259,25 @@
|
|
|
2259
2259
|
"mode": "0000644",
|
|
2260
2260
|
"sha256": "b9861113cddb698710176c8533b07078b5b63e1995adbb3dafb537c1bc69186a"
|
|
2261
2261
|
},
|
|
2262
|
+
{
|
|
2263
|
+
"path": "docs/adr/0360-bongos-follows-every-candidate-every-other-project-follows-releases.md",
|
|
2264
|
+
"mode": "0000644",
|
|
2265
|
+
"sha256": "f1f9153e7975f30d7a2e53f31c3bacb15a270affb9c1b119930aa0104e55c4e6"
|
|
2266
|
+
},
|
|
2262
2267
|
{
|
|
2263
2268
|
"path": "docs/adr/README.md",
|
|
2264
2269
|
"mode": "0000644",
|
|
2265
|
-
"sha256": "
|
|
2270
|
+
"sha256": "504490989f3f23ff00e970f7da9a6b046a7ba94b415c9114d83d660885750c0e"
|
|
2266
2271
|
},
|
|
2267
2272
|
{
|
|
2268
2273
|
"path": "docs/api-reference.md",
|
|
2269
2274
|
"mode": "0000644",
|
|
2270
|
-
"sha256": "
|
|
2275
|
+
"sha256": "c3b52f2ed9dce5b5bf72b8addc90293816837696ae06742e91e5d32ea69f5988"
|
|
2271
2276
|
},
|
|
2272
2277
|
{
|
|
2273
2278
|
"path": "docs/api/openapi.json",
|
|
2274
2279
|
"mode": "0000644",
|
|
2275
|
-
"sha256": "
|
|
2280
|
+
"sha256": "94478baadf36dbd303c05548ed6d0a2ff20c1804848602aecfb148b506aa456d"
|
|
2276
2281
|
},
|
|
2277
2282
|
{
|
|
2278
2283
|
"path": "docs/architecture.md",
|
|
@@ -2297,12 +2302,12 @@
|
|
|
2297
2302
|
{
|
|
2298
2303
|
"path": "docs/copy-inventory.md",
|
|
2299
2304
|
"mode": "0000644",
|
|
2300
|
-
"sha256": "
|
|
2305
|
+
"sha256": "eebd6b6b3bb1e63d83d4dc322a62d58636c38e07a33f6142078308c54570d432"
|
|
2301
2306
|
},
|
|
2302
2307
|
{
|
|
2303
2308
|
"path": "docs/copy-registry.json",
|
|
2304
2309
|
"mode": "0000644",
|
|
2305
|
-
"sha256": "
|
|
2310
|
+
"sha256": "64f86ed48766b1037311ce998f315d155f0afa9d4c7e698d436b9359091f32d0"
|
|
2306
2311
|
},
|
|
2307
2312
|
{
|
|
2308
2313
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -2807,7 +2812,7 @@
|
|
|
2807
2812
|
{
|
|
2808
2813
|
"path": "docs/module-api-changelog.md",
|
|
2809
2814
|
"mode": "0000644",
|
|
2810
|
-
"sha256": "
|
|
2815
|
+
"sha256": "2b7d697f9a5870c16de63e84268ee995f0c1ef7aedc825cf1d7610559744677d"
|
|
2811
2816
|
},
|
|
2812
2817
|
{
|
|
2813
2818
|
"path": "docs/modules-contract.md",
|
|
@@ -2892,12 +2897,12 @@
|
|
|
2892
2897
|
{
|
|
2893
2898
|
"path": "docs/page-inventory.json",
|
|
2894
2899
|
"mode": "0000644",
|
|
2895
|
-
"sha256": "
|
|
2900
|
+
"sha256": "203a101e6aeb3aefdc417b5afccc795e48bde64c2c8f539580719659b4ad019a"
|
|
2896
2901
|
},
|
|
2897
2902
|
{
|
|
2898
2903
|
"path": "docs/page-readings.json",
|
|
2899
2904
|
"mode": "0000644",
|
|
2900
|
-
"sha256": "
|
|
2905
|
+
"sha256": "e4c9820bdc85fbceed58754f3c92a27743a2016e884e42862b88ddc06a6000b2"
|
|
2901
2906
|
},
|
|
2902
2907
|
{
|
|
2903
2908
|
"path": "docs/project-context.template.md",
|
|
@@ -3062,7 +3067,7 @@
|
|
|
3062
3067
|
{
|
|
3063
3068
|
"path": "docs/recipes/upgrading-the-core.md",
|
|
3064
3069
|
"mode": "0000644",
|
|
3065
|
-
"sha256": "
|
|
3070
|
+
"sha256": "d28d1f034a7a87164b780c7320ef36809a024bdd29e1e31a1b9e8e17bb911f49"
|
|
3066
3071
|
},
|
|
3067
3072
|
{
|
|
3068
3073
|
"path": "docs/recipes/windows-builders.md",
|
|
@@ -4237,7 +4242,7 @@
|
|
|
4237
4242
|
{
|
|
4238
4243
|
"path": "modules/copy-desk/artist-stats.js",
|
|
4239
4244
|
"mode": "0000644",
|
|
4240
|
-
"sha256": "
|
|
4245
|
+
"sha256": "143357cbcb2a7069c8bde90d428c5cd28b2fc3791f6fb2b41aa5d0bd4b3b82a1"
|
|
4241
4246
|
},
|
|
4242
4247
|
{
|
|
4243
4248
|
"path": "modules/copy-desk/docx.js",
|
|
@@ -4262,7 +4267,7 @@
|
|
|
4262
4267
|
{
|
|
4263
4268
|
"path": "modules/copy-desk/module.json",
|
|
4264
4269
|
"mode": "0000644",
|
|
4265
|
-
"sha256": "
|
|
4270
|
+
"sha256": "ffd3793721990c8b733c5855454caacc9b15402c6fa93f1ec009cc740f26624a"
|
|
4266
4271
|
},
|
|
4267
4272
|
{
|
|
4268
4273
|
"path": "modules/copy-desk/page-data.js",
|
|
@@ -4277,7 +4282,7 @@
|
|
|
4277
4282
|
{
|
|
4278
4283
|
"path": "modules/copy-desk/page-status.js",
|
|
4279
4284
|
"mode": "0000644",
|
|
4280
|
-
"sha256": "
|
|
4285
|
+
"sha256": "b31f8c94a4768bb690dd2e983b404c8bf022c33c343ee0d15747953359df9d36"
|
|
4281
4286
|
},
|
|
4282
4287
|
{
|
|
4283
4288
|
"path": "modules/copy-desk/pages.js",
|
|
@@ -4294,6 +4299,11 @@
|
|
|
4294
4299
|
"mode": "0000644",
|
|
4295
4300
|
"sha256": "d1de5f38dfddae014878adb57021c18266b17884f8c35e798b7f5eea28853ef1"
|
|
4296
4301
|
},
|
|
4302
|
+
{
|
|
4303
|
+
"path": "modules/copy-desk/routes/copy-desk-artist.js",
|
|
4304
|
+
"mode": "0000644",
|
|
4305
|
+
"sha256": "3cdf349d0906ed3ec398b2f52c1c6b94d950fa39eb2e734237dc265d214ba977"
|
|
4306
|
+
},
|
|
4297
4307
|
{
|
|
4298
4308
|
"path": "modules/copy-desk/routes/copy-desk.js",
|
|
4299
4309
|
"mode": "0000644",
|
|
@@ -4317,7 +4327,7 @@
|
|
|
4317
4327
|
{
|
|
4318
4328
|
"path": "modules/copy-desk/tests/copy_no_cms.mjs",
|
|
4319
4329
|
"mode": "0000644",
|
|
4320
|
-
"sha256": "
|
|
4330
|
+
"sha256": "f8a0eafb8b8a5d8eb2e62d8c25cfc102748fec1ad93a74106409f9bb988dadef"
|
|
4321
4331
|
},
|
|
4322
4332
|
{
|
|
4323
4333
|
"path": "modules/copy-desk/tests/copy_page_draft.mjs",
|
|
@@ -5357,7 +5367,7 @@
|
|
|
5357
5367
|
{
|
|
5358
5368
|
"path": "modules/hall-ui/public/deploy.states.json",
|
|
5359
5369
|
"mode": "0000644",
|
|
5360
|
-
"sha256": "
|
|
5370
|
+
"sha256": "c4e86674b894372cd5cb3d818686c3fb90f95751425f250e29b51880ee822a31"
|
|
5361
5371
|
},
|
|
5362
5372
|
{
|
|
5363
5373
|
"path": "modules/hall-ui/public/diagram-viewer.css",
|
|
@@ -5759,6 +5769,11 @@
|
|
|
5759
5769
|
"mode": "0000644",
|
|
5760
5770
|
"sha256": "32d227e81b459e067b06ac67c89a53ce0aa6b549749c39ac3adc4e8fb31a9375"
|
|
5761
5771
|
},
|
|
5772
|
+
{
|
|
5773
|
+
"path": "modules/hall-ui/public/profile-crafts.js",
|
|
5774
|
+
"mode": "0000644",
|
|
5775
|
+
"sha256": "73873641d7a17516f7a8c0c4b1014427db270b219aaa939bdfc17ad2c8a4557b"
|
|
5776
|
+
},
|
|
5762
5777
|
{
|
|
5763
5778
|
"path": "modules/hall-ui/public/profile-nudge.js",
|
|
5764
5779
|
"mode": "0000644",
|
|
@@ -5772,22 +5787,22 @@
|
|
|
5772
5787
|
{
|
|
5773
5788
|
"path": "modules/hall-ui/public/profile.css",
|
|
5774
5789
|
"mode": "0000644",
|
|
5775
|
-
"sha256": "
|
|
5790
|
+
"sha256": "2c320b6a22f7a047f33bb523032da3b671375cb5910df576cff30e70196539ce"
|
|
5776
5791
|
},
|
|
5777
5792
|
{
|
|
5778
5793
|
"path": "modules/hall-ui/public/profile.html",
|
|
5779
5794
|
"mode": "0000644",
|
|
5780
|
-
"sha256": "
|
|
5795
|
+
"sha256": "7ba05777390fa39ed9a19a531668147adb6fa421efeaad36a95926ea46c11062"
|
|
5781
5796
|
},
|
|
5782
5797
|
{
|
|
5783
5798
|
"path": "modules/hall-ui/public/profile.js",
|
|
5784
5799
|
"mode": "0000644",
|
|
5785
|
-
"sha256": "
|
|
5800
|
+
"sha256": "ba8fd7c2df7f46c9fd491c6666a159128b57b894bc09d74e3748c0c3185924a7"
|
|
5786
5801
|
},
|
|
5787
5802
|
{
|
|
5788
5803
|
"path": "modules/hall-ui/public/profile.states.json",
|
|
5789
5804
|
"mode": "0000644",
|
|
5790
|
-
"sha256": "
|
|
5805
|
+
"sha256": "82e6a2d240b504c667637254eb25ec14d7afe2d9e5137f4520d6c1b310be17a7"
|
|
5791
5806
|
},
|
|
5792
5807
|
{
|
|
5793
5808
|
"path": "modules/hall-ui/public/project-settings.css",
|
|
@@ -5967,12 +5982,12 @@
|
|
|
5967
5982
|
{
|
|
5968
5983
|
"path": "modules/hall-ui/public/sky-draw.js",
|
|
5969
5984
|
"mode": "0000644",
|
|
5970
|
-
"sha256": "
|
|
5985
|
+
"sha256": "25d4298946c63bab18e6d79041353a8ab794b5652d0ea25b492d84a87367c090"
|
|
5971
5986
|
},
|
|
5972
5987
|
{
|
|
5973
5988
|
"path": "modules/hall-ui/public/sky-interaction.js",
|
|
5974
5989
|
"mode": "0000644",
|
|
5975
|
-
"sha256": "
|
|
5990
|
+
"sha256": "0961b151661f3dd2263b5b34989e9698b2f5dbe379b9f74512686774dfb38d4e"
|
|
5976
5991
|
},
|
|
5977
5992
|
{
|
|
5978
5993
|
"path": "modules/hall-ui/public/sky-layout.js",
|
|
@@ -5982,7 +5997,7 @@
|
|
|
5982
5997
|
{
|
|
5983
5998
|
"path": "modules/hall-ui/public/sky-panel.js",
|
|
5984
5999
|
"mode": "0000644",
|
|
5985
|
-
"sha256": "
|
|
6000
|
+
"sha256": "257ec3fa3c0010d93ccddcb29e2ff0f635e566cd79a978307adfc89169ecaafe"
|
|
5986
6001
|
},
|
|
5987
6002
|
{
|
|
5988
6003
|
"path": "modules/hall-ui/public/sky-tour.js",
|
|
@@ -6057,7 +6072,7 @@
|
|
|
6057
6072
|
{
|
|
6058
6073
|
"path": "modules/hall-ui/public/thinking.css",
|
|
6059
6074
|
"mode": "0000644",
|
|
6060
|
-
"sha256": "
|
|
6075
|
+
"sha256": "5d71450a1f566924d18d283d284b4a3f149fd742fb925d2bd310c82d38a5ac89"
|
|
6061
6076
|
},
|
|
6062
6077
|
{
|
|
6063
6078
|
"path": "modules/hall-ui/public/thinking.html",
|
|
@@ -6212,7 +6227,7 @@
|
|
|
6212
6227
|
{
|
|
6213
6228
|
"path": "modules/hall-ui/records/profile-roles.md",
|
|
6214
6229
|
"mode": "0000644",
|
|
6215
|
-
"sha256": "
|
|
6230
|
+
"sha256": "0fb34cced8e81add68b5204108f07a912d12072d5036a28632c4feddcbfb9a97"
|
|
6216
6231
|
},
|
|
6217
6232
|
{
|
|
6218
6233
|
"path": "modules/hall-ui/records/reading-rooms.md",
|
|
@@ -7202,7 +7217,7 @@
|
|
|
7202
7217
|
{
|
|
7203
7218
|
"path": "modules/npm-release/public/work.js",
|
|
7204
7219
|
"mode": "0000644",
|
|
7205
|
-
"sha256": "
|
|
7220
|
+
"sha256": "73b94334328ea385ddb06090d1a2363b0878ca7be48072ea1361ae279022177e"
|
|
7206
7221
|
},
|
|
7207
7222
|
{
|
|
7208
7223
|
"path": "modules/npm-release/routes/preview.js",
|
|
@@ -7222,7 +7237,7 @@
|
|
|
7222
7237
|
{
|
|
7223
7238
|
"path": "modules/npm-release/work.js",
|
|
7224
7239
|
"mode": "0000644",
|
|
7225
|
-
"sha256": "
|
|
7240
|
+
"sha256": "5c38191935584b8a500b432ea913b4429a72a6c03277a1ff3e8fee4b5ab0a7f6"
|
|
7226
7241
|
},
|
|
7227
7242
|
{
|
|
7228
7243
|
"path": "modules/onboarding/CLAUDE.md",
|
|
@@ -9477,12 +9492,12 @@
|
|
|
9477
9492
|
{
|
|
9478
9493
|
"path": "package-lock.json",
|
|
9479
9494
|
"mode": "0000644",
|
|
9480
|
-
"sha256": "
|
|
9495
|
+
"sha256": "f8da6c11ec17d4c4a83d5e070d3ae0c941376a527b4a9a0be7ce1903d7beb482"
|
|
9481
9496
|
},
|
|
9482
9497
|
{
|
|
9483
9498
|
"path": "package.json",
|
|
9484
9499
|
"mode": "0000644",
|
|
9485
|
-
"sha256": "
|
|
9500
|
+
"sha256": "8dfe3adc1e608279f3ffee6a8cdfd3c7c32b7581395ea81bb000dc370afe0035"
|
|
9486
9501
|
},
|
|
9487
9502
|
{
|
|
9488
9503
|
"path": "public-docs/index.html",
|
|
@@ -9502,7 +9517,7 @@
|
|
|
9502
9517
|
{
|
|
9503
9518
|
"path": "release-notes.json",
|
|
9504
9519
|
"mode": "0000644",
|
|
9505
|
-
"sha256": "
|
|
9520
|
+
"sha256": "e70c626913df104cf096a75eb4b06ff9cabcddda470e063839a4fffd26e78407"
|
|
9506
9521
|
},
|
|
9507
9522
|
{
|
|
9508
9523
|
"path": "scripts/bongos-mcp.js",
|
|
@@ -11157,12 +11172,12 @@
|
|
|
11157
11172
|
{
|
|
11158
11173
|
"path": "scripts/gds/update-channel.js",
|
|
11159
11174
|
"mode": "0000644",
|
|
11160
|
-
"sha256": "
|
|
11175
|
+
"sha256": "0168e8482e02d74ef59aa53f4874be6ec41e91747651a99009b56b764137bf0c"
|
|
11161
11176
|
},
|
|
11162
11177
|
{
|
|
11163
11178
|
"path": "scripts/gds/update-sweep.js",
|
|
11164
11179
|
"mode": "0000644",
|
|
11165
|
-
"sha256": "
|
|
11180
|
+
"sha256": "fe1a6c8c27a40fc522e18946e6ee317604718d18dd8940f974f9e0df1fe92d87"
|
|
11166
11181
|
},
|
|
11167
11182
|
{
|
|
11168
11183
|
"path": "scripts/gds/upgrade-artist-gate.js",
|
|
@@ -11257,7 +11272,7 @@
|
|
|
11257
11272
|
{
|
|
11258
11273
|
"path": "scripts/migrate.sh",
|
|
11259
11274
|
"mode": "0000644",
|
|
11260
|
-
"sha256": "
|
|
11275
|
+
"sha256": "132e6780d6408ee7ff9d89ac2545aff53fe3c22222d85ad144243646ed495810"
|
|
11261
11276
|
},
|
|
11262
11277
|
{
|
|
11263
11278
|
"path": "scripts/migrate_cost_ledger.sh",
|
|
@@ -11697,7 +11712,7 @@
|
|
|
11697
11712
|
{
|
|
11698
11713
|
"path": "src/module-api.js",
|
|
11699
11714
|
"mode": "0000644",
|
|
11700
|
-
"sha256": "
|
|
11715
|
+
"sha256": "f11189e9084e5a2b10a2767bfa8166a419fbd202e90252a628a1fc426f7102f9"
|
|
11701
11716
|
},
|
|
11702
11717
|
{
|
|
11703
11718
|
"path": "src/module-loader/catalog.js",
|
|
@@ -13992,7 +14007,7 @@
|
|
|
13992
14007
|
{
|
|
13993
14008
|
"path": "tests/hall_sky.mjs",
|
|
13994
14009
|
"mode": "0000644",
|
|
13995
|
-
"sha256": "
|
|
14010
|
+
"sha256": "7da2efcf097e1643390a419ac239085724c5f9e127e417c184a2ba20db60961f"
|
|
13996
14011
|
},
|
|
13997
14012
|
{
|
|
13998
14013
|
"path": "tests/hall_states_regex_escapes.mjs",
|
|
@@ -14037,7 +14052,7 @@
|
|
|
14037
14052
|
{
|
|
14038
14053
|
"path": "tests/helpers.mjs",
|
|
14039
14054
|
"mode": "0000644",
|
|
14040
|
-
"sha256": "
|
|
14055
|
+
"sha256": "8bb8af16fceb108868c6600fd7cb29ee576d13aaedc48e21941b1d75c85cdac9"
|
|
14041
14056
|
},
|
|
14042
14057
|
{
|
|
14043
14058
|
"path": "tests/hierarchy-config.mjs",
|
|
@@ -14674,6 +14689,11 @@
|
|
|
14674
14689
|
"mode": "0000644",
|
|
14675
14690
|
"sha256": "a1179788640c3959e21573817e386eece65067ecbe9bda6cd350e16118ac61f1"
|
|
14676
14691
|
},
|
|
14692
|
+
{
|
|
14693
|
+
"path": "tests/migrate_applied_check.mjs",
|
|
14694
|
+
"mode": "0000644",
|
|
14695
|
+
"sha256": "9a402a5dd952eb8138514206dbe89ea5edcd098b4988ee40a77c0a47b801abf1"
|
|
14696
|
+
},
|
|
14677
14697
|
{
|
|
14678
14698
|
"path": "tests/migrate_module_overrides_db.mjs",
|
|
14679
14699
|
"mode": "0000644",
|
|
@@ -14947,7 +14967,7 @@
|
|
|
14947
14967
|
{
|
|
14948
14968
|
"path": "tests/npm_release_page.mjs",
|
|
14949
14969
|
"mode": "0000644",
|
|
14950
|
-
"sha256": "
|
|
14970
|
+
"sha256": "d23af719d635fc2b1cced8d865f6f4613690d9d6f194668224eecacbaef24557"
|
|
14951
14971
|
},
|
|
14952
14972
|
{
|
|
14953
14973
|
"path": "tests/npm_release_preview_commands.mjs",
|
|
@@ -14992,7 +15012,7 @@
|
|
|
14992
15012
|
{
|
|
14993
15013
|
"path": "tests/npm_release_work.mjs",
|
|
14994
15014
|
"mode": "0000644",
|
|
14995
|
-
"sha256": "
|
|
15015
|
+
"sha256": "6ff350a81dba9d4650a6bc98b424b2e49cdb612124d80d7deca9c6819ea79214"
|
|
14996
15016
|
},
|
|
14997
15017
|
{
|
|
14998
15018
|
"path": "tests/oauth_secret.mjs",
|
|
@@ -15227,7 +15247,7 @@
|
|
|
15227
15247
|
{
|
|
15228
15248
|
"path": "tests/profile_activity.mjs",
|
|
15229
15249
|
"mode": "0000644",
|
|
15230
|
-
"sha256": "
|
|
15250
|
+
"sha256": "c8f6337d6b00cf94e2e1f630d26604c3cb93b39e5ed0e277735ec4c72d81bab3"
|
|
15231
15251
|
},
|
|
15232
15252
|
{
|
|
15233
15253
|
"path": "tests/profile_connections_ui.mjs",
|
|
@@ -15257,13 +15277,18 @@
|
|
|
15257
15277
|
{
|
|
15258
15278
|
"path": "tests/profile_role_headline.mjs",
|
|
15259
15279
|
"mode": "0000644",
|
|
15260
|
-
"sha256": "
|
|
15280
|
+
"sha256": "ff162455701c3ca8a64d679af885a6896811d833e2cde09f9c2b0c3f376dc1ce"
|
|
15261
15281
|
},
|
|
15262
15282
|
{
|
|
15263
15283
|
"path": "tests/profile_role_stats.mjs",
|
|
15264
15284
|
"mode": "0000644",
|
|
15265
15285
|
"sha256": "f19d360e648c15576818313f80ea3079b933ccfc1f4ecb710198d993f2fa4054"
|
|
15266
15286
|
},
|
|
15287
|
+
{
|
|
15288
|
+
"path": "tests/profile_role_tabs.mjs",
|
|
15289
|
+
"mode": "0000644",
|
|
15290
|
+
"sha256": "66b504bccb453e07c0cb0b13d89f313bab4f11aa8f8f61130f21cebe7fc0b582"
|
|
15291
|
+
},
|
|
15267
15292
|
{
|
|
15268
15293
|
"path": "tests/profile_rollup_consent.mjs",
|
|
15269
15294
|
"mode": "0000644",
|
|
@@ -16837,7 +16862,7 @@
|
|
|
16837
16862
|
{
|
|
16838
16863
|
"path": "tests/update_channel.mjs",
|
|
16839
16864
|
"mode": "0000644",
|
|
16840
|
-
"sha256": "
|
|
16865
|
+
"sha256": "2ceed0b397697a39ee2ee46f5fed7a0e659d1f18364369d510d6b64704d99f59"
|
|
16841
16866
|
},
|
|
16842
16867
|
{
|
|
16843
16868
|
"path": "tests/update_channel_db.mjs",
|
|
@@ -16847,7 +16872,7 @@
|
|
|
16847
16872
|
{
|
|
16848
16873
|
"path": "tests/update_subscription_engine.mjs",
|
|
16849
16874
|
"mode": "0000644",
|
|
16850
|
-
"sha256": "
|
|
16875
|
+
"sha256": "c5dfd770869bf48e1087b1816448c45e0ede0a8b679d64c86a317391a1026a1a"
|
|
16851
16876
|
},
|
|
16852
16877
|
{
|
|
16853
16878
|
"path": "tests/update_sweep_home.mjs",
|
|
@@ -5,7 +5,7 @@ A **generated**, zero-dependency typed client for the Bongos API — produced fr
|
|
|
5
5
|
by hand; it regenerates when the spec changes, so it can never drift from the routes.
|
|
6
6
|
|
|
7
7
|
- API version: **v1** (served at `/api/bongos/v1`)
|
|
8
|
-
-
|
|
8
|
+
- 489 operations across 73 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -289,6 +289,8 @@ function createClient(opts = {}) {
|
|
|
289
289
|
"copyDesk": {
|
|
290
290
|
// GET /copy-desk/approvals — rank: any-builder — GET /copy-desk/approvals
|
|
291
291
|
getCopyDeskApprovals: (args) => request("GET", "/copy-desk/approvals", { hasBody: false }, args),
|
|
292
|
+
// GET /copy-desk/artists/{id}/pages — rank: any-builder — GET /copy-desk/artists/:id/pages
|
|
293
|
+
getCopyDeskArtistsIdPages: (args) => request("GET", "/copy-desk/artists/{id}/pages", { hasBody: false }, args),
|
|
292
294
|
// POST /copy-desk/flags — rank: any-builder — POST /copy-desk/flags
|
|
293
295
|
postCopyDeskFlags: (args) => request("POST", "/copy-desk/flags", { hasBody: true }, args),
|
|
294
296
|
// POST /copy-desk/flags/{id}/close — rank: any-builder — POST /copy-desk/flags/:id/close
|
|
@@ -288,6 +288,8 @@ function createClient(opts = {}) {
|
|
|
288
288
|
"copyDesk": {
|
|
289
289
|
// GET /copy-desk/approvals — rank: any-builder — GET /copy-desk/approvals
|
|
290
290
|
getCopyDeskApprovals: (args) => request("GET", "/copy-desk/approvals", { hasBody: false }, args),
|
|
291
|
+
// GET /copy-desk/artists/{id}/pages — rank: any-builder — GET /copy-desk/artists/:id/pages
|
|
292
|
+
getCopyDeskArtistsIdPages: (args) => request("GET", "/copy-desk/artists/{id}/pages", { hasBody: false }, args),
|
|
291
293
|
// POST /copy-desk/flags — rank: any-builder — POST /copy-desk/flags
|
|
292
294
|
postCopyDeskFlags: (args) => request("POST", "/copy-desk/flags", { hasBody: true }, args),
|
|
293
295
|
// POST /copy-desk/flags/{id}/close — rank: any-builder — POST /copy-desk/flags/:id/close
|
|
@@ -56,6 +56,7 @@ export interface GetConnectionsDegreeHandleResponse { handle: unknown; degree: u
|
|
|
56
56
|
export interface GetConnectionsRequestsResponse { incoming: unknown; outgoing: unknown; incoming_count: unknown; outgoing_count: unknown }
|
|
57
57
|
export interface GetConnectionsResponse { connections: unknown; count: unknown }
|
|
58
58
|
export interface GetConnectionsSuggestionsResponse { suggestions: unknown; count: unknown }
|
|
59
|
+
export interface GetCopyDeskArtistsIdPagesResponse { rows: unknown; total: unknown; inventory_known: unknown; page: unknown }
|
|
59
60
|
export interface GetCoreUpdateResponse { ok: boolean; update: unknown }
|
|
60
61
|
export interface GetCoreUpgradesResponse { ok: boolean; running: unknown; limit: unknown; upgrades: unknown }
|
|
61
62
|
export interface GetDiscordChannelsPlanResponse { ok: boolean; guild_id: unknown; op_count: unknown; ops: unknown; warnings: unknown }
|
|
@@ -740,6 +741,8 @@ export interface BongosClient {
|
|
|
740
741
|
"copyDesk": {
|
|
741
742
|
/** GET /copy-desk/approvals — rank: any-builder */
|
|
742
743
|
getCopyDeskApprovals(args?: RequestArgs): Promise<ApiResponse>;
|
|
744
|
+
/** GET /copy-desk/artists/{id}/pages — rank: any-builder */
|
|
745
|
+
getCopyDeskArtistsIdPages(args?: RequestArgs): Promise<GetCopyDeskArtistsIdPagesResponse>;
|
|
743
746
|
/** POST /copy-desk/flags — rank: any-builder */
|
|
744
747
|
postCopyDeskFlags(args: RequestArgs & { body: PostCopyDeskFlagsRequest }): Promise<PostCopyDeskFlagsResponse>;
|
|
745
748
|
/** POST /copy-desk/flags/{id}/close — rank: any-builder */
|
|
@@ -285,6 +285,8 @@ export function createClient(opts = {}) {
|
|
|
285
285
|
"copyDesk": {
|
|
286
286
|
// GET /copy-desk/approvals — rank: any-builder — GET /copy-desk/approvals
|
|
287
287
|
getCopyDeskApprovals: (args) => request("GET", "/copy-desk/approvals", { hasBody: false }, args),
|
|
288
|
+
// GET /copy-desk/artists/{id}/pages — rank: any-builder — GET /copy-desk/artists/:id/pages
|
|
289
|
+
getCopyDeskArtistsIdPages: (args) => request("GET", "/copy-desk/artists/{id}/pages", { hasBody: false }, args),
|
|
288
290
|
// POST /copy-desk/flags — rank: any-builder — POST /copy-desk/flags
|
|
289
291
|
postCopyDeskFlags: (args) => request("POST", "/copy-desk/flags", { hasBody: true }, args),
|
|
290
292
|
// POST /copy-desk/flags/{id}/close — rank: any-builder — POST /copy-desk/flags/:id/close
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ADR 0136 — Update-channel subscription policy (patch-only, health-gated, opt-in, autonomy-gated)
|
|
2
2
|
|
|
3
3
|
**Date:** 2026-07-10
|
|
4
|
-
**Status:** Accepted. Amended by [ADR 0357](0357-the-update-rule-set-on-deploy-is-the-one-the-sweep-follows.md) (2026-09-30): a project's channel is now its `provisioning_instances.update_channel`, set on /deploy; the roster's `channel` is only the fallback.
|
|
4
|
+
**Status:** Accepted. Amended by [ADR 0357](0357-the-update-rule-set-on-deploy-is-the-one-the-sweep-follows.md) (2026-09-30): a project's channel is now its `provisioning_instances.update_channel`, set on /deploy; the roster's `channel` is only the fallback. Also amended by **[ADR 0360](0360-bongos-follows-every-candidate-every-other-project-follows-releases.md)** (task 1004297): a per-instance `follow` (`released` by default, `candidates` for the platform's own hall) beside the channel, and a one-day hold on a version that failed on an instance.
|
|
5
5
|
**Context:** [task 2150](https://example.com/builders#/task/2150) (BONGOS-V1, goal 26). The last piece of the update-consumption workstream: [ADR 0100](0100-two-repo-instance-model.md) §2 / [task 1690](https://example.com/builders#/task/1690) gave a consumer the manual `bongos upgrade` channel; [ADR 0134](0134-private-first-npm-distribution.md) / [task 2090](https://example.com/builders#/task/2090) added the private-registry source; [task 2149](https://example.com/builders#/task/2149) added auto-rollback; [task 2157](https://example.com/builders#/task/2157) proved rollback live on the demo instance. What was missing is the **subscription** — how a consumer instance takes new releases *on a cadence, unattended*, rather than a human running `bongos upgrade` each time. Builds on the scheduled-routines portability contract ([ADR 0115](0115-scheduled-routines-portability.md)).
|
|
6
6
|
|
|
7
7
|
## Problem
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# ADR 0360 — Bongos follows every candidate; every other project follows releases
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-09-26
|
|
5
|
+
- **Task:** [task 1004297](https://cloudbongos.com/builders#/task/1004297) (goal 1000090 — BONGOS-V2), split out of [task 1002622](https://cloudbongos.com/builders#/task/1002622) §4.
|
|
6
|
+
- **Deciders:** the owner, Lars. His decision, confirmed 2026-09-26: "Bongos takes every candidate automatically."
|
|
7
|
+
- **Amends:** [ADR 0136](0136-update-channel-subscription-policy.md) (the update-channel subscription policy). It adds a second axis and a retry hold. The channels, the opt-in roster, autonomy-gating and auto-rollback are unchanged.
|
|
8
|
+
|
|
9
|
+
## Context
|
|
10
|
+
|
|
11
|
+
Other projects will soon receive only the versions the owner presses Release on (task 1004298). Bongos must not wait on that button: it is the project every change is built in, and running each version first is what gives Release its evidence.
|
|
12
|
+
|
|
13
|
+
Today the machinery exists but is slow. The update sweep upgraded cloudbongos.com from 1.19.1030 to 1.19.1033 at 00:22 UTC on 2026-09-26, and nothing else moved it that day. Its timer on the control plane still fires daily, although task 1003674 declared a 15-minute cadence; installing that is [task 1003969](https://cloudbongos.com/builders#/task/1003969), an operator step on the host.
|
|
14
|
+
|
|
15
|
+
The site served 1.19.1033 all afternoon while 1.19.1034–1.19.1039 were published. The deploy page listed that work as "published, not running here" and did not say that the sweep was the reason.
|
|
16
|
+
|
|
17
|
+
## Decision
|
|
18
|
+
|
|
19
|
+
### D1 — A per-instance FOLLOW beside the channel
|
|
20
|
+
|
|
21
|
+
`config/update-subscriptions.json` entries carry `follow`:
|
|
22
|
+
|
|
23
|
+
- **`released`**, the default for every project. It takes only versions at or below the registry's `latest` label, which is what the owner has released to other projects.
|
|
24
|
+
- **`candidates`**, for the platform's own hall only. It takes every version as soon as it is published.
|
|
25
|
+
|
|
26
|
+
The channel still bounds how far a jump may go (patch, minor, never a major). The follow bounds which versions exist to jump to. An unknown value reads as `released`, the follow that takes fewer versions, the same way an unknown channel reads as `patch`.
|
|
27
|
+
|
|
28
|
+
### D2 — Released means the `latest` label, and an unreadable label moves nobody
|
|
29
|
+
|
|
30
|
+
`readReleaseTags` reads `npm view @bongos/core dist-tags`. It is a separate read, because `listAvailableVersions`' output shape is relied on by the deploy door and by `bongos upgrade`. An instance that follows releases and whose label cannot be read is **skipped** and logged. It is never upgraded on a guess.
|
|
31
|
+
|
|
32
|
+
Until task 1004298 publishes candidates under a label of their own, `latest` is the newest version and both follows pick the same target. The axis lands first so that the split changes nothing for Bongos.
|
|
33
|
+
|
|
34
|
+
### D3 — Cadence is the lag
|
|
35
|
+
|
|
36
|
+
The sweep's timer period is the delay between a merge and Bongos serving it; CI publishes within about two minutes. The declared cadence is 15 minutes, with a floor of about 5 minutes (ADR 0136, task 1003674). Nothing in the core can install a host timer, so the declaration and the recipe are the core's half. Task 1003969 installs it on the control plane.
|
|
37
|
+
|
|
38
|
+
### D4 — A version that failed here is held for a day
|
|
39
|
+
|
|
40
|
+
At a daily cadence a version that failed its health check was retried once a day. At 15 minutes the same version would be installed, fail, restart the service and roll back four times an hour until something newer was published. So when an upgrade fails and the version did not go in, the sweep records it for that instance in its own config home (`~/.config/<instance>/core-update-refused.json`, never inside an instance's tree, where it would wedge the lane).
|
|
41
|
+
|
|
42
|
+
For a day the sweep skips that version and says so. Any newer version is taken at once, because it is the fix. The hold expires, so a transient failure is retried rather than refused forever.
|
|
43
|
+
|
|
44
|
+
### D5 — The deploy page says whether it is happening
|
|
45
|
+
|
|
46
|
+
The npm-release section of the platform hall's `/deploy` gains **Upgrades on this hall**, read from the `core_upgrades` ledger, newest first:
|
|
47
|
+
|
|
48
|
+
- **Who moved it.** An Upgrade pressed on `/deploy`, the automatic update, or "on the server" when the ledger cannot tell a sweep from a shell.
|
|
49
|
+
- **Rolled-back moves**, flagged with their reason. A rollback as the last move is a warning.
|
|
50
|
+
- **A published version waiting more than 30 minutes**, twice the declared cadence. The page calls it "the automatic update may have stopped", which is what the afternoon of 2026-09-26 was.
|
|
51
|
+
|
|
52
|
+
## Rejected
|
|
53
|
+
|
|
54
|
+
- **A second, candidate-only runner.** One sweep over one roster, with the difference expressed as data on the entry, keeps one code path and one set of safety rules.
|
|
55
|
+
- **CI pushing the upgrade to the box.** It would move the act across the trust boundary ADR 0293 D1 keeps on the control plane.
|
|
56
|
+
- **Holding a failed version until a human clears it.** That trades an outage generator for a silently frozen lane. The day-long hold plus "a newer version is taken at once" covers the real case, where the fix is the next merge.
|
|
57
|
+
|
|
58
|
+
## Consequences
|
|
59
|
+
|
|
60
|
+
- **Owner or operator step before task 1004298 ships:** set the platform's roster entry to `"follow": "candidates"`. Otherwise, the day candidates stop carrying `latest`, the platform stops taking them.
|
|
61
|
+
- **Operator step (task 1003969):** install the timer at `OnCalendar=*:0/15`. Until then the lane still runs once a day, and the deploy page will say so.
|
|
62
|
+
- **The platform restarts on each new version**, roughly one every merge, with the existing health check and auto-rollback as the net.
|
|
63
|
+
- **Proof:**
|
|
64
|
+
- `tests/update_channel.mjs`: follow normalisation, `versionsForFollow`, `readReleaseTags`, the roster field, and composition with the channel.
|
|
65
|
+
- `tests/update_subscription_engine.mjs`: `followTarget` over the real channel math, the fail-closed skip, the old-core fallback, and the hold (skip, expiry, a newer version still taken, the record kept outside the instance tree).
|
|
66
|
+
- `tests/npm_release_work.mjs` and `tests/npm_release_page.mjs`: the ledger reading, the rollback, the waiting alarm, and their rendering.
|
package/docs/adr/README.md
CHANGED
|
@@ -478,3 +478,4 @@ These 20 numbers are each shared by exactly two files. They are **accepted histo
|
|
|
478
478
|
| 0357 | [**The update rule set on /deploy is the one the sweep follows** ([task 1004468](https://cloudbongos.com/builders#/task/1004468), goal 1000090 — BONGOS-V2, owner's ruling 2026-09-30). Amends [ADR 0136](0136-update-channel-subscription-policy.md)'s rejected DB-column alternative. **D1:** for a roster entry whose slug matches a `provisioning_instances` row, the unattended sweep uses that row's `update_channel` (set on /deploy, task 1004445). **D2:** the roster's `channel` is only the fallback — no matching row, or the database unreadable; enrollment and topology stay in the roster. **D3:** the sweep logs each entry's channel and its source, naming an overridden roster value. **D4:** read over psql from the sweep's own `DATABASE_URL`/`PGDATABASE`, never an entry's `env`. **D5:** nothing is copied; a row never changed is `patch`. Delivery to cloudbongos.com waits on the frozen sweep checkout (task 1004307). Rejected: roster stays in charge; stricter-of-the-two; copying roster values into rows.](0357-the-update-rule-set-on-deploy-is-the-one-the-sweep-follows.md) | distribution / updates |
|
|
479
479
|
| 0358 | [**A hall wears a look, and its night takes a tint of it** ([task 1004421](https://cloudbongos.com/builders#/task/1004421), goal 1000121 — BV2.PS06; owner D2 + D8, 2026-09-30). Amends [ADR 0219](0219-a-look-is-a-branding-pack-the-style-library.md) (a look could not carry a dark ground) and DESIGN.md's pure-black rule, for halls only. **D1:** the night tint is a formula over the thirteen — the four dark grounds take 5–6% of the look's accent (src/night-tint.js), emitted after the sheet as both dark twins; no token added. **D2:** on by default, and only a chosen look turns it on — a hall with no look is unchanged. **D3:** the apex and hub stay pure black (ADR 0204). **D4:** a custom look is ONE accent for both modes, its lightness nudged until every pair the hall paints with it reads (lookAdjustAccent, client copy test-pinned). **D5:** look + night_tint join the provisioning settings vocabulary; the accent and logo address ride as companion env; the instance resolves the look from the style library. **D6:** a logo is PNG/JPEG/WebP ≤256 KB, magic-sniffed, never SVG, served content-addressed; it is the hall mark and the favicon. Rejected: per-look dark palettes, two custom accents, refusing an unreadable accent, sending the palette over env.](0358-a-hall-wears-a-look-and-its-night-takes-a-tint.md) | hall / branding / design world |
|
|
480
480
|
| 0359 | [**Nobody sets a module's score by hand; a Metic+ person can ask for a re-check** ([task 1003796](https://cloudbongos.com/builders#/task/1003796) · goal 1000091, criterion `wa5-quality-assessed`). Amends [ADR 0343](0343-a-module-score-is-a-security-gate-then-an-average-of-visible-parts.md) D6 and [ADR 0347](0347-every-store-module-ships-a-how-to.md) D5 on the owner's ruling: there is no score override. A score only ever comes from its signals. Instead `POST /store/modules/:key/versions/:version/reassess { reason }`, gated by the new `module.assessment.rerun` atom (metic floor, granted to metic + archon by `government_021`), queues the same assessment a publish runs. A reason is required and nothing else is accepted. The delist (task 1003797) is unchanged.](0359-nobody-sets-a-module-score-by-hand-metic-can-ask-for-a-re-check.md) | module store / assessment / permissions |
|
|
481
|
+
| 0360 | [**Bongos follows every candidate; every other project follows releases** ([task 1004297](https://cloudbongos.com/builders#/task/1004297), goal 1000090 — the owner's 2026-09-26 decision that the Bongos hall takes every candidate automatically). Amends ADR 0136. **D1:** a per-instance `follow` beside the channel — `released` (default: at or below the registry's `latest` label) or `candidates` (every version, the platform hall only). **D2:** released is the `latest` dist-tag, read separately; an unreadable label skips the instance, never a guess. **D3:** the timer period is the lag — 15 min declared, installed by task 1003969. **D4:** a version that failed here is held for a day per instance (recorded in the sweep's config home), while any newer version is taken at once — no restart loop at a 15-minute cadence. **D5:** the deploy page's "Upgrades on this hall" — the core_upgrades ledger, rollbacks flagged, and a published version waiting past 30 min said to be the automation stopping. Rejected: a second runner, CI pushing to the box, a hold only a human clears.](0360-bongos-follows-every-candidate-every-other-project-follows-releases.md) | update channel / deploy / core update |
|