@bongos/core 1.19.544 → 1.19.546

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/.bongos-core.json +87 -42
  2. package/docs/adr/0227-a-task-network-map-is-refused-the-goal-graph-is-the-map.md +115 -0
  3. package/docs/copy-inventory.md +42 -18
  4. package/docs/copy-registry.json +271 -25
  5. package/docs/module-api-changelog.md +4 -0
  6. package/docs/research/task-network-map/real-a-every-task.png +0 -0
  7. package/docs/research/task-network-map/real-b-dependency-forest.png +0 -0
  8. package/docs/research/task-network-map/real-c-goals.png +0 -0
  9. package/docs/research/task-network-map/real-d-joined-by-goal.png +0 -0
  10. package/modules/hall-ui/public/hall-kit.js +76 -41
  11. package/modules/hall-ui/public/profile-charts.js +8 -2
  12. package/modules/hall-ui/public/shell.js +30 -1
  13. package/modules/hall-ui/public/studio.css +268 -0
  14. package/modules/hall-ui/public/studio.html +74 -0
  15. package/modules/hall-ui/public/studio.js +213 -0
  16. package/modules/hall-ui/public/studio.states.json +54 -0
  17. package/modules/hall-ui/public/style.css +9 -0
  18. package/modules/ui-design/skills/brandkit/SKILL.md +5 -1
  19. package/modules/ui-design/skills/design-taste-frontend/SKILL.md +5 -1
  20. package/modules/ui-design/skills/design-taste-frontend-v1/SKILL.md +5 -1
  21. package/modules/ui-design/skills/gpt-taste/SKILL.md +5 -1
  22. package/modules/ui-design/skills/high-end-visual-design/SKILL.md +5 -1
  23. package/modules/ui-design/skills/image-to-code/SKILL.md +5 -1
  24. package/modules/ui-design/skills/imagegen-frontend-mobile/SKILL.md +5 -1
  25. package/modules/ui-design/skills/imagegen-frontend-web/SKILL.md +5 -1
  26. package/modules/ui-design/skills/impeccable/SKILL.md +5 -1
  27. package/modules/ui-design/skills/industrial-brutalist-ui/SKILL.md +5 -1
  28. package/modules/ui-design/skills/minimalist-ui/SKILL.md +5 -1
  29. package/modules/ui-design/skills/redesign-existing-projects/SKILL.md +5 -1
  30. package/modules/ui-design/skills/stitch-design-taste/SKILL.md +5 -1
  31. package/modules/ui-design/skills/style/SKILL.md +5 -1
  32. package/package-lock.json +2 -2
  33. package/package.json +1 -1
  34. package/scripts/gds/fitness.js +10 -3
  35. package/scripts/gds/skill-lint.js +43 -9
  36. package/scripts/gds/spike-task-map.js +178 -9
  37. package/src/bongos/serve-internal.js +1 -1
  38. package/src/module-api.js +1 -1
  39. package/tests/hall_kit_charts.mjs +59 -0
  40. package/tests/hall_nav.mjs +6 -1
  41. package/tests/hall_page_gate_map.mjs +5 -0
  42. package/tests/hall_studio_world.mjs +143 -0
  43. package/tests/skill_lint.mjs +51 -2
  44. package/tests/spike_task_map.mjs +0 -0
  45. package/tests/ui_design_skills.mjs +12 -2
package/.bongos-core.json CHANGED
@@ -2,22 +2,22 @@
2
2
  "artifact": "bongos-core",
3
3
  "manifest_schema": 1,
4
4
  "generator": "scripts/gds/package-core.js",
5
- "core_version": "1.19.544",
6
- "core_contract": "1.19.544",
7
- "source_commit": "39e93444ac36149c8bb957f5ae126d8aa7cd62f2",
5
+ "core_version": "1.19.546",
6
+ "core_contract": "1.19.546",
7
+ "source_commit": "979e1675fe919e685e74158c7420564adda4d461",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-09-04T17:18:05.591Z",
9
+ "built_at": "2026-09-04T18:10:33.995Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 441,
13
13
  "agent_docs_stubbed": 24,
14
- "functional_verbatim": 2003,
14
+ "functional_verbatim": 2012,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 2468,
20
- "tree_sha256": "b0c7ab244b91e9f7d26b62e0eab1f44718911676a3fa72e820c1a0df26ca25a2",
19
+ "file_count": 2477,
20
+ "tree_sha256": "b5685b70ee82098100e1443399d51bf40ee47c0f7dd5487af8f73d92d81f1f1c",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/blocker-review/SKILL.md",
@@ -1647,7 +1647,7 @@
1647
1647
  {
1648
1648
  "path": "docs/adr/0227-a-task-network-map-is-refused-the-goal-graph-is-the-map.md",
1649
1649
  "mode": "0000644",
1650
- "sha256": "19a6e49700fa63ef781c3fa9b96d868785995c4037b078543b354e45c6db823f"
1650
+ "sha256": "ec0ae05a4f6ad3f6ad8faf7b2b87494219d529dcff0b7b38cb2e6626e527e514"
1651
1651
  },
1652
1652
  {
1653
1653
  "path": "docs/adr/0228-the-reading-room-owes-a-reference-content-rules-not-a-second-archetype.md",
@@ -1797,12 +1797,12 @@
1797
1797
  {
1798
1798
  "path": "docs/copy-inventory.md",
1799
1799
  "mode": "0000644",
1800
- "sha256": "9b9201deae4f4e747989864f4498c3a0e138c52ae35579113a0568cd8fb9033b"
1800
+ "sha256": "f031d9706b2afc0f579684ec7d451d38b9c8ffd88f7fdb29e3b720a306f80c2f"
1801
1801
  },
1802
1802
  {
1803
1803
  "path": "docs/copy-registry.json",
1804
1804
  "mode": "0000644",
1805
- "sha256": "77cd169d027eecf5bb5e729610c292f9622c5a12cecbdbbc517cc34b22e2fa6a"
1805
+ "sha256": "aff8da11e90581e6ca7c9410d4524bf22d8bce6fe8f58bae9ebd6f1de744a2eb"
1806
1806
  },
1807
1807
  {
1808
1808
  "path": "docs/design/apex-pass-2-direction.md",
@@ -2647,7 +2647,7 @@
2647
2647
  {
2648
2648
  "path": "docs/module-api-changelog.md",
2649
2649
  "mode": "0000644",
2650
- "sha256": "12a76f02ae81dc2a3674d6de15040ab2131cdf4dc912b4e48291d4790be9cde1"
2650
+ "sha256": "f93c244f3ed83f67a8ccf326a784d9a9049d83d72c2d05f6b06f12b3377481fe"
2651
2651
  },
2652
2652
  {
2653
2653
  "path": "docs/modules-contract.md",
@@ -2944,6 +2944,26 @@
2944
2944
  "mode": "0000644",
2945
2945
  "sha256": "df987e84d3a031c680d8248fcc2be649277c475a8e315a4df04f46b7709d8dd6"
2946
2946
  },
2947
+ {
2948
+ "path": "docs/research/task-network-map/real-a-every-task.png",
2949
+ "mode": "0000644",
2950
+ "sha256": "24f624c0c023b4740856a5ced48ebe76b00bf5529efef698a2bdc538fda496b6"
2951
+ },
2952
+ {
2953
+ "path": "docs/research/task-network-map/real-b-dependency-forest.png",
2954
+ "mode": "0000644",
2955
+ "sha256": "0954e2768ac7b617cbcd9c336e64f688ed66e69bcec39dd981577ec66d860905"
2956
+ },
2957
+ {
2958
+ "path": "docs/research/task-network-map/real-c-goals.png",
2959
+ "mode": "0000644",
2960
+ "sha256": "8561fe249f2d2ffc2867960ca05ea93d191663279993af9298e55dc3f9bf374c"
2961
+ },
2962
+ {
2963
+ "path": "docs/research/task-network-map/real-d-joined-by-goal.png",
2964
+ "mode": "0000644",
2965
+ "sha256": "f18a319374e3136cf96eb20c8b9fecdf5ee6b1a2b1d026e43733b7836699fae7"
2966
+ },
2947
2967
  {
2948
2968
  "path": "migrations/003_pms.sql",
2949
2969
  "mode": "0000644",
@@ -4782,7 +4802,7 @@
4782
4802
  {
4783
4803
  "path": "modules/hall-ui/public/hall-kit.js",
4784
4804
  "mode": "0000644",
4785
- "sha256": "402344a4e8c5c8a9e983c5e341dc2ea8ab40cab4d5512715b62bd7736060ab74"
4805
+ "sha256": "f153e550a362c0da63c307e93eb135966e0ca74f7bffbbfebd44af98b1a1ece3"
4786
4806
  },
4787
4807
  {
4788
4808
  "path": "modules/hall-ui/public/hall-render.js",
@@ -4982,7 +5002,7 @@
4982
5002
  {
4983
5003
  "path": "modules/hall-ui/public/profile-charts.js",
4984
5004
  "mode": "0000644",
4985
- "sha256": "8a630558026a76af240eb4b10ad11086fca7005386015574574b6b754a89322c"
5005
+ "sha256": "8ec23ddc97bca27b13c27d18e378476d639545c1c772bae7ae4b113d4b2fcdea"
4986
5006
  },
4987
5007
  {
4988
5008
  "path": "modules/hall-ui/public/profile-connections.js",
@@ -5142,17 +5162,37 @@
5142
5162
  {
5143
5163
  "path": "modules/hall-ui/public/shell.js",
5144
5164
  "mode": "0000644",
5145
- "sha256": "07cd3fd4ea92c91d4a421dfc9cbded01a7951e06b0b7c42edb8354348401e26e"
5165
+ "sha256": "bc8453262e92f1537fb68cb52c50f96b0c6cdcb9628cd2f69d4f2262e4844470"
5146
5166
  },
5147
5167
  {
5148
5168
  "path": "modules/hall-ui/public/ship.wav",
5149
5169
  "mode": "0000644",
5150
5170
  "sha256": "733c8db2c083c7e7595799a7941f13c9940a5615fde1f23e28d03e2aabce1f3c"
5151
5171
  },
5172
+ {
5173
+ "path": "modules/hall-ui/public/studio.css",
5174
+ "mode": "0000644",
5175
+ "sha256": "96820d92a4b1d19e542dc29b265131de11bdd8650f78515cc04ba4b8b647de84"
5176
+ },
5177
+ {
5178
+ "path": "modules/hall-ui/public/studio.html",
5179
+ "mode": "0000644",
5180
+ "sha256": "009ed578d63b4ac88bcac2f6f1896f4e0e4ea021fc319be3d8f9b03073b06d75"
5181
+ },
5182
+ {
5183
+ "path": "modules/hall-ui/public/studio.js",
5184
+ "mode": "0000644",
5185
+ "sha256": "9d32bee8f10359b6b06b95945d9a413e52d41dce48bdb8921496eab136d498f5"
5186
+ },
5187
+ {
5188
+ "path": "modules/hall-ui/public/studio.states.json",
5189
+ "mode": "0000644",
5190
+ "sha256": "e89763989f28b441c3eb268fb2aed7327d7be755b195b4cd141540db33eb6526"
5191
+ },
5152
5192
  {
5153
5193
  "path": "modules/hall-ui/public/style.css",
5154
5194
  "mode": "0000644",
5155
- "sha256": "c403fad2fbca7cfec844ae10107c9c5cf8f259cbaf3b695f058de6ef4e757b0d"
5195
+ "sha256": "88a06fef14cc51429d920c2c64aede57f681316a1bd83b7bc4792322312f1ac5"
5156
5196
  },
5157
5197
  {
5158
5198
  "path": "modules/hall-ui/public/task-detail.js",
@@ -7142,47 +7182,47 @@
7142
7182
  {
7143
7183
  "path": "modules/ui-design/skills/brandkit/SKILL.md",
7144
7184
  "mode": "0000644",
7145
- "sha256": "7b5cd9e896dcdb79a4386c863a03c628b6187fe81a0380ac50ea5dabc91fa468"
7185
+ "sha256": "b17be59c55cc536ed4dd4182564ca926ca886113ad8ce3ba5025f0caad689b28"
7146
7186
  },
7147
7187
  {
7148
7188
  "path": "modules/ui-design/skills/design-taste-frontend-v1/SKILL.md",
7149
7189
  "mode": "0000644",
7150
- "sha256": "5e461056c3e6fa4775cc6734b55bf6d5c050f01e0ee7a52378a9f4ab5501da28"
7190
+ "sha256": "7f342307efb46a82fa29faa1708b8f67daef63a4992dc0edb0e80398cd95fb81"
7151
7191
  },
7152
7192
  {
7153
7193
  "path": "modules/ui-design/skills/design-taste-frontend/SKILL.md",
7154
7194
  "mode": "0000644",
7155
- "sha256": "ee07bdde8e388b2863431673390d4bff74ee1296920ebcb07b529060eb7f8959"
7195
+ "sha256": "e1df9e0e7fa46b06147404cdf87673477cac42977da559064892c478bfb2ec37"
7156
7196
  },
7157
7197
  {
7158
7198
  "path": "modules/ui-design/skills/gpt-taste/SKILL.md",
7159
7199
  "mode": "0000644",
7160
- "sha256": "3e2e4802407df6763db372c27f3deaaf8f9b6233778668ddeaff65dec147ac7c"
7200
+ "sha256": "7c22d993cf7e42114f1c234e1321299b340c0e7fabd09f19b408f771de211fb5"
7161
7201
  },
7162
7202
  {
7163
7203
  "path": "modules/ui-design/skills/high-end-visual-design/SKILL.md",
7164
7204
  "mode": "0000644",
7165
- "sha256": "eeb33e0a2d0a227d23b67c5e6d32c5757d8d5d7249a1a6d0fe3c67d8bd95fc91"
7205
+ "sha256": "2bf36058d7db8c619b89b4e7fc97e303e99d2123cc2ea0f241174ab3c54b7d00"
7166
7206
  },
7167
7207
  {
7168
7208
  "path": "modules/ui-design/skills/image-to-code/SKILL.md",
7169
7209
  "mode": "0000644",
7170
- "sha256": "9c07a2328416874d69897bada333f955a93ef165eb128f073fb3bf40baef2d1e"
7210
+ "sha256": "7a85f43a0455549a5434485f5803569693308bd713debbfe045f676d29dcdae0"
7171
7211
  },
7172
7212
  {
7173
7213
  "path": "modules/ui-design/skills/imagegen-frontend-mobile/SKILL.md",
7174
7214
  "mode": "0000644",
7175
- "sha256": "664f64d1f16afb10d3027fcd7dc50031e0f090f75cf5ee72258adc78e2e2ff73"
7215
+ "sha256": "5de59ad0e46c1efa1d52c8148ad39c26f797bc7fa888839236fa49e97a30d382"
7176
7216
  },
7177
7217
  {
7178
7218
  "path": "modules/ui-design/skills/imagegen-frontend-web/SKILL.md",
7179
7219
  "mode": "0000644",
7180
- "sha256": "75586cc997b927c7ca5ef7f3be574f4d81bd9238b01c9b66b1a5f8c587acaa14"
7220
+ "sha256": "c096c4c7a74b5613c7012f4b0dc3b1baca5e59819dd2f2b218fbe57e2ecba8a5"
7181
7221
  },
7182
7222
  {
7183
7223
  "path": "modules/ui-design/skills/impeccable/SKILL.md",
7184
7224
  "mode": "0000644",
7185
- "sha256": "ec144ae6ee19f59743e42e035f0a0fefc342bfd292353be73d50419d9df98491"
7225
+ "sha256": "285e595744c3d52b8a96e32f8986a82a08dd83fee172b852b5d8b14c808ae95e"
7186
7226
  },
7187
7227
  {
7188
7228
  "path": "modules/ui-design/skills/impeccable/reference/adapt.md",
@@ -7277,12 +7317,12 @@
7277
7317
  {
7278
7318
  "path": "modules/ui-design/skills/industrial-brutalist-ui/SKILL.md",
7279
7319
  "mode": "0000644",
7280
- "sha256": "4d781aa002138bdad572dfcae0dc6f1175fe070ee37fa8f3ef9a0f6af08e039b"
7320
+ "sha256": "86e9497cbfe20def445fcf4a53429755f31517f19a0e07dc3a73f99d13ec9b4f"
7281
7321
  },
7282
7322
  {
7283
7323
  "path": "modules/ui-design/skills/minimalist-ui/SKILL.md",
7284
7324
  "mode": "0000644",
7285
- "sha256": "b7b22a1ab8aa148ac4fc8573d7088c6ff207beb53f628009e7cfc363c6bbd2c2"
7325
+ "sha256": "fa1d7b7a801d6640bc49b4f762d48ff063f0cb01dc93d188a916a2b357c60542"
7286
7326
  },
7287
7327
  {
7288
7328
  "path": "modules/ui-design/skills/policy.json",
@@ -7292,17 +7332,17 @@
7292
7332
  {
7293
7333
  "path": "modules/ui-design/skills/redesign-existing-projects/SKILL.md",
7294
7334
  "mode": "0000644",
7295
- "sha256": "22e8f7ea0d206b3f4b2243b986a4dcd10df4ba0198aa063e76ef4d2788fec55d"
7335
+ "sha256": "b58f23bda03283aea06430601dd73f654509d3404bdd31322c8214582fee7eb1"
7296
7336
  },
7297
7337
  {
7298
7338
  "path": "modules/ui-design/skills/stitch-design-taste/SKILL.md",
7299
7339
  "mode": "0000644",
7300
- "sha256": "f8c6c38ccb5fea529e86731005e8bbf231a9131c890010a29129c06195f48945"
7340
+ "sha256": "6fbf6fa566e576e2d8b55aad5cfee97d75f316263669d0eefd1eb1b8e691ea0f"
7301
7341
  },
7302
7342
  {
7303
7343
  "path": "modules/ui-design/skills/style/SKILL.md",
7304
7344
  "mode": "0000644",
7305
- "sha256": "7853e7f17cd39caeae5107959905397dcc634aac0af2a7e017f357c8d36e45e5"
7345
+ "sha256": "5383fe2edfc30bd17325797405b2e0809b3f76ae49b0cc94622557b2aac8a30d"
7306
7346
  },
7307
7347
  {
7308
7348
  "path": "modules/ui-design/styles/README.md",
@@ -7412,12 +7452,12 @@
7412
7452
  {
7413
7453
  "path": "package-lock.json",
7414
7454
  "mode": "0000644",
7415
- "sha256": "5a9a55d27d4d93812cd6e549519231de3458d772987ad429cb2ae4f746af820f"
7455
+ "sha256": "d19f98e5a6379aae00b038e27ad4051484dfe060b053b67bef5577e892e623ec"
7416
7456
  },
7417
7457
  {
7418
7458
  "path": "package.json",
7419
7459
  "mode": "0000644",
7420
- "sha256": "bf0b5224da645322f40ca158a7e795b728cd9a5b05a746c46937b31702b3aed6"
7460
+ "sha256": "97a3bc18d404c2c95f273adcefacee1b34c6ed9445229622681f3a34a0bfbd72"
7421
7461
  },
7422
7462
  {
7423
7463
  "path": "public-docs/index.html",
@@ -7852,7 +7892,7 @@
7852
7892
  {
7853
7893
  "path": "scripts/gds/fitness.js",
7854
7894
  "mode": "0000644",
7855
- "sha256": "172f890f2a4297d287008f0ba11bc04fc801ea21a52728855967b178e2875373"
7895
+ "sha256": "c825842ed0e4bf34fa9fa7bc7e711967d1aa0efdde4132253c51231c6ccbd22e"
7856
7896
  },
7857
7897
  {
7858
7898
  "path": "scripts/gds/gate-review.js",
@@ -8572,7 +8612,7 @@
8572
8612
  {
8573
8613
  "path": "scripts/gds/skill-lint.js",
8574
8614
  "mode": "0000644",
8575
- "sha256": "cacae521e5580e66c74128142772abe93d6742e8438417bd4e5a19d48d611c9f"
8615
+ "sha256": "c68e39e195cf38a7ec09d601f616dd44f83e2ea698705f41e30a08eef4308fba"
8576
8616
  },
8577
8617
  {
8578
8618
  "path": "scripts/gds/skill-preflight.js",
@@ -8622,7 +8662,7 @@
8622
8662
  {
8623
8663
  "path": "scripts/gds/spike-task-map.js",
8624
8664
  "mode": "0000644",
8625
- "sha256": "cd09675638143232121d028f2ba55dcdde47c9d8d5d2466f52d09bc2cb650cc9"
8665
+ "sha256": "1d116849a4f8921a528b6784807a83894c58c2d47defbca7235fafa472fabefa"
8626
8666
  },
8627
8667
  {
8628
8668
  "path": "scripts/gds/stale-worktrees.js",
@@ -9067,7 +9107,7 @@
9067
9107
  {
9068
9108
  "path": "src/bongos/serve-internal.js",
9069
9109
  "mode": "0000644",
9070
- "sha256": "628beaca086bc9f793a342f858ced847a889e205b299cb0269797b61ff5ff382"
9110
+ "sha256": "dd733e3a5c65112cdde13496be696d0c7aefb0f90f800f4674605b9228b3997c"
9071
9111
  },
9072
9112
  {
9073
9113
  "path": "src/bongos/stealth-gate.js",
@@ -9102,7 +9142,7 @@
9102
9142
  {
9103
9143
  "path": "src/module-api.js",
9104
9144
  "mode": "0000644",
9105
- "sha256": "de4fc6ed04c9b3425132b6671c6741bcbc18c8e8b5545c5ee12fe2f2f723f725"
9145
+ "sha256": "83cdf243b987aea59adf18f939bc808239053d6f2fa39339bd17001be9bcf501"
9106
9146
  },
9107
9147
  {
9108
9148
  "path": "src/module-loader/catalog.js",
@@ -10542,12 +10582,12 @@
10542
10582
  {
10543
10583
  "path": "tests/hall_kit_charts.mjs",
10544
10584
  "mode": "0000644",
10545
- "sha256": "b3c95d32e4c2402699070c08fa4eaa9f460cd4d2b813f8b15e39d29fc5aa5b4d"
10585
+ "sha256": "5654f4366ddcfcb61848a119a2dba3827f3fe19c0151005558a803c2e09db573"
10546
10586
  },
10547
10587
  {
10548
10588
  "path": "tests/hall_nav.mjs",
10549
10589
  "mode": "0000644",
10550
- "sha256": "08b0c9585aca63a52e7c89abc630392b80faf8b053fba24d1796771d253bf26a"
10590
+ "sha256": "839cceffc799df5e8cd3c02bc4cc667e36d6311e30317eae8bd099f1959832be"
10551
10591
  },
10552
10592
  {
10553
10593
  "path": "tests/hall_oversight_world.mjs",
@@ -10557,7 +10597,7 @@
10557
10597
  {
10558
10598
  "path": "tests/hall_page_gate_map.mjs",
10559
10599
  "mode": "0000644",
10560
- "sha256": "eb8026d8001595c11eaf52880f4a46cba00f4eea4fbe2c1ceb16fe977f5e33e9"
10600
+ "sha256": "5189253c0446c497d694310f2d49d732e843cb31bcb0431bbde3fa9aa727aeb5"
10561
10601
  },
10562
10602
  {
10563
10603
  "path": "tests/hall_palette.mjs",
@@ -10604,6 +10644,11 @@
10604
10644
  "mode": "0000644",
10605
10645
  "sha256": "82bf1cc68150c247c108308d360d6408511f31a7af11d5e7a4721e7ea282f2bb"
10606
10646
  },
10647
+ {
10648
+ "path": "tests/hall_studio_world.mjs",
10649
+ "mode": "0000644",
10650
+ "sha256": "0c7b0a24bf643482307c321f7fcaaf2662f5ab6a860237f7026046e8984cfe5b"
10651
+ },
10607
10652
  {
10608
10653
  "path": "tests/hall_tokens.mjs",
10609
10654
  "mode": "0000644",
@@ -12022,7 +12067,7 @@
12022
12067
  {
12023
12068
  "path": "tests/skill_lint.mjs",
12024
12069
  "mode": "0000644",
12025
- "sha256": "da75748d8733b16c479686a350f4e648e85ccc171ce633b4561315bd6d7073bb"
12070
+ "sha256": "bb11de1a32e4d3504d9b5b4f649a1117364f0d5368ca96cf2a720d6dbbfbd040"
12026
12071
  },
12027
12072
  {
12028
12073
  "path": "tests/skill_preflight.mjs",
@@ -12062,7 +12107,7 @@
12062
12107
  {
12063
12108
  "path": "tests/spike_task_map.mjs",
12064
12109
  "mode": "0000644",
12065
- "sha256": "714d7a3c6d3247bcd4412c12db7a905a4c7a351ed8d835c606a4d43b9d7249b3"
12110
+ "sha256": "905b7b9147fa35f74c2c5f4118175ebf96fa36107379207a7a2c59afc5a2967d"
12066
12111
  },
12067
12112
  {
12068
12113
  "path": "tests/sso_checkin_identity_spoof.mjs",
@@ -12262,7 +12307,7 @@
12262
12307
  {
12263
12308
  "path": "tests/ui_design_skills.mjs",
12264
12309
  "mode": "0000644",
12265
- "sha256": "f12817db3dd3486446cfcbe1701a06e19b7d1c18e9a6046f7861a667268fd3d4"
12310
+ "sha256": "e8ae559aa743e4ea3377f1bf57fd33cb5efdb96ba7c67ab57964915814e7e212"
12266
12311
  },
12267
12312
  {
12268
12313
  "path": "tests/ui_design_styles.mjs",
@@ -167,3 +167,118 @@ assertion was mutation-tested: changing `y * w` to `y * h` fails two tests.
167
167
  anything further is a prototype wearing a harness's name.* Had the arithmetic been run
168
168
  first, the figures would have been a nice-to-have and the physics would never have been
169
169
  written.
170
+
171
+ ---
172
+
173
+ ## 10. Amendment (2026-09-04) — the density measured against the live DB
174
+
175
+ *Task [#1003477](https://cloudbongos.com/builders#/task/1003477), §6 item 1. §3 said two numbers would decide items 3 and 4, and
176
+ the original spike could only model them: the live DB was unreachable from where that
177
+ harness ran. They are now measured. This section is appended, not edited in — §§1–9 stand
178
+ as written, and the one number in them that the corpus contradicts is called out below.*
179
+
180
+ ### 10.1 What was run
181
+
182
+ `GET /api/gds/tasks?include=deps` paged at `limit=1000` over the whole `tasks` table
183
+ (3,253 rows, all versions — BONGOS-V1 alone is 1,894), reduced to `{id, goal_id,
184
+ version_id, status, blocked_by[]}` and fed to the same harness through `--from`:
185
+
186
+ ```
187
+ node scripts/gds/spike-task-map.js --from <dump>.json
188
+ ```
189
+
190
+ **The loader was broken, and would have answered confidently.** `loadReal` read
191
+ `dependencies`/`deps`; `GET /tasks?include=deps` answers with **`blocked_by`**
192
+ (`db.attachTaskDepSummaries`). A real dump therefore parsed as a corpus with **zero
193
+ edges**, and every `--from` number would have described an empty graph while looking
194
+ entirely plausible — nothing in the output says *"no edges here because the field was
195
+ misnamed."* This is the failure mode a spike must not have, so `depIdsOf` now accepts all
196
+ three spellings and `tests/spike_task_map.mjs` pins it. Two tasks with **no** goal also no
197
+ longer share a goal bucket: pooling them turned every dependency between two ungoaled
198
+ tasks into a within-goal edge, understating the very number §3 asked for.
199
+
200
+ ### 10.2 The two numbers
201
+
202
+ | §3's question | Measured | Modelled range |
203
+ |---|---|---|
204
+ | Share of tasks carrying ≥1 dependency row | **23.61%** (768 of 3,253) | swept 2–40% |
205
+ | Share of dependency edges crossing a goal boundary | **5.60%** (66 of 1,178) | assumed 15% |
206
+
207
+ Supporting shape, all exact:
208
+
209
+ - **70 goals** carry tasks (not ~40 — §§1–3 say "~40 nodes" throughout; the real graph is
210
+ **76 nodes**: 70 goals plus 6 ungoaled tasks, which are each their own bucket). No
211
+ dependency edge touches an ungoaled task, so that distinction changes no number here —
212
+ but it is now measured rather than assumed away.
213
+ - **33** distinct directed goal pairs. **36** goals carry a cross-goal edge; **34 are
214
+ isolated dots (48.57%)**. The goal graph breaks into **48 components, the largest 17**.
215
+ - The dependency forest: **1,012 tasks have an edge in either direction (31.11%)**, in
216
+ **128 components**, largest 102, **median 4**.
217
+ - Per-goal drill-down: **56 goals have one**, largest **127** tasks, median **9**.
218
+
219
+ Figures rendered from the live corpus, beside the synthetic ones:
220
+ [`real-a-every-task.png`](../research/task-network-map/real-a-every-task.png),
221
+ [`real-b-dependency-forest.png`](../research/task-network-map/real-b-dependency-forest.png),
222
+ [`real-c-goals.png`](../research/task-network-map/real-c-goals.png),
223
+ [`real-d-joined-by-goal.png`](../research/task-network-map/real-d-joined-by-goal.png).
224
+
225
+ ### 10.3 §1 survives, and the real corpus is worse than the model
226
+
227
+ View A on real data: 3,253 nodes, **68.9% isolated**, 2,369 components, 16.8px pitch —
228
+ below the 48px a label needs. View D: **94.7% of nodes overplot**. The refusal in §1 was
229
+ argued from a sweep; the live corpus lands inside that sweep and fails it harder than the
230
+ midpoint did. **Nothing in §1 is reopened.**
231
+
232
+ ### 10.4 Item 3 — the goal graph: **PROCEED**, with the shape changed
233
+
234
+ Cross-goal dependencies are **not** near zero. §3's cancel condition ("forty disconnected
235
+ dots") does not fire: there are 33 goal pairs and 66 edges, and at 76 nodes the view is
236
+ comfortably readable — 110.1px of pitch, labels fit, 14 crossings, 69ms, **under 1KB of
237
+ graph payload**. Item 3 is worth building.
238
+
239
+ But the evidence changes what to build, and [#1003479](https://cloudbongos.com/builders#/task/1003479) must be built to this rather
240
+ than to §6's wording:
241
+
242
+ 1. **Half the goals have no edge at all.** 34 of 70 are isolated. A pure node-link layout
243
+ spends half its canvas on dots a force layout has nothing to say about — §3's own
244
+ objection to view A, one order of magnitude down. The honest shape is a **graph of the
245
+ 36 connected goals plus a list (or the existing card grid) for the 34 isolated ones**,
246
+ with the split stated on the page. §3 was right that "a grid of goal cards" is the
247
+ answer for edgeless goals; it is right for *half* of them, not none.
248
+ 2. **Even the connected half is not one graph** — 42 components among real goals, the
249
+ largest 17. The view must read as "one cluster and a scatter of pairs", not as a
250
+ network.
251
+ 3. **The table equivalent §6 already requires is not optional here.** With 48 components,
252
+ the table carries more of the structure than the picture does.
253
+
254
+ ### 10.5 Item 4 — the per-goal dependency forest: **PROCEED**, as scoped and not wider
255
+
256
+ 23.61% of tasks carry a dependency — inside §3's stated 3–40% band, so the forest has real
257
+ content. The scoping in §3 ("lazy and scoped", per opened goal) is now *load-bearing
258
+ rather than merely prudent*, and the measurement says so both ways:
259
+
260
+ - **Whole-corpus forest: refused.** 1,012 nodes at 30.2px pitch — above the 7px dot floor
261
+ but **below the 48px label floor**. It would draw 1,012 discs nobody can name, in 128
262
+ pieces. This is the same failure as view A, and it must not be offered as a "show all"
263
+ toggle.
264
+ - **Per-goal drill-down: clears the bar, worst case included.** The biggest single goal's
265
+ forest is **127 tasks → 85.2px pitch, labels fit**; the median is 9. **No goal's forest
266
+ exceeds the label floor** (that would take >400). The drill-down is readable for every
267
+ goal that has one, which is exactly the claim item 4 needed and could not previously
268
+ make.
269
+
270
+ [#1003480](https://cloudbongos.com/builders#/task/1003480) proceeds unchanged in scope. The one thing it must add: 14 goals have **no**
271
+ intra-goal forest, so the drill-down needs a real empty state rather than a blank panel.
272
+
273
+ ### 10.6 What this cost, and the transferable rule
274
+
275
+ The measurement took one session and cancelled nothing — but it changed item 3's design
276
+ before it was built (half the nodes belong in a list, not a graph) and it turned item 4's
277
+ "lazy and scoped" from a preference into a constraint with a number behind it. It also
278
+ caught a loader bug that would have made every future `--from` run answer "no edges" with
279
+ a straight face.
280
+
281
+ **The transferable rule:** *a spike that reads a real API must be run against the real API
282
+ before its numbers are quoted — a field-name mismatch does not fail, it answers zero.* §9
283
+ already conceded this harness over-built for its question; the other half of that lesson is
284
+ that the part it under-built was the twenty lines that touch reality.