@bongos/core 1.19.503 → 1.19.504
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 +13 -13
- package/docs/copy-inventory.md +9 -9
- package/docs/copy-registry.json +12 -12
- package/docs/module-api-changelog.md +2 -0
- package/modules/hall-ui/public/shell.js +22 -3
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/module-api.js +1 -1
- package/tests/hall_nav.mjs +33 -0
package/.bongos-core.json
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.504",
|
|
6
|
+
"core_contract": "1.19.504",
|
|
7
|
+
"source_commit": "96482f8fb1d0169f219d074f71df3fc67a9cd326",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-09-03T17:
|
|
9
|
+
"built_at": "2026-09-03T17:25:18.511Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 427,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 2394,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "26ec04b40be6bdbd60cbf3e985893d173d7e24138984ffab8e1e13255d298d00",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -1727,12 +1727,12 @@
|
|
|
1727
1727
|
{
|
|
1728
1728
|
"path": "docs/copy-inventory.md",
|
|
1729
1729
|
"mode": "0000644",
|
|
1730
|
-
"sha256": "
|
|
1730
|
+
"sha256": "b88ee6e73282179c6c4234af8361227cbe2c790ca46822d202bc29297a813b9d"
|
|
1731
1731
|
},
|
|
1732
1732
|
{
|
|
1733
1733
|
"path": "docs/copy-registry.json",
|
|
1734
1734
|
"mode": "0000644",
|
|
1735
|
-
"sha256": "
|
|
1735
|
+
"sha256": "e2c273686958a096eb60708dfb2181f61ef120ff150345e614616c48e5367560"
|
|
1736
1736
|
},
|
|
1737
1737
|
{
|
|
1738
1738
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -2577,7 +2577,7 @@
|
|
|
2577
2577
|
{
|
|
2578
2578
|
"path": "docs/module-api-changelog.md",
|
|
2579
2579
|
"mode": "0000644",
|
|
2580
|
-
"sha256": "
|
|
2580
|
+
"sha256": "daf79599dc6cea40dcd488676b8b8673c8d8651bcf46c492ce9d1cff7b110941"
|
|
2581
2581
|
},
|
|
2582
2582
|
{
|
|
2583
2583
|
"path": "docs/modules-contract.md",
|
|
@@ -5037,7 +5037,7 @@
|
|
|
5037
5037
|
{
|
|
5038
5038
|
"path": "modules/hall-ui/public/shell.js",
|
|
5039
5039
|
"mode": "0000644",
|
|
5040
|
-
"sha256": "
|
|
5040
|
+
"sha256": "3dc94ce92e6131a632a9c0749edb86efebe3e35077528668b2340c931f138448"
|
|
5041
5041
|
},
|
|
5042
5042
|
{
|
|
5043
5043
|
"path": "modules/hall-ui/public/ship.wav",
|
|
@@ -7227,12 +7227,12 @@
|
|
|
7227
7227
|
{
|
|
7228
7228
|
"path": "package-lock.json",
|
|
7229
7229
|
"mode": "0000644",
|
|
7230
|
-
"sha256": "
|
|
7230
|
+
"sha256": "1d0767945801b150d2f8d7b3559e15e69c27db9dfd559618b1a2c6eaeb81ecef"
|
|
7231
7231
|
},
|
|
7232
7232
|
{
|
|
7233
7233
|
"path": "package.json",
|
|
7234
7234
|
"mode": "0000644",
|
|
7235
|
-
"sha256": "
|
|
7235
|
+
"sha256": "a3e1829e516c862e34180c932552d5df7912352f685c83d84137022c22ca3e9f"
|
|
7236
7236
|
},
|
|
7237
7237
|
{
|
|
7238
7238
|
"path": "public-docs/index.html",
|
|
@@ -8902,7 +8902,7 @@
|
|
|
8902
8902
|
{
|
|
8903
8903
|
"path": "src/module-api.js",
|
|
8904
8904
|
"mode": "0000644",
|
|
8905
|
-
"sha256": "
|
|
8905
|
+
"sha256": "e34fd7bf26cd87df1b86dd3e28e2b345eecf5c902c64639157fb49b310126b90"
|
|
8906
8906
|
},
|
|
8907
8907
|
{
|
|
8908
8908
|
"path": "src/module-loader/catalog.js",
|
|
@@ -10307,7 +10307,7 @@
|
|
|
10307
10307
|
{
|
|
10308
10308
|
"path": "tests/hall_nav.mjs",
|
|
10309
10309
|
"mode": "0000644",
|
|
10310
|
-
"sha256": "
|
|
10310
|
+
"sha256": "f621410c18a7f4c69108ddad5cd4047e303df4f774503d13cc650a5e255f8d52"
|
|
10311
10311
|
},
|
|
10312
10312
|
{
|
|
10313
10313
|
"path": "tests/hall_oversight_world.mjs",
|
package/docs/copy-inventory.md
CHANGED
|
@@ -498,8 +498,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
498
498
|
| `7ee76a958445` | certain | Join requests | `modules/hall-ui/public/goals-render.js:1113` |
|
|
499
499
|
| `b7ab5922126b` | certain | Join-requests to approve | `modules/hall-ui/public/goal-inbox.js:117` |
|
|
500
500
|
| `d305f0df6f25` | certain | Jump to | `modules/hall-ui/public/palette.js:223` |
|
|
501
|
-
| `2bfc5a50ce88` | certain | Jump to a page or record | `modules/hall-ui/public/shell.js:
|
|
502
|
-
| `eba610d25523` | certain | Jump to… | `modules/hall-ui/public/shell.js:
|
|
501
|
+
| `2bfc5a50ce88` | certain | Jump to a page or record | `modules/hall-ui/public/shell.js:363` |
|
|
502
|
+
| `eba610d25523` | certain | Jump to… | `modules/hall-ui/public/shell.js:365` |
|
|
503
503
|
| `bc779353aa0c` | certain | Karma — peer recognition and approvals, a separate counter from {…}. | `modules/hall-ui/public/profile.js:65` |
|
|
504
504
|
| `de0e1590667f` | certain | Keep all {…} {…} — they are the values the code drops in, and the change cannot land without them. | `modules/hall-ui/public/copy-desk.js:442` |
|
|
505
505
|
| `32d25ef2182d` | certain | Keep box | `modules/hall-ui/public/box-panel.js:164` |
|
|
@@ -633,7 +633,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
633
633
|
| `0c471e06cfc1` | certain | Only you can settle your own request — mark it answered when someone helped, or withdraw it when you no longer | `modules/hall-ui/public/collab.html:51` |
|
|
634
634
|
| `261d123970e8` | certain | Open goal #{…} | `modules/hall-ui/public/roadmap.js:100` |
|
|
635
635
|
| `5f3e0b179839` | certain | Open in Sessions | `modules/hall-ui/public/task.js:443` |
|
|
636
|
-
| `3366b115217b` | certain | Open navigation | `modules/hall-ui/public/shell.js:
|
|
636
|
+
| `3366b115217b` | certain | Open navigation | `modules/hall-ui/public/shell.js:354` |
|
|
637
637
|
| `0f0b1e62148d` | certain | Open online environment | `modules/hall-ui/public/box-panel.js:421` |
|
|
638
638
|
| `855277dff074` | certain | Open task #{…} | `modules/hall-ui/public/goals-render.js:392` |
|
|
639
639
|
| `855277dff074` | certain | Open task #{…} | `modules/hall-ui/public/work.js:1065` |
|
|
@@ -801,12 +801,12 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
801
801
|
| `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/hall-render.js:259` |
|
|
802
802
|
| `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/hall-render.js:330` |
|
|
803
803
|
| `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/hall-render.js:399` |
|
|
804
|
-
| `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/shell.js:
|
|
805
|
-
| `1883ad7f07fc` | certain | Sign out | `modules/hall-ui/public/shell.js:
|
|
806
|
-
| `1883ad7f07fc` | certain | Sign out | `modules/hall-ui/public/shell.js:
|
|
804
|
+
| `e57ec24e13ef` | certain | Sign in with GitHub | `modules/hall-ui/public/shell.js:324` |
|
|
805
|
+
| `1883ad7f07fc` | certain | Sign out | `modules/hall-ui/public/shell.js:342` |
|
|
806
|
+
| `1883ad7f07fc` | certain | Sign out | `modules/hall-ui/public/shell.js:499` |
|
|
807
807
|
| `8ad669ab2565` | certain | Sign out everywhere | `modules/hall-ui/public/settings.html:171` |
|
|
808
808
|
| `ecc12c1dd4de` | certain | Skill voices | `modules/hall-ui/public/settings.html:291` |
|
|
809
|
-
| `87cee78ca134` | certain | Skip to content | `modules/hall-ui/public/shell.js:
|
|
809
|
+
| `87cee78ca134` | certain | Skip to content | `modules/hall-ui/public/shell.js:490` |
|
|
810
810
|
| `688ca7b6e30f` | certain | Slop — reads as machine-written | `modules/hall-ui/public/copy-desk.html:90` |
|
|
811
811
|
| `82df09a08476` | certain | So the Archon knows who you are | `modules/hall-ui/public/hall-render.js:278` |
|
|
812
812
|
| `7da6a848cd26` | certain | Someone helped | `modules/hall-ui/public/collab.js:90` |
|
|
@@ -822,7 +822,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
822
822
|
| `4e09b7f4288b` | certain | Stops and deletes your box. Provision a fresh one anytime. | `modules/hall-ui/public/box-panel.js:150` |
|
|
823
823
|
| `6c6544f5c011` | certain | Stored encrypted; never shown again after saving — only its last four digits. | `modules/hall-ui/public/settings.html:193` |
|
|
824
824
|
| `f79e1fb8ebd4` | certain | Suggested as you type; leave it on "no goal" and it waits for triage. | `modules/hall-ui/public/ideas.html:91` |
|
|
825
|
-
| `1e40f33483eb` | certain | Switch theme | `modules/hall-ui/public/shell.js:
|
|
825
|
+
| `1e40f33483eb` | certain | Switch theme | `modules/hall-ui/public/shell.js:369` |
|
|
826
826
|
| `93fa2e97dd35` | certain | System default for this skill | `modules/hall-ui/public/settings.js:74` |
|
|
827
827
|
| `4894b1d9b0de` | certain | System oversight: people, operations and security. | `modules/hall-ui/public/watch.js:1024` |
|
|
828
828
|
| `dfc967a63d57` | certain | Task lifecycle from backlog to shipped, showing states and transitions and the edge where credits are awarded. | `modules/hall-ui/public/diagrams.html:51` |
|
|
@@ -840,7 +840,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
840
840
|
| `2fc66e722e33` | certain | Tasks open once you have read the builder primer. | `modules/hall-ui/public/work.html:43` |
|
|
841
841
|
| `44579eef0c8d` | certain | Tasks — {{worldName}} | `modules/hall-ui/public/work.html:6` |
|
|
842
842
|
| `44579eef0c8d` | certain | Tasks — {{worldName}} | `modules/hall-ui/public/work.html:6` |
|
|
843
|
-
| `2f4f047dc1b4` | certain | Text size | `modules/hall-ui/public/shell.js:
|
|
843
|
+
| `2f4f047dc1b4` | certain | Text size | `modules/hall-ui/public/shell.js:368` |
|
|
844
844
|
| `545c59c1deb7` | certain | That is the session you are using right now. Ending it signs you out of this page. | `modules/hall-ui/public/settings-sessions.js:74` |
|
|
845
845
|
| `282c3fa2d456` | certain | That is the wording it already has. Change something, or file a flag instead if you only want to mark it. | `modules/hall-ui/public/copy-desk.js:438` |
|
|
846
846
|
| `c0e28f30524d` | certain | That project's own standing, as reported by that project. | `modules/hall-ui/public/profile.js:285` |
|
package/docs/copy-registry.json
CHANGED
|
@@ -226,7 +226,7 @@
|
|
|
226
226
|
"modules/hall-ui/public/hall-render.js:259",
|
|
227
227
|
"modules/hall-ui/public/hall-render.js:330",
|
|
228
228
|
"modules/hall-ui/public/hall-render.js:399",
|
|
229
|
-
"modules/hall-ui/public/shell.js:
|
|
229
|
+
"modules/hall-ui/public/shell.js:324"
|
|
230
230
|
]
|
|
231
231
|
},
|
|
232
232
|
{
|
|
@@ -1214,8 +1214,8 @@
|
|
|
1214
1214
|
"text": "Sign out",
|
|
1215
1215
|
"occurrences": 2,
|
|
1216
1216
|
"at": [
|
|
1217
|
-
"modules/hall-ui/public/shell.js:
|
|
1218
|
-
"modules/hall-ui/public/shell.js:
|
|
1217
|
+
"modules/hall-ui/public/shell.js:342",
|
|
1218
|
+
"modules/hall-ui/public/shell.js:499"
|
|
1219
1219
|
]
|
|
1220
1220
|
},
|
|
1221
1221
|
{
|
|
@@ -5349,7 +5349,7 @@
|
|
|
5349
5349
|
"surface": "builders-hall",
|
|
5350
5350
|
"text": "Jump to a page or record",
|
|
5351
5351
|
"file": "modules/hall-ui/public/shell.js",
|
|
5352
|
-
"line":
|
|
5352
|
+
"line": 363,
|
|
5353
5353
|
"origin": "js-markup",
|
|
5354
5354
|
"confidence": "certain"
|
|
5355
5355
|
},
|
|
@@ -5358,7 +5358,7 @@
|
|
|
5358
5358
|
"surface": "builders-hall",
|
|
5359
5359
|
"text": "Jump to…",
|
|
5360
5360
|
"file": "modules/hall-ui/public/shell.js",
|
|
5361
|
-
"line":
|
|
5361
|
+
"line": 365,
|
|
5362
5362
|
"origin": "js-markup",
|
|
5363
5363
|
"confidence": "certain"
|
|
5364
5364
|
},
|
|
@@ -6564,7 +6564,7 @@
|
|
|
6564
6564
|
"surface": "builders-hall",
|
|
6565
6565
|
"text": "Open navigation",
|
|
6566
6566
|
"file": "modules/hall-ui/public/shell.js",
|
|
6567
|
-
"line":
|
|
6567
|
+
"line": 354,
|
|
6568
6568
|
"origin": "js-markup",
|
|
6569
6569
|
"confidence": "certain"
|
|
6570
6570
|
},
|
|
@@ -8076,7 +8076,7 @@
|
|
|
8076
8076
|
"surface": "builders-hall",
|
|
8077
8077
|
"text": "Sign in with GitHub",
|
|
8078
8078
|
"file": "modules/hall-ui/public/shell.js",
|
|
8079
|
-
"line":
|
|
8079
|
+
"line": 324,
|
|
8080
8080
|
"origin": "js-markup",
|
|
8081
8081
|
"confidence": "certain"
|
|
8082
8082
|
},
|
|
@@ -8085,7 +8085,7 @@
|
|
|
8085
8085
|
"surface": "builders-hall",
|
|
8086
8086
|
"text": "Sign out",
|
|
8087
8087
|
"file": "modules/hall-ui/public/shell.js",
|
|
8088
|
-
"line":
|
|
8088
|
+
"line": 342,
|
|
8089
8089
|
"origin": "js-markup",
|
|
8090
8090
|
"confidence": "certain"
|
|
8091
8091
|
},
|
|
@@ -8094,7 +8094,7 @@
|
|
|
8094
8094
|
"surface": "builders-hall",
|
|
8095
8095
|
"text": "Sign out",
|
|
8096
8096
|
"file": "modules/hall-ui/public/shell.js",
|
|
8097
|
-
"line":
|
|
8097
|
+
"line": 499,
|
|
8098
8098
|
"origin": "js-markup",
|
|
8099
8099
|
"confidence": "certain"
|
|
8100
8100
|
},
|
|
@@ -8121,7 +8121,7 @@
|
|
|
8121
8121
|
"surface": "builders-hall",
|
|
8122
8122
|
"text": "Skip to content",
|
|
8123
8123
|
"file": "modules/hall-ui/public/shell.js",
|
|
8124
|
-
"line":
|
|
8124
|
+
"line": 490,
|
|
8125
8125
|
"origin": "js-text-assign",
|
|
8126
8126
|
"confidence": "certain"
|
|
8127
8127
|
},
|
|
@@ -8265,7 +8265,7 @@
|
|
|
8265
8265
|
"surface": "builders-hall",
|
|
8266
8266
|
"text": "Switch theme",
|
|
8267
8267
|
"file": "modules/hall-ui/public/shell.js",
|
|
8268
|
-
"line":
|
|
8268
|
+
"line": 369,
|
|
8269
8269
|
"origin": "js-markup",
|
|
8270
8270
|
"confidence": "certain"
|
|
8271
8271
|
},
|
|
@@ -8427,7 +8427,7 @@
|
|
|
8427
8427
|
"surface": "builders-hall",
|
|
8428
8428
|
"text": "Text size",
|
|
8429
8429
|
"file": "modules/hall-ui/public/shell.js",
|
|
8430
|
-
"line":
|
|
8430
|
+
"line": 368,
|
|
8431
8431
|
"origin": "js-markup",
|
|
8432
8432
|
"confidence": "certain"
|
|
8433
8433
|
},
|
|
@@ -1443,5 +1443,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
1443
1443
|
landed since 1.19.501 with no explicit bump. run 33777587058. (task 1002620)
|
|
1444
1444
|
1.19.503 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1445
1445
|
landed since 1.19.502 with no explicit bump. run 33783963947. (task 1002620)
|
|
1446
|
+
1.19.504 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1447
|
+
landed since 1.19.503 with no explicit bump. run 33784387586. (task 1002620)
|
|
1446
1448
|
---------------------------------------------------------------------------
|
|
1447
1449
|
```
|
|
@@ -166,16 +166,35 @@
|
|
|
166
166
|
// profile' shortcut once you're signed in".
|
|
167
167
|
{ id: 'profile', label: 'Profile', icon: 'profile', href: '/profile', gate: 'signed' },
|
|
168
168
|
] },
|
|
169
|
-
|
|
169
|
+
// task 1003442 (goal 1000075): Community is Collab + Builders, and NEITHER
|
|
170
|
+
// carries a rank flag any more. Both items and this head read 'member'
|
|
171
|
+
// (authed && rank !== 'xenos') until now, which hid them from the newcomer
|
|
172
|
+
// the pages are most useful to — while the walls themselves were already
|
|
173
|
+
// open: /builders/collab dispatches to requireBuilderPage (any signed-in
|
|
174
|
+
// builder, NO rank floor) and /builders/roster is `null` in the page-gate
|
|
175
|
+
// ORACLE, fronting a deliberately unauthenticated GET /leaderboard. So the
|
|
176
|
+
// rank gate lived only in this list — hiding a link to data anyone can
|
|
177
|
+
// already curl, which tests/hall_page_gate_map.mjs calls "a wall that exists
|
|
178
|
+
// only in the reviewer's head". Removing it is a correction, not a policy
|
|
179
|
+
// change: no page gate, permission or API floor moves with it.
|
|
180
|
+
//
|
|
181
|
+
// 'signed', not 'always', on purpose. The complaint is the RANK flag, and
|
|
182
|
+
// 'signed' carries none. /roster's PAGE stays public — a stranger may still
|
|
183
|
+
// open it by URL, exactly as the ORACLE intends — but the nav entry is a
|
|
184
|
+
// shortcut for someone who is signed in, the same cosmetic call /profile
|
|
185
|
+
// already makes for its own public page. It also keeps the group honest:
|
|
186
|
+
// Collab genuinely needs a session, so an 'always' head would show a
|
|
187
|
+
// Community group that is one item for a stranger and two for everyone else.
|
|
188
|
+
{ group: 'Community', gate: 'signed', items: [
|
|
170
189
|
// task 1003172 (C02, goal 1000075): help requests addressed to you. In
|
|
171
190
|
// Community because the group is picked by WHOSE data it is, and this is
|
|
172
191
|
// other builders reaching you — not your own numbers (that is You).
|
|
173
|
-
{ id: 'collab', label: 'Collab', icon: 'leaderboard', href: '/collab', gate: '
|
|
192
|
+
{ id: 'collab', label: 'Collab', icon: 'leaderboard', href: '/collab', gate: 'signed' },
|
|
174
193
|
// task 1003441: was the #leaderboard hash view on the home page, which is
|
|
175
194
|
// why this group read as one real page plus a link into index.html. Now a
|
|
176
195
|
// page, so no `view` key. Labelled Builders — 'roster' is the word
|
|
177
196
|
// modules/hall-ui/CLAUDE.md uses, but Builders is what a reader scans for.
|
|
178
|
-
{ id: 'roster', label: 'Builders', icon: 'leaderboard', href: '/roster', gate: '
|
|
197
|
+
{ id: 'roster', label: 'Builders', icon: 'leaderboard', href: '/roster', gate: 'signed' },
|
|
179
198
|
// task 1002577: the cross-project builder directory (/scouting graduated
|
|
180
199
|
// into the hall). Gated to MATCH its data — /api/gds/scouting checks
|
|
181
200
|
// `project.curate`, whose catalog floor is METIC. This read 'archon' until
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.504",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.19.
|
|
9
|
+
"version": "1.19.504",
|
|
10
10
|
"license": "AGPL-3.0-or-later",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"express": "^4.21.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.504",
|
|
4
4
|
"description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"main": "src/platform-server.js",
|
package/src/module-api.js
CHANGED
|
@@ -45,7 +45,7 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
45
45
|
// there. scripts/gds/bump-version.js still rewrites the literal below; it appends
|
|
46
46
|
// the entry to that file. Look for a version's history there, not here.
|
|
47
47
|
// ---------------------------------------------------------------------------
|
|
48
|
-
const CORE_VERSION = '1.19.
|
|
48
|
+
const CORE_VERSION = '1.19.504'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
|
|
49
49
|
|
|
50
50
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
51
51
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|
package/tests/hall_nav.mjs
CHANGED
|
@@ -193,6 +193,39 @@ test('href check actually CATCHES a dead link', () => {
|
|
|
193
193
|
assert.equal(hrefResolves({ href: '/drachmae', external: false }), true);
|
|
194
194
|
});
|
|
195
195
|
|
|
196
|
+
// ── Community carries no rank flag (task 1003442, goal 1000075) ─────────────
|
|
197
|
+
|
|
198
|
+
// The nav ladder as shell.js gateAllows() defines it, for ONE viewer: a signed-in
|
|
199
|
+
// xenos. Restated here rather than imported because the point of this file is to
|
|
200
|
+
// check the rendered markup against the rule, not to trust the source twice.
|
|
201
|
+
const XENOS_SEES = { always: true, signed: true, work: false, member: false, government: false, archon: false };
|
|
202
|
+
// The gates that encode a RANK floor. 'signed' is not one of them — it asks
|
|
203
|
+
// whether you are here, not who you are.
|
|
204
|
+
const RANK_GATES = new Set(['member', 'work', 'government', 'archon']);
|
|
205
|
+
|
|
206
|
+
test('THE CORRECTION: Community shows a xenos two items, Collab and Builders', () => {
|
|
207
|
+
// Both items read 'member' until task 1003442, so a newcomer saw an empty
|
|
208
|
+
// Community group — while /builders/collab was already requireBuilderPage (no
|
|
209
|
+
// rank floor) and /builders/roster was already `null` in the page-gate ORACLE.
|
|
210
|
+
// The rank gate existed only in the nav list.
|
|
211
|
+
const community = parseNav(boot().sidebarHtml).find((g) => g.label === 'Community');
|
|
212
|
+
assert.ok(community, 'the Community group renders');
|
|
213
|
+
assert.equal(XENOS_SEES[community.headGate], true, 'the group HEAD is visible to a xenos');
|
|
214
|
+
const visible = community.items.filter((i) => XENOS_SEES[i.gate]);
|
|
215
|
+
assert.deepEqual(visible.map((i) => i.id), ['collab', 'roster'],
|
|
216
|
+
'a xenos sees exactly Collab and Builders');
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
test('neither Community page hides behind a rank the page itself does not enforce', () => {
|
|
220
|
+
// The invariant this task exists to restore: a nav flag may be narrower than
|
|
221
|
+
// the wall for cosmetic reasons (/profile does it), but it must never assert a
|
|
222
|
+
// RANK the page gate does not. /people keeps its rank flag legitimately — it
|
|
223
|
+
// fronts project.curate, which requireProjectCuratePage really does enforce.
|
|
224
|
+
const community = parseNav(boot().sidebarHtml).find((g) => g.label === 'Community');
|
|
225
|
+
const ranked = community.items.filter((i) => RANK_GATES.has(i.gate)).map((i) => i.id);
|
|
226
|
+
assert.deepEqual(ranked, ['people'], 'only /people carries a rank flag, and its API enforces one');
|
|
227
|
+
});
|
|
228
|
+
|
|
196
229
|
test('no group head is gated wider than its own items', () => {
|
|
197
230
|
const bad = parseNav(boot().sidebarHtml).filter(headOutOfRange).map((g) => g.label);
|
|
198
231
|
assert.deepEqual(bad, [], 'a head gated wider than every item would render a label over nothing');
|