@bongos/core 1.21.143 → 1.21.145

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 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.21.143",
6
- "core_contract": "1.21.143",
7
- "source_commit": "6f6ecd3205194c5e9efbe2c1f855ea3f8b78dc2e",
5
+ "core_version": "1.21.145",
6
+ "core_contract": "1.21.145",
7
+ "source_commit": "44eae6e912c0e44b287fd2a51ef7456dc70e4939",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-10-17T13:58:34.800Z",
9
+ "built_at": "2026-10-17T14:29:42.064Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 608,
@@ -17,7 +17,7 @@
17
17
  "gate": "passed"
18
18
  },
19
19
  "file_count": 3797,
20
- "tree_sha256": "2c0ce4cd59506f363bf63454e889f275c52a5cdc1076ed14a41265acf470413e",
20
+ "tree_sha256": "188d2600e25a1d683b692c20337b21c8aa59472d210db028381877c60a1af43e",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -2412,12 +2412,12 @@
2412
2412
  {
2413
2413
  "path": "docs/copy-inventory.md",
2414
2414
  "mode": "0000644",
2415
- "sha256": "971a3b5fa4d46c76e99a949c42ff493a22ed6c5860c4aeda11729a3b79303103"
2415
+ "sha256": "9c112a1a5bdcc75f6c0ebc06e1790bd8f6dc6653d9eb35924c6a769dae683814"
2416
2416
  },
2417
2417
  {
2418
2418
  "path": "docs/copy-registry.json",
2419
2419
  "mode": "0000644",
2420
- "sha256": "acc0fb93f45d7a6b9c942a1b6716c979487c7befd5e22bef4a2dd83c2da00bd7"
2420
+ "sha256": "5c21a3bdefb31af35288734a0c7d5d598d409dd03f4cf7e8e3d9ba20d485bacd"
2421
2421
  },
2422
2422
  {
2423
2423
  "path": "docs/design/apex-pass-2-direction.md",
@@ -2927,7 +2927,7 @@
2927
2927
  {
2928
2928
  "path": "docs/module-api-changelog.md",
2929
2929
  "mode": "0000644",
2930
- "sha256": "56ab78019c1ff2d301b95d1903b41fe75755398b27db7d46776640c3c5ddb89f"
2930
+ "sha256": "c0b5a5d610b6eae6f61486ebe71b4d0cc634d84e85042bac2376504f3571b9f6"
2931
2931
  },
2932
2932
  {
2933
2933
  "path": "docs/modules-contract.md",
@@ -3017,7 +3017,7 @@
3017
3017
  {
3018
3018
  "path": "docs/page-readings.json",
3019
3019
  "mode": "0000644",
3020
- "sha256": "51bff4779827d4fe8575909446ee5cf76336a190de49e0d6447a6638ae5cb6eb"
3020
+ "sha256": "735c739cee64a83ddb976cdde5803d59ebe54092b5b384d0709ceb05ae0809fa"
3021
3021
  },
3022
3022
  {
3023
3023
  "path": "docs/project-context.template.md",
@@ -5542,7 +5542,7 @@
5542
5542
  {
5543
5543
  "path": "modules/hall-ui/public/atlas.html",
5544
5544
  "mode": "0000644",
5545
- "sha256": "853c1b1b51f5201d5366b5034b8a7c1418fd01ff4b6af6827eec87cdf0043851"
5545
+ "sha256": "44f7b9eaac9f116b46068739ca2c1dd320069e3fef5a538123dc9ace365ed603"
5546
5546
  },
5547
5547
  {
5548
5548
  "path": "modules/hall-ui/public/atlas.js",
@@ -5562,12 +5562,12 @@
5562
5562
  {
5563
5563
  "path": "modules/hall-ui/public/blockers.html",
5564
5564
  "mode": "0000644",
5565
- "sha256": "16f12c38147cfbad194908a28b91c8870ad731e5164fa5d7e004c81a12d20e30"
5565
+ "sha256": "4a568c78a0f7636115b1e7a90c680854dd171afbd6bf96b6d63a1de619585467"
5566
5566
  },
5567
5567
  {
5568
5568
  "path": "modules/hall-ui/public/blockers.js",
5569
5569
  "mode": "0000644",
5570
- "sha256": "ad3e3ea63283c31a6602a06695a9248444bd7306fa3624b53f8687c4534e4171"
5570
+ "sha256": "696e8a81a9a11c685a4c5296932da63fc97d23e1c32faf5c7a278eeb05687f62"
5571
5571
  },
5572
5572
  {
5573
5573
  "path": "modules/hall-ui/public/board-lib.js",
@@ -6237,7 +6237,7 @@
6237
6237
  {
6238
6238
  "path": "modules/hall-ui/public/profile-charts.js",
6239
6239
  "mode": "0000644",
6240
- "sha256": "0150bc46d6a676c1b9eb9475f7193ae90360a1e4580440705c3a03a573def47d"
6240
+ "sha256": "ebd3feac7cd05a0501e06e1d5be24597454303119bd26785d38cbd0ea8ed8653"
6241
6241
  },
6242
6242
  {
6243
6243
  "path": "modules/hall-ui/public/profile-connections.js",
@@ -10542,12 +10542,12 @@
10542
10542
  {
10543
10543
  "path": "package-lock.json",
10544
10544
  "mode": "0000644",
10545
- "sha256": "30eefe857b108628b852f709450524cf825a1f552125cc624c4968d3d1c817c2"
10545
+ "sha256": "e7a4ae9cad1aa10bae0b8c8a38aef40e4d36e674128a1a284ccddb8dc1e62bcd"
10546
10546
  },
10547
10547
  {
10548
10548
  "path": "package.json",
10549
10549
  "mode": "0000644",
10550
- "sha256": "151402b5988baec42988eddd94cf0275651e0bc63e188b7232303ae539ebaef3"
10550
+ "sha256": "29384e0c8ebfef46218dc742ccf81141567627c622441e8e6bb58c60fce5ab69"
10551
10551
  },
10552
10552
  {
10553
10553
  "path": "public-docs/index.html",
@@ -10567,7 +10567,7 @@
10567
10567
  {
10568
10568
  "path": "release-notes.json",
10569
10569
  "mode": "0000644",
10570
- "sha256": "bd327923c262d9e3a483e8acb224fd125d4544348ccbf8febe09526c962a1fc1"
10570
+ "sha256": "63062ac07d9c5ef136e48d1536dc66327048c2b2430de52a003f5ce3a80519f2"
10571
10571
  },
10572
10572
  {
10573
10573
  "path": "scripts/cron/style_guide_audit.sh",
@@ -12932,7 +12932,7 @@
12932
12932
  {
12933
12933
  "path": "src/module-api.js",
12934
12934
  "mode": "0000644",
12935
- "sha256": "cfb868a13b49bf5fd7d0bca1fd4651651a57b312ffdf6d1b8ae5cbc4d5c620e2"
12935
+ "sha256": "cc7b50b913e9f210aff7ecc6806d47e08785ca3c3342f0c50ae70c7f50a1e0aa"
12936
12936
  },
12937
12937
  {
12938
12938
  "path": "src/module-loader/catalog.js",
@@ -13577,7 +13577,7 @@
13577
13577
  {
13578
13578
  "path": "tests/blockers_page_ui.mjs",
13579
13579
  "mode": "0000644",
13580
- "sha256": "83f7c78790430927c2666741036c4311e3efab3b2c28d093555e8a4c0b170a6e"
13580
+ "sha256": "b723faa7dbaa84dac5929f29c05a0f73983f24f4579c0cd91a3303cd1cf35e4e"
13581
13581
  },
13582
13582
  {
13583
13583
  "path": "tests/bongos_cli.mjs",
@@ -15557,7 +15557,7 @@
15557
15557
  {
15558
15558
  "path": "tests/hall_profile_world.mjs",
15559
15559
  "mode": "0000644",
15560
- "sha256": "52df6f29c1eee5eac825b54e9b55021be0832ee702c999fabf3a2b366b22e86b"
15560
+ "sha256": "6b3ee5d985b4fba69c93a986a491f45a1f2d7148127f1989c7c588ba0d6ab6e4"
15561
15561
  },
15562
15562
  {
15563
15563
  "path": "tests/hall_reading_world.mjs",
@@ -94,7 +94,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
94
94
  | `553dbe6ede26` | certain | (version 22 or newer) and | `modules/hall-ui/public/hall-render.js:837` |
95
95
  | `c7aecadc8133` | certain | (with {…}) | `modules/hall-ui/public/goals-render.js:591` |
96
96
  | `c81e3a97b531` | certain | + Add goal | `modules/hall-ui/public/gate.js:375` |
97
- | `650c0b90a095` | certain | + File a blocker | `modules/hall-ui/public/blockers.js:303` |
97
+ | `32e5b4833f55` | certain | + File blocker | `modules/hall-ui/public/blockers.js:303` |
98
98
  | `27d9721f358f` | certain | + Invite | `modules/hall-ui/public/goals-render.js:1209` |
99
99
  | `646fab1157fe` | certain | + {…} more project{…} not publicly listed. | `modules/hall-ui/public/profile.js:399` |
100
100
  | `05da3082c8c5` | certain | +{…} more | `modules/hall-ui/public/gate.js:149` |
@@ -120,6 +120,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
120
120
  | `df943756e13b` | certain | A building | `modules/hall-ui/public/city.html:96` |
121
121
  | `568d58fd26cc` | certain | A configured value could not be used: | `modules/hall-ui/public/project-settings.js:103` |
122
122
  | `568d58fd26cc` | certain | A configured value could not be used: | `modules/hall-ui/public/project-settings.js:131` |
123
+ | `715edae2bf8d` | certain | A credential, a purchase, a product call, etc. gated at the owner level. Any tasks awaiting the same block wil | `modules/hall-ui/public/blockers.html:26` |
124
+ | `e72e53c298b4` | certain | A daily-self-drawing map of the codebase: all the building blocks :) | `modules/hall-ui/public/atlas.html:31` |
123
125
  | `518e5acc9184` | certain | A dependency keeps this task out of the claimable queue until that one ships. Remove one with the × beside it | `modules/hall-ui/public/task.js:592` |
124
126
  | `a22df5ebbd5e` | certain | A flag needs a reason an artist can act on. What is wrong with it, and what would better look like? | `modules/hall-ui/public/copy-desk.js:372` |
125
127
  | `b8f70e36c7f9` | certain | A goal may only be added to a version that is still in planning. These were added after this version started b | `modules/hall-ui/public/roadmap.js:95` |
@@ -133,7 +135,6 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
133
135
  | `23dc5028183a` | certain | A quick report — title, what's going on, and where it belongs. Pick a goal and it lands there as a task the mo | `modules/hall-ui/public/ideas.html:56` |
134
136
  | `08c1f66fd572` | certain | A refactor, a move, or work already superseded | `modules/hall-ui/public/goal-inbox.js:374` |
135
137
  | `244ea2a3564e` | certain | A role says how you work. A speciality says what you work on — and how you, as someone who knows the subject, | `modules/hall-ui/public/settings.html:257` |
136
- | `eff6b977b1d2` | certain | A self-drawing map of the codebase: what each module is, and what depends on it. Redrawn from the code on ever | `modules/hall-ui/public/atlas.html:31` |
137
138
  | `f3d6ed7c0d2c` | certain | A shipped task cannot be retired — it is immutable history now. | `modules/hall-ui/public/task.js:760` |
138
139
  | `6359b5afbc6b` | certain | A short path to finding your feet. Tick the steps you’ve done; the rest are tracked for you. | `modules/hall-ui/public/hall-widgets.js:60` |
139
140
  | `a3185a43c230` | certain | A sound plays at each turn of your work — a gentle chime when Claude finishes, a flourish when a task ships or | `modules/hall-ui/public/settings.html:405` |
@@ -371,7 +372,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
371
372
  | `7775fec0fa85` | certain | Could not load sessions. | `modules/hall-ui/public/sessions.js:504` |
372
373
  | `7775fec0fa85` | certain | Could not load sessions. | `modules/hall-ui/public/sessions.js:542` |
373
374
  | `a2f2e8babef5` | certain | Could not load that page. Try again. | `modules/hall-ui/public/blockers.js:276` |
374
- | `9d8192ac9098` | certain | Could not load the earnings. | `modules/hall-ui/public/profile-charts.js:546` |
375
+ | `9d8192ac9098` | certain | Could not load the earnings. | `modules/hall-ui/public/profile-charts.js:560` |
375
376
  | `b2147cc90e36` | certain | Could not load the idea template. Reload, or file from the terminal with capture.js. | `modules/hall-ui/public/ideas.js:1000` |
376
377
  | `7604af13c40e` | certain | Could not load the profile. | `modules/hall-ui/public/profile.js:1054` |
377
378
  | `8b69e445592a` | certain | Could not load the question labels; showing the answers as stored. | `modules/hall-ui/public/idea.js:458` |
@@ -482,8 +483,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
482
483
  | `0ddc87f11713` | certain | Each rank opens more of the system. You see full details for your current rank and the one directly above it; | `modules/hall-ui/public/ranks.html:56` |
483
484
  | `7f1b1c32d360` | certain | Each slash-command can run on a different model. The system has a default for every skill; choose another to o | `modules/hall-ui/public/settings.html:375` |
484
485
  | `3f7d82a0d9b1` | certain | Each was filed when a ship changed copy or visuals. No new ones arrive; answer these and the door goes. | `modules/hall-ui/public/studio.html:168` |
485
- | `8e04bed00757` | certain | Earnings over time | `modules/hall-ui/public/profile-charts.js:455` |
486
- | `8e04bed00757` | certain | Earnings over time | `modules/hall-ui/public/profile-charts.js:546` |
486
+ | `8e04bed00757` | certain | Earnings over time | `modules/hall-ui/public/profile-charts.js:469` |
487
+ | `8e04bed00757` | certain | Earnings over time | `modules/hall-ui/public/profile-charts.js:560` |
487
488
  | `cedfbbdbfb69` | certain | Edit this page's words where they stand? | `modules/hall-ui/public/paintbrush.js:115` |
488
489
  | `854a21d2eb39` | certain | Eight achievements recognize sustained contribution. Earned ones are highlighted; the rest show what’s left to | `modules/hall-ui/public/hall-widgets.js:228` |
489
490
  | `daed038e1162` | certain | End every session, including this one? You will need to sign in again, and any CLI token will need re-issuing. | `modules/hall-ui/public/settings-sessions.js:94` |
@@ -741,7 +742,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
741
742
  | `7a239a17afc8` | certain | Loading your preferences… | `modules/hall-ui/public/settings.html:35` |
742
743
  | `04df1bd30129` | certain | Loading your rank… | `modules/hall-ui/public/ranks.html:30` |
743
744
  | `c27711f9eb4d` | certain | Locked until you reach the end of the article above. | `modules/hall-ui/public/primer.html:103` |
744
- | `4017ee030bc2` | certain | Lookback window | `modules/hall-ui/public/profile-charts.js:526` |
745
+ | `4017ee030bc2` | certain | Lookback window | `modules/hall-ui/public/profile-charts.js:540` |
745
746
  | `73677b6839d7` | certain | Looks good | `modules/hall-ui/public/studio.js:191` |
746
747
  | `06b4ede3fb58` | certain | Machine principals | `modules/hall-ui/public/government.html:122` |
747
748
  | `b8a2b32fdbb1` | certain | Main role | `modules/hall-ui/public/settings.html:125` |
@@ -844,7 +845,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
844
845
  | `78f78d1d1e1f` | certain | No version is in flight right now. | `modules/hall-ui/public/roadmap.js:463` |
845
846
  | `c9800f8b6bc8` | certain | No versions declared yet. | `modules/hall-ui/public/roadmap.js:481` |
846
847
  | `4654849396a3` | certain | No work reviewed yet. | `modules/hall-ui/public/hall-widgets.js:181` |
847
- | `9cf1c752b65d` | certain | No works shipped yet — the works charts draw once the first one lands. | `modules/hall-ui/public/profile-charts.js:574` |
848
+ | `9cf1c752b65d` | certain | No works shipped yet — the works charts draw once the first one lands. | `modules/hall-ui/public/profile-charts.js:594` |
848
849
  | `9dbe1981055c` | certain | No {…} render is attached to this page. | `modules/hall-ui/public/approval-queue.js:134` |
849
850
  | `086665af6208` | certain | No {…} sessions recorded. Choose another kind to widen the ledger. | `modules/hall-ui/public/sessions.js:148` |
850
851
  | `730a248e7888` | certain | No {…} {…} render; showing {…} {…}. | `modules/hall-ui/public/approval-queue.js:139` |
@@ -1286,7 +1287,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1286
1287
  | `89c7bd971440` | certain | The approved pages could not be read just now. | `modules/hall-ui/public/profile.js:787` |
1287
1288
  | `600b90074021` | certain | The art pipeline draws tiles and sprites with Google AI Studio (Gemini). Needed only if you generate art — you | `modules/hall-ui/public/settings.html:218` |
1288
1289
  | `4462dcaaaa7d` | certain | The artist reads this instead of guessing. A pointer with no judgement costs them a look and tells them nothin | `modules/hall-ui/public/copy-desk.html:103` |
1289
- | `195b295d0bf3` | certain | The atlas regenerates itself on the server every time code ships; it has not been generated on this deploy yet | `modules/hall-ui/public/atlas.html:63` |
1290
+ | `c15368a79eae` | certain | The atlas regenerates itself on the server every time code ships; Check back after the next deploy. | `modules/hall-ui/public/atlas.html:63` |
1290
1291
  | `f38140e472df` | certain | The board ratified a change that is not in force. | `modules/hall-ui/public/government.js:671` |
1291
1292
  | `ecc7215524c0` | certain | The board sent this stage back. Read why in the Board Room, then put it up again. | `modules/hall-ui/public/genesis-home.js:215` |
1292
1293
  | `a335af65398d` | certain | The city | `modules/hall-ui/public/city.html:61` |
@@ -1390,7 +1391,6 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1390
1391
  | `5151cf635644` | certain | They have asked to connect. | `modules/hall-ui/public/profile-connections.js:249` |
1391
1392
  | `10219b02433e` | certain | They join as a member once they accept — you can change that afterwards. Nobody is added until they do. | `modules/hall-ui/public/goals-render.js:1234` |
1392
1393
  | `ccd0ccb80fae` | certain | They joined this goal already. | `modules/hall-ui/public/goals-render.js:1303` |
1393
- | `27f77408aed0` | certain | Things stuck on the owner — a credential, a purchase, a product call only they can make. Resolving one un-stic | `modules/hall-ui/public/blockers.html:26` |
1394
1394
  | `6e46811189db` | certain | This PR is held by the gate-review check. | `modules/hall-ui/public/gate.js:144` |
1395
1395
  | `b7c288328f79` | certain | This builder hides their cross-project record. | `modules/hall-ui/public/watch.js:440` |
1396
1396
  | `ed313d96b419` | certain | This builder keeps their track record private. | `modules/hall-ui/public/profile.js:372` |
@@ -1610,7 +1610,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1610
1610
  | `6202f9953f41` | certain | Your runner settings could not be loaded. Reload the page to try again. | `modules/hall-ui/public/settings-autobongos.js:169` |
1611
1611
  | `f6b37f08ee10` | certain | Your seat | `modules/hall-ui/public/my-agents.js:371` |
1612
1612
  | `8884190a3e6d` | certain | Your seats | `modules/hall-ui/public/my-agents.js:373` |
1613
- | `b410b052f000` | certain | Your shipping year | `modules/hall-ui/public/profile-charts.js:358` |
1613
+ | `b410b052f000` | certain | Your shipping year | `modules/hall-ui/public/profile-charts.js:372` |
1614
1614
  | `e25863ab2311` | certain | Your sky — {{worldName}} | `modules/hall-ui/public/thinking.html:6` |
1615
1615
  | `e25863ab2311` | certain | Your sky — {{worldName}} | `modules/hall-ui/public/thinking.html:6` |
1616
1616
  | `dd419ffd76f0` | certain | Your specialities | `modules/hall-ui/public/settings.html:256` |
@@ -1628,7 +1628,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1628
1628
  | `cc361cc7333a` | certain | \s?/.test(raw)) { const quoteLines = []; while (i | `modules/hall-ui/public/md-reader.js:189` |
1629
1629
  | `e6a53a9bab9e` | certain | a habit can become everyone's | `modules/hall-ui/public/my-agents.js:418` |
1630
1630
  | `8fdcb0439d2f` | certain | a sentence of context | `modules/hall-ui/public/blockers.js:309` |
1631
- | `a02616e47d11` | certain | a year of qualifying ships, in your timezone \u00b7 only you see this one | `modules/hall-ui/public/profile-charts.js:358` |
1631
+ | `a02616e47d11` | certain | a year of qualifying ships, in your timezone \u00b7 only you see this one | `modules/hall-ui/public/profile-charts.js:372` |
1632
1632
  | `5070ebfedc48` | certain | access: the hub keeps a key of its own for this repository, so this change and every later upgrade are saved t | `modules/hall-ui/public/deploy.js:424` |
1633
1633
  | `9612c983451f` | certain | achieved · | `modules/hall-ui/public/roadmap.js:341` |
1634
1634
  | `dbfc9e6e921b` | certain | active builder{…}: {…} | `modules/hall-ui/public/government.js:847` |
@@ -1641,7 +1641,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1641
1641
  | `d86265f99668` | certain | and {…} more waiting{…} | `modules/hall-ui/public/studio.js:311` |
1642
1642
  | `9bf4d3cabf80` | certain | approval queue | `modules/hall-ui/public/approval-queue.js:192` |
1643
1643
  | `ac37199ccdbb` | certain | approve and ship | `modules/hall-ui/public/approval-queue.js:172` |
1644
- | `b4033000c537` | certain | as a table | `modules/hall-ui/public/profile-charts.js:267` |
1644
+ | `b4033000c537` | certain | as a table | `modules/hall-ui/public/profile-charts.js:281` |
1645
1645
  | `72f977e4c47f` | certain | as configuration: membership rank:{…} — the council rank below, once you have added it and assigned its member | `modules/hall-ui/public/government.js:923` |
1646
1646
  | `d7c511423bc0` | certain | as configuration: {…} | `modules/hall-ui/public/government.js:833` |
1647
1647
  | `6d91bea9b24e` | certain | as of {…} | `modules/hall-ui/public/sky-interaction.js:122` |
@@ -1756,7 +1756,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1756
1756
  | `3916a3dc8e98` | certain | not started | `modules/hall-ui/public/roadmap.js:120` |
1757
1757
  | `3916a3dc8e98` | certain | not started | `modules/hall-ui/public/roadmap.js:341` |
1758
1758
  | `b4d87a62ec85` | certain | nothing by that name — or not explored yet | `modules/hall-ui/public/sky-interaction.js:138` |
1759
- | `8ca0a499ec86` | certain | nothing recorded yet · {…} | `modules/hall-ui/public/profile-charts.js:288` |
1759
+ | `8ca0a499ec86` | certain | nothing recorded yet · {…} | `modules/hall-ui/public/profile-charts.js:302` |
1760
1760
  | `6a040d3dbd48` | certain | nothing waits on you. | `modules/hall-ui/public/street.html:105` |
1761
1761
  | `a85339717a72` | certain | nothing was saved | `modules/hall-ui/public/tweak-editor.html:121` |
1762
1762
  | `e2c643fbf4d6` | certain | npm install | `modules/hall-ui/public/hall-render.js:813` |
@@ -1812,7 +1812,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1812
1812
  | `026ba1289d4d` | certain | shipped · | `modules/hall-ui/public/goals-render.js:777` |
1813
1813
  | `8e30267795a7` | certain | show me everything | `modules/hall-ui/public/sky-layout.js:50` |
1814
1814
  | `b250b5c4eb03` | certain | shuttle · {…} | `modules/hall-ui/public/sky-interaction.js:45` |
1815
- | `ec6d8c900bc8` | certain | sign in | `modules/hall-ui/public/profile-charts.js:605` |
1815
+ | `ec6d8c900bc8` | certain | sign in | `modules/hall-ui/public/profile-charts.js:625` |
1816
1816
  | `ec6d8c900bc8` | certain | sign in | `modules/hall-ui/public/profile.js:841` |
1817
1817
  | `ec6d8c900bc8` | certain | sign in | `modules/hall-ui/public/profile.js:977` |
1818
1818
  | `c8c2551006dc` | certain | skip the tour | `modules/hall-ui/public/goal-map.html:121` |
@@ -1899,7 +1899,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
1899
1899
  | `542c3516c904` | certain | what to do | `modules/hall-ui/public/tweak-editor.html:127` |
1900
1900
  | `e72c90163726` | certain | what's blocking | `modules/hall-ui/public/goals-render.js:171` |
1901
1901
  | `81f05d9b2bbf` | certain | what's wrong, or what you'd like to see | `modules/hall-ui/public/ideas.html:65` |
1902
- | `0d4acfac53bc` | certain | where it came from | `modules/hall-ui/public/profile-charts.js:455` |
1902
+ | `0d4acfac53bc` | certain | where it came from | `modules/hall-ui/public/profile-charts.js:469` |
1903
1903
  | `c3959ea9d43b` | certain | where my thoughts are | `modules/hall-ui/public/sky-layout.js:50` |
1904
1904
  | `1651cb1876f5` | certain | who sits on the board | `modules/hall-ui/public/government.html:55` |
1905
1905
  | `143f77e2b782` | certain | why these are the same | `modules/hall-ui/public/task-detail.js:565` |
@@ -721,7 +721,7 @@
721
721
  "text": "sign in",
722
722
  "occurrences": 3,
723
723
  "at": [
724
- "modules/hall-ui/public/profile-charts.js:605",
724
+ "modules/hall-ui/public/profile-charts.js:625",
725
725
  "modules/hall-ui/public/profile.js:841",
726
726
  "modules/hall-ui/public/profile.js:977"
727
727
  ]
@@ -1164,8 +1164,8 @@
1164
1164
  "text": "Earnings over time",
1165
1165
  "occurrences": 2,
1166
1166
  "at": [
1167
- "modules/hall-ui/public/profile-charts.js:455",
1168
- "modules/hall-ui/public/profile-charts.js:546"
1167
+ "modules/hall-ui/public/profile-charts.js:469",
1168
+ "modules/hall-ui/public/profile-charts.js:560"
1169
1169
  ]
1170
1170
  },
1171
1171
  {
@@ -2739,9 +2739,9 @@
2739
2739
  "confidence": "certain"
2740
2740
  },
2741
2741
  {
2742
- "id": "650c0b90a095",
2742
+ "id": "32e5b4833f55",
2743
2743
  "surface": "builders-hall",
2744
- "text": "+ File a blocker",
2744
+ "text": "+ File blocker",
2745
2745
  "file": "modules/hall-ui/public/blockers.js",
2746
2746
  "line": 303,
2747
2747
  "origin": "js-markup",
@@ -2972,6 +2972,24 @@
2972
2972
  "origin": "js-markup",
2973
2973
  "confidence": "certain"
2974
2974
  },
2975
+ {
2976
+ "id": "715edae2bf8d",
2977
+ "surface": "builders-hall",
2978
+ "text": "A credential, a purchase, a product call, etc. gated at the owner level. Any tasks awaiting the same block will unblock automatically on resolution.",
2979
+ "file": "modules/hall-ui/public/blockers.html",
2980
+ "line": 26,
2981
+ "origin": "html-text",
2982
+ "confidence": "certain"
2983
+ },
2984
+ {
2985
+ "id": "e72e53c298b4",
2986
+ "surface": "builders-hall",
2987
+ "text": "A daily-self-drawing map of the codebase: all the building blocks :)",
2988
+ "file": "modules/hall-ui/public/atlas.html",
2989
+ "line": 31,
2990
+ "origin": "html-text",
2991
+ "confidence": "certain"
2992
+ },
2975
2993
  {
2976
2994
  "id": "518e5acc9184",
2977
2995
  "surface": "builders-hall",
@@ -3089,15 +3107,6 @@
3089
3107
  "origin": "html-text",
3090
3108
  "confidence": "certain"
3091
3109
  },
3092
- {
3093
- "id": "eff6b977b1d2",
3094
- "surface": "builders-hall",
3095
- "text": "A self-drawing map of the codebase: what each module is, and what depends on it. Redrawn from the code on every deploy.",
3096
- "file": "modules/hall-ui/public/atlas.html",
3097
- "line": 31,
3098
- "origin": "html-text",
3099
- "confidence": "certain"
3100
- },
3101
3110
  {
3102
3111
  "id": "f3d6ed7c0d2c",
3103
3112
  "surface": "builders-hall",
@@ -5236,7 +5245,7 @@
5236
5245
  "surface": "builders-hall",
5237
5246
  "text": "Could not load the earnings.",
5238
5247
  "file": "modules/hall-ui/public/profile-charts.js",
5239
- "line": 546,
5248
+ "line": 560,
5240
5249
  "origin": "js-markup",
5241
5250
  "confidence": "certain"
5242
5251
  },
@@ -6235,7 +6244,7 @@
6235
6244
  "surface": "builders-hall",
6236
6245
  "text": "Earnings over time",
6237
6246
  "file": "modules/hall-ui/public/profile-charts.js",
6238
- "line": 455,
6247
+ "line": 469,
6239
6248
  "origin": "js-markup",
6240
6249
  "confidence": "certain"
6241
6250
  },
@@ -6244,7 +6253,7 @@
6244
6253
  "surface": "builders-hall",
6245
6254
  "text": "Earnings over time",
6246
6255
  "file": "modules/hall-ui/public/profile-charts.js",
6247
- "line": 546,
6256
+ "line": 560,
6248
6257
  "origin": "js-markup",
6249
6258
  "confidence": "certain"
6250
6259
  },
@@ -8566,7 +8575,7 @@
8566
8575
  "surface": "builders-hall",
8567
8576
  "text": "Lookback window",
8568
8577
  "file": "modules/hall-ui/public/profile-charts.js",
8569
- "line": 526,
8578
+ "line": 540,
8570
8579
  "origin": "js-markup",
8571
8580
  "confidence": "certain"
8572
8581
  },
@@ -9493,7 +9502,7 @@
9493
9502
  "surface": "builders-hall",
9494
9503
  "text": "No works shipped yet — the works charts draw once the first one lands.",
9495
9504
  "file": "modules/hall-ui/public/profile-charts.js",
9496
- "line": 574,
9505
+ "line": 594,
9497
9506
  "origin": "js-markup",
9498
9507
  "confidence": "certain"
9499
9508
  },
@@ -13467,9 +13476,9 @@
13467
13476
  "confidence": "certain"
13468
13477
  },
13469
13478
  {
13470
- "id": "195b295d0bf3",
13479
+ "id": "c15368a79eae",
13471
13480
  "surface": "builders-hall",
13472
- "text": "The atlas regenerates itself on the server every time code ships; it has not been generated on this deploy yet. Check back after the next deploy.",
13481
+ "text": "The atlas regenerates itself on the server every time code ships; Check back after the next deploy.",
13473
13482
  "file": "modules/hall-ui/public/atlas.html",
13474
13483
  "line": 63,
13475
13484
  "origin": "html-text",
@@ -14402,15 +14411,6 @@
14402
14411
  "origin": "js-notice",
14403
14412
  "confidence": "certain"
14404
14413
  },
14405
- {
14406
- "id": "27f77408aed0",
14407
- "surface": "builders-hall",
14408
- "text": "Things stuck on the owner — a credential, a purchase, a product call only they can make. Resolving one un-sticks every task waiting on it automatically.",
14409
- "file": "modules/hall-ui/public/blockers.html",
14410
- "line": 26,
14411
- "origin": "html-text",
14412
- "confidence": "certain"
14413
- },
14414
14414
  {
14415
14415
  "id": "6e46811189db",
14416
14416
  "surface": "builders-hall",
@@ -16387,7 +16387,7 @@
16387
16387
  "surface": "builders-hall",
16388
16388
  "text": "Your shipping year",
16389
16389
  "file": "modules/hall-ui/public/profile-charts.js",
16390
- "line": 358,
16390
+ "line": 372,
16391
16391
  "origin": "js-markup",
16392
16392
  "confidence": "certain"
16393
16393
  },
@@ -16549,7 +16549,7 @@
16549
16549
  "surface": "builders-hall",
16550
16550
  "text": "a year of qualifying ships, in your timezone \\u00b7 only you see this one",
16551
16551
  "file": "modules/hall-ui/public/profile-charts.js",
16552
- "line": 358,
16552
+ "line": 372,
16553
16553
  "origin": "js-markup",
16554
16554
  "confidence": "certain"
16555
16555
  },
@@ -16666,7 +16666,7 @@
16666
16666
  "surface": "builders-hall",
16667
16667
  "text": "as a table",
16668
16668
  "file": "modules/hall-ui/public/profile-charts.js",
16669
- "line": 267,
16669
+ "line": 281,
16670
16670
  "origin": "js-markup",
16671
16671
  "confidence": "certain"
16672
16672
  },
@@ -17701,7 +17701,7 @@
17701
17701
  "surface": "builders-hall",
17702
17702
  "text": "nothing recorded yet · {…}",
17703
17703
  "file": "modules/hall-ui/public/profile-charts.js",
17704
- "line": 288,
17704
+ "line": 302,
17705
17705
  "origin": "js-markup",
17706
17706
  "confidence": "certain"
17707
17707
  },
@@ -18205,7 +18205,7 @@
18205
18205
  "surface": "builders-hall",
18206
18206
  "text": "sign in",
18207
18207
  "file": "modules/hall-ui/public/profile-charts.js",
18208
- "line": 605,
18208
+ "line": 625,
18209
18209
  "origin": "js-markup",
18210
18210
  "confidence": "certain"
18211
18211
  },
@@ -18988,7 +18988,7 @@
18988
18988
  "surface": "builders-hall",
18989
18989
  "text": "where it came from",
18990
18990
  "file": "modules/hall-ui/public/profile-charts.js",
18991
- "line": 455,
18991
+ "line": 469,
18992
18992
  "origin": "js-markup",
18993
18993
  "confidence": "certain"
18994
18994
  },
@@ -3123,5 +3123,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
3123
3123
  landed since 1.21.141 with no explicit bump. run 39006143145. (task 1002620)
3124
3124
  1.21.143 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3125
3125
  landed since 1.21.142 with no explicit bump. run 39038722536. (task 1002620)
3126
+ 1.21.144 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3127
+ landed since 1.21.143 with no explicit bump. run 39039333519. (task 1002620)
3128
+ 1.21.145 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3129
+ landed since 1.21.144 with no explicit bump. run 39040930876. (task 1002620)
3126
3130
  ---------------------------------------------------------------------------
3127
3131
  ```
@@ -5,15 +5,15 @@
5
5
  "adr": "0341 D3",
6
6
  "reread": "node scripts/gds/page-reader.js --stale",
7
7
  "how": ["Generated by node scripts/gds/page-reader.js (BV2.TW04, task 1004315; ADR 0341 D3). Do not hand-edit.","One entry per page of docs/page-inventory.json. Lines are in page order: the default state first, and a line only another state shows sits where that state shows it, with its state named.","placement: placed = a docs/copy-registry.json row renders it (file, line, string_id); shared = shell text every page of the surface carries (top bar, sidebar, footer), with its row when the registry has one; unplaced = the registry cannot place it (a rewrite becomes an engineer task, ADR 0341 D4).","text keeps {…} where the registry row has a hole, or where a value the page read from its API was filled in. A string that is only such data is counted under omitted.data, not listed.","reading_hash is over the non-shared lines (key, section, text); files_hash is over the page's inventory files. --check compares files_hash only and never opens a browser.","Rendered through the hall-preview harness (hall) and the ui-design kit stub (landing, status), at 1280x800 with the clock pinned, so a reading is the fixture world's page."],
8
- "counts": {"pages":46,"lines":5551,"placed":1701,"shared":398,"unplaced":3452,"omitted_data":3575},
8
+ "counts": {"pages":46,"lines":5554,"placed":1701,"shared":398,"unplaced":3455,"omitted_data":3576},
9
9
  "pages": [
10
10
  {
11
11
  "id": "builders:atlas",
12
12
  "surface": "builders",
13
13
  "title": "Repo Atlas",
14
14
  "states_read": ["map","truth","detail","index","out"],
15
- "files_hash": "a90badee2ddf8cea",
16
- "reading_hash": "73b112a773c8ec5f",
15
+ "files_hash": "d3214cbef808c675",
16
+ "reading_hash": "c12fba010607929a",
17
17
  "counts": {"lines":25,"placed":13,"shared":8,"unplaced":4},
18
18
  "omitted": {"data":3},
19
19
  "notes": ["truth: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","detail: an action failed (page.evaluate: Error: dispatchClick: nothing matches #svg .ab-node); read as it stood","index: an action failed (page.evaluate: Error: dispatchClick: nothing matches #ab-index-rows .ab-ix:first-child .ab-ix__t); read as it stood"],
@@ -26,13 +26,13 @@
26
26
  {"key":"L0006","section":"top bar","text":"Artistry","placement":"shared"},
27
27
  {"key":"L0007","section":"top bar","text":"Ideating","placement":"shared"},
28
28
  {"key":"L0008","section":"Repo atlas","text":"Repo atlas","placement":"placed","file":"modules/hall-ui/public/atlas.html","line":30,"string_id":"4d40a68605e1"},
29
- {"key":"L0009","section":"Repo atlas","text":"A self-drawing map of the codebase: what each module is, and what depends on it. Redrawn from the code on every deploy.","placement":"placed","file":"modules/hall-ui/public/atlas.html","line":31,"string_id":"eff6b977b1d2"},
29
+ {"key":"L0009","section":"Repo atlas","text":"A daily-self-drawing map of the codebase: all the building blocks :)","placement":"placed","file":"modules/hall-ui/public/atlas.html","line":31,"string_id":"e72e53c298b4"},
30
30
  {"key":"L0010","section":"The map","text":"The map","placement":"placed","file":"modules/hall-ui/public/atlas.html","line":45,"string_id":"a02d386fbc13"},
31
31
  {"key":"L0011","section":"The map","text":"Context layer","placement":"placed","file":"modules/hall-ui/public/atlas.html","line":47,"string_id":"999e1955bb1c"},
32
32
  {"key":"L0012","section":"The map","text":"Module truth","placement":"placed","file":"modules/hall-ui/public/atlas.html","line":48,"string_id":"9af4b7a3a36f"},
33
33
  {"key":"L0013","section":"The map","text":"The map has not been generated on this deploy yet.","placement":"placed","file":"modules/hall-ui/public/atlas.js","line":416,"string_id":"e1ce3766c6fe"},
34
34
  {"key":"L0014","section":"The map","text":"The map is being drawn.","placement":"placed","file":"modules/hall-ui/public/atlas.html","line":63,"string_id":"689a13ba5bd6"},
35
- {"key":"L0015","section":"The map","text":"The atlas regenerates itself on the server every time code ships; it has not been generated on this deploy yet. Check back after the next deploy.","placement":"placed","file":"modules/hall-ui/public/atlas.html","line":63,"string_id":"195b295d0bf3"},
35
+ {"key":"L0015","section":"The map","text":"The atlas regenerates itself on the server every time code ships; Check back after the next deploy.","placement":"placed","file":"modules/hall-ui/public/atlas.html","line":63,"string_id":"c15368a79eae"},
36
36
  {"key":"L0016","section":"footer","text":"Sign out","placement":"shared","file":"modules/hall-ui/public/shell.js","line":520,"string_id":"1883ad7f07fc"},
37
37
  {"key":"L0017","section":"The map","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":810,"string_id":"fd1903586e8e"},
38
38
  {"key":"L0018","section":"What are you doing now?","text":"What are you doing now?","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":811,"string_id":"60853319f290"},
@@ -50,8 +50,8 @@
50
50
  "surface": "builders",
51
51
  "title": "Blockers",
52
52
  "states_read": ["default"],
53
- "files_hash": "d46ed031e490c2e7",
54
- "reading_hash": "e2887e085d178b7d",
53
+ "files_hash": "da0111b5f0f7acfa",
54
+ "reading_hash": "2b3fd98b7ba1bff6",
55
55
  "counts": {"lines":28,"placed":12,"shared":8,"unplaced":8},
56
56
  "omitted": {"data":9},
57
57
  "notes": [],
@@ -64,9 +64,9 @@
64
64
  {"key":"L0006","section":"top bar","text":"Artistry","placement":"shared"},
65
65
  {"key":"L0007","section":"top bar","text":"Ideating","placement":"shared"},
66
66
  {"key":"L0008","section":"Blockers","text":"Blockers","placement":"unplaced"},
67
- {"key":"L0009","section":"Blockers","text":"Things stuck on the owner — a credential, a purchase, a product call only they can make. Resolving one un-sticks every task waiting on it automatically.","placement":"placed","file":"modules/hall-ui/public/blockers.html","line":26,"string_id":"27f77408aed0"},
67
+ {"key":"L0009","section":"Blockers","text":"A credential, a purchase, a product call, etc. gated at the owner level. Any tasks awaiting the same block will unblock automatically on resolution.","placement":"placed","file":"modules/hall-ui/public/blockers.html","line":26,"string_id":"715edae2bf8d"},
68
68
  {"key":"L0010","section":"Open {…}","text":"Open blockers","placement":"placed","file":"modules/hall-ui/public/blockers.html","line":36,"string_id":"ade0e39c65e9"},
69
- {"key":"L0011","section":"Open {…}","text":"+ File a blocker","placement":"placed","file":"modules/hall-ui/public/blockers.js","line":303,"string_id":"650c0b90a095"},
69
+ {"key":"L0011","section":"Open {…}","text":"+ File blocker","placement":"placed","file":"modules/hall-ui/public/blockers.js","line":303,"string_id":"32e5b4833f55"},
70
70
  {"key":"L0012","section":"Open {…}","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9"},
71
71
  {"key":"L0013","section":"Open {…}","text":"Filed {…} · Blocking nothing yet","placement":"unplaced","occurrences":3},
72
72
  {"key":"L0014","section":"Open {…}","text":"Resolve","placement":"unplaced","occurrences":9},
@@ -2477,10 +2477,10 @@
2477
2477
  "surface": "builders",
2478
2478
  "title": "Profile",
2479
2479
  "states_read": ["own","works","activity","activity-artist","activity-ideator","other","artist","ideator","out"],
2480
- "files_hash": "698fd54b54ed4ec1",
2481
- "reading_hash": "54aa83d57dbcd7df",
2482
- "counts": {"lines":193,"placed":70,"shared":8,"unplaced":115},
2483
- "omitted": {"data":196},
2480
+ "files_hash": "48a4792401e5b0d1",
2481
+ "reading_hash": "a8e50a4c6eee0e67",
2482
+ "counts": {"lines":196,"placed":70,"shared":8,"unplaced":118},
2483
+ "omitted": {"data":197},
2484
2484
  "notes": [],
2485
2485
  "lines": [
2486
2486
  {"key":"L0001","section":"skip link","text":"Skip to content","placement":"shared","file":"modules/hall-ui/public/shell.js","line":860,"string_id":"87cee78ca134"},
@@ -2592,7 +2592,7 @@
2592
2592
  {"key":"L0107","section":"By the numbers","text":"all kinds, see below","placement":"unplaced"},
2593
2593
  {"key":"L0108","section":"By the numbers","text":"karma","placement":"unplaced"},
2594
2594
  {"key":"L0109","section":"By the numbers","text":"achievements","placement":"unplaced"},
2595
- {"key":"L0110","section":"By the numbers","text":"earned","placement":"placed","file":"modules/hall-ui/public/goals-render.js","line":828,"string_id":"cf89ac85440d"},
2595
+ {"key":"L0110","section":"By the numbers","text":"earned","placement":"placed","file":"modules/hall-ui/public/goals-render.js","line":818,"string_id":"cf89ac85440d"},
2596
2596
  {"key":"L0111","section":"By the numbers","text":"pages approved","placement":"unplaced","state":"artist"},
2597
2597
  {"key":"L0112","section":"By the numbers","text":"3 surfaces","placement":"unplaced","state":"artist"},
2598
2598
  {"key":"L0113","section":"By the numbers","text":"{…} from pages","placement":"unplaced","state":"artist"},
@@ -2615,14 +2615,14 @@
2615
2615
  {"key":"L0130","section":"Over time","text":"90 days","placement":"unplaced"},
2616
2616
  {"key":"L0131","section":"Over time","text":"1 year","placement":"unplaced"},
2617
2617
  {"key":"L0132","section":"Over time","text":"All time","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":161,"string_id":"627c683a5e5d"},
2618
- {"key":"L0133","section":"Over time","text":"Earnings over time","placement":"placed","file":"modules/hall-ui/public/profile-charts.js","line":455,"string_id":"8e04bed00757"},
2618
+ {"key":"L0133","section":"Over time","text":"Earnings over time","placement":"placed","file":"modules/hall-ui/public/profile-charts.js","line":469,"string_id":"8e04bed00757"},
2619
2619
  {"key":"L0134","section":"Over time","text":"{…} has never {…} a {…}. Every credit here came from ideas.","placement":"unplaced","state":"ideator"},
2620
2620
  {"key":"L0135","section":"Over time","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"ideator","occurrences":4},
2621
2621
  {"key":"L0136","section":"Over time","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"artist"},
2622
2622
  {"key":"L0137","section":"Over time","text":"today","placement":"unplaced"},
2623
- {"key":"L0138","section":"Over time","text":"as a table","placement":"placed","file":"modules/hall-ui/public/profile-charts.js","line":267,"string_id":"b4033000c537"},
2624
- {"key":"L0139","section":"Over time","text":"{…} earned","placement":"placed","file":"modules/hall-ui/public/goals-render.js","line":828,"string_id":"cf89ac85440d","state":"ideator","occurrences":3},
2625
- {"key":"L0140","section":"where it came from","text":"where it came from","placement":"placed","file":"modules/hall-ui/public/profile-charts.js","line":455,"string_id":"0d4acfac53bc"},
2623
+ {"key":"L0138","section":"Over time","text":"as a table","placement":"placed","file":"modules/hall-ui/public/profile-charts.js","line":281,"string_id":"b4033000c537"},
2624
+ {"key":"L0139","section":"Over time","text":"{…} earned","placement":"placed","file":"modules/hall-ui/public/goals-render.js","line":818,"string_id":"cf89ac85440d","state":"ideator","occurrences":3},
2625
+ {"key":"L0140","section":"where it came from","text":"where it came from","placement":"placed","file":"modules/hall-ui/public/profile-charts.js","line":469,"string_id":"0d4acfac53bc"},
2626
2626
  {"key":"L0141","section":"where it came from","text":"Pages approved","placement":"unplaced","state":"artist"},
2627
2627
  {"key":"L0142","section":"where it came from","text":"Session rewards","placement":"unplaced"},
2628
2628
  {"key":"L0143","section":"where it came from","text":"Tasks {…}","placement":"unplaced"},
@@ -2630,52 +2630,55 @@
2630
2630
  {"key":"L0145","section":"where it came from","text":"{…} split from their ideas","placement":"unplaced","state":"ideator"},
2631
2631
  {"key":"L0146","section":"where it came from","text":"Ratified by the {…}","placement":"unplaced","state":"ideator"},
2632
2632
  {"key":"L0147","section":"where it came from","text":"Full Ideas passed","placement":"unplaced","state":"ideator"},
2633
- {"key":"L0148","section":"where it came from","text":"No works shipped yet — the works charts draw once the first one lands.","placement":"placed","file":"modules/hall-ui/public/profile-charts.js","line":574,"string_id":"9cf1c752b65d","state":"artist"},
2633
+ {"key":"L0148","section":"where it came from","text":"No works shipped yet — the works charts draw once the first one lands.","placement":"placed","file":"modules/hall-ui/public/profile-charts.js","line":594,"string_id":"9cf1c752b65d","state":"artist"},
2634
2634
  {"key":"L0149","section":"where it came from","text":"Other {…}","placement":"unplaced"},
2635
- {"key":"L0150","section":"where it came from","text":"Works {…}","placement":"unplaced"},
2636
- {"key":"L0151","section":"where it came from","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9"},
2637
- {"key":"L0152","section":"where it came from","text":"24 works","placement":"unplaced"},
2638
- {"key":"L0153","section":"where it came from","text":"today","placement":"unplaced"},
2639
- {"key":"L0154","section":"where it came from","text":"as a table","placement":"placed","file":"modules/hall-ui/public/profile-charts.js","line":267,"string_id":"b4033000c537"},
2640
- {"key":"L0155","section":"where it came from","text":"24 total · all time","placement":"unplaced"},
2641
- {"key":"L0156","section":"where it came from","text":"Works by role","placement":"unplaced"},
2642
- {"key":"L0157","section":"where it came from","text":"UI","placement":"unplaced"},
2643
- {"key":"L0158","section":"where it came from","text":"Artist","placement":"unplaced"},
2644
- {"key":"L0159","section":"where it came from","text":"No role yet","placement":"unplaced"},
2645
- {"key":"L0160","section":"where it came from","text":"Ideator","placement":"unplaced"},
2646
- {"key":"L0161","section":"where it came from","text":"24 works · all time","placement":"unplaced"},
2647
- {"key":"L0162","section":"Achievements","text":"Achievements","placement":"unplaced"},
2648
- {"key":"L0163","section":"Achievements","text":"No achievements earned yet.","placement":"placed","file":"modules/hall-ui/public/profile.js","line":199,"string_id":"c255749ec989","state":"ideator"},
2649
- {"key":"L0164","section":"Achievements","text":"Won {…}","placement":"placed","file":"modules/hall-ui/public/profile.js","line":206,"string_id":"c5fd76a9e03d","occurrences":2},
2650
- {"key":"L0165","section":"Cross-project record","text":"Cross-project record","placement":"placed","file":"modules/hall-ui/public/profile.html","line":99,"string_id":"a55e423263f0"},
2651
- {"key":"L0166","section":"Cross-project record","text":"Works {…}","placement":"unplaced"},
2652
- {"key":"L0167","section":"Cross-project record","text":"Credits","placement":"unplaced"},
2653
- {"key":"L0168","section":"Cross-project record","text":"Karma","placement":"unplaced"},
2654
- {"key":"L0169","section":"Cross-project record","text":"Pages approved","placement":"unplaced","state":"artist"},
2655
- {"key":"L0170","section":"Cross-project record","text":"as an {…}","placement":"unplaced","state":"artist","occurrences":2},
2656
- {"key":"L0171","section":"Cross-project record","text":"{…} file{…}","placement":"placed","file":"modules/hall-ui/public/gate.js","line":151,"string_id":"3efa67dc6e07"},
2657
- {"key":"L0172","section":"Cross-project record","text":"Full Ideas","placement":"unplaced"},
2658
- {"key":"L0173","section":"Cross-project record","text":"2 ratified by the {…}","placement":"unplaced","state":"ideator"},
2659
- {"key":"L0174","section":"Cross-project record","text":"Roles: Ideator · Last {…} {…}","placement":"unplaced","state":"ideator"},
2660
- {"key":"L0175","section":"Cross-project record","text":"1 ratified by the {…}","placement":"unplaced"},
2661
- {"key":"L0176","section":"Cross-project record","text":"Roles: Artist, Ideator · Last {…} {…}","placement":"unplaced","state":"artist"},
2662
- {"key":"L0177","section":"Cross-project record","text":"Roles: {…}, Ideator · Last {…} {…}","placement":"unplaced"},
2663
- {"key":"L0178","section":"Cross-project record","text":"Project","placement":"unplaced"},
2664
- {"key":"L0179","section":"Cross-project record","text":"Standing there","placement":"placed","file":"modules/hall-ui/public/profile.js","line":393,"string_id":"ec1c2dae4a90"},
2665
- {"key":"L0180","section":"Cross-project record","text":"Xenos","placement":"unplaced","state":"ideator"},
2666
- {"key":"L0181","section":"Cross-project record","text":"Thetes","placement":"unplaced","state":"artist"},
2667
- {"key":"L0182","section":"Cross-project record","text":"Archon","placement":"unplaced"},
2668
- {"key":"L0183","section":"Cross-project record","text":"Metic","placement":"unplaced"},
2669
- {"key":"L0184","section":"Cross-project record","text":"+ {…} more project{…} not publicly listed.","placement":"placed","file":"modules/hall-ui/public/profile.js","line":399,"string_id":"646fab1157fe"},
2670
- {"key":"L0185","section":"Cross-project record","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":810,"string_id":"fd1903586e8e"},
2671
- {"key":"L0186","section":"What are you doing now?","text":"What are you doing now?","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":811,"string_id":"60853319f290"},
2672
- {"key":"L0187","section":"What are you doing now?","text":"Pick one. You can switch any time from the top bar.","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":812,"string_id":"4f87d5b17b54"},
2673
- {"key":"L0188","section":"What are you doing now?","text":"Building","placement":"unplaced"},
2674
- {"key":"L0189","section":"What are you doing now?","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","occurrences":3},
2675
- {"key":"L0190","section":"What are you doing now?","text":"Artistry","placement":"unplaced"},
2676
- {"key":"L0191","section":"What are you doing now?","text":"Ideating","placement":"unplaced"},
2677
- {"key":"L0192","section":"What are you doing now?","text":"Turn thoughts into ideas.","placement":"unplaced"},
2678
- {"key":"L0193","section":"What are you doing now?","text":"Ask me again next session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":815,"string_id":"fa86bf403775"}
2635
+ {"key":"L0150","section":"where it came from","text":"Works {…}, by week","placement":"unplaced"},
2636
+ {"key":"L0151","section":"where it came from","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","occurrences":2},
2637
+ {"key":"L0152","section":"where it came from","text":"this week","placement":"unplaced"},
2638
+ {"key":"L0153","section":"where it came from","text":"as a table","placement":"placed","file":"modules/hall-ui/public/profile-charts.js","line":281,"string_id":"b4033000c537","occurrences":2},
2639
+ {"key":"L0154","section":"where it came from","text":"24 in the last 15 weeks · each column is one week","placement":"unplaced"},
2640
+ {"key":"L0155","section":"where it came from","text":"Works {…}","placement":"unplaced"},
2641
+ {"key":"L0156","section":"where it came from","text":"24 works","placement":"unplaced"},
2642
+ {"key":"L0157","section":"where it came from","text":"today","placement":"unplaced"},
2643
+ {"key":"L0158","section":"where it came from","text":"24 total · all time","placement":"unplaced"},
2644
+ {"key":"L0159","section":"where it came from","text":"Works by role","placement":"unplaced"},
2645
+ {"key":"L0160","section":"where it came from","text":"UI","placement":"unplaced"},
2646
+ {"key":"L0161","section":"where it came from","text":"Artist","placement":"unplaced"},
2647
+ {"key":"L0162","section":"where it came from","text":"No role yet","placement":"unplaced"},
2648
+ {"key":"L0163","section":"where it came from","text":"Ideator","placement":"unplaced"},
2649
+ {"key":"L0164","section":"where it came from","text":"24 works · all time","placement":"unplaced"},
2650
+ {"key":"L0165","section":"Achievements","text":"Achievements","placement":"unplaced"},
2651
+ {"key":"L0166","section":"Achievements","text":"No achievements earned yet.","placement":"placed","file":"modules/hall-ui/public/profile.js","line":199,"string_id":"c255749ec989","state":"ideator"},
2652
+ {"key":"L0167","section":"Achievements","text":"Won {…}","placement":"placed","file":"modules/hall-ui/public/profile.js","line":206,"string_id":"c5fd76a9e03d","occurrences":2},
2653
+ {"key":"L0168","section":"Cross-project record","text":"Cross-project record","placement":"placed","file":"modules/hall-ui/public/profile.html","line":99,"string_id":"a55e423263f0"},
2654
+ {"key":"L0169","section":"Cross-project record","text":"Works {…}","placement":"unplaced"},
2655
+ {"key":"L0170","section":"Cross-project record","text":"Credits","placement":"unplaced"},
2656
+ {"key":"L0171","section":"Cross-project record","text":"Karma","placement":"unplaced"},
2657
+ {"key":"L0172","section":"Cross-project record","text":"Pages approved","placement":"unplaced","state":"artist"},
2658
+ {"key":"L0173","section":"Cross-project record","text":"as an {…}","placement":"unplaced","state":"artist","occurrences":2},
2659
+ {"key":"L0174","section":"Cross-project record","text":"{…} file{…}","placement":"placed","file":"modules/hall-ui/public/gate.js","line":151,"string_id":"3efa67dc6e07"},
2660
+ {"key":"L0175","section":"Cross-project record","text":"Full Ideas","placement":"unplaced"},
2661
+ {"key":"L0176","section":"Cross-project record","text":"2 ratified by the {…}","placement":"unplaced","state":"ideator"},
2662
+ {"key":"L0177","section":"Cross-project record","text":"Roles: Ideator · Last {…} {…}","placement":"unplaced","state":"ideator"},
2663
+ {"key":"L0178","section":"Cross-project record","text":"1 ratified by the {…}","placement":"unplaced"},
2664
+ {"key":"L0179","section":"Cross-project record","text":"Roles: Artist, Ideator · Last {…} {…}","placement":"unplaced","state":"artist"},
2665
+ {"key":"L0180","section":"Cross-project record","text":"Roles: {…}, Ideator · Last {…} {…}","placement":"unplaced"},
2666
+ {"key":"L0181","section":"Cross-project record","text":"Project","placement":"unplaced"},
2667
+ {"key":"L0182","section":"Cross-project record","text":"Standing there","placement":"placed","file":"modules/hall-ui/public/profile.js","line":393,"string_id":"ec1c2dae4a90"},
2668
+ {"key":"L0183","section":"Cross-project record","text":"Xenos","placement":"unplaced","state":"ideator"},
2669
+ {"key":"L0184","section":"Cross-project record","text":"Thetes","placement":"unplaced","state":"artist"},
2670
+ {"key":"L0185","section":"Cross-project record","text":"Archon","placement":"unplaced"},
2671
+ {"key":"L0186","section":"Cross-project record","text":"Metic","placement":"unplaced"},
2672
+ {"key":"L0187","section":"Cross-project record","text":"+ {…} more project{…} not publicly listed.","placement":"placed","file":"modules/hall-ui/public/profile.js","line":399,"string_id":"646fab1157fe"},
2673
+ {"key":"L0188","section":"Cross-project record","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":810,"string_id":"fd1903586e8e"},
2674
+ {"key":"L0189","section":"What are you doing now?","text":"What are you doing now?","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":811,"string_id":"60853319f290"},
2675
+ {"key":"L0190","section":"What are you doing now?","text":"Pick one. You can switch any time from the top bar.","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":812,"string_id":"4f87d5b17b54"},
2676
+ {"key":"L0191","section":"What are you doing now?","text":"Building","placement":"unplaced"},
2677
+ {"key":"L0192","section":"What are you doing now?","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","occurrences":3},
2678
+ {"key":"L0193","section":"What are you doing now?","text":"Artistry","placement":"unplaced"},
2679
+ {"key":"L0194","section":"What are you doing now?","text":"Ideating","placement":"unplaced"},
2680
+ {"key":"L0195","section":"What are you doing now?","text":"Turn thoughts into ideas.","placement":"unplaced"},
2681
+ {"key":"L0196","section":"What are you doing now?","text":"Ask me again next session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":815,"string_id":"fa86bf403775"}
2679
2682
  ]
2680
2683
  },
2681
2684
  {
@@ -28,7 +28,7 @@
28
28
  board's label voice gives it one without competing with the map. -->
29
29
  <div class="page-head page-head--board">
30
30
  <h1 class="page-head__h">Repo atlas</h1>
31
- <p class="page-head__sub">A self-drawing map of the codebase: what each module is, and what depends on it. Redrawn from the code on every deploy.</p>
31
+ <p class="page-head__sub">A daily-self-drawing map of the codebase: all the building blocks :)</p>
32
32
  </div>
33
33
 
34
34
  <main id="hall-main">
@@ -60,7 +60,7 @@
60
60
  </div>
61
61
  <div class="ab-empty" id="empty">
62
62
  <div class="empty-state ab-empty__state">
63
- <p><b>The map is being drawn.</b> The atlas regenerates itself on the server every time code ships; it has not been generated on this deploy yet. Check back after the next deploy.</p>
63
+ <p><b>The map is being drawn.</b> The atlas regenerates itself on the server every time code ships; Check back after the next deploy.</p>
64
64
  </div>
65
65
  </div>
66
66
  </div>
@@ -23,7 +23,7 @@
23
23
  <div class="app-content">
24
24
  <div class="page-head page-head--board">
25
25
  <h1 class="page-head__h">Blockers</h1>
26
- <p class="page-head__sub" id="blockers-sub">Things stuck on the owner — a credential, a purchase, a product call only they can make. Resolving one un-sticks every task waiting on it automatically.</p>
26
+ <p class="page-head__sub" id="blockers-sub">A credential, a purchase, a product call, etc. gated at the owner level. Any tasks awaiting the same block will unblock automatically on resolution.</p>
27
27
  </div>
28
28
 
29
29
  <main id="hall-main">
@@ -300,7 +300,7 @@
300
300
 
301
301
  function fileFormHtml() {
302
302
  return '<div class="td-actions" id="blockers-file-toggle">'
303
- + '<button type="button" class="btn-ghost" id="blockers-file-open">+ File a blocker</button>'
303
+ + '<button type="button" class="btn-ghost" id="blockers-file-open">+ File blocker</button>'
304
304
  + '</div>'
305
305
  + '<form class="td-form" id="blockers-file-form" hidden>'
306
306
  + '<label class="td-field td-field--wide"><span>Title</span>'
@@ -219,6 +219,20 @@
219
219
  return out;
220
220
  }
221
221
 
222
+ // task 1004756: works shipped PER WEEK, from the record already in hand (any
223
+ // viewer). The cumulative lines only climb, so they cannot show whether
224
+ // someone is active now; a week's count can. "All time" spans from the first
225
+ // ship, capped at PACE_MAX_DAYS so it never draws 300 columns.
226
+ function weeklyShipped(rows, rangeDays, now) {
227
+ let days = rangeDays;
228
+ if (days == null) {
229
+ const first = (rows || []).reduce((m, r) => { const t = Date.parse(r && r.shipped_at); return Number.isFinite(t) && t < m ? t : m; }, Infinity);
230
+ days = Number.isFinite(first) ? Math.ceil((midnight(now) + DAY - first) / DAY) : 7;
231
+ }
232
+ days = Math.max(7, Math.min(days, PACE_MAX_DAYS));
233
+ return { days, buckets: weeklyBuckets((rows || []).map((r) => ({ day: r && r.shipped_at, n: 1 })), days, now) };
234
+ }
235
+
222
236
  // ---- the figures --------------------------------------------------------------
223
237
 
224
238
  // A hover/keyboard readout shared by the time charts and the columns: the
@@ -559,7 +573,13 @@
559
573
  }
560
574
  if (rows.length) {
561
575
  const worksFull = cumulativeByDay(rows, () => 1);
576
+ const weekly = weeklyShipped(rows, range.days, now);
577
+ const weeklyTotal = weekly.buckets.reduce((s, b) => s + b.n, 0);
562
578
  figs.push(
579
+ columnChart({
580
+ id: 'chart-weekly', title: 'Works shipped, by week', buckets: weekly.buckets,
581
+ footer: `${fmtNum(weeklyTotal)} in the last ${weekly.buckets.length} weeks · each column is one week`,
582
+ }),
563
583
  timeChart({
564
584
  id: 'chart-works', title: 'Works shipped', points: clipToWindow(worksFull, windowStart), now, windowStart,
565
585
  valueText: (v) => `${fmtNum(v)} work${v === 1 ? '' : 's'}`,
@@ -652,5 +672,5 @@
652
672
  await draw({ api, API, builderId, isOwn, name, rows, earnings, now, rangeId, selfStreak });
653
673
  }
654
674
 
655
- window.OTBProfileCharts = { render, cumulativeByDay, craftMix, weeklyBuckets, clipToWindow, earningsKinds, earningsLede };
675
+ window.OTBProfileCharts = { render, cumulativeByDay, craftMix, weeklyBuckets, weeklyShipped, clipToWindow, earningsKinds, earningsLede };
656
676
  })();
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.21.143",
3
+ "version": "1.21.145",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.21.143",
9
+ "version": "1.21.145",
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.21.143",
3
+ "version": "1.21.145",
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",
@@ -9868,5 +9868,21 @@
9868
9868
  "id": "1004345",
9869
9869
  "text": "Your rewrite of the Contact page is now on the page, word for word: all 11 lines went in and none were refused. It is waiting for you in the Approval queue and goes live only when you approve it. The before and after pictures"
9870
9870
  }
9871
+ ],
9872
+ "1.21.144": [
9873
+ {
9874
+ "id": "1004347",
9875
+ "text": "Your two new lines for the Repo Atlas page are in, word for word, and none were refused. Before and after pictures of the page on a desktop and a phone, light and dark, are attached. It is waiting for you in the Approval queue"
9876
+ }
9877
+ ],
9878
+ "1.21.145": [
9879
+ {
9880
+ "id": "1004756",
9881
+ "text": "Every builder profile now has a chart of how many works were shipped each week, so you can see at a glance whether someone is active lately, not just a line that only ever goes up."
9882
+ },
9883
+ {
9884
+ "id": "1004348",
9885
+ "text": "The Blockers page now uses the owner's own words, written on a Chromebook and brought back from Google Docs. The line under the page title is shorter and plainer, and the button reads \"+ File blocker\". Both rewritten lines wen"
9886
+ }
9871
9887
  ]
9872
9888
  }
package/src/module-api.js CHANGED
@@ -75,7 +75,7 @@ const { responsibilityFor, ROLE_RESPONSIBILITIES } = require('./role-responsibil
75
75
  // MAJOR (see allowBoxScope below): passes the request through untouched.
76
76
  function deprecatedNoopMiddleware(_req, _res, next) { next(); }
77
77
 
78
- const CORE_VERSION = '1.21.143'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
78
+ const CORE_VERSION = '1.21.145'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
79
79
 
80
80
  // A namespaced logger so a module's log lines are attributable + consistent.
81
81
  // Usage: const log = api.logger('discord'); log.info('mounted');
@@ -325,8 +325,9 @@ await test('resolving through the shared #/blocker/N overlay (otb:blocker-resolv
325
325
 
326
326
  await test('the sub-line reason prose has ONE source (blockers.html); JS never carries a copy (task 1003985)', () => {
327
327
  const html = fs.readFileSync(path.join(HALL, 'blockers.html'), 'utf8');
328
- assert.match(html, /Resolving one un-sticks every task waiting on it/, 'the static sub-line keeps the prose');
329
- assert.doesNotMatch(BLOCKERS_JS_SRC, /un-sticks|only they can make/, 'blockers.js must not duplicate the prose');
328
+ // Wording is the artist's (page tweak, task 1004348); the invariant is the single source.
329
+ assert.match(html, /Any tasks awaiting the same block will unblock automatically on resolution/, 'the static sub-line keeps the prose');
330
+ assert.doesNotMatch(BLOCKERS_JS_SRC, /unblock automatically on resolution|gated at the owner level/, 'blockers.js must not duplicate the prose');
330
331
  });
331
332
 
332
333
  summary();
@@ -338,12 +338,30 @@ test('render draws three public figures with a table twin per time chart, and no
338
338
  assert.ok(out.includes('<td>2026-08-20</td><td class="ledger__num">50 drachmae</td>'), 'the drachmae twin reads the ledger, not the 30 of per-task awards');
339
339
  assert.ok(!out.includes('id="chart-rate"'), 'no pace chart on someone else\'s profile');
340
340
  assert.ok(!b.requests.some((u) => u.includes('/analytics/')), 'and /analytics was never asked for');
341
- assert.equal((out.match(/<details class="pchart__twin">/g) || []).length, 2, 'a table twin under each time chart');
341
+ assert.equal((out.match(/<details class="pchart__twin">/g) || []).length, 3, 'a table twin under each time chart and the weekly columns');
342
342
  assert.ok(out.includes('<td>2026-08-01</td><td class="ledger__num">2 works</td>'), 'the twin holds the plotted day and its value');
343
343
  assert.ok(out.includes('>3 works</text>'), 'only the endpoint is direct-labelled');
344
344
  assert.ok(out.includes('Drachmae earned'), 'the currency label comes from branding at render');
345
345
  });
346
346
 
347
+ test('task 1004756: any profile draws works shipped PER WEEK from the record, each week present', async () => {
348
+ const b = bootRender({
349
+ rows: [ship('2026-08-01'), ship('2026-08-01'), ship('2026-08-20', { discipline: 'ui' })],
350
+ earnings: [pay('2026-08-01', 20)],
351
+ });
352
+ await b.C.render({ api: b.api, API: '/api/bongos', builderId: 95, selfId: 7, signedIn: true, now: NOW });
353
+ const out = b.mount.innerHTML;
354
+ assert.ok(out.includes('id="chart-weekly"'), 'the weekly figure draws for another builder');
355
+ assert.ok(out.includes('Works shipped, by week'));
356
+ assert.ok(!b.requests.some((u) => u.includes('/analytics/')), 'from the record already read, no extra request');
357
+ const w = b.C.weeklyShipped([ship('2026-08-01'), ship('2026-08-01'), ship('2026-08-20')], null, NOW);
358
+ assert.equal(w.buckets.reduce((s, x) => s + x.n, 0), 3, 'every ship counted once');
359
+ assert.ok(w.buckets.some((x) => x.n === 2), 'two ships in one week are one column of 2');
360
+ assert.ok(w.buckets.some((x) => x.n === 0), 'quiet weeks stay on the axis as zero');
361
+ assert.ok(w.days <= 365, 'all time is capped');
362
+ assert.equal(b.C.weeklyShipped([], 30, NOW).buckets.length, 5, '30 days is five week columns');
363
+ });
364
+
347
365
  test('render asks for the pace chart on the viewer\'s own profile only', async () => {
348
366
  const analytics = { window_days: 28, ship_rate: [{ day: '2026-09-01', n: 2 }] };
349
367
  const own = bootRender({ rows: [ship('2026-08-01')], analytics });