@bongos/core 1.24.7 → 1.24.9

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 (57) hide show
  1. package/.bongos-core.json +115 -50
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +8 -0
  4. package/clients/bongos-client/index.cjs +8 -0
  5. package/clients/bongos-client/index.d.ts +13 -1
  6. package/clients/bongos-client/index.mjs +8 -0
  7. package/docs/adr/0385-money-lives-with-a-processor-credits-stay-a-project-meter.md +1 -1
  8. package/docs/api/openapi.json +267 -7
  9. package/docs/api-reference.md +7 -3
  10. package/docs/architecture.md +2 -2
  11. package/docs/copy-inventory.md +38 -13
  12. package/docs/copy-registry.json +271 -15
  13. package/docs/module-api-changelog.md +4 -0
  14. package/docs/modules-contract.md +3 -3
  15. package/docs/page-inventory.json +40 -4
  16. package/docs/page-readings.json +64 -4
  17. package/migrations/core_287_module_prices_cash_only.sql +24 -0
  18. package/modules/government/decision-board.js +5 -0
  19. package/modules/government/decision-rules.js +3 -0
  20. package/modules/government/routes/government.js +2 -0
  21. package/modules/hall-ui/public/market-watch-rules-lib.js +207 -0
  22. package/modules/hall-ui/public/market-watch-rules.css +68 -0
  23. package/modules/hall-ui/public/market-watch-rules.html +54 -0
  24. package/modules/hall-ui/public/market-watch-rules.js +129 -0
  25. package/modules/hall-ui/public/market-watch-rules.states.json +17 -0
  26. package/modules/hall-ui/public/modules.js +5 -0
  27. package/modules/market-watch/matter-acts.js +59 -0
  28. package/modules/market-watch/module.json +5 -4
  29. package/modules/market-watch/proposals.js +214 -0
  30. package/modules/market-watch/research.js +49 -8
  31. package/modules/market-watch/routes/rules.js +202 -0
  32. package/modules/market-watch/rules-logic.js +264 -0
  33. package/modules/market-watch/rules-view.js +165 -0
  34. package/package-lock.json +2 -2
  35. package/package.json +1 -1
  36. package/release-notes.json +12 -0
  37. package/scripts/bongos/government-walk.js +18 -2
  38. package/scripts/bongos/module-store-cli.js +21 -21
  39. package/scripts/bongos/module.js +8 -8
  40. package/scripts/bongos/run-unit-tests.js +3 -0
  41. package/src/bongos/module-listing.js +47 -20
  42. package/src/bongos/module-scope-map.js +2 -0
  43. package/src/bongos/module-store.js +20 -12
  44. package/src/bongos/routes/modules.js +31 -21
  45. package/src/bongos/serve-internal.js +2 -1
  46. package/src/module-api.js +1 -1
  47. package/tests/government_act_alone_buildings.mjs +3 -0
  48. package/tests/government_decision_rules.mjs +4 -1
  49. package/tests/governor_matter_acts.mjs +5 -1
  50. package/tests/hall_page_gate_map.mjs +3 -0
  51. package/tests/market_watch_module.mjs +1 -0
  52. package/tests/market_watch_rules.mjs +496 -0
  53. package/tests/market_watch_rules_db.mjs +133 -0
  54. package/tests/module_store_cli.mjs +14 -3
  55. package/tests/module_store_listing.mjs +65 -14
  56. package/tests/module_store_price.mjs +97 -26
  57. package/tests/module_store_registry_migration.mjs +11 -0
@@ -3,17 +3,17 @@
3
3
  "generator": "scripts/bongos/copy-inventory.js",
4
4
  "goal": 1000074,
5
5
  "counts": {
6
- "strings": 3120,
7
- "unique_ids": 2458,
8
- "certain": 3120,
6
+ "strings": 3145,
7
+ "unique_ids": 2479,
8
+ "certain": 3145,
9
9
  "heuristic": 0,
10
- "duplicate_ids": 261
10
+ "duplicate_ids": 264
11
11
  },
12
12
  "surfaces": {
13
13
  "builders-hall": {
14
14
  "at": "modules/hall-ui/public",
15
- "files": 160,
16
- "strings": 2018
15
+ "files": 163,
16
+ "strings": 2043
17
17
  },
18
18
  "status-dashboard": {
19
19
  "at": "modules/status-ui/public",
@@ -914,6 +914,17 @@
914
914
  "modules/hall-ui/public/fleet.html:26"
915
915
  ]
916
916
  },
917
+ {
918
+ "id": "d069f67f3ac6",
919
+ "surface": "builders-hall",
920
+ "text": "Market Watch rules",
921
+ "occurrences": 3,
922
+ "at": [
923
+ "modules/hall-ui/public/market-watch-rules.html:15",
924
+ "modules/hall-ui/public/market-watch-rules.html:15",
925
+ "modules/hall-ui/public/market-watch-rules.html:25"
926
+ ]
927
+ },
917
928
  {
918
929
  "id": "f2671b0f02da",
919
930
  "surface": "builders-hall",
@@ -1859,6 +1870,16 @@
1859
1870
  "modules/hall-ui/public/collab.js:304"
1860
1871
  ]
1861
1872
  },
1873
+ {
1874
+ "id": "ec50f5f8dacc",
1875
+ "surface": "builders-hall",
1876
+ "text": "Market Watch rules — {{worldName}}",
1877
+ "occurrences": 2,
1878
+ "at": [
1879
+ "modules/hall-ui/public/market-watch-rules.html:6",
1880
+ "modules/hall-ui/public/market-watch-rules.html:6"
1881
+ ]
1882
+ },
1862
1883
  {
1863
1884
  "id": "df335a1224ae",
1864
1885
  "surface": "builders-hall",
@@ -2599,6 +2620,16 @@
2599
2620
  "modules/hall-ui/public/hall-widgets.js:167"
2600
2621
  ]
2601
2622
  },
2623
+ {
2624
+ "id": "6d91bea9b24e",
2625
+ "surface": "builders-hall",
2626
+ "text": "as of {…}",
2627
+ "occurrences": 2,
2628
+ "at": [
2629
+ "modules/hall-ui/public/market-watch-rules-lib.js:123",
2630
+ "modules/hall-ui/public/sky-interaction.js:122"
2631
+ ]
2632
+ },
2602
2633
  {
2603
2634
  "id": "c9435fd3a8c0",
2604
2635
  "surface": "landing",
@@ -5702,7 +5733,7 @@
5702
5733
  "surface": "builders-hall",
5703
5734
  "text": "Could not load modules.",
5704
5735
  "file": "modules/hall-ui/public/modules.js",
5705
- "line": 602,
5736
+ "line": 607,
5706
5737
  "origin": "js-notice",
5707
5738
  "confidence": "certain"
5708
5739
  },
@@ -5891,7 +5922,7 @@
5891
5922
  "surface": "builders-hall",
5892
5923
  "text": "Could not reach the submit endpoint.",
5893
5924
  "file": "modules/hall-ui/public/modules.js",
5894
- "line": 579,
5925
+ "line": 584,
5895
5926
  "origin": "js-notice",
5896
5927
  "confidence": "certain"
5897
5928
  },
@@ -8478,6 +8509,15 @@
8478
8509
  "origin": "js-markup",
8479
8510
  "confidence": "certain"
8480
8511
  },
8512
+ {
8513
+ "id": "49dc6885e5ff",
8514
+ "surface": "builders-hall",
8515
+ "text": "Its author has been asked to set a cash price. Credits cannot buy a module.",
8516
+ "file": "modules/hall-ui/public/modules.js",
8517
+ "line": 348,
8518
+ "origin": "js-markup",
8519
+ "confidence": "certain"
8520
+ },
8481
8521
  {
8482
8522
  "id": "b0bcb3f844ec",
8483
8523
  "surface": "builders-hall",
@@ -9072,6 +9112,15 @@
9072
9112
  "origin": "html-text",
9073
9113
  "confidence": "certain"
9074
9114
  },
9115
+ {
9116
+ "id": "27c9184d63ef",
9117
+ "surface": "builders-hall",
9118
+ "text": "Loading the watch rules…",
9119
+ "file": "modules/hall-ui/public/market-watch-rules.html",
9120
+ "line": 31,
9121
+ "origin": "html-text",
9122
+ "confidence": "certain"
9123
+ },
9075
9124
  {
9076
9125
  "id": "1dffb93947f2",
9077
9126
  "surface": "builders-hall",
@@ -9234,6 +9283,51 @@
9234
9283
  "origin": "js-markup",
9235
9284
  "confidence": "certain"
9236
9285
  },
9286
+ {
9287
+ "id": "d069f67f3ac6",
9288
+ "surface": "builders-hall",
9289
+ "text": "Market Watch rules",
9290
+ "file": "modules/hall-ui/public/market-watch-rules.html",
9291
+ "line": 15,
9292
+ "origin": "html-attr:title",
9293
+ "confidence": "certain"
9294
+ },
9295
+ {
9296
+ "id": "d069f67f3ac6",
9297
+ "surface": "builders-hall",
9298
+ "text": "Market Watch rules",
9299
+ "file": "modules/hall-ui/public/market-watch-rules.html",
9300
+ "line": 15,
9301
+ "origin": "html-attr:data-page-title",
9302
+ "confidence": "certain"
9303
+ },
9304
+ {
9305
+ "id": "d069f67f3ac6",
9306
+ "surface": "builders-hall",
9307
+ "text": "Market Watch rules",
9308
+ "file": "modules/hall-ui/public/market-watch-rules.html",
9309
+ "line": 25,
9310
+ "origin": "html-text",
9311
+ "confidence": "certain"
9312
+ },
9313
+ {
9314
+ "id": "ec50f5f8dacc",
9315
+ "surface": "builders-hall",
9316
+ "text": "Market Watch rules — {{worldName}}",
9317
+ "file": "modules/hall-ui/public/market-watch-rules.html",
9318
+ "line": 6,
9319
+ "origin": "html-text",
9320
+ "confidence": "certain"
9321
+ },
9322
+ {
9323
+ "id": "ec50f5f8dacc",
9324
+ "surface": "builders-hall",
9325
+ "text": "Market Watch rules — {{worldName}}",
9326
+ "file": "modules/hall-ui/public/market-watch-rules.html",
9327
+ "line": 6,
9328
+ "origin": "html-title",
9329
+ "confidence": "certain"
9330
+ },
9237
9331
  {
9238
9332
  "id": "8bdec961e84a",
9239
9333
  "surface": "builders-hall",
@@ -9756,6 +9850,15 @@
9756
9850
  "origin": "js-markup",
9757
9851
  "confidence": "certain"
9758
9852
  },
9853
+ {
9854
+ "id": "429290dc65d2",
9855
+ "surface": "builders-hall",
9856
+ "text": "No brief yet.",
9857
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
9858
+ "line": 74,
9859
+ "origin": "js-markup",
9860
+ "confidence": "certain"
9861
+ },
9759
9862
  {
9760
9863
  "id": "83f62fc94271",
9761
9864
  "surface": "builders-hall",
@@ -10584,6 +10687,15 @@
10584
10687
  "origin": "js-markup",
10585
10688
  "confidence": "certain"
10586
10689
  },
10690
+ {
10691
+ "id": "477bbc1ff87e",
10692
+ "surface": "builders-hall",
10693
+ "text": "Nothing here yet.",
10694
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
10695
+ "line": 71,
10696
+ "origin": "js-markup",
10697
+ "confidence": "certain"
10698
+ },
10587
10699
  {
10588
10700
  "id": "fec5d78497e8",
10589
10701
  "surface": "builders-hall",
@@ -10611,6 +10723,15 @@
10611
10723
  "origin": "html-text",
10612
10724
  "confidence": "certain"
10613
10725
  },
10726
+ {
10727
+ "id": "df1cd55be0b1",
10728
+ "surface": "builders-hall",
10729
+ "text": "Nothing is scored yet.",
10730
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
10731
+ "line": 77,
10732
+ "origin": "js-markup",
10733
+ "confidence": "certain"
10734
+ },
10614
10735
  {
10615
10736
  "id": "64cdf17623f1",
10616
10737
  "surface": "builders-hall",
@@ -10629,6 +10750,15 @@
10629
10750
  "origin": "js-markup",
10630
10751
  "confidence": "certain"
10631
10752
  },
10753
+ {
10754
+ "id": "8faf432bca73",
10755
+ "surface": "builders-hall",
10756
+ "text": "Nothing is watched yet.",
10757
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
10758
+ "line": 87,
10759
+ "origin": "js-markup",
10760
+ "confidence": "certain"
10761
+ },
10632
10762
  {
10633
10763
  "id": "9ac63d97239a",
10634
10764
  "surface": "builders-hall",
@@ -10670,7 +10800,7 @@
10670
10800
  "surface": "builders-hall",
10671
10801
  "text": "Nothing to submit — every module here ships with the core.",
10672
10802
  "file": "modules/hall-ui/public/modules.js",
10673
- "line": 540,
10803
+ "line": 545,
10674
10804
  "origin": "js-text-assign",
10675
10805
  "confidence": "certain"
10676
10806
  },
@@ -15543,6 +15673,15 @@
15543
15673
  "origin": "js-markup",
15544
15674
  "confidence": "certain"
15545
15675
  },
15676
+ {
15677
+ "id": "f53b83bfbe54",
15678
+ "surface": "builders-hall",
15679
+ "text": "This project has no watch rules yet.",
15680
+ "file": "modules/hall-ui/public/market-watch-rules.js",
15681
+ "line": 62,
15682
+ "origin": "js-markup",
15683
+ "confidence": "certain"
15684
+ },
15546
15685
  {
15547
15686
  "id": "e97b2d549f10",
15548
15687
  "surface": "builders-hall",
@@ -17694,6 +17833,15 @@
17694
17833
  "origin": "js-markup",
17695
17834
  "confidence": "certain"
17696
17835
  },
17836
+ {
17837
+ "id": "6d91bea9b24e",
17838
+ "surface": "builders-hall",
17839
+ "text": "as of {…}",
17840
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
17841
+ "line": 123,
17842
+ "origin": "js-markup",
17843
+ "confidence": "certain"
17844
+ },
17697
17845
  {
17698
17846
  "id": "6d91bea9b24e",
17699
17847
  "surface": "builders-hall",
@@ -17703,6 +17851,15 @@
17703
17851
  "origin": "js-markup",
17704
17852
  "confidence": "certain"
17705
17853
  },
17854
+ {
17855
+ "id": "0dd65d2abf48",
17856
+ "surface": "builders-hall",
17857
+ "text": "at a vote",
17858
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
17859
+ "line": 103,
17860
+ "origin": "js-markup",
17861
+ "confidence": "certain"
17862
+ },
17706
17863
  {
17707
17864
  "id": "a756e47632cd",
17708
17865
  "surface": "builders-hall",
@@ -17892,6 +18049,15 @@
17892
18049
  "origin": "html-text",
17893
18050
  "confidence": "certain"
17894
18051
  },
18052
+ {
18053
+ "id": "c02d0024fe78",
18054
+ "surface": "builders-hall",
18055
+ "text": "cost of one run, by step",
18056
+ "file": "modules/hall-ui/public/market-watch-rules.html",
18057
+ "line": 32,
18058
+ "origin": "html-text",
18059
+ "confidence": "certain"
18060
+ },
17895
18061
  {
17896
18062
  "id": "ef93fb8ebb26",
17897
18063
  "surface": "builders-hall",
@@ -18653,7 +18819,7 @@
18653
18819
  "surface": "builders-hall",
18654
18820
  "text": "not measured yet",
18655
18821
  "file": "modules/hall-ui/public/modules.js",
18656
- "line": 360,
18822
+ "line": 365,
18657
18823
  "origin": "js-markup",
18658
18824
  "confidence": "certain"
18659
18825
  },
@@ -18810,6 +18976,15 @@
18810
18976
  "origin": "js-markup",
18811
18977
  "confidence": "certain"
18812
18978
  },
18979
+ {
18980
+ "id": "973f396ac861",
18981
+ "surface": "builders-hall",
18982
+ "text": "one line",
18983
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
18984
+ "line": 137,
18985
+ "origin": "js-markup",
18986
+ "confidence": "certain"
18987
+ },
18813
18988
  {
18814
18989
  "id": "f5a9579bbc36",
18815
18990
  "surface": "builders-hall",
@@ -18963,6 +19138,33 @@
18963
19138
  "origin": "html-text",
18964
19139
  "confidence": "certain"
18965
19140
  },
19141
+ {
19142
+ "id": "67bf0a6043f4",
19143
+ "surface": "builders-hall",
19144
+ "text": "price coming",
19145
+ "file": "modules/hall-ui/public/modules.js",
19146
+ "line": 348,
19147
+ "origin": "js-markup",
19148
+ "confidence": "certain"
19149
+ },
19150
+ {
19151
+ "id": "ddda5cb71c36",
19152
+ "surface": "builders-hall",
19153
+ "text": "proposal sent",
19154
+ "file": "modules/hall-ui/public/market-watch-rules.js",
19155
+ "line": 94,
19156
+ "origin": "js-notice",
19157
+ "confidence": "certain"
19158
+ },
19159
+ {
19160
+ "id": "cc7d093fdd53",
19161
+ "surface": "builders-hall",
19162
+ "text": "propose a change",
19163
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
19164
+ "line": 127,
19165
+ "origin": "js-markup",
19166
+ "confidence": "certain"
19167
+ },
18966
19168
  {
18967
19169
  "id": "3b22c5af029b",
18968
19170
  "surface": "builders-hall",
@@ -19116,6 +19318,15 @@
19116
19318
  "origin": "js-markup",
19117
19319
  "confidence": "certain"
19118
19320
  },
19321
+ {
19322
+ "id": "b8f31a766aa8",
19323
+ "surface": "builders-hall",
19324
+ "text": "rules version",
19325
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
19326
+ "line": 49,
19327
+ "origin": "js-markup",
19328
+ "confidence": "certain"
19329
+ },
19119
19330
  {
19120
19331
  "id": "2a42549b34ae",
19121
19332
  "surface": "builders-hall",
@@ -19152,6 +19363,15 @@
19152
19363
  "origin": "html-text",
19153
19364
  "confidence": "certain"
19154
19365
  },
19366
+ {
19367
+ "id": "fe17d62b8a85",
19368
+ "surface": "builders-hall",
19369
+ "text": "send the proposal",
19370
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
19371
+ "line": 160,
19372
+ "origin": "js-markup",
19373
+ "confidence": "certain"
19374
+ },
19155
19375
  {
19156
19376
  "id": "276f0b25e030",
19157
19377
  "surface": "builders-hall",
@@ -19283,7 +19503,7 @@
19283
19503
  "surface": "builders-hall",
19284
19504
  "text": "strong at {…}",
19285
19505
  "file": "modules/hall-ui/public/modules.js",
19286
- "line": 349,
19506
+ "line": 354,
19287
19507
  "origin": "js-markup",
19288
19508
  "confidence": "certain"
19289
19509
  },
@@ -19494,6 +19714,15 @@
19494
19714
  "origin": "js-markup",
19495
19715
  "confidence": "certain"
19496
19716
  },
19717
+ {
19718
+ "id": "66bc844179ba",
19719
+ "surface": "builders-hall",
19720
+ "text": "the brief",
19721
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
19722
+ "line": 157,
19723
+ "origin": "js-markup",
19724
+ "confidence": "certain"
19725
+ },
19497
19726
  {
19498
19727
  "id": "77711fffcb5d",
19499
19728
  "surface": "builders-hall",
@@ -19620,6 +19849,15 @@
19620
19849
  "origin": "js-markup",
19621
19850
  "confidence": "certain"
19622
19851
  },
19852
+ {
19853
+ "id": "7b812acc9c9b",
19854
+ "surface": "builders-hall",
19855
+ "text": "the watch, step by step",
19856
+ "file": "modules/hall-ui/public/market-watch-rules.html",
19857
+ "line": 30,
19858
+ "origin": "html-attr:aria-label",
19859
+ "confidence": "certain"
19860
+ },
19623
19861
  {
19624
19862
  "id": "2e5539862eb0",
19625
19863
  "surface": "builders-hall",
@@ -19904,7 +20142,7 @@
19904
20142
  "surface": "builders-hall",
19905
20143
  "text": "weak at {…}",
19906
20144
  "file": "modules/hall-ui/public/modules.js",
19907
- "line": 351,
20145
+ "line": 356,
19908
20146
  "origin": "js-markup",
19909
20147
  "confidence": "certain"
19910
20148
  },
@@ -20043,6 +20281,15 @@
20043
20281
  "origin": "js-markup",
20044
20282
  "confidence": "certain"
20045
20283
  },
20284
+ {
20285
+ "id": "716be6962142",
20286
+ "surface": "builders-hall",
20287
+ "text": "why watch it",
20288
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
20289
+ "line": 148,
20290
+ "origin": "js-markup",
20291
+ "confidence": "certain"
20292
+ },
20046
20293
  {
20047
20294
  "id": "98297cf0fa4d",
20048
20295
  "surface": "builders-hall",
@@ -20412,6 +20659,15 @@
20412
20659
  "origin": "js-markup",
20413
20660
  "confidence": "certain"
20414
20661
  },
20662
+ {
20663
+ "id": "610fa37e0714",
20664
+ "surface": "builders-hall",
20665
+ "text": "{…} open proposals",
20666
+ "file": "modules/hall-ui/public/market-watch-rules-lib.js",
20667
+ "line": 58,
20668
+ "origin": "js-markup",
20669
+ "confidence": "certain"
20670
+ },
20415
20671
  {
20416
20672
  "id": "60743fe1e40d",
20417
20673
  "surface": "builders-hall",
@@ -20552,7 +20808,7 @@
20552
20808
  "surface": "builders-hall",
20553
20809
  "text": "{…} {…} — how-to",
20554
20810
  "file": "modules/hall-ui/public/modules.js",
20555
- "line": 655,
20811
+ "line": 660,
20556
20812
  "origin": "js-text-assign",
20557
20813
  "confidence": "certain"
20558
20814
  },
@@ -20633,7 +20889,7 @@
20633
20889
  "surface": "builders-hall",
20634
20890
  "text": "{…} — how to use it",
20635
20891
  "file": "modules/hall-ui/public/modules.js",
20636
- "line": 657,
20892
+ "line": 662,
20637
20893
  "origin": "js-text-assign",
20638
20894
  "confidence": "certain"
20639
20895
  },
@@ -20759,7 +21015,7 @@
20759
21015
  "surface": "builders-hall",
20760
21016
  "text": "· version",
20761
21017
  "file": "modules/hall-ui/public/modules.js",
20762
- "line": 660,
21018
+ "line": 665,
20763
21019
  "origin": "js-markup",
20764
21020
  "confidence": "certain"
20765
21021
  },
@@ -3272,5 +3272,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
3272
3272
  landed since 1.24.5 with no explicit bump. run 41008421453. (task 1002620)
3273
3273
  1.24.7 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3274
3274
  landed since 1.24.6 with no explicit bump. run 41030210485. (task 1002620)
3275
+ 1.24.8 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3276
+ landed since 1.24.7 with no explicit bump. run 41031365595. (task 1002620)
3277
+ 1.24.9 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3278
+ landed since 1.24.8 with no explicit bump. run 41035048464. (task 1002620)
3275
3279
  ---------------------------------------------------------------------------
3276
3280
  ```
@@ -176,7 +176,7 @@ closed on every unknown, including a ledger read it cannot complete.
176
176
 
177
177
  **Attribution (`author`/`origin`/`license`/`maintainer`) is portable metadata, not a cross-Bongos link** — each repo runs its own Bongos with its own builder identities ([ADR 0100](adr/0100-two-repo-instance-model.md) §3), so credit travels *with the module* rather than through a foreign key ([ADR 0107](adr/0107-module-upstreaming-contribution-to-core-catalog.md) §2). `bongos module new` stamps all four as TODO placeholders (license defaults to `AGPL-3.0`) so a module carries its authorship from the day it's scaffolded, not bolted on later at upstream-submit time.
178
178
 
179
- **`bongos module store [--sort <part>] [--max-cents N] [--max-credits N] [--json]`** (task 1003811) is the **store** from the terminal: what the catalog lists, in its order — listed modules ranked, then New ones, unranked — with each module's score, price and place (parent, and sub-category once approved). It asks `GET /store/modules`, the same read the hall's "In the store" group makes, and filters, ranks and caps nothing itself: the quality floor, the ranking and the cap of ten per sub-category live only in `src/bongos/module-listing.js`, so the hall and the terminal cannot disagree about which modules are the best. `tests/module_store_cli.mjs` sends the same queries through the API and the CLI and requires the same modules in the same order.
179
+ **`bongos module store [--sort <part>] [--max-cents N] [--json]`** (task 1003811) is the **store** from the terminal: what the catalog lists, in its order — listed modules ranked, then New ones, unranked — with each module's score, price and place (parent, and sub-category once approved). It asks `GET /store/modules`, the same read the hall's "In the store" group makes, and filters, ranks and caps nothing itself: the quality floor, the ranking and the cap of ten per sub-category live only in `src/bongos/module-listing.js`, so the hall and the terminal cannot disagree about which modules are the best. `tests/module_store_cli.mjs` sends the same queries through the API and the CLI and requires the same modules in the same order.
180
180
 
181
181
  **`bongos module list [--catalog] [--search <text>] [--json]`** ([ADR 0107](adr/0107-module-upstreaming-contribution-to-core-catalog.md) §2/§3, [ADR 0167](adr/0167-module-catalog-source-vs-provenance.md)) is the browsable catalog from the terminal: every module on disk with its enabled state, its author + origin credit, and its upkeep posture. `--catalog` narrows to the **core-shipped** modules — the shared catalog an instance opts into (§6, default-off). Two axes travel on each row and they are *not* the same question: **`source`** (which tree ships it — the core package or this instance's own repo, read structurally from the loader's discovery root, [ADR 0108](adr/0108-instance-composition-configurable-root.md) §1) and **`provenance`** (who built it, derived from the declared `origin`). A core module that declares no attribution is credited to the platform and the credit is **marked inferred** (`*`) rather than left blank or silently invented. The hall's Modules tab renders the same model (`src/module-loader/catalog.js`) via `GET /modules`, so the two surfaces cannot drift.
182
182
 
@@ -400,8 +400,8 @@ Run `bongos upgrade` to confirm coreVersion compatibility, then `node scripts/bo
400
400
  - **Tester feedback** (task 1003806, ADR 0344 D5). While a version is on the tester channel, what tester projects report about it becomes its Tester feedback part: the share of testers whose install worked and who hit no runtime errors, blended with ten neutral testers so a small sample cannot score high — `round(100 × (went well + 5) / (testers + 10))`. Reports from after the version left the tester channel, and the author's own, never count; under 3 testers it is not scored yet. The rule is `assessTesterFeedback` in `scripts/bongos/module-assess-installs.js`.
401
401
  - **What a module is strong and weak at** (task 1003799, ADR 0343 D4). Each catalog entry also carries `parts` (the current result of Tests, Clean installs, Reliability, Tester feedback and How-to) and a reading of them: `strengths` (a part scored **80 or more**), `weaknesses` (a part scored **below the floor**) and `unmeasured` (a part with no score yet, which is never counted as weak). Each strength and weakness has a one-sentence `detail` saying what the number rests on. Security is not among them: every listed version has passed it. The reading is `readParts` in `src/bongos/module-listing.js`; the hall's Modules tab shows it in its "In the store" group, so two modules with the same overall score can be told apart.
402
402
  - **Sorting by a part** (task 1003800). `GET /store/modules?sort=<part>` orders the listed modules by one part a buyer cares about: `tests`, `install`, `reliability`, `tester_feedback` or `docs` (the response lists them as `sort_parts`, and says which one it applied as `sort`). Modules with a score for that part come first, highest first; a tie goes to the higher overall score, then the module key. A module with no score for that part goes last, so missing data never wins or loses a place on its own. New modules are not sorted: they are never ranked. Any other `sort` value is refused with a 400. Without `sort`, the listed modules are in the ranking below; New stays in key order. The rule is `sortByPart` in `src/bongos/module-listing.js`.
403
- - **Setting a price** (task 1004894). A module's author sets its price with `bongos module price <key> [--cents N] [--credits N]` (or the same two flags on `bongos module publish`, which sets the price right after the upload), or `POST /store/modules/:key/price { cents?, credits? }` (the `module.submit` permission, the same one that publishes, and only the author passes; a delisted module takes no new price). Each amount is a whole number of 0 or more, or null for "not offered in that currency"; at least one is given, and 0 in either makes the module free. Every change appends a row to the price history (in one transaction, the module row locked) naming who set it and when, so the history is the audit of what each price replaced, and the newest is current: it is what the catalog shows and what acquire charges. A paid price may be set before buying exists (owner, 2026-10-26): the catalog lists the module with its price and `buyable: false`, `bongos module store` prints it as not yet buyable, and acquire keeps refusing it without an entitlement. When buying ships (task 1003788), `BUYING_OPEN` in `src/bongos/module-listing.js` is the one switch to flip. Price is never an input to the score (ADR 0343 D6).
404
- - **The ranking, and a maximum price** (task 1003808, owner decision 2026-10-23). Without `sort`, listed modules are ranked **quality first**: highest overall score first; between equal scores, free modules first, then the lowest cash price, then the lowest credit price, then the module key. Price never buys a better place, it only orders modules the score could not tell apart (and it is never an input to the score, ADR 0343 D6). The response states the rule as `ranking`, and each entry carries its current `price` (`cents`, `credits`, `free`). A buyer may add `?max_cents=` and/or `?max_credits=` (whole numbers, 0 or more): modules that cost more are left out of both lists, free modules always stay, and a priced module stays when it is offered at or under a cap the buyer set. The applied caps come back as `max_price`. The rules are `rankListed` and `withinMaxPrice` in `src/bongos/module-listing.js`.
403
+ - **Setting a price** (task 1004894; cash only since task 1004989). A module's author sets its price with `bongos module price <key> --cents N` (or `--cents N` on `bongos module publish`, which sets the price right after the upload), or `POST /store/modules/:key/price { cents }` (the `module.submit` permission, the same one that publishes, and only the author passes; a delisted module takes no new price). The amount is a whole number of cents, 0 or more; 0 makes the module free. **Credits never price or buy a module** ([ADR 0385](adr/0385-money-lives-with-a-processor-credits-stay-a-project-meter.md) decision 2): the route refuses a `credits` field by name (`credit_price_refused`), the CLI refuses `--credits`, and `migrations/core_287_module_prices_cash_only.sql` refuses `price_credits` on any new row in the database (NOT VALID, so the old rows stay readable). An old row priced only in credits reads as **price coming** (`price.coming: true`): the module stays listed, is never buyable with credits, and its author sees `price_prompt` on `GET /store/modules/:key/listing` asking for a cash price (owner, 2026-10-29). An old row that offered the module at 0 credits stays free, as it was. Every change appends a row to the price history (in one transaction, the module row locked) naming who set it and when, so the history is the audit of what each price replaced, and the newest is current: it is what the catalog shows and what acquire charges. A paid price may be set before buying exists (owner, 2026-10-26): the catalog lists the module with its price and `buyable: false`, `bongos module store` prints it as not yet buyable, and acquire keeps refusing it without an entitlement. When buying ships (task 1003788), `BUYING_OPEN` in `src/bongos/module-listing.js` is the one switch to flip; a price-coming module stays unbuyable even then. Price is never an input to the score (ADR 0343 D6).
404
+ - **The ranking, and a maximum price** (task 1003808, owner decision 2026-10-23). Without `sort`, listed modules are ranked **quality first**: highest overall score first; between equal scores, free modules first, then the lowest cash price, a price still coming last, then the module key. Price never buys a better place, it only orders modules the score could not tell apart (and it is never an input to the score, ADR 0343 D6). The response states the rule as `ranking`, and each entry carries its current `price` (`cents`, `free`, `coming`) — never a credit amount. A buyer may add `?max_cents=` (a whole number, 0 or more): modules that cost more are left out of both lists, free modules always stay, and a module whose price is still coming has no cash price to compare, so a cap leaves it out. There is no credit cap; `?max_credits=` is refused. The applied cap comes back as `max_price`. The rules are `rankListed` and `withinMaxPrice` in `src/bongos/module-listing.js`.
405
405
  - **The cap: at most ten per sub-category** (task 1003809, [ADR 0342](adr/0342-module-categories-are-eight-parents-with-approved-sub-categories.md) D2). Above the floor, at most **ten** modules are listed in each approved sub-category: the first ten in the ranking above, so a buyer's `sort` or maximum price reorders or narrows those ten but never lets the eleventh in. The cap is never applied to a parent. A module whose sub-category is only proposed is listed under its parent and counts toward no cap, and a New module is not ranked, so it neither takes a slot nor is held by one. The catalog returns the cap as `cap`. The rule is `applyCap` in `src/bongos/module-listing.js`.
406
406
  - **Why a module is not listed** (task 1003810). `GET /store/modules/:key/listing` says where one module stands, judging the same newest version the catalog does: `listed` (true or false), a `reason` (`not_assessed`, `security_not_passed`, `no_score`, `below_floor`, `delisted`, `no_version`, `over_cap`, `new` or `at_or_above_floor`), `why` in a sentence and `next_step` saying what would change it. A failed Security gate is told apart from one that has not finished, and names what it found to the module's author only (to anyone else it would point at a weakness not fixed yet); below the floor names the score, the floor and the weakest parts. It carries the same `parts`, `strengths`, `weaknesses` and `unmeasured` as the catalog, plus `security`. Any signed-in builder can read it. Past the cap it is `over_cap`, which names the score, the module's place in its sub-category and the cap, so an author can tell being eleventh apart from being below the floor. Both responses carry the module's `category` (`parent`, `parent_title`, and `sub` and `label` once its sub-category is approved). The rule is `explainPlacement` in `src/bongos/module-listing.js`.
407
407
  - **Sub-categories are approved before they count** (task 1004355, ADR 0342 D3). A module names `category: { parent, sub }` in `module.json`; `GET /store/subcategories` lists the approved ones under each of the eight parents. A `sub` the store has not seen under that parent is **proposed** at publish (labelled from its key) and the publish answer's `category` says so (`status: "proposed"`, `live: false`): until a Metic+ person decides, the module sits under its parent only and counts toward no cap. The review queue (`GET /store/subcategories/queue`, atom `module.subcategory.review`, metic + archon via `government_033`) shows each proposal with the modules that named it and its near-duplicate names; `POST /store/subcategories/:id/approve { label?, sub_key? }` makes it live, renamed first if asked (a rename onto an existing key is refused — merge instead), and `POST /store/subcategories/:id/merge { into }` folds it into an approved one and moves its modules there. A later publish naming a merged key lands on its target. Where a module sits is `store_module_categories` (core_278), apart from the manifest; `readModuleCategories` in `src/bongos/module-subcategories.js` is the read the cap uses.
@@ -10,10 +10,10 @@
10
10
  "An id changes only when the host prefix, the data-page value or the file name changes; that is a rename, and records keyed on the old id move with it."
11
11
  ],
12
12
  "counts": {
13
- "pages": 48,
13
+ "pages": 49,
14
14
  "surfaces": 3,
15
- "with_states": 41,
16
- "states": 364
15
+ "with_states": 42,
16
+ "states": 369
17
17
  },
18
18
  "surfaces": [
19
19
  {
@@ -22,7 +22,7 @@
22
22
  "at": "modules/hall-ui/public",
23
23
  "answers_at": "host prefix builders.",
24
24
  "origin": "https://builders.{apex}",
25
- "pages": 36
25
+ "pages": 37
26
26
  },
27
27
  {
28
28
  "id": "landing",
@@ -747,6 +747,42 @@
747
747
  "develop"
748
748
  ]
749
749
  },
750
+ {
751
+ "id": "builders:market-watch-rules",
752
+ "surface": "builders",
753
+ "module": "hall-ui",
754
+ "page": "market-watch-rules",
755
+ "id_from": "data-page",
756
+ "title": "Market Watch rules",
757
+ "document_title": "Market Watch rules — {{worldName}}",
758
+ "path": "/market-watch-rules",
759
+ "url": "https://builders.{apex}/market-watch-rules",
760
+ "files": [
761
+ "modules/hall-ui/public/market-watch-rules.html",
762
+ "modules/hall-ui/public/style.css",
763
+ "modules/hall-ui/public/hall-ask.css",
764
+ "modules/hall-ui/public/market-watch-rules.css",
765
+ "modules/hall-ui/public/dom-utils.js",
766
+ "modules/hall-ui/public/shell-trail.js",
767
+ "modules/hall-ui/public/craft-mode.js",
768
+ "modules/hall-ui/public/shell.js",
769
+ "modules/hall-ui/public/palette.js",
770
+ "modules/hall-ui/public/hall-kit.js",
771
+ "modules/hall-ui/public/hall-ask.js",
772
+ "modules/hall-ui/public/market-watch-rules-lib.js",
773
+ "modules/hall-ui/public/market-watch-rules.js"
774
+ ],
775
+ "states_files": [
776
+ "modules/hall-ui/public/market-watch-rules.states.json"
777
+ ],
778
+ "states": [
779
+ "in",
780
+ "scoring",
781
+ "names",
782
+ "propose",
783
+ "out"
784
+ ]
785
+ },
750
786
  {
751
787
  "id": "builders:modules",
752
788
  "surface": "builders",