@bongos/core 1.24.8 → 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.
- package/.bongos-core.json +36 -31
- package/clients/bongos-client/index.d.ts +1 -1
- package/docs/adr/0385-money-lives-with-a-processor-credits-stay-a-project-meter.md +1 -1
- package/docs/api/openapi.json +7 -4
- package/docs/api-reference.md +1 -1
- package/docs/architecture.md +2 -2
- package/docs/copy-inventory.md +14 -12
- package/docs/copy-registry.json +31 -13
- package/docs/module-api-changelog.md +2 -0
- package/docs/modules-contract.md +3 -3
- package/docs/page-readings.json +3 -3
- package/migrations/core_287_module_prices_cash_only.sql +24 -0
- package/modules/hall-ui/public/modules.js +5 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +6 -0
- package/scripts/bongos/module-store-cli.js +21 -21
- package/scripts/bongos/module.js +8 -8
- package/src/bongos/module-listing.js +47 -20
- package/src/bongos/module-store.js +20 -12
- package/src/bongos/routes/modules.js +31 -21
- package/src/module-api.js +1 -1
- package/tests/module_store_cli.mjs +14 -3
- package/tests/module_store_listing.mjs +65 -14
- package/tests/module_store_price.mjs +97 -26
- package/tests/module_store_registry_migration.mjs +11 -0
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/bongos/package-core.js",
|
|
5
|
-
"core_version": "1.24.
|
|
6
|
-
"core_contract": "1.24.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.24.9",
|
|
6
|
+
"core_contract": "1.24.9",
|
|
7
|
+
"source_commit": "1b5c6e80de03e26ccb4ce09080054aac86172d7e",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-10-30T09:10
|
|
9
|
+
"built_at": "2026-10-30T09:42:10.366Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 628,
|
|
13
13
|
"agent_docs_stubbed": 32,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 3740,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 4401,
|
|
20
|
+
"tree_sha256": "6f0633b8a3983da6d58049a76d4c7523f8ad952b6e0e02365e13ef71d80b9d31",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -347,7 +347,7 @@
|
|
|
347
347
|
{
|
|
348
348
|
"path": "clients/bongos-client/index.d.ts",
|
|
349
349
|
"mode": "0000644",
|
|
350
|
-
"sha256": "
|
|
350
|
+
"sha256": "17c1abcb02f5eee9ad383682cc353258c15b0ef6619617896c2b742cb8fa9b46"
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
"path": "clients/bongos-client/index.mjs",
|
|
@@ -2397,7 +2397,7 @@
|
|
|
2397
2397
|
{
|
|
2398
2398
|
"path": "docs/adr/0385-money-lives-with-a-processor-credits-stay-a-project-meter.md",
|
|
2399
2399
|
"mode": "0000644",
|
|
2400
|
-
"sha256": "
|
|
2400
|
+
"sha256": "64b515ddb44362fe436c38043e63d951a21dcf0795d78990ab3a0940142712dc"
|
|
2401
2401
|
},
|
|
2402
2402
|
{
|
|
2403
2403
|
"path": "docs/adr/0386-the-funding-wall-is-a-per-project-rule-claim-time-hold-by-default.md",
|
|
@@ -2447,17 +2447,17 @@
|
|
|
2447
2447
|
{
|
|
2448
2448
|
"path": "docs/api-reference.md",
|
|
2449
2449
|
"mode": "0000644",
|
|
2450
|
-
"sha256": "
|
|
2450
|
+
"sha256": "48d2e2335df2e5bfa4dfa561988013bf3cf794ad9d6dac541e50677b1f328fb3"
|
|
2451
2451
|
},
|
|
2452
2452
|
{
|
|
2453
2453
|
"path": "docs/api/openapi.json",
|
|
2454
2454
|
"mode": "0000644",
|
|
2455
|
-
"sha256": "
|
|
2455
|
+
"sha256": "05b6f5307ace68399b4d2c91863d31205f428a434053a2eb3f140ecb7285f611"
|
|
2456
2456
|
},
|
|
2457
2457
|
{
|
|
2458
2458
|
"path": "docs/architecture.md",
|
|
2459
2459
|
"mode": "0000644",
|
|
2460
|
-
"sha256": "
|
|
2460
|
+
"sha256": "95f3a2b4c7bbbf3527c59cc176732022dfc98238c191c00dab1e0857461fbc34"
|
|
2461
2461
|
},
|
|
2462
2462
|
{
|
|
2463
2463
|
"path": "docs/branding-contract.md",
|
|
@@ -2477,12 +2477,12 @@
|
|
|
2477
2477
|
{
|
|
2478
2478
|
"path": "docs/copy-inventory.md",
|
|
2479
2479
|
"mode": "0000644",
|
|
2480
|
-
"sha256": "
|
|
2480
|
+
"sha256": "50d530e4016468678f266c6bda1662f5287d099a0f5421a552c09e658fc55295"
|
|
2481
2481
|
},
|
|
2482
2482
|
{
|
|
2483
2483
|
"path": "docs/copy-registry.json",
|
|
2484
2484
|
"mode": "0000644",
|
|
2485
|
-
"sha256": "
|
|
2485
|
+
"sha256": "e888d2e28d7dcf2c6bfde6fc4e7969dce3f768df01c925e6c5668a0dea4583ce"
|
|
2486
2486
|
},
|
|
2487
2487
|
{
|
|
2488
2488
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -2992,12 +2992,12 @@
|
|
|
2992
2992
|
{
|
|
2993
2993
|
"path": "docs/module-api-changelog.md",
|
|
2994
2994
|
"mode": "0000644",
|
|
2995
|
-
"sha256": "
|
|
2995
|
+
"sha256": "a07235622a5b4dfdab6bca44f9dce66031bd1b34f263d701fa6dd6bebb2b5c64"
|
|
2996
2996
|
},
|
|
2997
2997
|
{
|
|
2998
2998
|
"path": "docs/modules-contract.md",
|
|
2999
2999
|
"mode": "0000644",
|
|
3000
|
-
"sha256": "
|
|
3000
|
+
"sha256": "f5d2f87333d7fb5768d19819fb3d4888c4d887b3bbdb3fdac4b4be37d965749a"
|
|
3001
3001
|
},
|
|
3002
3002
|
{
|
|
3003
3003
|
"path": "docs/onboarding/diagrams/01-task-lifecycle.mmd",
|
|
@@ -3082,7 +3082,7 @@
|
|
|
3082
3082
|
{
|
|
3083
3083
|
"path": "docs/page-readings.json",
|
|
3084
3084
|
"mode": "0000644",
|
|
3085
|
-
"sha256": "
|
|
3085
|
+
"sha256": "4fae3561898b1a33d286d04c6055e998398bc381773359ea8e306817aa3f92ce"
|
|
3086
3086
|
},
|
|
3087
3087
|
{
|
|
3088
3088
|
"path": "docs/project-context.template.md",
|
|
@@ -4284,6 +4284,11 @@
|
|
|
4284
4284
|
"mode": "0000644",
|
|
4285
4285
|
"sha256": "5b0f9d39bc66732b3bc2ad53562c8238152904a1d71790bcba9f8fae3386ccb3"
|
|
4286
4286
|
},
|
|
4287
|
+
{
|
|
4288
|
+
"path": "migrations/core_287_module_prices_cash_only.sql",
|
|
4289
|
+
"mode": "0000644",
|
|
4290
|
+
"sha256": "f33f68b1bb9e40102fb605d85c822ac18243a2975fa446d6028f75b36f397372"
|
|
4291
|
+
},
|
|
4287
4292
|
{
|
|
4288
4293
|
"path": "modules/agents/CLAUDE.md",
|
|
4289
4294
|
"mode": "0000644",
|
|
@@ -6562,7 +6567,7 @@
|
|
|
6562
6567
|
{
|
|
6563
6568
|
"path": "modules/hall-ui/public/modules.js",
|
|
6564
6569
|
"mode": "0000644",
|
|
6565
|
-
"sha256": "
|
|
6570
|
+
"sha256": "f4a4f27bd6031760a2e1e5d64199c37f5b148ae5d6bcb50f1fd0b4aa8afdc13e"
|
|
6566
6571
|
},
|
|
6567
6572
|
{
|
|
6568
6573
|
"path": "modules/hall-ui/public/modules.states.json",
|
|
@@ -11487,12 +11492,12 @@
|
|
|
11487
11492
|
{
|
|
11488
11493
|
"path": "package-lock.json",
|
|
11489
11494
|
"mode": "0000644",
|
|
11490
|
-
"sha256": "
|
|
11495
|
+
"sha256": "61dc454826a6c5cee6748531cc76c77a16b52d7d4732a3e4de6ee16f54060874"
|
|
11491
11496
|
},
|
|
11492
11497
|
{
|
|
11493
11498
|
"path": "package.json",
|
|
11494
11499
|
"mode": "0000644",
|
|
11495
|
-
"sha256": "
|
|
11500
|
+
"sha256": "a79803cbff9be4db907e5f3a17493566a6a3dbab2edffb6eca10f1e2e3f18c76"
|
|
11496
11501
|
},
|
|
11497
11502
|
{
|
|
11498
11503
|
"path": "public-docs/index.html",
|
|
@@ -11512,7 +11517,7 @@
|
|
|
11512
11517
|
{
|
|
11513
11518
|
"path": "release-notes.json",
|
|
11514
11519
|
"mode": "0000644",
|
|
11515
|
-
"sha256": "
|
|
11520
|
+
"sha256": "adfa51edc97c79e4db9f89ad2060aaf64fdb41970b2322e9f0f626b3a3d9e85d"
|
|
11516
11521
|
},
|
|
11517
11522
|
{
|
|
11518
11523
|
"path": "scripts/bongos/CLAUDE.md",
|
|
@@ -12367,7 +12372,7 @@
|
|
|
12367
12372
|
{
|
|
12368
12373
|
"path": "scripts/bongos/module-store-cli.js",
|
|
12369
12374
|
"mode": "0000644",
|
|
12370
|
-
"sha256": "
|
|
12375
|
+
"sha256": "d978c68f72bcf812cbe01e463b4c761760a8bc0310963b7429d0d8331ae97067"
|
|
12371
12376
|
},
|
|
12372
12377
|
{
|
|
12373
12378
|
"path": "scripts/bongos/module-test-runner.js",
|
|
@@ -12387,7 +12392,7 @@
|
|
|
12387
12392
|
{
|
|
12388
12393
|
"path": "scripts/bongos/module.js",
|
|
12389
12394
|
"mode": "0000644",
|
|
12390
|
-
"sha256": "
|
|
12395
|
+
"sha256": "49cc1f89c692540ceb04245e681a5e498313ab30e40c95881632c70551a76a19"
|
|
12391
12396
|
},
|
|
12392
12397
|
{
|
|
12393
12398
|
"path": "scripts/bongos/move-escalation.js",
|
|
@@ -15022,7 +15027,7 @@
|
|
|
15022
15027
|
{
|
|
15023
15028
|
"path": "src/bongos/module-listing.js",
|
|
15024
15029
|
"mode": "0000644",
|
|
15025
|
-
"sha256": "
|
|
15030
|
+
"sha256": "1acc85a43757e6c4e084bbd9fee1f144bda81a3c3cde2cdc519876d75db2777f"
|
|
15026
15031
|
},
|
|
15027
15032
|
{
|
|
15028
15033
|
"path": "src/bongos/module-overrides.js",
|
|
@@ -15047,7 +15052,7 @@
|
|
|
15047
15052
|
{
|
|
15048
15053
|
"path": "src/bongos/module-store.js",
|
|
15049
15054
|
"mode": "0000644",
|
|
15050
|
-
"sha256": "
|
|
15055
|
+
"sha256": "b77d2d9dfcc30d5e236cf869c892c4e4a2efe88e7391ca2c168907fc3164fb55"
|
|
15051
15056
|
},
|
|
15052
15057
|
{
|
|
15053
15058
|
"path": "src/bongos/module-subcategories.js",
|
|
@@ -15242,7 +15247,7 @@
|
|
|
15242
15247
|
{
|
|
15243
15248
|
"path": "src/bongos/routes/modules.js",
|
|
15244
15249
|
"mode": "0000644",
|
|
15245
|
-
"sha256": "
|
|
15250
|
+
"sha256": "a43cb435b9dddc3a9d3b0ab60a033b6e1dc5e80c37ff567b808d96ca69f8dd9a"
|
|
15246
15251
|
},
|
|
15247
15252
|
{
|
|
15248
15253
|
"path": "src/bongos/routes/my-passkeys.js",
|
|
@@ -15357,7 +15362,7 @@
|
|
|
15357
15362
|
{
|
|
15358
15363
|
"path": "src/module-api.js",
|
|
15359
15364
|
"mode": "0000644",
|
|
15360
|
-
"sha256": "
|
|
15365
|
+
"sha256": "dc3cc079f64b152bd0ef1728b3cc12e5f6bacfd77f60c63086e019431c828c12"
|
|
15361
15366
|
},
|
|
15362
15367
|
{
|
|
15363
15368
|
"path": "src/module-loader/catalog.js",
|
|
@@ -19382,7 +19387,7 @@
|
|
|
19382
19387
|
{
|
|
19383
19388
|
"path": "tests/module_store_cli.mjs",
|
|
19384
19389
|
"mode": "0000644",
|
|
19385
|
-
"sha256": "
|
|
19390
|
+
"sha256": "2bdf1a496ac6f13c2d3d39ecd999285cc73db22e1da655c420ee2932ad8f3f0a"
|
|
19386
19391
|
},
|
|
19387
19392
|
{
|
|
19388
19393
|
"path": "tests/module_store_delist.mjs",
|
|
@@ -19402,12 +19407,12 @@
|
|
|
19402
19407
|
{
|
|
19403
19408
|
"path": "tests/module_store_listing.mjs",
|
|
19404
19409
|
"mode": "0000644",
|
|
19405
|
-
"sha256": "
|
|
19410
|
+
"sha256": "5ca05585dc9a80774af2dd3680ed4872741ae952a9f186e827b63739edba77c3"
|
|
19406
19411
|
},
|
|
19407
19412
|
{
|
|
19408
19413
|
"path": "tests/module_store_price.mjs",
|
|
19409
19414
|
"mode": "0000644",
|
|
19410
|
-
"sha256": "
|
|
19415
|
+
"sha256": "5293407a7af26d8aa76eccb7641462ffc01010abe68915d4d1f3b56127998b77"
|
|
19411
19416
|
},
|
|
19412
19417
|
{
|
|
19413
19418
|
"path": "tests/module_store_publish.mjs",
|
|
@@ -19427,7 +19432,7 @@
|
|
|
19427
19432
|
{
|
|
19428
19433
|
"path": "tests/module_store_registry_migration.mjs",
|
|
19429
19434
|
"mode": "0000644",
|
|
19430
|
-
"sha256": "
|
|
19435
|
+
"sha256": "21902767d18aac1aa28c15f951668db9ffcc567de6496c179822123903d73dd0"
|
|
19431
19436
|
},
|
|
19432
19437
|
{
|
|
19433
19438
|
"path": "tests/module_store_subcategories.mjs",
|
|
@@ -623,7 +623,7 @@ export interface PostStoreModulesKeyAcquiredRequest { version: string }
|
|
|
623
623
|
export interface PostStoreModulesKeyAcquiredResponse { ok: boolean; entitlement: unknown }
|
|
624
624
|
export interface PostStoreModulesKeyDelistRequest { reason?: string }
|
|
625
625
|
export interface PostStoreModulesKeyDelistResponse { ok: boolean; module_key: unknown; status: unknown; delisted_at: unknown }
|
|
626
|
-
export interface PostStoreModulesKeyPriceRequest { cents?:
|
|
626
|
+
export interface PostStoreModulesKeyPriceRequest { cents?: number }
|
|
627
627
|
export interface PostStoreModulesKeyPriceResponse { ok: boolean; module_key: unknown; previous: unknown; price: unknown }
|
|
628
628
|
export interface PostStoreModulesKeyVersionsResponse { ok: boolean; created_module: unknown; version: unknown; channel: unknown; category: unknown }
|
|
629
629
|
export interface PostStoreModulesKeyVersionsVersionErrorCountRequest { day: string; count: number }
|
|
@@ -69,7 +69,7 @@ The owner answered the questions left open by the payments build plan ([task 100
|
|
|
69
69
|
- **Decision 2, "a project may change or replace it", is narrowed.** For now a project may change and tune the Bongos Standard Credit System's settings. It may not switch credits off, and there is no plug-in formula.
|
|
70
70
|
- **The credit reward stays required by default.** [ADR 0096](0096-require-reward-before-workable.md)'s rule stays on for every new project, not only for projects that pick the standard system.
|
|
71
71
|
- **Decision 3: a project's pay policy lives in the database.** It is changed on the project's settings page, and every change is kept in an audit trail (who, when, what). It does not live in the branding pack. [Task 1004990](https://cloudbongos.com/builders#/task/1004990) builds to this.
|
|
72
|
-
- **Modules already priced in credits are not hidden.** Each author is asked to set a cash price, and the listing stays up meanwhile. [Task 1004989](https://cloudbongos.com/builders#/task/1004989)
|
|
72
|
+
- **Modules already priced in credits are not hidden.** Each author is asked to set a cash price, and the listing stays up meanwhile. The owner answered the follow-up question on 2026-10-29: an interim credit-priced module stays **visible with a "price coming" note, and it can NOT be bought with credits**. Credits are never spent like money. [Task 1004989](https://cloudbongos.com/builders#/task/1004989) built this: new prices are cash only (the database refuses a credit price on a new row), and old credit prices show as "price coming".
|
|
73
73
|
- **"Verro" is Verro Labs**, the planned holding company of Cloud Bongos LLC and related entities, as now named in the EU labour row above.
|
|
74
74
|
- **ADR 0054's "credits are equity" framing is formally superseded**, as recorded in ADR 0054 itself ([task 1004967](https://cloudbongos.com/builders#/task/1004967)).
|
|
75
75
|
|
package/docs/api/openapi.json
CHANGED
|
@@ -26132,7 +26132,7 @@
|
|
|
26132
26132
|
"store"
|
|
26133
26133
|
],
|
|
26134
26134
|
"summary": "GET /store/modules",
|
|
26135
|
-
"description": "The store catalog under the quality floor (task 1003807, ADR 0343 D2/D5): each listed module's newest version, if it passed the Security gate and scores at or above the floor, or under \"new\" if it has no real-world data yet. Below the bar is not listed at all. The floor is fixed in module-listing.js and returned here. `?sort=<part>` orders the listed modules by the part a buyer cares about (task 1003800, sortByPart); the parts it accepts come back as sort_parts. Without it the listed modules are ranked quality first, price breaking ties (task 1003808, rankListed); `?max_cents=`
|
|
26135
|
+
"description": "The store catalog under the quality floor (task 1003807, ADR 0343 D2/D5): each listed module's newest version, if it passed the Security gate and scores at or above the floor, or under \"new\" if it has no real-world data yet. Below the bar is not listed at all. The floor is fixed in module-listing.js and returned here. `?sort=<part>` orders the listed modules by the part a buyer cares about (task 1003800, sortByPart); the parts it accepts come back as sort_parts. Without it the listed modules are ranked quality first, price breaking ties (task 1003808, rankListed); `?max_cents=` leaves out modules that cost more. rank: any-builder — a read of public store metadata, like /store/modules/latest: no entitlement taken, nothing changed.\n\n**Rank:** `any-builder` — Any authenticated builder (row-level ownership enforced in-handler).",
|
|
26136
26136
|
"x-rank": "any-builder",
|
|
26137
26137
|
"x-source": "src/bongos/routes/modules.js",
|
|
26138
26138
|
"responses": {
|
|
@@ -26483,7 +26483,7 @@
|
|
|
26483
26483
|
"store"
|
|
26484
26484
|
],
|
|
26485
26485
|
"summary": "POST /store/modules/:key/price",
|
|
26486
|
-
"description": "POST /api/bongos/store/modules/:key/price — the module's author sets its price (task 1004894, criterion wa5-module-economy). Body: { cents
|
|
26486
|
+
"description": "POST /api/bongos/store/modules/:key/price — the module's author sets its price (task 1004894, criterion wa5-module-economy). Body: { cents }, a whole number of 0 or more; 0 is free. A credit price is refused (task 1004989, ADR 0385 decision 2: credits never price or buy a module). Appends a row to the price history; the newest is what the catalog shows and what acquire charges. A paid price may be set before buying exists (owner, 2026-10-26): the catalog marks it not yet buyable. Price never moves the score (ADR 0343 D6). The audit middleware records who changed it and to what. rank: metic+archon — the same gate as publishing (module.submit), plus the author check inside setPrice: only the person who published the module prices it.\n\n**Rank:** `metic+archon` — Metic or Archon rank (review/triage powers).\n\n**Permissions:** `module.submit` (all required).",
|
|
26487
26487
|
"x-rank": "metic+archon",
|
|
26488
26488
|
"x-source": "src/bongos/routes/modules.js",
|
|
26489
26489
|
"x-permissions": [
|
|
@@ -39520,8 +39520,11 @@
|
|
|
39520
39520
|
"PostStoreModulesKeyPriceRequest": {
|
|
39521
39521
|
"type": "object",
|
|
39522
39522
|
"properties": {
|
|
39523
|
-
"cents": {
|
|
39524
|
-
|
|
39523
|
+
"cents": {
|
|
39524
|
+
"type": "integer",
|
|
39525
|
+
"minimum": 0,
|
|
39526
|
+
"maximum": 100000000
|
|
39527
|
+
}
|
|
39525
39528
|
},
|
|
39526
39529
|
"additionalProperties": false
|
|
39527
39530
|
},
|
package/docs/api-reference.md
CHANGED
|
@@ -953,7 +953,7 @@ Base path: `/api/bongos`. Ranks (enforced server-side, [ADR 0016](adr/0016-trust
|
|
|
953
953
|
| POST | `/api/bongos/store/modules/:key/delist` | `metic+archon` | `reason` | POST /api/bongos/store/modules/:key/delist — a Metic+ person takes a module out of the store (task 1003797, ADR 0338 D2). |
|
|
954
954
|
| GET | `/api/bongos/store/modules/:key/entitlement` | `any-builder` | — | |
|
|
955
955
|
| GET | `/api/bongos/store/modules/:key/listing` | `any-builder` | — | GET /api/bongos/store/modules/:key/listing — whether one module is in the catalog and why (task 1003810): the reason in a sentence, what … |
|
|
956
|
-
| POST | `/api/bongos/store/modules/:key/price` | `metic+archon` | `cents
|
|
956
|
+
| POST | `/api/bongos/store/modules/:key/price` | `metic+archon` | `cents` | POST /api/bongos/store/modules/:key/price — the module's author sets its price (task 1004894, criterion wa5-module-economy). |
|
|
957
957
|
| POST | `/api/bongos/store/modules/:key/versions` | `metic+archon` | _undocumented_ | POST /api/bongos/store/modules/:key/versions — publish one module version to the store (task 1004271, ADR 0338 D1). |
|
|
958
958
|
| GET | `/api/bongos/store/modules/:key/versions/:version/channel` | `any-builder` | — | GET /api/bongos/store/modules/:key/versions/:version/channel — where a version stands on the promotion gate (task 1003804, ADR 0344 D3): … |
|
|
959
959
|
| POST | `/api/bongos/store/modules/:key/versions/:version/error-count` | `any-builder` | `day`, `count` | |
|
package/docs/architecture.md
CHANGED
|
@@ -253,8 +253,8 @@ store_module_versions(id, module_key, version exact X.Y.Z, core_version, manifes
|
|
|
253
253
|
tree_sha256, tarball_sha256, tarball_bytes, artifact_path, published_by,
|
|
254
254
|
published_at, UNIQUE(module_key, version)) -- immutable; a fix is a new version
|
|
255
255
|
store_module_prices(id, module_key, price_cents, price_credits, set_by, set_at)
|
|
256
|
-
-- history; newest row per module is current.
|
|
257
|
-
--
|
|
256
|
+
-- history; newest row per module is current. Cash only since core_287 (task 1004989):
|
|
257
|
+
-- price_credits is historical, a credit-only newest row reads "price coming". 0 cents = free.
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
Passkey foundation (migration `core_277`, task 1004750, [ADR 0382](adr/0382-a-hardware-card-is-a-passkey-step-up-an-archon-switches-on-per-builder.md) D1/D6 — storage only; the ceremonies and routes are their own tasks; code in `src/bongos/passkeys.js`):
|
package/docs/copy-inventory.md
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
> Deterministic on a given tree — regenerate and commit rather than hand-editing.
|
|
5
5
|
> Machine-readable twin: [`copy-registry.json`](copy-registry.json).
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**3145 strings** across 3 surfaces · 2479 distinct pieces of copy · 3145 certain, 0 heuristic · 264 shown in more than one place.
|
|
8
8
|
|
|
9
9
|
## Surfaces
|
|
10
10
|
|
|
11
11
|
| surface | lives at | files | strings |
|
|
12
12
|
|---|---|---|---|
|
|
13
|
-
| `builders-hall` | `modules/hall-ui/public` | 163 |
|
|
13
|
+
| `builders-hall` | `modules/hall-ui/public` | 163 | 2043 |
|
|
14
14
|
| `status-dashboard` | `modules/status-ui/public` | 4 | 91 |
|
|
15
15
|
| `landing` | `modules/public-landing/public` | 10 | 1011 |
|
|
16
16
|
|
|
@@ -78,7 +78,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
78
78
|
| `ed394c66d49c` | 4x | What the choice changes | modules/public-landing/public/projects.html:1342, modules/public-landing/public/projects.html:1430, modules/public-landing/public/projects.html:1442 |
|
|
79
79
|
| … | | _224 more in the JSON registry_ | |
|
|
80
80
|
|
|
81
|
-
## `builders-hall` —
|
|
81
|
+
## `builders-hall` — 2043 strings
|
|
82
82
|
|
|
83
83
|
| id | conf | text | where |
|
|
84
84
|
|---|---|---|---|
|
|
@@ -376,7 +376,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
376
376
|
| `71da00d47492` | certain | Could not invite: {…} | `modules/hall-ui/public/watch.js:344` |
|
|
377
377
|
| `90691bceaf68` | certain | Could not load | `modules/hall-ui/public/task.js:1042` |
|
|
378
378
|
| `589a4cfc5442` | certain | Could not load idea {…}. | `modules/hall-ui/public/ideas.js:1019` |
|
|
379
|
-
| `192c893fc64e` | certain | Could not load modules. | `modules/hall-ui/public/modules.js:
|
|
379
|
+
| `192c893fc64e` | certain | Could not load modules. | `modules/hall-ui/public/modules.js:607` |
|
|
380
380
|
| `9912c3835136` | certain | Could not load requests — reload to try again. | `modules/hall-ui/public/collab.js:845` |
|
|
381
381
|
| `7775fec0fa85` | certain | Could not load sessions. | `modules/hall-ui/public/sessions.js:504` |
|
|
382
382
|
| `7775fec0fa85` | certain | Could not load sessions. | `modules/hall-ui/public/sessions.js:542` |
|
|
@@ -397,7 +397,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
397
397
|
| `64f9d51f0fa2` | certain | Could not load your settings. | `modules/hall-ui/public/settings.js:1208` |
|
|
398
398
|
| `de244c45d916` | certain | Could not load {…} | `modules/hall-ui/public/task.js:1035` |
|
|
399
399
|
| `2366356926b4` | certain | Could not mark the primer just now. Try again. | `modules/hall-ui/public/primer.js:259` |
|
|
400
|
-
| `753987b5da13` | certain | Could not reach the submit endpoint. | `modules/hall-ui/public/modules.js:
|
|
400
|
+
| `753987b5da13` | certain | Could not reach the submit endpoint. | `modules/hall-ui/public/modules.js:584` |
|
|
401
401
|
| `6f500726f0ac` | certain | Could not read the report: {…} | `modules/hall-ui/public/watch.js:768` |
|
|
402
402
|
| `21c2f33168a3` | certain | Could not read this project's deploy state: {…} | `modules/hall-ui/public/deploy.js:636` |
|
|
403
403
|
| `21a782f1af26` | certain | Could not read what this would bring in: {…}. The check below still applies. | `modules/hall-ui/public/deploy.js:542` |
|
|
@@ -685,6 +685,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
685
685
|
| `d751fe51e178` | certain | It shipped and it is live. Your review coaches the grader on how it judged the work, then remakes or tweaks th | `modules/hall-ui/public/studio.js:237` |
|
|
686
686
|
| `a21788f84e29` | certain | Its author gave no scope recommendation. | `modules/hall-ui/public/board-room.js:311` |
|
|
687
687
|
| `a21788f84e29` | certain | Its author gave no scope recommendation. | `modules/hall-ui/public/idea.js:162` |
|
|
688
|
+
| `49dc6885e5ff` | certain | Its author has been asked to set a cash price. Credits cannot buy a module. | `modules/hall-ui/public/modules.js:348` |
|
|
688
689
|
| `b0bcb3f844ec` | certain | Its author marked this as needing development — anyone can turn it into a Full Idea, and they keep the credit | `modules/hall-ui/public/idea.js:473` |
|
|
689
690
|
| `680491549e47` | certain | Its author recommends this becomes | `modules/hall-ui/public/board-room.js:310` |
|
|
690
691
|
| `680491549e47` | certain | Its author recommends this becomes | `modules/hall-ui/public/idea.js:166` |
|
|
@@ -938,7 +939,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
938
939
|
| `43626cff7071` | certain | Nothing of that kind in your sky. | `modules/hall-ui/public/sky-panel.js:123` |
|
|
939
940
|
| `b05a5f8cb074` | certain | Nothing personal is sent. | `modules/hall-ui/public/my-agents.js:452` |
|
|
940
941
|
| `ad9a17a8a5eb` | certain | Nothing shipped yet. | `modules/hall-ui/public/profile.js:292` |
|
|
941
|
-
| `f326632f2013` | certain | Nothing to submit — every module here ships with the core. | `modules/hall-ui/public/modules.js:
|
|
942
|
+
| `f326632f2013` | certain | Nothing to submit — every module here ships with the core. | `modules/hall-ui/public/modules.js:545` |
|
|
942
943
|
| `8d0e0cbaa5ff` | certain | Nothing yet this month. | `modules/hall-ui/public/ai-studio.js:475` |
|
|
943
944
|
| `27c0d872db2d` | certain | Nothing you have typed above is lost by opening this. | `modules/hall-ui/public/ideas.html:155` |
|
|
944
945
|
| `26a07b64f49d` | certain | Now running core {…} | `modules/hall-ui/public/deploy.js:400` |
|
|
@@ -1829,7 +1830,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1829
1830
|
| `7b5ad068dc26` | certain | not graded | `modules/hall-ui/public/hall-render.js:349` |
|
|
1830
1831
|
| `01a3d68d80c1` | certain | not graded (grader outage) | `modules/hall-ui/public/builders.js:544` |
|
|
1831
1832
|
| `d43b9bbb8d4d` | certain | not graded (quality lens unavailable) | `modules/hall-ui/public/builders.js:546` |
|
|
1832
|
-
| `380177c47d89` | certain | not measured yet | `modules/hall-ui/public/modules.js:
|
|
1833
|
+
| `380177c47d89` | certain | not measured yet | `modules/hall-ui/public/modules.js:365` |
|
|
1833
1834
|
| `c04e4491af67` | certain | not now | `modules/hall-ui/public/studio.html:110` |
|
|
1834
1835
|
| `3916a3dc8e98` | certain | not started | `modules/hall-ui/public/roadmap.js:120` |
|
|
1835
1836
|
| `3916a3dc8e98` | certain | not started | `modules/hall-ui/public/roadmap.js:311` |
|
|
@@ -1865,6 +1866,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1865
1866
|
| `2fb1dad96280` | certain | pending, on the People tab | `modules/hall-ui/public/watch.html:47` |
|
|
1866
1867
|
| `b6ceacaad5e5` | certain | pick another | `modules/hall-ui/public/studio.js:740` |
|
|
1867
1868
|
| `b6ceacaad5e5` | certain | pick another | `modules/hall-ui/public/tweak-editor.html:107` |
|
|
1869
|
+
| `67bf0a6043f4` | certain | price coming | `modules/hall-ui/public/modules.js:348` |
|
|
1868
1870
|
| `ddda5cb71c36` | certain | proposal sent | `modules/hall-ui/public/market-watch-rules.js:94` |
|
|
1869
1871
|
| `cc7d093fdd53` | certain | propose a change | `modules/hall-ui/public/market-watch-rules-lib.js:127` |
|
|
1870
1872
|
| `3b22c5af029b` | certain | rank or above, or that it is your own. | `modules/hall-ui/public/copy-desk.html:47` |
|
|
@@ -1904,7 +1906,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1904
1906
|
| `c8c2551006dc` | certain | skip the tour | `modules/hall-ui/public/thinking.html:122` |
|
|
1905
1907
|
| `36c07e16519a` | certain | so far | `modules/hall-ui/public/ai-studio.js:377` |
|
|
1906
1908
|
| `1e737a57eb20` | certain | start governing | `modules/hall-ui/public/city.html:99` |
|
|
1907
|
-
| `e294c3429c2e` | certain | strong at {…} | `modules/hall-ui/public/modules.js:
|
|
1909
|
+
| `e294c3429c2e` | certain | strong at {…} | `modules/hall-ui/public/modules.js:354` |
|
|
1908
1910
|
| `0215b2cdca8c` | certain | submit for review | `modules/hall-ui/public/modules.js:295` |
|
|
1909
1911
|
| `43e6f1592ae3` | certain | submit it in the editor | `modules/hall-ui/public/studio.js:920` |
|
|
1910
1912
|
| `9ec19e32f86f` | certain | submit page | `modules/hall-ui/public/tweak-editor.html:68` |
|
|
@@ -1975,7 +1977,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1975
1977
|
| `18cf722bdd7e` | certain | waiting · | `modules/hall-ui/public/sky-interaction.js:128` |
|
|
1976
1978
|
| `354861d3c2ce` | certain | waits for a restart | `modules/hall-ui/public/modules.js:148` |
|
|
1977
1979
|
| `35be9e0923da` | certain | walks the whole path in plain language. | `modules/hall-ui/public/hall-render.js:841` |
|
|
1978
|
-
| `20318b6da94e` | certain | weak at {…} | `modules/hall-ui/public/modules.js:
|
|
1980
|
+
| `20318b6da94e` | certain | weak at {…} | `modules/hall-ui/public/modules.js:356` |
|
|
1979
1981
|
| `db42054582ed` | certain | wells · | `modules/hall-ui/public/sky-interaction.js:129` |
|
|
1980
1982
|
| `17705daf7b85` | certain | what counts as passing | `modules/hall-ui/public/government.html:53` |
|
|
1981
1983
|
| `96a8971a5c44` | certain | what got un-stuck | `modules/hall-ui/public/blockers.js:131` |
|
|
@@ -2049,7 +2051,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
2049
2051
|
| `1a8a6267e490` | certain | {…} unfinished task{…} — say what happens to each | `modules/hall-ui/public/goals-render.js:1036` |
|
|
2050
2052
|
| `2f75f69cdb2f` | certain | {…} {…} changed | `modules/hall-ui/public/profile-crafts.js:216` |
|
|
2051
2053
|
| `8186b562553a` | certain | {…} {…} waiting | `modules/hall-ui/public/work.js:438` |
|
|
2052
|
-
| `a9216af9b05e` | certain | {…} {…} — how-to | `modules/hall-ui/public/modules.js:
|
|
2054
|
+
| `a9216af9b05e` | certain | {…} {…} — how-to | `modules/hall-ui/public/modules.js:660` |
|
|
2053
2055
|
| `0d4016a5531c` | certain | {…} {…}{…} | `modules/hall-ui/public/watch.js:514` |
|
|
2054
2056
|
| `0d4016a5531c` | certain | {…} {…}{…} | `modules/hall-ui/public/work.js:279` |
|
|
2055
2057
|
| `23872e0af7a4` | certain | {…} · Optional. Without one, generations run on ours and are charged to your balance. | `modules/hall-ui/public/settings-ai-keys.js:45` |
|
|
@@ -2058,7 +2060,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
2058
2060
|
| `d73256fbc395` | certain | {…} · who votes, and how it {…} | `modules/hall-ui/public/board-room.js:480` |
|
|
2059
2061
|
| `1ac723849449` | certain | {…} · {…}{…} | `modules/hall-ui/public/notes-panel.js:39` |
|
|
2060
2062
|
| `1ac723849449` | certain | {…} · {…}{…} | `modules/hall-ui/public/sky-interaction.js:33` |
|
|
2061
|
-
| `ddd2bfc1fb60` | certain | {…} — how to use it | `modules/hall-ui/public/modules.js:
|
|
2063
|
+
| `ddd2bfc1fb60` | certain | {…} — how to use it | `modules/hall-ui/public/modules.js:662` |
|
|
2062
2064
|
| `085f93f3f775` | certain | {…} — see all standings | `modules/hall-ui/public/hall-render.js:80` |
|
|
2063
2065
|
| `7609b97aec22` | certain | {…}% complete | `modules/hall-ui/public/hall-render.js:741` |
|
|
2064
2066
|
| `2a2728a4ec4f` | certain | {…}% of tasks complete | `modules/hall-ui/public/roadmap.js:63` |
|
|
@@ -2072,7 +2074,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
2072
2074
|
| `1e275ee0299c` | certain | {…}s only | `modules/hall-ui/public/government.js:1067` |
|
|
2073
2075
|
| `97e27ab169ae` | certain | {…}{…} session{…} across {…} builder{…}. | `modules/hall-ui/public/sessions.js:443` |
|
|
2074
2076
|
| `3d74668f69e5` | certain | {…}{…} · {…} | `modules/hall-ui/public/task.js:655` |
|
|
2075
|
-
| `1026fd5f68b7` | certain | · version | `modules/hall-ui/public/modules.js:
|
|
2077
|
+
| `1026fd5f68b7` | certain | · version | `modules/hall-ui/public/modules.js:665` |
|
|
2076
2078
|
| `a6ae9cbdee30` | certain | — all builders — | `modules/hall-ui/public/builders.js:698` |
|
|
2077
2079
|
| `729d4ce22b99` | certain | — any — | `modules/hall-ui/public/hall-widgets.js:173` |
|
|
2078
2080
|
| `d2c30a1ee74e` | certain | — decide — | `modules/hall-ui/public/goals-render.js:1000` |
|
package/docs/copy-registry.json
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"generator": "scripts/bongos/copy-inventory.js",
|
|
4
4
|
"goal": 1000074,
|
|
5
5
|
"counts": {
|
|
6
|
-
"strings":
|
|
7
|
-
"unique_ids":
|
|
8
|
-
"certain":
|
|
6
|
+
"strings": 3145,
|
|
7
|
+
"unique_ids": 2479,
|
|
8
|
+
"certain": 3145,
|
|
9
9
|
"heuristic": 0,
|
|
10
10
|
"duplicate_ids": 264
|
|
11
11
|
},
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"builders-hall": {
|
|
14
14
|
"at": "modules/hall-ui/public",
|
|
15
15
|
"files": 163,
|
|
16
|
-
"strings":
|
|
16
|
+
"strings": 2043
|
|
17
17
|
},
|
|
18
18
|
"status-dashboard": {
|
|
19
19
|
"at": "modules/status-ui/public",
|
|
@@ -5733,7 +5733,7 @@
|
|
|
5733
5733
|
"surface": "builders-hall",
|
|
5734
5734
|
"text": "Could not load modules.",
|
|
5735
5735
|
"file": "modules/hall-ui/public/modules.js",
|
|
5736
|
-
"line":
|
|
5736
|
+
"line": 607,
|
|
5737
5737
|
"origin": "js-notice",
|
|
5738
5738
|
"confidence": "certain"
|
|
5739
5739
|
},
|
|
@@ -5922,7 +5922,7 @@
|
|
|
5922
5922
|
"surface": "builders-hall",
|
|
5923
5923
|
"text": "Could not reach the submit endpoint.",
|
|
5924
5924
|
"file": "modules/hall-ui/public/modules.js",
|
|
5925
|
-
"line":
|
|
5925
|
+
"line": 584,
|
|
5926
5926
|
"origin": "js-notice",
|
|
5927
5927
|
"confidence": "certain"
|
|
5928
5928
|
},
|
|
@@ -8509,6 +8509,15 @@
|
|
|
8509
8509
|
"origin": "js-markup",
|
|
8510
8510
|
"confidence": "certain"
|
|
8511
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
|
+
},
|
|
8512
8521
|
{
|
|
8513
8522
|
"id": "b0bcb3f844ec",
|
|
8514
8523
|
"surface": "builders-hall",
|
|
@@ -10791,7 +10800,7 @@
|
|
|
10791
10800
|
"surface": "builders-hall",
|
|
10792
10801
|
"text": "Nothing to submit — every module here ships with the core.",
|
|
10793
10802
|
"file": "modules/hall-ui/public/modules.js",
|
|
10794
|
-
"line":
|
|
10803
|
+
"line": 545,
|
|
10795
10804
|
"origin": "js-text-assign",
|
|
10796
10805
|
"confidence": "certain"
|
|
10797
10806
|
},
|
|
@@ -18810,7 +18819,7 @@
|
|
|
18810
18819
|
"surface": "builders-hall",
|
|
18811
18820
|
"text": "not measured yet",
|
|
18812
18821
|
"file": "modules/hall-ui/public/modules.js",
|
|
18813
|
-
"line":
|
|
18822
|
+
"line": 365,
|
|
18814
18823
|
"origin": "js-markup",
|
|
18815
18824
|
"confidence": "certain"
|
|
18816
18825
|
},
|
|
@@ -19129,6 +19138,15 @@
|
|
|
19129
19138
|
"origin": "html-text",
|
|
19130
19139
|
"confidence": "certain"
|
|
19131
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
|
+
},
|
|
19132
19150
|
{
|
|
19133
19151
|
"id": "ddda5cb71c36",
|
|
19134
19152
|
"surface": "builders-hall",
|
|
@@ -19485,7 +19503,7 @@
|
|
|
19485
19503
|
"surface": "builders-hall",
|
|
19486
19504
|
"text": "strong at {…}",
|
|
19487
19505
|
"file": "modules/hall-ui/public/modules.js",
|
|
19488
|
-
"line":
|
|
19506
|
+
"line": 354,
|
|
19489
19507
|
"origin": "js-markup",
|
|
19490
19508
|
"confidence": "certain"
|
|
19491
19509
|
},
|
|
@@ -20124,7 +20142,7 @@
|
|
|
20124
20142
|
"surface": "builders-hall",
|
|
20125
20143
|
"text": "weak at {…}",
|
|
20126
20144
|
"file": "modules/hall-ui/public/modules.js",
|
|
20127
|
-
"line":
|
|
20145
|
+
"line": 356,
|
|
20128
20146
|
"origin": "js-markup",
|
|
20129
20147
|
"confidence": "certain"
|
|
20130
20148
|
},
|
|
@@ -20790,7 +20808,7 @@
|
|
|
20790
20808
|
"surface": "builders-hall",
|
|
20791
20809
|
"text": "{…} {…} — how-to",
|
|
20792
20810
|
"file": "modules/hall-ui/public/modules.js",
|
|
20793
|
-
"line":
|
|
20811
|
+
"line": 660,
|
|
20794
20812
|
"origin": "js-text-assign",
|
|
20795
20813
|
"confidence": "certain"
|
|
20796
20814
|
},
|
|
@@ -20871,7 +20889,7 @@
|
|
|
20871
20889
|
"surface": "builders-hall",
|
|
20872
20890
|
"text": "{…} — how to use it",
|
|
20873
20891
|
"file": "modules/hall-ui/public/modules.js",
|
|
20874
|
-
"line":
|
|
20892
|
+
"line": 662,
|
|
20875
20893
|
"origin": "js-text-assign",
|
|
20876
20894
|
"confidence": "certain"
|
|
20877
20895
|
},
|
|
@@ -20997,7 +21015,7 @@
|
|
|
20997
21015
|
"surface": "builders-hall",
|
|
20998
21016
|
"text": "· version",
|
|
20999
21017
|
"file": "modules/hall-ui/public/modules.js",
|
|
21000
|
-
"line":
|
|
21018
|
+
"line": 665,
|
|
21001
21019
|
"origin": "js-markup",
|
|
21002
21020
|
"confidence": "certain"
|
|
21003
21021
|
},
|
|
@@ -3274,5 +3274,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
3274
3274
|
landed since 1.24.6 with no explicit bump. run 41030210485. (task 1002620)
|
|
3275
3275
|
1.24.8 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
3276
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)
|
|
3277
3279
|
---------------------------------------------------------------------------
|
|
3278
3280
|
```
|
package/docs/modules-contract.md
CHANGED
|
@@ -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] [--
|
|
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>
|
|
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,
|
|
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.
|