@bongos/core 1.19.972 → 1.19.973
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 +74 -64
- package/docs/adr/0111-instance-hosting-provisioning-module.md +1 -0
- package/docs/adr/0323-hosting-is-three-shapes-and-we-are-not-the-landlord.md +1 -1
- package/docs/adr/0325-the-managed-fleet-control-plane-is-the-hub-we-already-run.md +1 -1
- package/docs/adr/0327-a-cloud-host-runs-on-the-owners-account-and-the-key-is-borrowed.md +107 -0
- package/docs/adr/README.md +1 -0
- package/docs/architecture.md +6 -6
- package/docs/branding-contract.md +1 -1
- package/docs/canonical-permissions.md +24 -24
- package/docs/copy-inventory.md +45 -38
- package/docs/copy-registry.json +130 -67
- package/docs/design/projects-hub-direction-v2.md +1 -1
- package/docs/design/vanilla-hall-ui-redesign-scope.md +2 -2
- package/docs/file-map.md +7 -7
- package/docs/handoff-template.md +1 -1
- package/docs/module-api-changelog.md +2 -0
- package/docs/modules-contract.md +1 -1
- package/docs/onboarding/drachmae-and-karma.md +2 -2
- package/docs/packs/engineer.md +5 -5
- package/docs/packs/ideator.md +1 -1
- package/docs/recipes/README.md +1 -1
- package/docs/recipes/audit-replay.md +2 -2
- package/docs/recipes/gds-db-backup.md +3 -3
- package/docs/recipes/managed-settings-remote-control.md +9 -9
- package/docs/recipes/memory-sync-conflicts.md +2 -2
- package/docs/recipes/ops-gotchas.md +24 -5
- package/docs/recipes/overnight-builder.md +3 -3
- package/docs/recipes/parallel-goal-waves.md +3 -3
- package/docs/recipes/reranking-a-goals-board.md +2 -2
- package/docs/recipes/search-index-ingestion.md +1 -1
- package/docs/recipes/ship-and-regrade.md +2 -2
- package/docs/recipes/staging-environment.md +1 -1
- package/docs/recipes/windows-builders.md +1 -1
- package/modules/hall-ui/public/deploy.html +10 -5
- package/modules/hall-ui/public/deploy.js +199 -110
- package/modules/hall-ui/public/project-settings.css +36 -0
- package/modules/provisioning/core-upgrade.js +61 -2
- package/modules/public-landing/public/contact.html +1 -1
- package/modules/public-landing/public/index.html +1 -1
- package/modules/public-landing/public/privacy.html +1 -1
- package/modules/public-landing/public/projects.html +1 -1
- package/modules/public-landing/public/terms.html +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/gds/api-alias-caller-scan.js +47 -9
- package/scripts/gds/cloudbongos-token-isolation.conf +33 -0
- package/scripts/gds/provision-core-upgrade.js +132 -1
- package/scripts/gds/run-unit-tests.js +14 -9
- package/scripts/hall-preview/server.js +5 -0
- package/src/module-api.js +1 -1
- package/tests/api_alias_caller_ratchet.mjs +68 -2
- package/tests/core_upgrade_door.mjs +81 -0
- package/tests/core_upgrade_runner.mjs +132 -0
- package/tests/deploy_page_projects.mjs +234 -79
- package/tests/idea_spark_hall.mjs +101 -12
- package/tests/known_failing_ratchet.mjs +19 -9
- package/tests/landing_legal_pages.mjs +5 -1
- package/tests/projects_hub_pre_uat.mjs +12 -6
- package/tests/served_paths_shipped.mjs +36 -2
package/docs/copy-registry.json
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"generator": "scripts/gds/copy-inventory.js",
|
|
4
4
|
"goal": 1000074,
|
|
5
5
|
"counts": {
|
|
6
|
-
"strings":
|
|
7
|
-
"unique_ids":
|
|
8
|
-
"certain":
|
|
6
|
+
"strings": 1936,
|
|
7
|
+
"unique_ids": 1676,
|
|
8
|
+
"certain": 1936,
|
|
9
9
|
"heuristic": 0,
|
|
10
10
|
"duplicate_ids": 178
|
|
11
11
|
},
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"builders-hall": {
|
|
14
14
|
"at": "modules/hall-ui/public",
|
|
15
15
|
"files": 96,
|
|
16
|
-
"strings":
|
|
16
|
+
"strings": 1441
|
|
17
17
|
},
|
|
18
18
|
"status-dashboard": {
|
|
19
19
|
"at": "modules/status-ui/public",
|
|
@@ -156,9 +156,9 @@
|
|
|
156
156
|
]
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
|
-
"id": "
|
|
159
|
+
"id": "d6314ddcc1d0",
|
|
160
160
|
"surface": "landing",
|
|
161
|
-
"text": "Open source
|
|
161
|
+
"text": "Open source",
|
|
162
162
|
"occurrences": 5,
|
|
163
163
|
"at": [
|
|
164
164
|
"modules/public-landing/public/contact.html:71",
|
|
@@ -1066,8 +1066,8 @@
|
|
|
1066
1066
|
"text": "Move to {…}",
|
|
1067
1067
|
"occurrences": 2,
|
|
1068
1068
|
"at": [
|
|
1069
|
-
"modules/hall-ui/public/deploy.js:
|
|
1070
|
-
"modules/hall-ui/public/deploy.js:
|
|
1069
|
+
"modules/hall-ui/public/deploy.js:360",
|
|
1070
|
+
"modules/hall-ui/public/deploy.js:472"
|
|
1071
1071
|
]
|
|
1072
1072
|
},
|
|
1073
1073
|
{
|
|
@@ -1970,7 +1970,7 @@
|
|
|
1970
1970
|
"surface": "builders-hall",
|
|
1971
1971
|
"text": "(checked {…})",
|
|
1972
1972
|
"file": "modules/hall-ui/public/deploy.js",
|
|
1973
|
-
"line":
|
|
1973
|
+
"line": 256,
|
|
1974
1974
|
"origin": "js-markup",
|
|
1975
1975
|
"confidence": "certain"
|
|
1976
1976
|
},
|
|
@@ -2262,6 +2262,15 @@
|
|
|
2262
2262
|
"origin": "html-text",
|
|
2263
2263
|
"confidence": "certain"
|
|
2264
2264
|
},
|
|
2265
|
+
{
|
|
2266
|
+
"id": "0c611f5a76af",
|
|
2267
|
+
"surface": "builders-hall",
|
|
2268
|
+
"text": "A move to core {…} failed{…} — this project has moved on since, and is serving {…} now. Whatever stopped that one may or may not still apply; the check above is the live answer.",
|
|
2269
|
+
"file": "modules/hall-ui/public/deploy.js",
|
|
2270
|
+
"line": 193,
|
|
2271
|
+
"origin": "js-markup",
|
|
2272
|
+
"confidence": "certain"
|
|
2273
|
+
},
|
|
2265
2274
|
{
|
|
2266
2275
|
"id": "a07c7b335a66",
|
|
2267
2276
|
"surface": "builders-hall",
|
|
@@ -2640,6 +2649,15 @@
|
|
|
2640
2649
|
"origin": "js-markup",
|
|
2641
2650
|
"confidence": "certain"
|
|
2642
2651
|
},
|
|
2652
|
+
{
|
|
2653
|
+
"id": "2ca420e19dbb",
|
|
2654
|
+
"surface": "builders-hall",
|
|
2655
|
+
"text": "An earlier attempt did not land.",
|
|
2656
|
+
"file": "modules/hall-ui/public/deploy.js",
|
|
2657
|
+
"line": 193,
|
|
2658
|
+
"origin": "js-markup",
|
|
2659
|
+
"confidence": "certain"
|
|
2660
|
+
},
|
|
2643
2661
|
{
|
|
2644
2662
|
"id": "69f0ca4a4d84",
|
|
2645
2663
|
"surface": "builders-hall",
|
|
@@ -3311,7 +3329,7 @@
|
|
|
3311
3329
|
"surface": "builders-hall",
|
|
3312
3330
|
"text": "Checked against {…} — nothing blocks this move.{…}",
|
|
3313
3331
|
"file": "modules/hall-ui/public/deploy.js",
|
|
3314
|
-
"line":
|
|
3332
|
+
"line": 259,
|
|
3315
3333
|
"origin": "js-markup",
|
|
3316
3334
|
"confidence": "certain"
|
|
3317
3335
|
},
|
|
@@ -3334,11 +3352,11 @@
|
|
|
3334
3352
|
"confidence": "certain"
|
|
3335
3353
|
},
|
|
3336
3354
|
{
|
|
3337
|
-
"id": "
|
|
3355
|
+
"id": "ac7cf27bd7de",
|
|
3338
3356
|
"surface": "builders-hall",
|
|
3339
|
-
"text": "Checking what this would do
|
|
3357
|
+
"text": "Checking what this would do, and what it would bring in. The answer comes from the machine itself, so it can take a couple of minutes.",
|
|
3340
3358
|
"file": "modules/hall-ui/public/deploy.js",
|
|
3341
|
-
"line":
|
|
3359
|
+
"line": 248,
|
|
3342
3360
|
"origin": "js-markup",
|
|
3343
3361
|
"confidence": "certain"
|
|
3344
3362
|
},
|
|
@@ -4112,7 +4130,16 @@
|
|
|
4112
4130
|
"surface": "builders-hall",
|
|
4113
4131
|
"text": "Could not read this project's deploy state: {…}",
|
|
4114
4132
|
"file": "modules/hall-ui/public/deploy.js",
|
|
4115
|
-
"line":
|
|
4133
|
+
"line": 414,
|
|
4134
|
+
"origin": "js-markup",
|
|
4135
|
+
"confidence": "certain"
|
|
4136
|
+
},
|
|
4137
|
+
{
|
|
4138
|
+
"id": "21a782f1af26",
|
|
4139
|
+
"surface": "builders-hall",
|
|
4140
|
+
"text": "Could not read what this would bring in: {…}. The check below still applies.",
|
|
4141
|
+
"file": "modules/hall-ui/public/deploy.js",
|
|
4142
|
+
"line": 333,
|
|
4116
4143
|
"origin": "js-markup",
|
|
4117
4144
|
"confidence": "certain"
|
|
4118
4145
|
},
|
|
@@ -4562,7 +4589,7 @@
|
|
|
4562
4589
|
"surface": "builders-hall",
|
|
4563
4590
|
"text": "Database behind.",
|
|
4564
4591
|
"file": "modules/hall-ui/public/deploy.js",
|
|
4565
|
-
"line":
|
|
4592
|
+
"line": 378,
|
|
4566
4593
|
"origin": "js-markup",
|
|
4567
4594
|
"confidence": "certain"
|
|
4568
4595
|
},
|
|
@@ -6799,11 +6826,11 @@
|
|
|
6799
6826
|
"confidence": "certain"
|
|
6800
6827
|
},
|
|
6801
6828
|
{
|
|
6802
|
-
"id": "
|
|
6829
|
+
"id": "f3ba5b1b7849",
|
|
6803
6830
|
"surface": "builders-hall",
|
|
6804
|
-
"text": "Merging work does not put it in front of anyone. This is the step that does: it moves this
|
|
6831
|
+
"text": "Merging work does not put it in front of anyone. This is the step that does: it moves this project onto a newer core, waits for its box to answer, and puts it back if it does not. Every project has this control in its own hall, this platform included — so what you see below is one project, the one whose hall you are in.",
|
|
6805
6832
|
"file": "modules/hall-ui/public/deploy.html",
|
|
6806
|
-
"line":
|
|
6833
|
+
"line": 42,
|
|
6807
6834
|
"origin": "html-text",
|
|
6808
6835
|
"confidence": "certain"
|
|
6809
6836
|
},
|
|
@@ -6929,7 +6956,7 @@
|
|
|
6929
6956
|
"surface": "builders-hall",
|
|
6930
6957
|
"text": "Move to {…}",
|
|
6931
6958
|
"file": "modules/hall-ui/public/deploy.js",
|
|
6932
|
-
"line":
|
|
6959
|
+
"line": 360,
|
|
6933
6960
|
"origin": "js-markup",
|
|
6934
6961
|
"confidence": "certain"
|
|
6935
6962
|
},
|
|
@@ -6938,7 +6965,7 @@
|
|
|
6938
6965
|
"surface": "builders-hall",
|
|
6939
6966
|
"text": "Move to {…}",
|
|
6940
6967
|
"file": "modules/hall-ui/public/deploy.js",
|
|
6941
|
-
"line":
|
|
6968
|
+
"line": 472,
|
|
6942
6969
|
"origin": "js-text-assign",
|
|
6943
6970
|
"confidence": "certain"
|
|
6944
6971
|
},
|
|
@@ -6947,7 +6974,7 @@
|
|
|
6947
6974
|
"surface": "builders-hall",
|
|
6948
6975
|
"text": "Moving to core",
|
|
6949
6976
|
"file": "modules/hall-ui/public/deploy.js",
|
|
6950
|
-
"line":
|
|
6977
|
+
"line": 157,
|
|
6951
6978
|
"origin": "js-markup",
|
|
6952
6979
|
"confidence": "certain"
|
|
6953
6980
|
},
|
|
@@ -7280,7 +7307,7 @@
|
|
|
7280
7307
|
"surface": "builders-hall",
|
|
7281
7308
|
"text": "No running box to deploy.",
|
|
7282
7309
|
"file": "modules/hall-ui/public/deploy.js",
|
|
7283
|
-
"line":
|
|
7310
|
+
"line": 450,
|
|
7284
7311
|
"origin": "js-markup",
|
|
7285
7312
|
"confidence": "certain"
|
|
7286
7313
|
},
|
|
@@ -7302,6 +7329,15 @@
|
|
|
7302
7329
|
"origin": "js-markup",
|
|
7303
7330
|
"confidence": "certain"
|
|
7304
7331
|
},
|
|
7332
|
+
{
|
|
7333
|
+
"id": "084748fd85b4",
|
|
7334
|
+
"surface": "builders-hall",
|
|
7335
|
+
"text": "No shipped work is recorded between core {…} and {…}.",
|
|
7336
|
+
"file": "modules/hall-ui/public/deploy.js",
|
|
7337
|
+
"line": 340,
|
|
7338
|
+
"origin": "js-markup",
|
|
7339
|
+
"confidence": "certain"
|
|
7340
|
+
},
|
|
7305
7341
|
{
|
|
7306
7342
|
"id": "4485497d87bb",
|
|
7307
7343
|
"surface": "builders-hall",
|
|
@@ -7397,7 +7433,7 @@
|
|
|
7397
7433
|
"surface": "builders-hall",
|
|
7398
7434
|
"text": "Not checked yet — the runner takes this reading on its own tick.",
|
|
7399
7435
|
"file": "modules/hall-ui/public/deploy.js",
|
|
7400
|
-
"line":
|
|
7436
|
+
"line": 254,
|
|
7401
7437
|
"origin": "js-markup",
|
|
7402
7438
|
"confidence": "certain"
|
|
7403
7439
|
},
|
|
@@ -7568,7 +7604,7 @@
|
|
|
7568
7604
|
"surface": "builders-hall",
|
|
7569
7605
|
"text": "Nothing newer is published that this box can take. There is nothing to deploy.",
|
|
7570
7606
|
"file": "modules/hall-ui/public/deploy.js",
|
|
7571
|
-
"line":
|
|
7607
|
+
"line": 395,
|
|
7572
7608
|
"origin": "js-markup",
|
|
7573
7609
|
"confidence": "certain"
|
|
7574
7610
|
},
|
|
@@ -7604,7 +7640,7 @@
|
|
|
7604
7640
|
"surface": "builders-hall",
|
|
7605
7641
|
"text": "Now running core {…}",
|
|
7606
7642
|
"file": "modules/hall-ui/public/deploy.js",
|
|
7607
|
-
"line":
|
|
7643
|
+
"line": 211,
|
|
7608
7644
|
"origin": "js-markup",
|
|
7609
7645
|
"confidence": "certain"
|
|
7610
7646
|
},
|
|
@@ -9206,7 +9242,7 @@
|
|
|
9206
9242
|
"surface": "builders-hall",
|
|
9207
9243
|
"text": "See what would change",
|
|
9208
9244
|
"file": "modules/hall-ui/public/deploy.js",
|
|
9209
|
-
"line":
|
|
9245
|
+
"line": 221,
|
|
9210
9246
|
"origin": "js-markup",
|
|
9211
9247
|
"confidence": "certain"
|
|
9212
9248
|
},
|
|
@@ -9287,7 +9323,7 @@
|
|
|
9287
9323
|
"surface": "builders-hall",
|
|
9288
9324
|
"text": "Serving {…} — read from the box itself, {…}.",
|
|
9289
9325
|
"file": "modules/hall-ui/public/deploy.js",
|
|
9290
|
-
"line":
|
|
9326
|
+
"line": 398,
|
|
9291
9327
|
"origin": "js-markup",
|
|
9292
9328
|
"confidence": "certain"
|
|
9293
9329
|
},
|
|
@@ -9782,7 +9818,7 @@
|
|
|
9782
9818
|
"surface": "builders-hall",
|
|
9783
9819
|
"text": "Still working on core {…}. It keeps going without this page — reload to see where it got to.",
|
|
9784
9820
|
"file": "modules/hall-ui/public/deploy.js",
|
|
9785
|
-
"line":
|
|
9821
|
+
"line": 506,
|
|
9786
9822
|
"origin": "js-notice",
|
|
9787
9823
|
"confidence": "certain"
|
|
9788
9824
|
},
|
|
@@ -10331,7 +10367,7 @@
|
|
|
10331
10367
|
"surface": "builders-hall",
|
|
10332
10368
|
"text": "The move to core {…} did not land",
|
|
10333
10369
|
"file": "modules/hall-ui/public/deploy.js",
|
|
10334
|
-
"line":
|
|
10370
|
+
"line": 203,
|
|
10335
10371
|
"origin": "js-markup",
|
|
10336
10372
|
"confidence": "certain"
|
|
10337
10373
|
},
|
|
@@ -10637,7 +10673,7 @@
|
|
|
10637
10673
|
"surface": "builders-hall",
|
|
10638
10674
|
"text": "The upgrade checked {…} and refused:{…}",
|
|
10639
10675
|
"file": "modules/hall-ui/public/deploy.js",
|
|
10640
|
-
"line":
|
|
10676
|
+
"line": 264,
|
|
10641
10677
|
"origin": "js-markup",
|
|
10642
10678
|
"confidence": "certain"
|
|
10643
10679
|
},
|
|
@@ -10947,21 +10983,12 @@
|
|
|
10947
10983
|
"origin": "html-text",
|
|
10948
10984
|
"confidence": "certain"
|
|
10949
10985
|
},
|
|
10950
|
-
{
|
|
10951
|
-
"id": "f93fcb24c6ba",
|
|
10952
|
-
"surface": "builders-hall",
|
|
10953
|
-
"text": "This platform",
|
|
10954
|
-
"file": "modules/hall-ui/public/deploy.js",
|
|
10955
|
-
"line": 352,
|
|
10956
|
-
"origin": "js-markup",
|
|
10957
|
-
"confidence": "certain"
|
|
10958
|
-
},
|
|
10959
10986
|
{
|
|
10960
10987
|
"id": "3c8aaec39c40",
|
|
10961
10988
|
"surface": "builders-hall",
|
|
10962
10989
|
"text": "This project's code expects {…} database change{…} that its database has not applied yet. Anything that relies on {…} may fail until the migrations run.",
|
|
10963
10990
|
"file": "modules/hall-ui/public/deploy.js",
|
|
10964
|
-
"line":
|
|
10991
|
+
"line": 378,
|
|
10965
10992
|
"origin": "js-markup",
|
|
10966
10993
|
"confidence": "certain"
|
|
10967
10994
|
},
|
|
@@ -10970,7 +10997,7 @@
|
|
|
10970
10997
|
"surface": "builders-hall",
|
|
10971
10998
|
"text": "This restarts {…} onto core",
|
|
10972
10999
|
"file": "modules/hall-ui/public/deploy.js",
|
|
10973
|
-
"line":
|
|
11000
|
+
"line": 360,
|
|
10974
11001
|
"origin": "js-markup",
|
|
10975
11002
|
"confidence": "certain"
|
|
10976
11003
|
},
|
|
@@ -11015,7 +11042,7 @@
|
|
|
11015
11042
|
"surface": "builders-hall",
|
|
11016
11043
|
"text": "This would fail.",
|
|
11017
11044
|
"file": "modules/hall-ui/public/deploy.js",
|
|
11018
|
-
"line":
|
|
11045
|
+
"line": 264,
|
|
11019
11046
|
"origin": "js-markup",
|
|
11020
11047
|
"confidence": "certain"
|
|
11021
11048
|
},
|
|
@@ -11406,6 +11433,24 @@
|
|
|
11406
11433
|
"origin": "html-attr:title",
|
|
11407
11434
|
"confidence": "certain"
|
|
11408
11435
|
},
|
|
11436
|
+
{
|
|
11437
|
+
"id": "515f3c6023a9",
|
|
11438
|
+
"surface": "builders-hall",
|
|
11439
|
+
"text": "What the upgrade said",
|
|
11440
|
+
"file": "modules/hall-ui/public/deploy.js",
|
|
11441
|
+
"line": 189,
|
|
11442
|
+
"origin": "js-markup",
|
|
11443
|
+
"confidence": "certain"
|
|
11444
|
+
},
|
|
11445
|
+
{
|
|
11446
|
+
"id": "5a58392783fd",
|
|
11447
|
+
"surface": "builders-hall",
|
|
11448
|
+
"text": "What this brings in",
|
|
11449
|
+
"file": "modules/hall-ui/public/deploy.js",
|
|
11450
|
+
"line": 349,
|
|
11451
|
+
"origin": "js-markup",
|
|
11452
|
+
"confidence": "certain"
|
|
11453
|
+
},
|
|
11409
11454
|
{
|
|
11410
11455
|
"id": "a444ad812e4f",
|
|
11411
11456
|
"surface": "builders-hall",
|
|
@@ -11744,7 +11789,7 @@
|
|
|
11744
11789
|
"surface": "builders-hall",
|
|
11745
11790
|
"text": "You can still press Move — the runner will refuse it the same way, and the box is left where it is.",
|
|
11746
11791
|
"file": "modules/hall-ui/public/deploy.js",
|
|
11747
|
-
"line":
|
|
11792
|
+
"line": 264,
|
|
11748
11793
|
"origin": "js-markup",
|
|
11749
11794
|
"confidence": "certain"
|
|
11750
11795
|
},
|
|
@@ -12905,7 +12950,7 @@
|
|
|
12905
12950
|
"surface": "builders-hall",
|
|
12906
12951
|
"text": "is published and this box is not on it yet.",
|
|
12907
12952
|
"file": "modules/hall-ui/public/deploy.js",
|
|
12908
|
-
"line":
|
|
12953
|
+
"line": 221,
|
|
12909
12954
|
"origin": "js-markup",
|
|
12910
12955
|
"confidence": "certain"
|
|
12911
12956
|
},
|
|
@@ -13049,7 +13094,7 @@
|
|
|
13049
13094
|
"surface": "builders-hall",
|
|
13050
13095
|
"text": "no reading",
|
|
13051
13096
|
"file": "modules/hall-ui/public/deploy.js",
|
|
13052
|
-
"line":
|
|
13097
|
+
"line": 130,
|
|
13053
13098
|
"origin": "js-markup",
|
|
13054
13099
|
"confidence": "certain"
|
|
13055
13100
|
},
|
|
@@ -13364,7 +13409,7 @@
|
|
|
13364
13409
|
"surface": "builders-hall",
|
|
13365
13410
|
"text": "reads the control plane's own observation · ADR 0293 · every move is recorded with who asked",
|
|
13366
13411
|
"file": "modules/hall-ui/public/deploy.js",
|
|
13367
|
-
"line":
|
|
13412
|
+
"line": 454,
|
|
13368
13413
|
"origin": "js-markup",
|
|
13369
13414
|
"confidence": "certain"
|
|
13370
13415
|
},
|
|
@@ -14493,6 +14538,15 @@
|
|
|
14493
14538
|
"origin": "js-markup",
|
|
14494
14539
|
"confidence": "certain"
|
|
14495
14540
|
},
|
|
14541
|
+
{
|
|
14542
|
+
"id": "13c0414d2a10",
|
|
14543
|
+
"surface": "builders-hall",
|
|
14544
|
+
"text": "— attempted{…}. This project is still running core {…}.",
|
|
14545
|
+
"file": "modules/hall-ui/public/deploy.js",
|
|
14546
|
+
"line": 203,
|
|
14547
|
+
"origin": "js-markup",
|
|
14548
|
+
"confidence": "certain"
|
|
14549
|
+
},
|
|
14496
14550
|
{
|
|
14497
14551
|
"id": "d2c30a1ee74e",
|
|
14498
14552
|
"surface": "builders-hall",
|
|
@@ -14525,7 +14579,7 @@
|
|
|
14525
14579
|
"surface": "builders-hall",
|
|
14526
14580
|
"text": "— moved {…}, and the box confirmed it.",
|
|
14527
14581
|
"file": "modules/hall-ui/public/deploy.js",
|
|
14528
|
-
"line":
|
|
14582
|
+
"line": 211,
|
|
14529
14583
|
"origin": "js-markup",
|
|
14530
14584
|
"confidence": "certain"
|
|
14531
14585
|
},
|
|
@@ -14556,15 +14610,6 @@
|
|
|
14556
14610
|
"origin": "js-markup",
|
|
14557
14611
|
"confidence": "certain"
|
|
14558
14612
|
},
|
|
14559
|
-
{
|
|
14560
|
-
"id": "38c40179ec06",
|
|
14561
|
-
"surface": "builders-hall",
|
|
14562
|
-
"text": "— this project was put back on {…} and is running.",
|
|
14563
|
-
"file": "modules/hall-ui/public/deploy.js",
|
|
14564
|
-
"line": 154,
|
|
14565
|
-
"origin": "js-markup",
|
|
14566
|
-
"confidence": "certain"
|
|
14567
|
-
},
|
|
14568
14613
|
{
|
|
14569
14614
|
"id": "392afc533191",
|
|
14570
14615
|
"surface": "builders-hall",
|
|
@@ -14601,12 +14646,21 @@
|
|
|
14601
14646
|
"origin": "js-markup",
|
|
14602
14647
|
"confidence": "certain"
|
|
14603
14648
|
},
|
|
14649
|
+
{
|
|
14650
|
+
"id": "8f2eba6e0da8",
|
|
14651
|
+
"surface": "builders-hall",
|
|
14652
|
+
"text": "— {…} {…} of work landed between core {…} and {…}{…}:",
|
|
14653
|
+
"file": "modules/hall-ui/public/deploy.js",
|
|
14654
|
+
"line": 349,
|
|
14655
|
+
"origin": "js-markup",
|
|
14656
|
+
"confidence": "certain"
|
|
14657
|
+
},
|
|
14604
14658
|
{
|
|
14605
14659
|
"id": "28fef677706c",
|
|
14606
14660
|
"surface": "builders-hall",
|
|
14607
14661
|
"text": "— {…}. The project restarts as part of this, and puts itself back on {…} if the new core does not answer. This page is watching and will say when it lands.",
|
|
14608
14662
|
"file": "modules/hall-ui/public/deploy.js",
|
|
14609
|
-
"line":
|
|
14663
|
+
"line": 157,
|
|
14610
14664
|
"origin": "js-markup",
|
|
14611
14665
|
"confidence": "certain"
|
|
14612
14666
|
},
|
|
@@ -14619,6 +14673,15 @@
|
|
|
14619
14673
|
"origin": "js-markup",
|
|
14620
14674
|
"confidence": "certain"
|
|
14621
14675
|
},
|
|
14676
|
+
{
|
|
14677
|
+
"id": "b797996b2e4f",
|
|
14678
|
+
"surface": "builders-hall",
|
|
14679
|
+
"text": "…and {…} more, not listed.",
|
|
14680
|
+
"file": "modules/hall-ui/public/deploy.js",
|
|
14681
|
+
"line": 347,
|
|
14682
|
+
"origin": "js-markup",
|
|
14683
|
+
"confidence": "certain"
|
|
14684
|
+
},
|
|
14622
14685
|
{
|
|
14623
14686
|
"id": "b2a04abfead0",
|
|
14624
14687
|
"surface": "builders-hall",
|
|
@@ -16141,45 +16204,45 @@
|
|
|
16141
16204
|
"confidence": "certain"
|
|
16142
16205
|
},
|
|
16143
16206
|
{
|
|
16144
|
-
"id": "
|
|
16207
|
+
"id": "d6314ddcc1d0",
|
|
16145
16208
|
"surface": "landing",
|
|
16146
|
-
"text": "Open source
|
|
16209
|
+
"text": "Open source",
|
|
16147
16210
|
"file": "modules/public-landing/public/contact.html",
|
|
16148
16211
|
"line": 71,
|
|
16149
16212
|
"origin": "html-text",
|
|
16150
16213
|
"confidence": "certain"
|
|
16151
16214
|
},
|
|
16152
16215
|
{
|
|
16153
|
-
"id": "
|
|
16216
|
+
"id": "d6314ddcc1d0",
|
|
16154
16217
|
"surface": "landing",
|
|
16155
|
-
"text": "Open source
|
|
16218
|
+
"text": "Open source",
|
|
16156
16219
|
"file": "modules/public-landing/public/index.html",
|
|
16157
16220
|
"line": 900,
|
|
16158
16221
|
"origin": "html-text",
|
|
16159
16222
|
"confidence": "certain"
|
|
16160
16223
|
},
|
|
16161
16224
|
{
|
|
16162
|
-
"id": "
|
|
16225
|
+
"id": "d6314ddcc1d0",
|
|
16163
16226
|
"surface": "landing",
|
|
16164
|
-
"text": "Open source
|
|
16227
|
+
"text": "Open source",
|
|
16165
16228
|
"file": "modules/public-landing/public/privacy.html",
|
|
16166
16229
|
"line": 80,
|
|
16167
16230
|
"origin": "html-text",
|
|
16168
16231
|
"confidence": "certain"
|
|
16169
16232
|
},
|
|
16170
16233
|
{
|
|
16171
|
-
"id": "
|
|
16234
|
+
"id": "d6314ddcc1d0",
|
|
16172
16235
|
"surface": "landing",
|
|
16173
|
-
"text": "Open source
|
|
16236
|
+
"text": "Open source",
|
|
16174
16237
|
"file": "modules/public-landing/public/projects.html",
|
|
16175
16238
|
"line": 1410,
|
|
16176
16239
|
"origin": "html-text",
|
|
16177
16240
|
"confidence": "certain"
|
|
16178
16241
|
},
|
|
16179
16242
|
{
|
|
16180
|
-
"id": "
|
|
16243
|
+
"id": "d6314ddcc1d0",
|
|
16181
16244
|
"surface": "landing",
|
|
16182
|
-
"text": "Open source
|
|
16245
|
+
"text": "Open source",
|
|
16183
16246
|
"file": "modules/public-landing/public/terms.html",
|
|
16184
16247
|
"line": 84,
|
|
16185
16248
|
"origin": "html-text",
|
|
@@ -85,7 +85,7 @@ Every item is tagged as the builders tagged it: **given** (one of the eight), **
|
|
|
85
85
|
These were found by the test and page mappers and confirmed against the feeds; they belong to tasks 1003300 / 1003301, not to this round.
|
|
86
86
|
|
|
87
87
|
- **No feed carries a per-project hall address.** `clientBranding()` deliberately withholds domains and `{{buildersOrigin}}` is one value per instance, so "hall entry only where the hall address differs from the site address" needs a new field on `/api/bongos/projects/featured` (or `/my-projects`), e.g. `hall_origin`, null where the hall is at `<site>/builders`. On the apex the hall is `builders.cloudbongos.com` (differs); on a child it is `<site>/builders` (same).
|
|
88
|
-
- **No feed carries faces or a 30-day count.** The enrichment (`modules/platform-identity/project-stats.js`) returns `builders`, `tags`, `owner`, `owner_avatar`; the faces need the remote leaderboard's avatar rows kept (the count already comes from them), and `shipped_30d` needs the remote `/api/
|
|
88
|
+
- **No feed carries faces or a 30-day count.** The enrichment (`modules/platform-identity/project-stats.js`) returns `builders`, `tags`, `owner`, `owner_avatar`; the faces need the remote leaderboard's avatar rows kept (the count already comes from them), and `shipped_30d` needs the remote `/api/bongos/public/recent-shipped` (row-capped at 30, hence the `N+` rule). `art_url` is already on the feed and is read by nothing.
|
|
89
89
|
- **Tests that pin the retired chrome and must be retargeted in the build** (from `tests/projects_hub.mjs`, `tests/projects_hub_pre_uat.mjs`, `tests/landing_page.mjs`): the `Home` link (`projects_hub.mjs:40, 46, 48`), the hall pill's `data-link-hall href="{{buildersOrigin}}"` (`landing_page.mjs:214-220`, `projects_hub.mjs:105`), the `.shell .navrow` rule in cosmos (`projects_hub_pre_uat.mjs:203`), the card's slice rule (`projects_hub.mjs:487`: the first adjacent `</div></div>` ends the slice, so every new card region must be a direct child and the banner a bare `<img>`), the `<td>` count across the header, `#selfRow` and the row template if the glyph becomes a cell (`projects_hub.mjs:531-535`), and the singular `querySelector('[data-nav="mine"]')` at `projects.html:5307` (a `My projects` item with `data-nav="mine"` would be a second node; hide by `querySelectorAll` or hook it differently). The dropdown items keep `href="?view=map" data-nav="map"` (etc.) as adjacent attributes so `projects_hub.mjs:42-43` holds unchanged. A new bar-ground token goes into cosmos with both dark twins and a `PAIRS` row in `tests/cosmos_token_contrast.mjs`.
|
|
90
90
|
- **Copy.** Every string that changes on the built page re-runs `node scripts/gds/copy-inventory.js` (CI checks the registry).
|
|
91
91
|
|
|
@@ -82,7 +82,7 @@ One shell wraps every page, replacing both the header text-link stack and the pe
|
|
|
82
82
|
| **Content** | Scrollable view region | Right of sidebar, below top bar | max 1120px, gutter 24–32 | Only region that scrolls. One view at a time; centers past max. |
|
|
83
83
|
| **Footer** | Minimal meta line | End of content flow | auto | Reduced to sign-out + instance name; no lore. |
|
|
84
84
|
|
|
85
|
-
> **Seam preserved.** The shell is chrome only. The hall-widget registry (`dom-utils.js` · `contributeHallWidget`) and the `/api/
|
|
85
|
+
> **Seam preserved.** The shell is chrome only. The hall-widget registry (`dom-utils.js` · `contributeHallWidget`) and the `/api/bongos/*` reads are unchanged — widgets mount into view containers instead of one `<main>`.
|
|
86
86
|
|
|
87
87
|
---
|
|
88
88
|
|
|
@@ -268,7 +268,7 @@ Not layout, but it rides along. Most of this already flows through the brand pac
|
|
|
268
268
|
The hall has hard architectural constraints (see `modules/hall-ui/CLAUDE.md`). Placement changes are cheap only if they respect these.
|
|
269
269
|
|
|
270
270
|
- **Widget registry is the source of truth.** A fitness check (`scripts/gds/fitness.js checkHallSectionRegistry`) reds the build if a `<section class="scroll">` is hardcoded into `<main>`. Views must mount registered widgets, not inline them.
|
|
271
|
-
- **No framework, no build step.** Static HTML/CSS/JS polling `/api/
|
|
271
|
+
- **No framework, no build step.** Static HTML/CSS/JS polling `/api/bongos/*`. The shell is hand-rolled CSS + a small amount of JS — no framework may be introduced.
|
|
272
272
|
- **Dedicated serving block.** `src/bongos/serve-internal.js` serves this from `BUILDERS_DIR` with the subdomain rewrite shim, canonical redirects, page gates, and asset-stamping. New assets must carry the content-hash `?v=` stamp.
|
|
273
273
|
- **Server-side gates stay authoritative.** Hiding a sidebar item is cosmetic; `requireGovernancePage` and the sign-in redirects remain the real access control.
|
|
274
274
|
- **Brand pack drives copy.** Neutralizing voice = a neutral default pack + removing hardcoded lore, not English strings baked into markup.
|
package/docs/file-map.md
CHANGED
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
│ ├── box-dormant-reclaim.{service,timer} ← (#598) daily CONTROL-PLANE sweep: deprovision long-parked dev boxes
|
|
87
87
|
│ ├── box-intent-runner.{service,timer} ← (#701) 1-min CONTROL-PLANE runner: drain box_intents (auto-provision + wake-on-connect) via `box.js run-intents --apply`
|
|
88
88
|
│ ├── box-drift-reconcile.{service,timer} ← (#1289/ADR 0071) hourly CONTROL-PLANE sweep: repair DO⇄DB drift via `box.js reconcile-drift --apply` (kill zombie droplets, mark ghost rows destroyed)
|
|
89
|
-
│ ├── box-heartbeat.sh ← (#598) runs ON THE BOX: pings /api/
|
|
90
|
-
│ ├── box-report-terminal.sh ← (#760/ADR 0038) runs ON THE BOX: POSTs the box's web-terminal URL + basic-auth credential UP to /api/
|
|
89
|
+
│ ├── box-heartbeat.sh ← (#598) runs ON THE BOX: pings /api/bongos/box/heartbeat while in use, so the idle sweep measures activity not uptime
|
|
90
|
+
│ ├── box-report-terminal.sh ← (#760/ADR 0038) runs ON THE BOX: POSTs the box's web-terminal URL + basic-auth credential UP to /api/bongos/box/terminal so a Chromebook builder reads them from the web
|
|
91
91
|
│ ├── box-source-fetch.sh ← (#600/#898/ADR 0052) runs ON THE BOX post-clone: scope-aware source fetch (sparse starter / full) + idempotently installs & enables the box units (box-game-preview, box-terminal, close-box) on every fetch so existing boxes self-heal; also self-tests (task 843) — every cycle it black-box-probes box-terminal/cloudflared/box-game-preview + the terminal credential and restarts whatever's unhealthy, not just what's absent
|
|
92
92
|
│ ├── builder-box-cloud-init.yaml ← (#598/#599/#760) first-boot bootstrap: Docker + devcontainer up, Claude Code + ttyd + cloudflared on host, box-terminal.service + cloudflared.service + heartbeat cron wired (substituted by box.js)
|
|
93
93
|
│ ├── managed-settings.template.json ← (#599) Claude Desktop sshConfigs template (locked to one approved box); filled per-builder by gen-managed-settings.sh
|
|
@@ -164,7 +164,7 @@
|
|
|
164
164
|
│ ├── discord-channels.js ← Archon CLI: plan/apply the Discord channel layout via the API (ADR 0036, #727)
|
|
165
165
|
│ ├── setup.js ← one-time GitHub Device Flow → ~/.config/otb/gds-session.json
|
|
166
166
|
│ ├── start.js ← list claimable tasks + active claims (`/builder-start`)
|
|
167
|
-
│ ├── claim.js ← atomic POST /api/
|
|
167
|
+
│ ├── claim.js ← atomic POST /api/bongos/claims (`/builder-claim`); runs the worktree-per-claim guard (worktree-claim-guard.js) BEFORE the session check and the POST; prints the claim-time context pack incl. next-free ADR/migration numbers (V4.R26); printDisciplineMode() reads discipline-modes.json to route a claimed task to its playbook skill
|
|
168
168
|
│ ├── discipline-modes.json ← the ROLE REGISTRY read by claim.js: engineer/artist/ideator → their role pack under docs/packs/, module-contributed ui → the /design skill; absence of an entry = the default build-and-ship loop, fail-open at claim time — but scripts/gds/role-pack-guard.js hard-fails CI if an entry names a pack that is not in the tree ([#1267](https://example.com/builders#/task/1267))
|
|
169
169
|
│ ├── next-number.js ← deterministic next-free ADR + migration number from origin/main ∪ local working tree; supersedes the drift-prone claim-time DB counter (V4.R26, [#964](https://example.com/builders#/task/964)). `node scripts/gds/next-number.js [--json]`
|
|
170
170
|
│ ├── gen-repo-map.js ← Path B (ADR 0063, [#1224](https://example.com/builders#/task/1224)): zero-dep, deterministic symbol-skeleton generator → docs/repo-map.md + the generated factual block in each nested CLAUDE.md; ranks exported symbols by reference frequency. `--check` = CI gate; regenerated on deploy by ship.js regenerateRepoMap()
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
│ ├── me.js ← current builder profile + leaderboard
|
|
188
188
|
│ ├── goal.js ← goal board CLI: `list` (rollup per goal) + `show <id>` (criteria, tasks, waits-on, next claimable)
|
|
189
189
|
│ ├── seed-v3-tasks.js ← V3 Planning Session #1: 80 net-new GDS-V3 tasks (V3.R01–V3.R89) + 10 idea_inbox promotions; idempotent on source_ref
|
|
190
|
-
│ ├── backfill-cost.js ← read art ledger → POST /api/
|
|
190
|
+
│ ├── backfill-cost.js ← read art ledger → POST /api/bongos/cost (idempotent)
|
|
191
191
|
│ ├── smoke-write.sh ← write-path smoke (create→claim→ship round-trip)
|
|
192
192
|
│ ├── backup-dropin-sweep.sh ← (task 1003930) control-plane sweep: retires the temporary task-1003925 backup drop-in from each project whose pinned core carries the fix (1.19.750+), proving one backup succeeds without it first; survey by default, `--apply` to act; re-run after each pin moves
|
|
193
193
|
│ ├── stray-unit-sweep.sh ← (task 1003939) control-plane sweep: the ledger's torn-down slugs that still have a service/backup unit loaded or on disk (a torn-down project holding memory outside the ADR 0285 count); survey by default, `--apply` disables, removes, reloads, reset-failed's; DB/dumps/checkout/Caddy left alone
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
│ │ ├── catalog.js ← the browsable module catalog model (ADR 0167 / ADR 0107 §2/§3): `source` (which TREE ships it — core package vs instance, read off the loader's discovery root) + resolved author/origin `credit` with an `inferred` flag. The ONE builder behind both `GET /api/bongos/modules` and `bongos module list --catalog`, so the hall + CLI can't drift.
|
|
230
230
|
│ │ └── semver.js ← minimal semver `satisfies(version, range)` used by the loader (no npm dep).
|
|
231
231
|
│ ├── platform-server.js ← BONGOS-ONLY entrypoint (ADR 0062 R51, task 1190): boots Express + the shared internal surface (API + hall + status) with NO game in the process; the inverse of preview-server.js. `node src/platform-server.js`
|
|
232
|
-
│ ├── preview-server.js ← GAME-ONLY entrypoint for the per-box sandbox (ADR 0052): Phaser/Colyseus + tiles, NO /api/
|
|
232
|
+
│ ├── preview-server.js ← GAME-ONLY entrypoint for the per-box sandbox (ADR 0052): Phaser/Colyseus + tiles, NO /api/bongos
|
|
233
233
|
│ ├── seats.js ← in-process seat counter + EventEmitter
|
|
234
234
|
│ ├── rooms/
|
|
235
235
|
│ │ ├── WorldRoom.js ← singleton room: move + interact + identity
|
|
@@ -401,7 +401,7 @@ tests/
|
|
|
401
401
|
├── builder-exit/SKILL.md ← /builder-exit — gracefully offboard (or reactivate) a builder: release claims, seal session logs, drop rank to xenos
|
|
402
402
|
├── builder-key/SKILL.md ← /builder-key — list API-key status, render the visual 'key needed' callout for anything missing, drive the UI-first Settings add-flow + re-sync/confirm; never accepts a key pasted in chat (task 1391)
|
|
403
403
|
├── builder-reauth/SKILL.md ← /builder-reauth — refresh an expired Bongos CLI session the UI-first way (no terminal Device Flow)
|
|
404
|
-
├── builder-redteam/SKILL.md ← /builder-redteam — file a red-team / vulnerability report (severity, target, repro) to /api/
|
|
404
|
+
├── builder-redteam/SKILL.md ← /builder-redteam — file a red-team / vulnerability report (severity, target, repro) to /api/bongos/security
|
|
405
405
|
├── builder-release/SKILL.md ← /builder-release — abandon a claim (task returns to ready, no credits)
|
|
406
406
|
├── builder-sequence/SKILL.md ← /builder-sequence N — walk a whole dependency chain from one kickoff (claim → build → ship → next), one claim at a time; halts and reports on migration/security/protected-path/thin-spec/judgement tasks (scripts/gds/sequence.js, task 1002484)
|
|
407
407
|
├── builder-setup/SKILL.md ← /builder-setup — one-time GitHub Device Flow auth (Bongos); multi-builder-on-one-device gate
|
|
@@ -489,7 +489,7 @@ To install on a new machine, symlink each routine's directory under `~/.claude/s
|
|
|
489
489
|
├── session-start.js ← SessionStart: <redacted> .env.local into a fresh worktree, then chains onboarding-ship + rank-change greeting + memory pull
|
|
490
490
|
├── rank-change-greeting.js ← promotion/demotion greeting (V3.R28 #249); spawned by session-start.js, also runnable standalone
|
|
491
491
|
├── pull-memory.js ← memory pull-on-session-start (V3.R56 #275); spawned by session-start.js (kill-switches: OTB_MEMORY_PULL_OFF / OTB_SUBAGENT)
|
|
492
|
-
├── recall-hints.js ← SessionStart: when the session opens holding a claim, surface the top project-knowledge hits for that task via POST /api/
|
|
492
|
+
├── recall-hints.js ← SessionStart: when the session opens holding a claim, surface the top project-knowledge hits for that task via POST /api/bongos/search (#963/V4.R25, ADR 0060)
|
|
493
493
|
├── conductor.js ← UserPromptSubmit: MAS Conductor advisory + dispatch directive (#427/#439); self-gates on OTB_CONDUCTOR_OFF / OTB_SUBAGENT
|
|
494
494
|
├── session-cards.js ← UserPromptSubmit: deterministic delivery of READ-ONLY in-session cards (builder-start, status) — pre-renders the card + injects a one-step render directive (task 1288)
|
|
495
495
|
├── lifecycle-card.js ← PostToolUse (Bash|PowerShell): deterministic delivery of MUTATING lifecycle cards (claim/ship/release) — the write-side mirror of session-cards.js (task 1288)
|
package/docs/handoff-template.md
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
**New limitations / risks / blockers introduced this session:**
|
|
28
28
|
- {new V1 architecture limitation → added to limitations/current-version.md}
|
|
29
29
|
- {new ops gotcha → long-form recipe under docs/recipes/, OR short rule via `node scripts/gds/learning-capture.js`}
|
|
30
|
-
- {new blocker for Lars → POST /api/
|
|
30
|
+
- {new blocker for Lars → POST /api/bongos/blockers (the markdown file is frozen archive only)}
|
|
31
31
|
- {(or "none")}
|
|
32
32
|
|
|
33
33
|
**Generative ideas captured this session:**
|
|
@@ -2418,5 +2418,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
2418
2418
|
landed since 1.19.970 with no explicit bump. run 35805746484. (task 1002620)
|
|
2419
2419
|
1.19.972 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2420
2420
|
landed since 1.19.971 with no explicit bump. run 35806478158. (task 1002620)
|
|
2421
|
+
1.19.973 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2422
|
+
landed since 1.19.972 with no explicit bump. run 35813381436. (task 1002620)
|
|
2421
2423
|
---------------------------------------------------------------------------
|
|
2422
2424
|
```
|
package/docs/modules-contract.md
CHANGED
|
@@ -296,7 +296,7 @@ Each module's `modules/<key>/CLAUDE.md` is the authoritative per-module referenc
|
|
|
296
296
|
| `isModuleEnabled(name)` | Gate a mount or feature. Throws on an unknown name (programmer error). |
|
|
297
297
|
| `enabledModules()` | The resolved on-set (an array of enabled module keys). |
|
|
298
298
|
| `enabledDisciplines()` | The union of `contributes.disciplines` across enabled modules. |
|
|
299
|
-
| `clientModules()` | `{ enabled: {…booleans}, disciplines: […] }` — injected into hall/status HTML as `window.__MODULES__` and served at `GET /api/
|
|
299
|
+
| `clientModules()` | `{ enabled: {…booleans}, disciplines: […] }` — injected into hall/status HTML as `window.__MODULES__` and served at `GET /api/bongos/public/modules`. Front-ends read it to hide UI sections for off modules. |
|
|
300
300
|
| `resolveModules(opts)` | The pure resolver (unit-tested, zero I/O). |
|
|
301
301
|
|
|
302
302
|
---
|
|
@@ -118,7 +118,7 @@ Builders are **uncapped by default** ([ADR 0085](../adr/0085-remove-default-per-
|
|
|
118
118
|
|
|
119
119
|
- **No default cap.** `monthly_budget_usd` is unset for most builders, which means uncapped. The MTD figure still resets at the start of each calendar month.
|
|
120
120
|
- A cap, when set, is there to **catch a runaway**, not to ration normal work — the **$50 default was removed** ([ADR 0085](../adr/0085-remove-default-per-builder-spend-cap.md)) because a new builder's own session cost crossed it within a day or two, freezing the very work it was meant to enable.
|
|
121
|
-
- An **Archon** can set or clear a specific builder's ceiling (`PATCH /api/
|
|
121
|
+
- An **Archon** can set or clear a specific builder's ceiling (`PATCH /api/bongos/builders/:id/budget`); clearing it (`null`) returns the builder to uncapped.
|
|
122
122
|
|
|
123
123
|
If a cap is set and you hit `over`, you're not in trouble — you've just reached the month's ceiling. Ask an Archon to raise or clear it if the work justifies it.
|
|
124
124
|
|
|
@@ -130,7 +130,7 @@ Karma (added in migration 040) is a **completely separate** counter from example
|
|
|
130
130
|
|
|
131
131
|
### How karma is earned (and lost)
|
|
132
132
|
|
|
133
|
-
- **Peer votes on confirmed work.** Builders upvote/downvote each other's confirmed tasks. Only **Metic-and-above** can cast a vote (`POST /api/
|
|
133
|
+
- **Peer votes on confirmed work.** Builders upvote/downvote each other's confirmed tasks. Only **Metic-and-above** can cast a vote (`POST /api/bongos/tasks/:id/vote` is rank-gated). Votes are **tallied weekly** into one net `peer_vote_weekly` karma entry per builder. There's an **anti-self-vote** guard and an anti-retaliation rule (a downvote can't dent your karma within the same week).
|
|
134
134
|
- **Proposal ratification.** When a criterion-proposal you made is ratified, you get **+3 karma** (`proposal_ratified`).
|
|
135
135
|
- **Idea promotion.** Promoting an idea into a real task awards karma to the capturer.
|
|
136
136
|
- **It can go down.** The [BFG](../adr/0026-bfg-memory-hygiene-and-cross-builder-learning.md) good-citizenship corrections can apply a *non-positive* karma delta. Karma is a slower, more reflective signal than example — you can ship fast and still lose karma if you break things.
|