@bongos/core 1.19.461 → 1.19.463

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 (51) hide show
  1. package/.bongos-core.json +145 -40
  2. package/.claude/skills/design/SKILL.md +2 -1
  3. package/docs/adr/0221-the-impeccable-method-is-one-skill-with-sub-command-playbooks.md +36 -0
  4. package/docs/adr/README.md +1 -0
  5. package/docs/copy-inventory.md +122 -125
  6. package/docs/copy-registry.json +306 -322
  7. package/docs/file-map.md +2 -2
  8. package/docs/module-api-changelog.md +4 -0
  9. package/modules/hall-ui/public/goals-lib.js +10 -6
  10. package/modules/hall-ui/public/goals-page.js +27 -12
  11. package/modules/hall-ui/public/goals-render.js +83 -52
  12. package/modules/hall-ui/public/goals.css +129 -120
  13. package/modules/hall-ui/public/goals.html +29 -11
  14. package/modules/hall-ui/public/goals.states.json +71 -3
  15. package/modules/hall-ui/public/people.css +27 -0
  16. package/modules/hall-ui/public/people.html +15 -7
  17. package/modules/hall-ui/public/people.js +111 -22
  18. package/modules/hall-ui/public/people.states.json +31 -1
  19. package/modules/hall-ui/public/scouting.html +30 -17
  20. package/modules/hall-ui/public/scouting.states.json +7 -2
  21. package/modules/hall-ui/public/sessions.css +18 -15
  22. package/modules/hall-ui/public/sessions.html +27 -22
  23. package/modules/hall-ui/public/sessions.js +32 -13
  24. package/modules/hall-ui/public/sessions.states.json +3 -2
  25. package/modules/ui-design/module.json +1 -1
  26. package/modules/ui-design/skills/README.md +4 -3
  27. package/modules/ui-design/skills/impeccable/SKILL.md +143 -0
  28. package/modules/ui-design/skills/impeccable/reference/adapt.md +25 -0
  29. package/modules/ui-design/skills/impeccable/reference/animate.md +27 -0
  30. package/modules/ui-design/skills/impeccable/reference/audit.md +19 -0
  31. package/modules/ui-design/skills/impeccable/reference/bolder.md +17 -0
  32. package/modules/ui-design/skills/impeccable/reference/clarify.md +25 -0
  33. package/modules/ui-design/skills/impeccable/reference/colorize.md +22 -0
  34. package/modules/ui-design/skills/impeccable/reference/critique.md +15 -0
  35. package/modules/ui-design/skills/impeccable/reference/distill.md +26 -0
  36. package/modules/ui-design/skills/impeccable/reference/document.md +25 -0
  37. package/modules/ui-design/skills/impeccable/reference/extract.md +20 -0
  38. package/modules/ui-design/skills/impeccable/reference/harden.md +21 -0
  39. package/modules/ui-design/skills/impeccable/reference/layout.md +20 -0
  40. package/modules/ui-design/skills/impeccable/reference/onboard.md +22 -0
  41. package/modules/ui-design/skills/impeccable/reference/optimize.md +22 -0
  42. package/modules/ui-design/skills/impeccable/reference/polish.md +22 -0
  43. package/modules/ui-design/skills/impeccable/reference/quieter.md +17 -0
  44. package/modules/ui-design/skills/impeccable/reference/shape.md +23 -0
  45. package/modules/ui-design/skills/impeccable/reference/typeset.md +24 -0
  46. package/package-lock.json +2 -2
  47. package/package.json +1 -1
  48. package/src/module-api.js +1 -1
  49. package/tests/hall_roster_world.mjs +287 -0
  50. package/tests/ui_design_skills.mjs +41 -0
  51. package/modules/hall-ui/public/scouting.js +0 -73
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.461",
6
- "core_contract": "1.19.461",
7
- "source_commit": "c90f2d3b84966cebe03459eff83dddb8f458c871",
5
+ "core_version": "1.19.463",
6
+ "core_contract": "1.19.463",
7
+ "source_commit": "0dcce51cd7eb0c0853908fce4ba5627b7ab290b2",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-09-01T23:39:44.285Z",
9
+ "built_at": "2026-09-02T01:01:19.599Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
- "docs_redacted": 380,
12
+ "docs_redacted": 400,
13
13
  "agent_docs_stubbed": 24,
14
- "functional_verbatim": 1816,
14
+ "functional_verbatim": 1817,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 2220,
20
- "tree_sha256": "4c595d2e8e84883925a96367ebdcb500c59ca83987e4b0ef21fc52bfcf20ef08",
19
+ "file_count": 2241,
20
+ "tree_sha256": "be5d78d76396268d4dd0c0a5f0959ba65febbb9a4bbe518abc4a17911d9d5980",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/blocker-review/SKILL.md",
@@ -127,7 +127,7 @@
127
127
  {
128
128
  "path": ".claude/skills/design/SKILL.md",
129
129
  "mode": "0000644",
130
- "sha256": "ced60ba6ce3e6b8295e3fa9986234f6bb9be8cd4a941ce801af47591928cb270"
130
+ "sha256": "c1ed5d4eaffffde255ac3308490d86f0235b9ab66a9349684652bb3eae82ae57"
131
131
  },
132
132
  {
133
133
  "path": ".claude/skills/dev/SKILL.md",
@@ -1609,10 +1609,15 @@
1609
1609
  "mode": "0000644",
1610
1610
  "sha256": "8e121001f8ff3f854c5efe461aabb17dc4f81e49ca262b2cadf4717c49b11bb0"
1611
1611
  },
1612
+ {
1613
+ "path": "docs/adr/0221-the-impeccable-method-is-one-skill-with-sub-command-playbooks.md",
1614
+ "mode": "0000644",
1615
+ "sha256": "aed01aaa88a3deb1fbf15a1183f07954db0c7867272e7c6bd9dd0b74327c6c34"
1616
+ },
1612
1617
  {
1613
1618
  "path": "docs/adr/README.md",
1614
1619
  "mode": "0000644",
1615
- "sha256": "441c2773abced552c433f5c54a52fd4924e674c304360c9c3c6d962fedb33fc3"
1620
+ "sha256": "f27631d3aa68cf8855420f62c4de01dd0c817d3b014e738fa1579bf92bfa16a3"
1616
1621
  },
1617
1622
  {
1618
1623
  "path": "docs/api-reference.md",
@@ -1647,12 +1652,12 @@
1647
1652
  {
1648
1653
  "path": "docs/copy-inventory.md",
1649
1654
  "mode": "0000644",
1650
- "sha256": "3822b771bb29b4bdaaf073937c7c6447bb2aa51163585a8d596872031cb5d216"
1655
+ "sha256": "c90d1a197950bc627f1a44ae32a476703029be688997aa7ad5e00ba4e4f8a692"
1651
1656
  },
1652
1657
  {
1653
1658
  "path": "docs/copy-registry.json",
1654
1659
  "mode": "0000644",
1655
- "sha256": "feae1d0fdd7a6bd14a076eb7ce36fe1b70a41d3a2883e2df5536f7529238d4dc"
1660
+ "sha256": "5a86bf71ba2d6f83943464ee676241bec655892c52c4d5742cb259971a66a591"
1656
1661
  },
1657
1662
  {
1658
1663
  "path": "docs/design/apex-pass-2-direction.md",
@@ -2092,7 +2097,7 @@
2092
2097
  {
2093
2098
  "path": "docs/file-map.md",
2094
2099
  "mode": "0000644",
2095
- "sha256": "2164f82effe472df69ccf7c05787060ea6d108c4dfa3e74064a6f23623eb018b"
2100
+ "sha256": "1682c8c32b5cdab0d2a654da9b6e12cf7bbbccc1cf1d791fc6a5fc247268ecc7"
2096
2101
  },
2097
2102
  {
2098
2103
  "path": "docs/handoff-template.md",
@@ -2102,7 +2107,7 @@
2102
2107
  {
2103
2108
  "path": "docs/module-api-changelog.md",
2104
2109
  "mode": "0000644",
2105
- "sha256": "0ebc5de06d0b5454d8509fbd60ad81f7107414610a1afb8cc363c3cf7a0473be"
2110
+ "sha256": "9b8886ab2a71a37fc86080c63c2458c1ae14124e1ccfee39d787f066730dfc20"
2106
2111
  },
2107
2112
  {
2108
2113
  "path": "docs/modules-contract.md",
@@ -4107,27 +4112,27 @@
4107
4112
  {
4108
4113
  "path": "modules/hall-ui/public/goals-lib.js",
4109
4114
  "mode": "0000644",
4110
- "sha256": "ece309bc16902777636cda98a6b500eec1faa5b3f164626d2a29f2437863d885"
4115
+ "sha256": "943bb6fa906e2e864c40db2366032edf19030941c4fcc49522ad886138f30d32"
4111
4116
  },
4112
4117
  {
4113
4118
  "path": "modules/hall-ui/public/goals-page.js",
4114
4119
  "mode": "0000644",
4115
- "sha256": "3f401db6c8dbba4137f1c022e6abddacca6ccf20dfb3ba32eab590893b3e22e9"
4120
+ "sha256": "aed3d6f14dc40d4ff6b07f186bc34e6d96f6ba158250b0447fc71514f6bc4980"
4116
4121
  },
4117
4122
  {
4118
4123
  "path": "modules/hall-ui/public/goals-render.js",
4119
4124
  "mode": "0000644",
4120
- "sha256": "ec5f21225ede43b581f096000ad090119c7370f5ced6ddfe47fda2c2b0a12ecb"
4125
+ "sha256": "6c3ad030507152756dd84c0c06080a3a073a62943bc300cb44b202da5554c5a1"
4121
4126
  },
4122
4127
  {
4123
4128
  "path": "modules/hall-ui/public/goals.css",
4124
4129
  "mode": "0000644",
4125
- "sha256": "67063bf8fb74cd4cbffe731356b61ef25073f29273a5fac04da28b9b1b649af6"
4130
+ "sha256": "cdf23538a1fcd121af3159bdd928c6823aa02f10912143a5af64327724eaff58"
4126
4131
  },
4127
4132
  {
4128
4133
  "path": "modules/hall-ui/public/goals.html",
4129
4134
  "mode": "0000644",
4130
- "sha256": "dd0300ff311dae0342688270b4ed3d83643ad8dbdfcfd54a126c534be25c1983"
4135
+ "sha256": "ecbd2c50f6dc00f9243417f27ed40603498cd7a8178e6701a1151d9188baff2c"
4131
4136
  },
4132
4137
  {
4133
4138
  "path": "modules/hall-ui/public/goals.js",
@@ -4137,7 +4142,7 @@
4137
4142
  {
4138
4143
  "path": "modules/hall-ui/public/goals.states.json",
4139
4144
  "mode": "0000644",
4140
- "sha256": "d140a8134491ed4b37edf3205e5e9098c9697c24313959392f1a22828eb5cc7d"
4145
+ "sha256": "8e955be7fb6aef55b6aac0c586b27963f032bab9bec743b56a5987b6276cc8d3"
4141
4146
  },
4142
4147
  {
4143
4148
  "path": "modules/hall-ui/public/government.css",
@@ -4314,20 +4319,25 @@
4314
4319
  "mode": "0000644",
4315
4320
  "sha256": "f6b2dc3a7ee452ff7121fbc0245bd554c692f6d8be1dc6285d0fa0eab2d6aed6"
4316
4321
  },
4322
+ {
4323
+ "path": "modules/hall-ui/public/people.css",
4324
+ "mode": "0000644",
4325
+ "sha256": "b3462a0363dec36994e3760f3382cbd810c9ca3b6dc0bc8ae4ba29131ce4adf8"
4326
+ },
4317
4327
  {
4318
4328
  "path": "modules/hall-ui/public/people.html",
4319
4329
  "mode": "0000644",
4320
- "sha256": "97316f402c5427723d558caf40033fa0e104b7fa62130c17dd28ed5786cb3aec"
4330
+ "sha256": "8990aff8d4ffbad5fc81dc747aa3cda14c61aba24db52ad97cf025c0e87c1709"
4321
4331
  },
4322
4332
  {
4323
4333
  "path": "modules/hall-ui/public/people.js",
4324
4334
  "mode": "0000644",
4325
- "sha256": "7e0e2f091fb8c286220bbd5f790497ab54c78e569f59519a00fa5739d11bd451"
4335
+ "sha256": "3945369a9afe93b377ec5297f5bbd3b67cb3a702efa60e388c2a9e81b502cd3c"
4326
4336
  },
4327
4337
  {
4328
4338
  "path": "modules/hall-ui/public/people.states.json",
4329
4339
  "mode": "0000644",
4330
- "sha256": "33d2b1b28f3175c0d5bea36cfcbb55da3a3b7eabdcc58c2bc7f66c3894075712"
4340
+ "sha256": "9c38735e4f4489d7de5bf15e175b2d39f936e7a0788ab169d343b0e83c038b3b"
4331
4341
  },
4332
4342
  {
4333
4343
  "path": "modules/hall-ui/public/primer.css",
@@ -4422,37 +4432,32 @@
4422
4432
  {
4423
4433
  "path": "modules/hall-ui/public/scouting.html",
4424
4434
  "mode": "0000644",
4425
- "sha256": "fde609683fc8ecc8a230d6e11ddba085f845e3a01ce76e1c45c0497cd020cf5a"
4426
- },
4427
- {
4428
- "path": "modules/hall-ui/public/scouting.js",
4429
- "mode": "0000644",
4430
- "sha256": "0109d6715ba097f2c4329fc01d7e2378a09be728d4cc829354cad3c5af1d8e89"
4435
+ "sha256": "3eb3f73fe668fdd99031f71e2a761b3d3584873728960f116e45845ad5d12d76"
4431
4436
  },
4432
4437
  {
4433
4438
  "path": "modules/hall-ui/public/scouting.states.json",
4434
4439
  "mode": "0000644",
4435
- "sha256": "8559bee71d1c7a7495dff32bda2dde1fb119fa2e92ff6729dd75f9944875dfa3"
4440
+ "sha256": "80efccfcf2963bc360853ded4618f59ca50ee055249e37891310c11dea1c55cf"
4436
4441
  },
4437
4442
  {
4438
4443
  "path": "modules/hall-ui/public/sessions.css",
4439
4444
  "mode": "0000644",
4440
- "sha256": "9dedaaae8d27de55271ae26d1562d686fa14e5bcf57b679c53cce5a4adb9d086"
4445
+ "sha256": "a76ccf7d6dabbc0a13135247d2169b59ff5b67c98148626988ee8a9e214a9d8f"
4441
4446
  },
4442
4447
  {
4443
4448
  "path": "modules/hall-ui/public/sessions.html",
4444
4449
  "mode": "0000644",
4445
- "sha256": "0bb3eebecd62980b7008ab7d0f10fb4e6c75fdeca896c9133242e8c2557ac4cd"
4450
+ "sha256": "cb5a4b2ece4f73cc2ccc29577cd5c724314260b8e7cf6790981ee06866fd4145"
4446
4451
  },
4447
4452
  {
4448
4453
  "path": "modules/hall-ui/public/sessions.js",
4449
4454
  "mode": "0000644",
4450
- "sha256": "e99046a2c0e2cb6ce9f05711ddbe6ed9d2e7536086dca16496ef0e5e8cb9a041"
4455
+ "sha256": "6cc6ea120acd76bc42901adaa57f89f98f87eadfc2088ce4f6ccaa20106347ce"
4451
4456
  },
4452
4457
  {
4453
4458
  "path": "modules/hall-ui/public/sessions.states.json",
4454
4459
  "mode": "0000644",
4455
- "sha256": "cc7928257991f5c7c4fdbfb0ce7f790ed9f0951f6ec3eeedc6ba90b122a798c8"
4460
+ "sha256": "8d50d0553d02d4cc0655c2bdf7d92710082daae6ea9bb0f150154c12c0abdeb5"
4456
4461
  },
4457
4462
  {
4458
4463
  "path": "modules/hall-ui/public/settings-sessions.js",
@@ -6342,7 +6347,7 @@
6342
6347
  {
6343
6348
  "path": "modules/ui-design/module.json",
6344
6349
  "mode": "0000644",
6345
- "sha256": "31e80de5f689a2bdaf5eb0ebbb31cc96de99b2e1fe31b0eba9d7f9515d07f0a5"
6350
+ "sha256": "1b7e099867d2ecb1f752652a8e765fd421f87786847d0fe39527f2aa320b5167"
6346
6351
  },
6347
6352
  {
6348
6353
  "path": "modules/ui-design/scripts/design-sync.js",
@@ -6367,7 +6372,7 @@
6367
6372
  {
6368
6373
  "path": "modules/ui-design/skills/README.md",
6369
6374
  "mode": "0000644",
6370
- "sha256": "018332aa1b1dae06abfecdd96b64cdd0f99132be1c925b2a77484e69865c83f3"
6375
+ "sha256": "29d570739f8b22fa030631ae623a78c2676d4dcd8f94bbf40674617b8414a7da"
6371
6376
  },
6372
6377
  {
6373
6378
  "path": "modules/ui-design/skills/design-taste-frontend-v1/SKILL.md",
@@ -6384,6 +6389,101 @@
6384
6389
  "mode": "0000644",
6385
6390
  "sha256": "eeb33e0a2d0a227d23b67c5e6d32c5757d8d5d7249a1a6d0fe3c67d8bd95fc91"
6386
6391
  },
6392
+ {
6393
+ "path": "modules/ui-design/skills/impeccable/SKILL.md",
6394
+ "mode": "0000644",
6395
+ "sha256": "b82bde6df7fd759d57c11e072a427bf5e88f9558deb8ce746b89fa031d06d051"
6396
+ },
6397
+ {
6398
+ "path": "modules/ui-design/skills/impeccable/reference/adapt.md",
6399
+ "mode": "0000644",
6400
+ "sha256": "2721796c15d32d123d8585ec544614455d7992a9d62055edc90742cf14c75c29"
6401
+ },
6402
+ {
6403
+ "path": "modules/ui-design/skills/impeccable/reference/animate.md",
6404
+ "mode": "0000644",
6405
+ "sha256": "b4763d82dfa55abf84258f7d1e466e3e7cfed23f1062a85fbc2235dc58bd9e59"
6406
+ },
6407
+ {
6408
+ "path": "modules/ui-design/skills/impeccable/reference/audit.md",
6409
+ "mode": "0000644",
6410
+ "sha256": "724b4e9f9763d835695a5b1249ba8cc38c4f906d8d3f8b3fc8c267549c4c6edc"
6411
+ },
6412
+ {
6413
+ "path": "modules/ui-design/skills/impeccable/reference/bolder.md",
6414
+ "mode": "0000644",
6415
+ "sha256": "5637eb523c23e81bf609c0247c9d389c07636a8b00dc3435eca57660d5c30102"
6416
+ },
6417
+ {
6418
+ "path": "modules/ui-design/skills/impeccable/reference/clarify.md",
6419
+ "mode": "0000644",
6420
+ "sha256": "f1e4803f60fb657e4a1113cdc2f2ca14b1d9154ef9e88d6615af81eb422a50ec"
6421
+ },
6422
+ {
6423
+ "path": "modules/ui-design/skills/impeccable/reference/colorize.md",
6424
+ "mode": "0000644",
6425
+ "sha256": "8aebf2e3b5a03bec6a6db623a227b917679c5a497741337cdb91737766f04f35"
6426
+ },
6427
+ {
6428
+ "path": "modules/ui-design/skills/impeccable/reference/critique.md",
6429
+ "mode": "0000644",
6430
+ "sha256": "8aa3abc015bf692e9292f31ae769faef2cc60d0f248d3d60ee829cbb41ecb596"
6431
+ },
6432
+ {
6433
+ "path": "modules/ui-design/skills/impeccable/reference/distill.md",
6434
+ "mode": "0000644",
6435
+ "sha256": "2a9f490ead7f971537f362dc5fcd0a44886d342e90325a001525231d245c5358"
6436
+ },
6437
+ {
6438
+ "path": "modules/ui-design/skills/impeccable/reference/document.md",
6439
+ "mode": "0000644",
6440
+ "sha256": "7d39eaefe7f3338928bd7b877ddc6408e079ccc5ba50a6ea025e81d04b195613"
6441
+ },
6442
+ {
6443
+ "path": "modules/ui-design/skills/impeccable/reference/extract.md",
6444
+ "mode": "0000644",
6445
+ "sha256": "3792d4af2140ad75c5b97fa2cbe60efa21dd97ed13034c5ed8d648ee477bf45a"
6446
+ },
6447
+ {
6448
+ "path": "modules/ui-design/skills/impeccable/reference/harden.md",
6449
+ "mode": "0000644",
6450
+ "sha256": "e3eb2b4fc6e1c978f6766270f14cc306d1d72364f848991b94132dae7bab1239"
6451
+ },
6452
+ {
6453
+ "path": "modules/ui-design/skills/impeccable/reference/layout.md",
6454
+ "mode": "0000644",
6455
+ "sha256": "e8ba930c3afc9ca508b39d62c0fe2503cc7151214a3e38485172d650339eb559"
6456
+ },
6457
+ {
6458
+ "path": "modules/ui-design/skills/impeccable/reference/onboard.md",
6459
+ "mode": "0000644",
6460
+ "sha256": "66ba79216413c9b84c08a1c78235ba8a2e4b46b99335c4b223a904682f8d98e6"
6461
+ },
6462
+ {
6463
+ "path": "modules/ui-design/skills/impeccable/reference/optimize.md",
6464
+ "mode": "0000644",
6465
+ "sha256": "896d171ff0426ae61098c2113888af70e0530ae2851b7d26b8122afc0cbe3fff"
6466
+ },
6467
+ {
6468
+ "path": "modules/ui-design/skills/impeccable/reference/polish.md",
6469
+ "mode": "0000644",
6470
+ "sha256": "1a2e89db89cfc6a30dcd6f7e6afa6b26cfb8237813052a60d823c55aa080457a"
6471
+ },
6472
+ {
6473
+ "path": "modules/ui-design/skills/impeccable/reference/quieter.md",
6474
+ "mode": "0000644",
6475
+ "sha256": "7da009c09724463a2040b4cc705723ac68b00fea8699cd39a92d1aa55ef06995"
6476
+ },
6477
+ {
6478
+ "path": "modules/ui-design/skills/impeccable/reference/shape.md",
6479
+ "mode": "0000644",
6480
+ "sha256": "e9ca1b4be020c83b1ba5721bf51104d21e82ffda21aa7979ba295e77575b8cdc"
6481
+ },
6482
+ {
6483
+ "path": "modules/ui-design/skills/impeccable/reference/typeset.md",
6484
+ "mode": "0000644",
6485
+ "sha256": "d960ee789a1b5d44c06bab53d2a661800457960cb121cf1496ba928792fa9307"
6486
+ },
6387
6487
  {
6388
6488
  "path": "modules/ui-design/skills/policy.json",
6389
6489
  "mode": "0000644",
@@ -6462,12 +6562,12 @@
6462
6562
  {
6463
6563
  "path": "package-lock.json",
6464
6564
  "mode": "0000644",
6465
- "sha256": "3ca799f0609f1ad2e4bfea78e7bba57f976b6df4df4cefad5e0229e3f5e2a8ab"
6565
+ "sha256": "7822706326857983b25da07c35e2750870c686b1bcec12f587df6a329c5a589a"
6466
6566
  },
6467
6567
  {
6468
6568
  "path": "package.json",
6469
6569
  "mode": "0000644",
6470
- "sha256": "8ea4badf28d81545fe9d546df94c49da9980c78650f8a7fdc13a8b907168787c"
6570
+ "sha256": "dcc27e26e0975c93c878be3f06c4b4a1ad0c66074ffcef687475aebe1b66277f"
6471
6571
  },
6472
6572
  {
6473
6573
  "path": "public-docs/index.html",
@@ -8117,7 +8217,7 @@
8117
8217
  {
8118
8218
  "path": "src/module-api.js",
8119
8219
  "mode": "0000644",
8120
- "sha256": "2f2268d16d20bc3ae5c531c9bab8faae7a323a0517c4b9692dc7d10fd3fd5d26"
8220
+ "sha256": "1547fb781bcaa6916626669f3b662489da2858d540be6e11d20a9bc0ed20a846"
8121
8221
  },
8122
8222
  {
8123
8223
  "path": "src/module-loader/catalog.js",
@@ -9534,6 +9634,11 @@
9534
9634
  "mode": "0000644",
9535
9635
  "sha256": "09a7aadf345c75208af035a0f6fad1ecfe10ff056b025d885361647d4e8127b9"
9536
9636
  },
9637
+ {
9638
+ "path": "tests/hall_roster_world.mjs",
9639
+ "mode": "0000644",
9640
+ "sha256": "1791571b220385664394e77546cdf7359147c3f3d32b56938290bec4294c6020"
9641
+ },
9537
9642
  {
9538
9643
  "path": "tests/hall_signout.mjs",
9539
9644
  "mode": "0000644",
@@ -11032,7 +11137,7 @@
11032
11137
  {
11033
11138
  "path": "tests/ui_design_skills.mjs",
11034
11139
  "mode": "0000644",
11035
- "sha256": "73a4c7e6b29f2703b866f3241a459fd0c4a57b7b606f0058905306b624134b1b"
11140
+ "sha256": "391f6e8c5ff83e4c3c1e2148aed74c3346200efabc59657ac99820cfcfdac1ac"
11036
11141
  },
11037
11142
  {
11038
11143
  "path": "tests/ui_design_styles.mjs",
@@ -61,12 +61,13 @@ Third-party design skills reach a builder only through the module's vendoring po
61
61
 
62
62
  - *None vendored (2026-08-28).* Both origins scanned for the scoped set — `pbakaus/impeccable`, and the eleven `Leonxlnx/taste-skill` skills (`minimalist-ui`, `industrial-brutalist-ui`, `gpt-taste`, `stitch-design-taste`, `image-to-code`, `imagegen-frontend-web`, `imagegen-frontend-mobile`, `brandkit`, and the four below) — reduced to `dangerous` at the scanner's deterministic floor and landed as rebuild specs (GDS tasks). The roster, the verdicts and the way to land one are in the README; vendoring one anyway is an owner override recorded in an ADR, not a session's call.
63
63
 
64
- **Rebuilt in-house from the specs** ([ADR 0220](../../../docs/adr/<redacted>.md), task 1003325): first-party skills at `modules/ui-design/skills/<name>/`, each opening with the same preamble, each naming its spec and what changed in translation. They run INSIDE the loop above: the world first, the style library as the palette source for a variant, images as hero plates only, every motion rule inside the Kill Switch, the kit as the pre-flight.
64
+ **Rebuilt in-house from the specs** ([ADR 0220](../../../docs/adr/<redacted>.md), task 1003325; [ADR 0221](../../../docs/adr/<redacted>.md), task 1003326): first-party skills at `modules/ui-design/skills/<name>/`, each opening with the same preamble, each naming its spec and what changed in translation. They run INSIDE the loop above: the world first, the style library as the palette source for a variant, images as hero plates only, every motion rule inside the Kill Switch, the kit as the pre-flight.
65
65
 
66
66
  - **design-taste-frontend** — the default taste skill for a landing page, a portfolio or a marketing surface: the brief read in one line, three dials from presets, one world locked for the page, hero and layout discipline, rationed decoration, a pre-flight the kit measures. Declines dashboards, tables, wizards and editors.
67
67
  - **design-taste-frontend-v1** — the earlier generation, kept distinct: a fixed baseline triple adapted in conversation, stack conventions for a served surface, the layout bans, full interaction cycles, the named vocabulary of premium patterns and the tile-grid archetypes.
68
68
  - **high-end-visual-design** — the agency-build polish pass: one texture archetype (the library's looks) and one layout archetype per project, the nested container anatomy where the world allows a container, the pill with its nested arrow disc, the spatial rhythm, choreography and scroll entry inside the Kill Switch.
69
69
  - **redesign-existing-projects** — the in-place upgrade: scan the stack, diagnose against the seven-group audit with the instance's world as the answer key, fix in impact-per-risk order, one group per commit; keeps the stack, never migrates frameworks, `probe.js` green before and after.
70
+ - **impeccable** — the design-craft method as one skill with sub-commands: `impeccable <sub-command> <target>` loads exactly one of eighteen playbooks (shape, critique, audit, polish, harden, onboard, animate, colorize, typeset, layout, adapt, distill, clarify, optimize, document, extract, bolder, quieter); no argument prints a menu from live project signals and never auto-runs; a bare description is routed to the closest playbook; carries the craft floor (loaded right before UI is edited, never recited) and the bounded finish (build, one kit round, one batch of fixes, at most one confirming round, stop; a read-only reviewer that answers with one of four words). No hooks, no bypass agent, no telemetry, no live server: the live loop is the playwright plugin below and the headless loop is the kit; the detector is task 1003329; native mobile declines to this loop.
70
71
 
71
72
  **Prerequisite, not vendored:** the **playwright plugin** (`claude plugin install playwright@claude-plugins-official`) is the LIVE browser-driving loop, where the kit in Step 2 is the headless one. Install it on the machine that runs a design session; the module never installs anything.
72
73
 
@@ -0,0 +1,36 @@
1
+ # ADR 0221 — The impeccable method is one skill with sub-command playbooks: one preamble, one playbook per request, the three homes are the instance's own files, and the origin's mechanisms are dropped rather than disabled
2
+
3
+ - **Status:** Accepted (2026-09-01)
4
+ - **Task:** [task 1003326](https://cloudbongos.com/builders#/task/1003326) (goal 1000083 — the ui-design module as a platform capability; the second rebuild-spec task after [ADR 0220](<redacted>.md))
5
+ - **Owner intent (2026-08-28):** every builder, on every instance, can produce good-looking, functional UIs in line with that instance's world. The impeccable skill was the operating skill the hub round ran under; the scan said it could not be copied, so its method is rebuilt.
6
+
7
+ ## Context
8
+
9
+ `/scan-before-install` reduced `pbakaus/impeccable` @ `<redacted>` to `dangerous` at the default tier: three critical findings at the deterministic floor, and a panel that upheld PostToolUse and Stop hooks written into five harness configs, a child agent spawned with its permissions bypassed from a loopback HTTP route with the parent environment forwarded, a setup directive that overrode the harness's own instructions, a live-server credential embedded in page source, an unverified remote bundle, and default-on telemetry ([ADR 0198](<redacted>.md); the roster in `modules/ui-design/skills/README.md`). The REBUILD-SPEC in the task body lists a hundred and forty requirements derived from the origin's documentation only, across twelve areas: entry, world, commands, craft floor, detector, live, finish, native, hooks, assets, docs.
10
+
11
+ ADR 0220 fixed where a rebuild lives and what it carries. It did not say how a method that is a *family of sub-commands* lands (the taste core was four independent skills), what the origin's three persisted homes (product truth, the visual system, per-surface briefs) become on a platform whose world is already the instance's files, or what to do with the six areas of the spec whose whole substance is the mechanism the panel condemned.
12
+
13
+ ## Decision
14
+
15
+ 1. **One skill, one playbook per request.** The method is `modules/ui-design/skills/impeccable/SKILL.md` (the frontmatter, the preamble, the `## Rebuilt from` section, invocation, the menu, the session setup, the three homes, the routing table, the craft floor, the finish, and what is not here) plus `reference/<sub-command>.md`, one file per playbook, eighteen in all: the sixteen the task body names (`shape`, `audit`, `critique`, `polish`, `harden`, `animate`, `typeset`, `colorize`, `layout`, `adapt`, `distill`, `clarify`, `onboard`, `optimize`, `document`, `extract`) and the two directions the spec lists beside them (`bolder`, `quieter`). A request loads exactly one playbook, which is the spec's own entry rule and the reason the playbooks are not inlined: a single file would load every playbook on every request. The preamble is pinned **once**, in `SKILL.md`, and governs every playbook; a playbook that carried a copy would be a second pin. The materialiser's own-dir branch already copies the tree recursively, so `reference/` ships with the skill and nothing in `claude-materialize.js` changes.
16
+ 2. **The three homes are the instance's files, and the skill creates none of them.** Product truth is `docs/project-context.template.md` and the branding pack's identity strings; the visual system is the root `DESIGN.md` (and a look's `DESIGN.md` under `modules/ui-design/styles/`); the per-surface brief is the claimed task's body and its ship notes, in a fixed brief block (scope, mode, audience, primary action, proof, constraints, direction, memorable moment, open decisions). The spec's read-and-write brief helper, its versioned product-doc schema and its sidecar file become that block and the existing files. `shape` proposes edits to product truth as a diff for the owner; `document` drafts the visual system on the claim's branch, never overwrites an existing one without the explicit refresh / overwrite / merge choice, and never runs in the same pass as `shape`. The module reads the world and never owns it (ADR 0197); a skill that wrote `DESIGN.md` on its own authority would be the inversion the module exists to prevent.
17
+ 3. **Dropped, not disabled, and each drop has a named destination.** Hooks: none, in any harness config; the platform's ship gate is the sweep and the pre-flight is the kit. The bypass agent: none; the finish's separate reviewer is an ordinary subagent through the harness's own Agent tool with its ordinary permissions and no build context. Telemetry, the remote bundle, the live-server credential: none. The live loop (a helper server, an injected control bar, a session journal, CSP patching, in-page text editing, accept / discard / normalise): the playwright plugin as a documented prerequisite driving the kit's stub, with variants as states in the states file, accept as a commit and discard as a checkout, and nothing to sweep because nothing was injected. The detector: task 1003329, as rules in `kit/check-mock.js` and `kit/lib.js`; until then `check-mock.js`, `render.js`'s floors and `contrast.js` are the deterministic floor, run once per review round and treated as a floor, never as proof. The asset producer: the owner's hero-plates-only rule and task 1003328. The native playbooks: not rebuilt; every surface here is a served web page, so a native target declines to `/design` with one line. `init`, `doctor`, `pin`, `unpin` and the installer existed to write and repair the origin's own config and harness entries; the materialiser is the install and there is no stored artifact of the skill's own to drift.
18
+ 4. **The finish is the kit in bounded rounds, and the reviewer speaks four words.** Build fully; one batched inspection (`render.js` every state at 1440 / 390 / 320 in the modes the states file names, `probe.js` for the contract); fix everything in one batch; at most one confirming round; stop, with shots, checks, micro-edits and rebuilds all counted against the same budget. The reviewer takes an explicit packet, runs an evidence check first (`recapture` on missing, blank, mismatched or implausibly sized captures), inventories the approved mock itself, treats an uncited deviation as a defect, and returns one of `clean`, `recapture`, `defects`, `contradicted`, reported unchanged and at its true scope; a second pass scores each fix resolved / partial / unresolved from new captures only. The platform's ship-time grader is the second independent reviewer and reads the real diff.
19
+ 5. **The craft floor is mechanics, loaded late, never recited.** It sits in `SKILL.md` after direction is settled and before UI is edited, is skipped by the read-only playbooks, and is translated for a world that may be hairlines by rule: where the world has shadows they carry offset and blur, where it has none the absence is the floor; a kicker above a heading is refused where the world bans one; the pack's faces are the display voice. With every check green the remaining effort goes to the committed world.
20
+ 6. **The pins** (`tests/ui_design_skills.mjs`): `impeccable` exists and is declared; each of the sixteen named sub-commands has a playbook and each playbook on disk is routed from `SKILL.md` (no orphan); no playbook carries the preamble marker; every playbook is longer than a stub; nothing in the tree directs a permission bypass, a hook written into a harness config, a settings-file edit, telemetry, a remote download, a live-server credential or an instruction override (naming a ban is fine, directing it is not, the same shape as ADR 0220's image-mandate pin); `SKILL.md` names the playwright plugin, `kit/render.js` and task 1003329. The ADR 0220 own-skill pins apply unchanged.
21
+
22
+ ## Consequences
23
+
24
+ - **Five in-house skills ship with the module.** The roster in `/design`, the README, the module `CLAUDE.md` and `docs/file-map.md` names all five. The core checkout still does not see them (task 1003330).
25
+ - **A builder with the upstream `impeccable` under `~/.claude/skills`** has a collision by design, the ADR 0220 shape: the module's copy is the one an instance ships, and none of the upstream files were opened by this task.
26
+ - **The DONE WHEN's "one page rendered through the kit after each of three sub-commands"** is met with the three review playbooks (`audit`, `critique`, `harden` as a review of the states) against the front door, rendered ALL CLEAN after each; the playbooks that edit are proven by the pins and by the kit they point at, not by a change to a shipped surface inside a skill-authoring task.
27
+ - **A future harness that supports skill sub-commands natively** changes only the routing paragraph; the playbooks are already one file each.
28
+
29
+ ## Rejected
30
+
31
+ - **Eighteen skills, one per sub-command.** Eighteen preamble copies, eighteen descriptions competing for the harness's routing, and the spec's own entry rule (one name, an optional sub-command) contradicted.
32
+ - **One `SKILL.md` carrying every playbook inline.** Loads the whole method on every request; the spec's "load exactly one playbook" exists to prevent exactly that.
33
+ - **A hooks-lite variant** (a documented opt-in hook the builder writes themselves). A hook written into a harness config is the finding, with or without consent; the pre-flight is the kit and the ship gate is the sweep.
34
+ - **A reviewer with elevated permissions** to "match the origin's autonomy". The reviewer is read-only by definition; it needs nothing the Agent tool does not give it.
35
+ - **A `doctor`** to repair drift between the skill's artifacts and its version. The skill has no artifacts of its own; the kit's report is regenerated every run.
36
+ - **Rebuilding the native playbooks** for a platform that serves web surfaces. Scope with no customer; the one principle worth keeping is stated in one line in the skill.
@@ -307,5 +307,6 @@ This keeps the decision history honest and traceable.
307
307
  | 0218 | [**The apex-root web surface: a module may own the front door, and says so with a flag, not an empty prefix** ([task 1003322](https://cloudbongos.com/builders#/task/1003322) · goal 1000080 — the last of the five tasks scoped with the owner on 2026-08-28). Carves the repo-root `public-landing/` into `modules/public-landing/`, the THIRD web-surface module after status-UI (BV1.R84) and hall-UI (BV1.R85) and the first that is not a subdomain. The obstacle: `moduleWebSurfaces()`'s whole routing vocabulary was a Host-header PREFIX, and the apex root is not a prefix of anything — it is whatever is left once the subdomains are taken. So a surface now names where it answers in exactly one of two ways, `{ host: "status.", dir }` or `{ apexRoot: true, dir }`, never both and never neither. **`host: ""` is rejected on purpose:** the routers match with `host.startsWith(s.host)` and every string starts with `""`, so an empty prefix would answer on `builders.`/`status.` too AND make `isModuleSurfaceHost()` true for every request — the predicate eleven `/builders` guards use to step aside — silently un-serving the hall. A boolean cannot be mistaken for a prefix. The landing keeps its DEDICATED serving block (the hall precedent): the apex-only strip, the branding stamp, the `?v=` content stamp and the six routes are untouched; only `LANDING_DIR` changes, from a hardcoded path to a lookup through the loader, resolved by the `apexRoot` PREDICATE so neither `platform-server.js` nor `serve-internal.js` names a module key (ADR 0083 §Decision #4). Disabling the module removes the front door outright and the apex answers the game-less 404 tail — the module contract's "disable without breaking anything" in its most literal form. At most one apex-root surface: the first discovered wins and a second is logged. Also: the BV1.R76 host-identity gate learned that an **apex-only region is exempt** — the server deletes it on every non-hub instance, so it cannot make a child render the hub's brand, which is the failure that gate names. Evidence: the five apex pages hashed as served, before and after, differ by exactly the same 22 bytes — `"public-landing":true,`, the module's own `window.__MODULES__` entry — and are otherwise identical; the 106 moved files hash identically on disk.](<redacted>.md) |
308
308
  | 0219 | [**A look is a branding pack: the style library ships looks as `theme.ui` overlays, never as sheets** ([task 1003323](https://cloudbongos.com/builders#/task/1003323) · goal 1000083). The owner scoped "varying ui styles" for the ui-design module; the shape was decided by three facts: every served sheet already reads only the contract and is measured by a suite that resolves its own expressions under the pack (ADR 0196), the pack is one-mode (light values; dark is each sheet's black tier), and the world round's candidate token layers were sheets, not packs. Decisions: **D1** a look is `modules/ui-design/styles/<name>/` = `pack.json` (the `theme.ui` overlay, exactly the thirteen colours + the two font stacks and their links) + `DESIGN.md` (the derived recipes in the root DESIGN.md's frontmatter shape, thirteen in lockstep with the pack) + `mock.html` (a specimen with no `:root`, served through the stub with the pack spliced in), never a fork of a sheet; a sixteenth token is a contract change. **D2** `chrome-world` is canonical and pinned byte-for-byte to the neutral pack; its DESIGN.md points at the root one. **D3** the alternates `expedition` (natgeo-editorial) and `grove` (organic-cards) are ported by retuning the thirteen against the three sheets' own pair lists in both modes until every pair clears AA (the grove's sage lifted and its inks deepened for the hub's status vocabulary and the hall's chips); dark under both is the sheets' black. **D4** the picker rides `GDS_BRANDING_FILE`, the fixed knob `src/branding.js` already has: `STYLE=<name>` on the stub, `--style` on render/probe, `--pack <name>` on contrast/check-mock; no core change. **D5** the three token suites take `UI_DESIGN_PACK` and their drift tests keep measuring against the neutral pack; `tests/ui_design_styles.mjs` runs them once per alternate and proves the knob live with a pack that must fail. **D6** an instance adopts a look by copying `theme` into `config/branding.json`; what stays the platform's whichever look is on: the dark ground, the hall's verification vocabulary, every sheet's derived tier, the floors. Rejected: sheets per look beside world.css; a dark tier in the contract; a picker that writes the host boundary.](<redacted>.md) | ui-design / branding contract |
309
309
  | 0220 | [**An in-house rebuilt skill is a first-party skill: it lands at `skills/<name>/`, opens with the same preamble, carries a "Rebuilt from" section instead of a sidecar, and is counted** ([task 1003325](https://cloudbongos.com/builders#/task/1003325) · goal 1000083). ADR 0198 landed both scanned origins as rebuild specs and left the roster empty; this is the first rebuild — the taste core: `design-taste-frontend`, `design-taste-frontend-v1`, `high-end-visual-design`, `redesign-existing-projects` — and the policy had not said where a rebuild lives, what replaces `PROVENANCE.md`, whether a preamble written for vendored copies still fits, or whether five byte-identical copies of it trip the doc-entropy ratchet (they would have: baseline 6). Decisions: **D1** a rebuild is `modules/ui-design/skills/<name>/SKILL.md`, declared in `module.json`, materialised by step 1b's own-dir branch (no sidecar gate), first-party and counted by every ratchet — no `rebuilt/` exemption like `vendor/`, because these are our lines. **D2** one preamble worded for both origins ("vendored from a scanned origin, or rebuilt in-house from a spec"), still byte-identical everywhere; a rebuild's provenance is its `## Rebuilt from` section first after the block: the origin the SPEC was derived from (documentation only), the verdict, the spec task, "no upstream bytes consulted or copied", this ADR, and what changed in translation; no `PROVENANCE.md`, no `LICENSE`. **D3** the translation rules for every rebuilt taste skill: the palette is the pack and variants come from the style library (ADR 0219); the design system is the instance's `DESIGN.md`; imagery is hero plates and hero objects by token and never a step; every motion rule lives inside the Kill Switch (springs, magnetic hover, pointer-tracked borders are named *not available*); the upstream's bans are defaults an instance's `DESIGN.md` overrides, and where the world calls for what an audit would flag, the world is the answer key. **D4** `docs-entropy.js` skips a paragraph opening with the preamble marker beside its generated-block skip, calibrated against a plain duplicate that is still flagged. **D5** v1 is a distinct skill differing in content (the fixed triple, the stack conventions, the pattern vocabulary, the tile-grid archetypes), not a version stamp. **D6** the pins in `tests/ui_design_skills.mjs`: frontmatter name = dir, preamble first and once, the section's task link + ADR 0198 + "no upstream bytes", the style library and "hero plates" named, no image mandate, no sidecar, every door lists the four. Rejected: a sidecar with the spec's commit; a second preamble; a `rebuilt/` segment; vendoring anyway (an owner override, not taken); folding v1 into v2; raising the doc baseline.](<redacted>.md) | ui-design / skills |
310
+ | 0221 | [**The impeccable method is one skill with sub-command playbooks: one preamble, one playbook per request, the three homes are the instance's own files, and the origin's mechanisms are dropped rather than disabled** ([task 1003326](https://cloudbongos.com/builders#/task/1003326) · goal 1000083). `pbakaus/impeccable` scanned `dangerous` (ADR 0198: hooks written into five harness configs, a child agent with permissions bypassed, an instruction override, a live-server credential in page source, an unverified remote bundle, default-on telemetry), so its method is rebuilt from the spec. ADR 0220 fixed where a rebuild lives; it had not said how a family of sub-commands lands, what the origin's three persisted homes become, or what to do with the six spec areas whose substance is the condemned mechanism. Decisions: **D1** one skill at `skills/impeccable/`: `SKILL.md` (invocation, the menu from live signals, session setup, the three homes, the routing table, the craft floor, the bounded finish, what is not here) plus `reference/<sub-command>.md`, eighteen playbooks, exactly one loaded per request (the spec's own entry rule); the preamble pinned once in `SKILL.md` and governing every playbook; the materialiser's tree copy ships `reference/` unchanged. **D2** the three homes are the instance's files (product truth = `docs/project-context.template.md` + the pack's identity; the visual system = the root `DESIGN.md` and a look's; the brief = the task's body + a fixed brief block in the ship notes); the skill creates none, `shape` proposes diffs, `document` drafts on the claim's branch with the refresh / overwrite / merge choice. **D3** dropped, not disabled, each with a destination: hooks → none (the ship gate is the sweep, the pre-flight is the kit); the bypass agent → an ordinary read-only subagent via the Agent tool; telemetry, the remote bundle, the credential → none; the live loop → the playwright plugin driving the kit's stub, variants as states, accept = commit, discard = checkout, nothing injected; the detector → task 1003329; the asset producer → the hero-plates rule and task 1003328; native → declines to `/design`; `init`/`doctor`/`pin`/installer → the materialiser is the install. **D4** the finish is the kit in bounded rounds (build, one batched inspection, one batch of fixes, at most one confirming round, stop, one budget) and the reviewer answers with one of `clean` / `recapture` / `defects` / `contradicted` after an evidence check and its own mock inventory. **D5** the craft floor is mechanics loaded late and never recited, translated for a world that may be hairlines by rule. **D6** the pins: sixteen routed playbooks, no orphan, no preamble copy in a playbook, and nothing in the tree directing a bypass, a hook write, a settings edit, telemetry, a remote download, a credential or an override. Rejected: eighteen skills; one inline file; a hooks-lite opt-in; an elevated reviewer; a `doctor`; the native playbooks.](<redacted>.md) | ui-design / skills |
310
311
 
311
312
  > ⚠️ **Numbering collisions are now machine-enforced, not narrated.** Twenty numbers are shared by two ADRs each — assigned in parallel sessions before anything checked. The files keep their filenames (renumbering would break every existing citation, and a number once assigned is never reused), and this table disambiguates each pair as `NNNN-a` / `NNNN-b`. The authoritative list is `LEGACY_DUPLICATE_ADRS` in [`scripts/gds/adr-namespace.js`](../../scripts/gds/adr-namespace.js), frozen by exact filename: a **new** collision — or a third file joining a legacy number, or a rename of either half — hard-fails the `unit` CI gate, as does an index row that points at no file or an ADR with no row. The list may only shrink. This paragraph used to narrate the collisions one by one and had fallen eight behind reality; see [ADR 0195](<redacted>.md) for why the check exists and why the pairs are grandfathered rather than renumbered.