@bongos/core 1.19.1063 → 1.19.1065

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 (65) hide show
  1. package/.bongos-core.json +136 -56
  2. package/.claude/skills/grade-recover/SKILL.md +1 -0
  3. package/.claude/skills/tweak/SKILL.md +70 -0
  4. package/clients/bongos-client/README.md +1 -1
  5. package/clients/bongos-client/bongos-client.global.js +12 -0
  6. package/clients/bongos-client/index.cjs +12 -0
  7. package/clients/bongos-client/index.d.ts +21 -1
  8. package/clients/bongos-client/index.mjs +12 -0
  9. package/docs/api/openapi.json +492 -4
  10. package/docs/api-reference.md +9 -3
  11. package/docs/copy-inventory.md +60 -41
  12. package/docs/copy-registry.json +228 -47
  13. package/docs/file-map.md +1 -0
  14. package/docs/module-api-changelog.md +4 -0
  15. package/docs/page-inventory.json +11 -2
  16. package/docs/page-readings.json +45 -22
  17. package/modules/copy-desk/page-decisions.js +71 -0
  18. package/modules/copy-desk/page-status.js +96 -0
  19. package/modules/copy-desk/pages.js +30 -0
  20. package/modules/copy-desk/routes/copy-desk.js +153 -0
  21. package/modules/copy-desk/tests/copy_no_cms.mjs +40 -4
  22. package/modules/hall-ui/public/approval-queue-lib.js +156 -0
  23. package/modules/hall-ui/public/approval-queue.css +286 -0
  24. package/modules/hall-ui/public/approval-queue.js +338 -0
  25. package/modules/hall-ui/public/studio.css +33 -0
  26. package/modules/hall-ui/public/studio.html +18 -1
  27. package/modules/hall-ui/public/studio.js +30 -0
  28. package/modules/hall-ui/public/studio.states.json +198 -0
  29. package/modules/hall-ui/records/approval-queue.md +32 -0
  30. package/modules/lifecycle/db-grade.js +96 -58
  31. package/modules/lifecycle/github-pr-close.js +41 -0
  32. package/modules/lifecycle/github-push.js +5 -2
  33. package/modules/lifecycle/lifecycle.js +12 -0
  34. package/modules/lifecycle/migrations/lifecycle_013_task_visual_slots.sql +52 -0
  35. package/modules/lifecycle/page-tweak-approve.js +242 -0
  36. package/modules/lifecycle/page-tweak-hold.js +74 -0
  37. package/modules/lifecycle/page-tweak-reads.js +33 -1
  38. package/modules/lifecycle/routes/gate-approvals.js +17 -2
  39. package/modules/lifecycle/routes/tasks.js +4 -2
  40. package/modules/lifecycle/routes/visuals.js +82 -0
  41. package/modules/lifecycle/task-visual-db.js +40 -1
  42. package/modules/lifecycle/task-visuals.js +24 -0
  43. package/package-lock.json +2 -2
  44. package/package.json +1 -1
  45. package/release-notes.json +12 -0
  46. package/scripts/gds/copy-apply.js +277 -1
  47. package/scripts/gds/page-reader.js +2 -0
  48. package/scripts/gds/ship-finish.js +27 -2
  49. package/scripts/gds/ship-flow.js +17 -1
  50. package/scripts/gds/ship-land.js +30 -7
  51. package/scripts/gds/ship-merge.js +43 -15
  52. package/scripts/gds/strand-watch.js +41 -1
  53. package/scripts/gds/task.js +23 -5
  54. package/scripts/gds/tweak-renders.js +200 -0
  55. package/scripts/hall-preview/server.js +18 -0
  56. package/src/module-api.js +1 -1
  57. package/tests/copy_desk_page_approve.mjs +307 -0
  58. package/tests/fixtures/page-ledger.mjs +41 -1
  59. package/tests/gate_approvals.mjs +93 -0
  60. package/tests/hall_approval_queue.mjs +327 -0
  61. package/tests/hall_audit.mjs +4 -0
  62. package/tests/page_tweak_hold.mjs +265 -0
  63. package/tests/publish_status_branch.mjs +23 -0
  64. package/tests/task_visual_slots.mjs +161 -0
  65. package/tests/tweak_batch_apply.mjs +265 -0
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.1063",
6
- "core_contract": "1.19.1063",
7
- "source_commit": "63e2f7bb716c0dc0961bb67e49922d15f2ed6c76",
5
+ "core_version": "1.19.1065",
6
+ "core_contract": "1.19.1065",
7
+ "source_commit": "9eb2bc904c90fb783c60a1f9dc5c25e5e70682cb",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-09-28T14:25:56.766Z",
9
+ "built_at": "2026-09-28T16:27:32.366Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
- "docs_redacted": 544,
12
+ "docs_redacted": 546,
13
13
  "agent_docs_stubbed": 26,
14
- "functional_verbatim": 2542,
14
+ "functional_verbatim": 2556,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 3113,
20
- "tree_sha256": "5c8879d08015963d5d71b6092f41e0ec028b78673d0e79c0d92fb69c978309fe",
19
+ "file_count": 3129,
20
+ "tree_sha256": "663cedc98127e9b0caa2437170740a645d68b7988452df288137ca46fcc0a534",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/ask-for-help/SKILL.md",
@@ -162,7 +162,7 @@
162
162
  {
163
163
  "path": ".claude/skills/grade-recover/SKILL.md",
164
164
  "mode": "0000644",
165
- "sha256": "e707dd0146a124d1c01e80cad56c8585603aa1cff306c9ea8a2a0a14a25a564d"
165
+ "sha256": "ebac3977d503219af8d71862cca4cd7feb3678e12713180a5df7c2a10cbaaf6d"
166
166
  },
167
167
  {
168
168
  "path": ".claude/skills/grader-health/SKILL.md",
@@ -254,6 +254,11 @@
254
254
  "mode": "0000644",
255
255
  "sha256": "938a3a8ee5bfb25036f03519fc27de795ba88bd7ed8b33a7f6e31639023b4304"
256
256
  },
257
+ {
258
+ "path": ".claude/skills/tweak/SKILL.md",
259
+ "mode": "0000644",
260
+ "sha256": "32ad8abbe4f51d1b2e0a574810074843f76088b45c5dcc957948c634f6d1bb8f"
261
+ },
257
262
  {
258
263
  "path": ".claude/skills/worktree-clean/SKILL.md",
259
264
  "mode": "0000644",
@@ -317,12 +322,12 @@
317
322
  {
318
323
  "path": "clients/bongos-client/README.md",
319
324
  "mode": "0000644",
320
- "sha256": "ca931cbbd9382e0f899e5e7c2d4c2a1addb759f4457bf7cfb860c519d2e4bacd"
325
+ "sha256": "fb00c2f5b6df5eb888e4f19c30d94fc621292616ce34ff42b0709e1f46d3c393"
321
326
  },
322
327
  {
323
328
  "path": "clients/bongos-client/bongos-client.global.js",
324
329
  "mode": "0000644",
325
- "sha256": "b98f7525d1849ee33ff9f634207e91d1121d637cab6d6498d832b5873197642b"
330
+ "sha256": "5a286a18ff11cd19728fdec144e8dae76c649784e160238a9102aac636d4af2e"
326
331
  },
327
332
  {
328
333
  "path": "clients/bongos-client/examples/hello-world.mjs",
@@ -332,17 +337,17 @@
332
337
  {
333
338
  "path": "clients/bongos-client/index.cjs",
334
339
  "mode": "0000644",
335
- "sha256": "110ea054c68274e4061a86551872c254297d42ec205de9b5962f485123070fa8"
340
+ "sha256": "fe4f030c5f79376100d3b67f4187b24907e92821eca1125155916a33dc855daa"
336
341
  },
337
342
  {
338
343
  "path": "clients/bongos-client/index.d.ts",
339
344
  "mode": "0000644",
340
- "sha256": "76ddcae95933b3bdd9ae458305082d8f332d6fdd11551bedd26e4854b624199c"
345
+ "sha256": "5d9915f3fc6fadca68a778c93e2cacfe739e7c23ce81e97b718e703e1249daac"
341
346
  },
342
347
  {
343
348
  "path": "clients/bongos-client/index.mjs",
344
349
  "mode": "0000644",
345
- "sha256": "35d5b13ab21b55308e20c02ca61d030176ec431d9159cb852cc82af4dfdcc0c0"
350
+ "sha256": "d3833293ed31827e3884f6bcb310e4c9661e2b540de9d8903aebad044585a336"
346
351
  },
347
352
  {
348
353
  "path": "clients/bongos-client/package.json",
@@ -2177,12 +2182,12 @@
2177
2182
  {
2178
2183
  "path": "docs/api-reference.md",
2179
2184
  "mode": "0000644",
2180
- "sha256": "9c2a01131f4eef126542aca1f664883af254edac3cc148f01e8486adecc1bacf"
2185
+ "sha256": "b3429f16f723721cc25d839b751f8e2039d6bb9deb3cfcdeca5b4b982bc25c58"
2181
2186
  },
2182
2187
  {
2183
2188
  "path": "docs/api/openapi.json",
2184
2189
  "mode": "0000644",
2185
- "sha256": "23089d5d26da4a14d98ea318d2efab582bc502b6d0ac43a1d5a2db1241a47694"
2190
+ "sha256": "db083c90b24ea9af3a3203600ea601ff570619dd20ce0228c045e3debcdda1c7"
2186
2191
  },
2187
2192
  {
2188
2193
  "path": "docs/architecture.md",
@@ -2207,12 +2212,12 @@
2207
2212
  {
2208
2213
  "path": "docs/copy-inventory.md",
2209
2214
  "mode": "0000644",
2210
- "sha256": "0bfc5ea9c331d2797c45cbfaeec7e9b5e264c2feb692a2132ac3dd804d05ea15"
2215
+ "sha256": "a7ca7da1c59a34bb2262ab04592b5fb7e412357a7bfe4088a971ff1fa5a27436"
2211
2216
  },
2212
2217
  {
2213
2218
  "path": "docs/copy-registry.json",
2214
2219
  "mode": "0000644",
2215
- "sha256": "2a35ebbece01958ac642faf2a3680d724b3aa7d3179d690fd9583aaf53cf9cb3"
2220
+ "sha256": "99c1c632a879b69fc60ebcc56843d791dd9b25ec08d2de77140365237b077ccb"
2216
2221
  },
2217
2222
  {
2218
2223
  "path": "docs/design/apex-pass-2-direction.md",
@@ -2732,7 +2737,7 @@
2732
2737
  {
2733
2738
  "path": "docs/file-map.md",
2734
2739
  "mode": "0000644",
2735
- "sha256": "43d6bdc61cd3401d35e68f0e98caa645db48a81eb59df2fd0b0c5e04d42b9254"
2740
+ "sha256": "b230ec822cd4566b826647540821e0e46f2969e066d587b44782ef6690160a5d"
2736
2741
  },
2737
2742
  {
2738
2743
  "path": "docs/handoff-template.md",
@@ -2742,7 +2747,7 @@
2742
2747
  {
2743
2748
  "path": "docs/module-api-changelog.md",
2744
2749
  "mode": "0000644",
2745
- "sha256": "230ca05e2cd108f5648d76a776bfc3aeea2b9628a834e6655b16d9d5f60cb280"
2750
+ "sha256": "218d72a360ed0c079b5428101a3b804789e2df510bb8b223a04d3002a2c7ac99"
2746
2751
  },
2747
2752
  {
2748
2753
  "path": "docs/modules-contract.md",
@@ -2832,12 +2837,12 @@
2832
2837
  {
2833
2838
  "path": "docs/page-inventory.json",
2834
2839
  "mode": "0000644",
2835
- "sha256": "27683df3ef3062442b5a2b3d0d814a2e0d4cfb0c666bf58b96af0f8f5c4bd97e"
2840
+ "sha256": "e50e191636ac7c7baa8ebebce6d93e550aae7a3de13bfdecedd779b17006ebe5"
2836
2841
  },
2837
2842
  {
2838
2843
  "path": "docs/page-readings.json",
2839
2844
  "mode": "0000644",
2840
- "sha256": "d5f8ac454357067ac14cb3550c9d12b2b04143e1e796facce51f0510900f0795"
2845
+ "sha256": "b3b0a741594ce218eca2dcaf25384d8c0db56745c759104bf043ad45925e5075"
2841
2846
  },
2842
2847
  {
2843
2848
  "path": "docs/project-context.template.md",
@@ -4139,15 +4144,20 @@
4139
4144
  "mode": "0000644",
4140
4145
  "sha256": "0233603cfe56b52380fe5470ed0062b742c2f67dc5ea40a7876d0d9d9c0c5085"
4141
4146
  },
4147
+ {
4148
+ "path": "modules/copy-desk/page-decisions.js",
4149
+ "mode": "0000644",
4150
+ "sha256": "b1c8258e9827b17cb5d0548f43cc746e2140ba4e67b9b22ec9fcfd97d584758a"
4151
+ },
4142
4152
  {
4143
4153
  "path": "modules/copy-desk/page-status.js",
4144
4154
  "mode": "0000644",
4145
- "sha256": "e54fe2358641ab6bf157f3a434131a48eda175309480fa402290d8d4e6a431d1"
4155
+ "sha256": "c3f403aed75d46680c4ffde57202ce17f01830d498688081d1c8202865d25900"
4146
4156
  },
4147
4157
  {
4148
4158
  "path": "modules/copy-desk/pages.js",
4149
4159
  "mode": "0000644",
4150
- "sha256": "76141638d80c0f7ba2046fa84f4e1309e020f065ef39c893d77da04ff2a2da73"
4160
+ "sha256": "8653c26ad951f831163cb2b8db4b424c76959cdfcd27ebda5af5d13193361ad0"
4151
4161
  },
4152
4162
  {
4153
4163
  "path": "modules/copy-desk/proposals.js",
@@ -4162,7 +4172,7 @@
4162
4172
  {
4163
4173
  "path": "modules/copy-desk/routes/copy-desk.js",
4164
4174
  "mode": "0000644",
4165
- "sha256": "aab0b4221b092333ac6bc502d1bb45229410c270957025c8af20b4e33c776304"
4175
+ "sha256": "b907b07cf1626c49eb30d7f07aede6434b48d7015d9f935ebc805c42a176a106"
4166
4176
  },
4167
4177
  {
4168
4178
  "path": "modules/copy-desk/tests/copy_docx.mjs",
@@ -4177,7 +4187,7 @@
4177
4187
  {
4178
4188
  "path": "modules/copy-desk/tests/copy_no_cms.mjs",
4179
4189
  "mode": "0000644",
4180
- "sha256": "7d4354fea2dc435e1783cdfbcb07024b40f732d700cbaf7764a79ef2d9f53456"
4190
+ "sha256": "68e3e04bc0330bfd86e895ace1f998e73591f3882e5e6bf15084556890e30d73"
4181
4191
  },
4182
4192
  {
4183
4193
  "path": "modules/copy-desk/tests/copy_page_draft.mjs",
@@ -4829,6 +4839,21 @@
4829
4839
  "mode": "0000644",
4830
4840
  "sha256": "d175874039e054abf211670908b33080438ffdf7d3a38b9f9a715c6d066fc21a"
4831
4841
  },
4842
+ {
4843
+ "path": "modules/hall-ui/public/approval-queue-lib.js",
4844
+ "mode": "0000644",
4845
+ "sha256": "72832795ac625a68df8cce268acf68be78a14532032fe23aa85b764930353026"
4846
+ },
4847
+ {
4848
+ "path": "modules/hall-ui/public/approval-queue.css",
4849
+ "mode": "0000644",
4850
+ "sha256": "d3ea53cf9b2354ce2097415e0cb8e1dd602bfbbc267691d462b2854e50ab4aec"
4851
+ },
4852
+ {
4853
+ "path": "modules/hall-ui/public/approval-queue.js",
4854
+ "mode": "0000644",
4855
+ "sha256": "47de327e4d9f369066c3f951e56f5c8d08d678f299e2279d8116d9493776262c"
4856
+ },
4832
4857
  {
4833
4858
  "path": "modules/hall-ui/public/atlas.css",
4834
4859
  "mode": "0000644",
@@ -5542,22 +5567,22 @@
5542
5567
  {
5543
5568
  "path": "modules/hall-ui/public/studio.css",
5544
5569
  "mode": "0000644",
5545
- "sha256": "6dccbf9dcdcef09851d0fe53a15e41e28d7909d67d131f1a7fcfe5db09d28417"
5570
+ "sha256": "5cd07aa4047e1886bbea78edce9419db4dae324088141d51e7a479418af33e85"
5546
5571
  },
5547
5572
  {
5548
5573
  "path": "modules/hall-ui/public/studio.html",
5549
5574
  "mode": "0000644",
5550
- "sha256": "fde371e37896066aa3965af83570c1622dded7a7b85613940b3eb4f816920ece"
5575
+ "sha256": "e364125e01631f8cce6c379bcdfda826d9b6a0af1efac015365eeac44f2de2bf"
5551
5576
  },
5552
5577
  {
5553
5578
  "path": "modules/hall-ui/public/studio.js",
5554
5579
  "mode": "0000644",
5555
- "sha256": "201e0b69b0be0ce88b85ee7404c2fe2d13b839b1ae5f44ddde65f6c22b73b975"
5580
+ "sha256": "a08061eab9759f667d3f164dc82fcfaab6f29738ca3f7bf912a53dac2068b7cd"
5556
5581
  },
5557
5582
  {
5558
5583
  "path": "modules/hall-ui/public/studio.states.json",
5559
5584
  "mode": "0000644",
5560
- "sha256": "e3be6c87f46b62b83336d860bc9678b07aeaac4945190ddcf48a049e3aeea18d"
5585
+ "sha256": "8212a0a0b6ac85add5b7736a0395a879682e7d6943f267bee6948f129e8a2654"
5561
5586
  },
5562
5587
  {
5563
5588
  "path": "modules/hall-ui/public/style.css",
@@ -5689,6 +5714,11 @@
5689
5714
  "mode": "0000644",
5690
5715
  "sha256": "786373b132587480ff58452286f950d246eae430f7531f0ccf4d01f290fdc435"
5691
5716
  },
5717
+ {
5718
+ "path": "modules/hall-ui/records/approval-queue.md",
5719
+ "mode": "0000644",
5720
+ "sha256": "ec7cc5302e39ca68a102dde351cb12f024ffbb423c0035c076bfb76e7066c677"
5721
+ },
5692
5722
  {
5693
5723
  "path": "modules/hall-ui/records/builders-roster.md",
5694
5724
  "mode": "0000644",
@@ -6042,7 +6072,7 @@
6042
6072
  {
6043
6073
  "path": "modules/lifecycle/db-grade.js",
6044
6074
  "mode": "0000644",
6045
- "sha256": "e6c9a996c11a73847317db47620007c8d21f70b19c73ade4499361c1c0c330f9"
6075
+ "sha256": "fc7d9df0df448d208a2efd7dacee0b190dad5e798793fe53e826892ae415cf3e"
6046
6076
  },
6047
6077
  {
6048
6078
  "path": "modules/lifecycle/db-overrides.js",
@@ -6104,10 +6134,15 @@
6104
6134
  "mode": "0000644",
6105
6135
  "sha256": "70be81206f577910d250e70ed0841466bbe329691324156b5b15bb75abcd93d3"
6106
6136
  },
6137
+ {
6138
+ "path": "modules/lifecycle/github-pr-close.js",
6139
+ "mode": "0000644",
6140
+ "sha256": "0b4851ec3c891d522778b14833e2d5d8a53fc93eeb0436ce1a0f06865f020a8b"
6141
+ },
6107
6142
  {
6108
6143
  "path": "modules/lifecycle/github-push.js",
6109
6144
  "mode": "0000644",
6110
- "sha256": "84114ecaf06c6ac52b7d7e4b5eaff97086908d6f7df0a3e07e4be3aa923935bc"
6145
+ "sha256": "00f4e760c922bf0bd8ac7f3dde2f5195e1948e283d8aab651535382cce12dc22"
6111
6146
  },
6112
6147
  {
6113
6148
  "path": "modules/lifecycle/goal-advisory.js",
@@ -6182,7 +6217,7 @@
6182
6217
  {
6183
6218
  "path": "modules/lifecycle/lifecycle.js",
6184
6219
  "mode": "0000644",
6185
- "sha256": "8ed95b63975ec4aceb34ddeb31fa147194b38c26242530c83a5ed144214b5150"
6220
+ "sha256": "e0847d726c2e3a6b554c0c069912176c75cd4377c09eb376fd91dc6ce677b588"
6186
6221
  },
6187
6222
  {
6188
6223
  "path": "modules/lifecycle/merge-lock.js",
@@ -6244,6 +6279,11 @@
6244
6279
  "mode": "0000644",
6245
6280
  "sha256": "587c786c560c9621ee1d312370343007a966ac521bc877ebca3278f096e8b7b5"
6246
6281
  },
6282
+ {
6283
+ "path": "modules/lifecycle/migrations/lifecycle_013_task_visual_slots.sql",
6284
+ "mode": "0000644",
6285
+ "sha256": "689b366ade4169c7cd889ed919106e1edc9817fc022d83cde4c5471862a0f510"
6286
+ },
6247
6287
  {
6248
6288
  "path": "modules/lifecycle/mingle.js",
6249
6289
  "mode": "0000644",
@@ -6259,15 +6299,25 @@
6259
6299
  "mode": "0000644",
6260
6300
  "sha256": "472161627fdeb33b628eb3d9b4d4d58eba13dc74dacee1f661fc79856496cff8"
6261
6301
  },
6302
+ {
6303
+ "path": "modules/lifecycle/page-tweak-approve.js",
6304
+ "mode": "0000644",
6305
+ "sha256": "ffd912f5d88e729f7d6cb86235737788b62deebde24551a21e349d164f24d0cf"
6306
+ },
6262
6307
  {
6263
6308
  "path": "modules/lifecycle/page-tweak-claim.js",
6264
6309
  "mode": "0000644",
6265
6310
  "sha256": "4b9f9c23161a961381857a01fc810ce1b960e2b89b74e616fa17d34a403b592f"
6266
6311
  },
6312
+ {
6313
+ "path": "modules/lifecycle/page-tweak-hold.js",
6314
+ "mode": "0000644",
6315
+ "sha256": "3938cb60e74e910c57ef84384bfd0363c0700e0368dbea98ee880c7b9fe60aeb"
6316
+ },
6267
6317
  {
6268
6318
  "path": "modules/lifecycle/page-tweak-reads.js",
6269
6319
  "mode": "0000644",
6270
- "sha256": "016329bc9dadda1e1b1dce86aa02aa7c7f259cc56708ca12030ea601ea63e7a0"
6320
+ "sha256": "6301f5c7bda0da7fcea7b08fd9680275e08fe3ca99d802377995b5ad408bc704"
6271
6321
  },
6272
6322
  {
6273
6323
  "path": "modules/lifecycle/page-tweak-write.js",
@@ -6352,7 +6402,7 @@
6352
6402
  {
6353
6403
  "path": "modules/lifecycle/routes/gate-approvals.js",
6354
6404
  "mode": "0000644",
6355
- "sha256": "edc71d69d25fa1b4e01db5a02cbed235215ab59b6216699cd55d384237b1787d"
6405
+ "sha256": "474b9fa9e13a731f39ab15de74a75ee4878155eb2236d25b0f12011c1df99583"
6356
6406
  },
6357
6407
  {
6358
6408
  "path": "modules/lifecycle/routes/goal-route-authz.js",
@@ -6422,7 +6472,7 @@
6422
6472
  {
6423
6473
  "path": "modules/lifecycle/routes/tasks.js",
6424
6474
  "mode": "0000644",
6425
- "sha256": "3484095e8f08b6afe3d917345decfc879942dee3c3c1b9bee25b8500917ca706"
6475
+ "sha256": "2c47a92bfbe14507770ed5220779ac772a046fa2ee87646b6cb0725e831ba9e2"
6426
6476
  },
6427
6477
  {
6428
6478
  "path": "modules/lifecycle/routes/version-route-authz.js",
@@ -6437,7 +6487,7 @@
6437
6487
  {
6438
6488
  "path": "modules/lifecycle/routes/visuals.js",
6439
6489
  "mode": "0000644",
6440
- "sha256": "e6e64fe479722f147dce98b9ff190348cd40949ada3a207236655d632bdef94b"
6490
+ "sha256": "8329a7b1f3d04e705e6242c7e4f5ffd23af0d528337c4dad23d756b09d6ea625"
6441
6491
  },
6442
6492
  {
6443
6493
  "path": "modules/lifecycle/ship-assurance.js",
@@ -6487,12 +6537,12 @@
6487
6537
  {
6488
6538
  "path": "modules/lifecycle/task-visual-db.js",
6489
6539
  "mode": "0000644",
6490
- "sha256": "f37de3d572a5a283986222c223b91447e0994d4b5253a51c5dc83073ed08bf45"
6540
+ "sha256": "e6baf4e3e5c8d0fa6c051394b8f72c976e0503c21f01b3d456283d001d73c19c"
6491
6541
  },
6492
6542
  {
6493
6543
  "path": "modules/lifecycle/task-visuals.js",
6494
6544
  "mode": "0000644",
6495
- "sha256": "f5133f1a27404712a7cce9e9fa43ff016ba2342571fd8e109228e46486941c47"
6545
+ "sha256": "6795bbbc8b86b2e17205cb3a240b7d877d9b1b2307f4d9ad3d85d27b23eeed0e"
6496
6546
  },
6497
6547
  {
6498
6548
  "path": "modules/lifecycle/tests/cascade.mjs",
@@ -8577,12 +8627,12 @@
8577
8627
  {
8578
8628
  "path": "package-lock.json",
8579
8629
  "mode": "0000644",
8580
- "sha256": "387505d96f16db9259bd3c62fd2420949eabc4b34795f2e2121c5244e39e4a15"
8630
+ "sha256": "a2f47f997bc868bfdaa6c70685bb7635796123501fc16f5e0476848819d32925"
8581
8631
  },
8582
8632
  {
8583
8633
  "path": "package.json",
8584
8634
  "mode": "0000644",
8585
- "sha256": "b86d5a9a682c2c94476f5f629e35ca12060cc5ec743b436dd558c061966632ac"
8635
+ "sha256": "7f750a2a729e5cff3f5aa9cbda69a8072378a50e8320f7bb69bcdfe45aff7571"
8586
8636
  },
8587
8637
  {
8588
8638
  "path": "public-docs/index.html",
@@ -8602,7 +8652,7 @@
8602
8652
  {
8603
8653
  "path": "release-notes.json",
8604
8654
  "mode": "0000644",
8605
- "sha256": "bf828c5a5c41c77a922c60057c989f08e668c7e166b5dc2add801094248862ec"
8655
+ "sha256": "4b4f065b5c1c07d6cd4529e5c80c7c18852a6399de67fc6d754ace363005d67e"
8606
8656
  },
8607
8657
  {
8608
8658
  "path": "scripts/bongos-mcp.js",
@@ -8977,7 +9027,7 @@
8977
9027
  {
8978
9028
  "path": "scripts/gds/copy-apply.js",
8979
9029
  "mode": "0000644",
8980
- "sha256": "e3b5a3714f4c85ddfc506e3a55838c72ef5d9867146a6f6afff55a736fe17635"
9030
+ "sha256": "6e01cd6c1e7166301a41ea1103f56c0b2f457c8dd4a81da3dfb7d3c29732b765"
8981
9031
  },
8982
9032
  {
8983
9033
  "path": "scripts/gds/copy-inventory.js",
@@ -9507,7 +9557,7 @@
9507
9557
  {
9508
9558
  "path": "scripts/gds/page-reader.js",
9509
9559
  "mode": "0000644",
9510
- "sha256": "aae55494f204111e5511729bf10bab6fade4ba2b9727c4155ab76b2b7b80054b"
9560
+ "sha256": "87be82a02239912c8080285562397864a7f580326e7d6afd5748c9e57474ebdf"
9511
9561
  },
9512
9562
  {
9513
9563
  "path": "scripts/gds/paste-token.js",
@@ -9982,12 +10032,12 @@
9982
10032
  {
9983
10033
  "path": "scripts/gds/ship-finish.js",
9984
10034
  "mode": "0000644",
9985
- "sha256": "23225d2dc511b412ae102aadcaf7366084b8e4fbf35e049969e073b2d4b52473"
10035
+ "sha256": "43e41495cb86db773831857d4d83197f0fcd11663e45f8ee04fe3cc84f29da1b"
9986
10036
  },
9987
10037
  {
9988
10038
  "path": "scripts/gds/ship-flow.js",
9989
10039
  "mode": "0000644",
9990
- "sha256": "ecf43a2c1e8149bb383c10213fd45f7b7bd15bb44d4f14ce078e4ff249efa007"
10040
+ "sha256": "c8b3e3d06ee9d4b18917d88a94efeb4043f7dcf65e3c4cc86ba480259d262f98"
9991
10041
  },
9992
10042
  {
9993
10043
  "path": "scripts/gds/ship-git.js",
@@ -10017,7 +10067,7 @@
10017
10067
  {
10018
10068
  "path": "scripts/gds/ship-land.js",
10019
10069
  "mode": "0000644",
10020
- "sha256": "699e58b44e1be60c9e17acf108f7cd895a75d43a2854dac494583df35f522dbc"
10070
+ "sha256": "24d8daaf9006dcc83979a551bb3210e9352ae6176ff9b3e04293b3a175c2d578"
10021
10071
  },
10022
10072
  {
10023
10073
  "path": "scripts/gds/ship-memory-sync.js",
@@ -10032,7 +10082,7 @@
10032
10082
  {
10033
10083
  "path": "scripts/gds/ship-merge.js",
10034
10084
  "mode": "0000644",
10035
- "sha256": "7fda0793008bf257113f4aba8621968adfa17375dadd963285195e169ddf44f1"
10085
+ "sha256": "9307c194843a2059327e358f5d1dea621d1512aadd2e6e27d2db8280b0b5b835"
10036
10086
  },
10037
10087
  {
10038
10088
  "path": "scripts/gds/ship-preflight-steps.js",
@@ -10147,7 +10197,7 @@
10147
10197
  {
10148
10198
  "path": "scripts/gds/strand-watch.js",
10149
10199
  "mode": "0000644",
10150
- "sha256": "2a9959bd2e45046dadcda9982998a5b7163cef00b5d719ff299314daa5409770"
10200
+ "sha256": "9db2e8479b3dda102b24aa8b95c44f49b4fb1726ce5b86ffc1cd9626ea750ad5"
10151
10201
  },
10152
10202
  {
10153
10203
  "path": "scripts/gds/stranded-rows.js",
@@ -10167,7 +10217,7 @@
10167
10217
  {
10168
10218
  "path": "scripts/gds/task.js",
10169
10219
  "mode": "0000644",
10170
- "sha256": "88b9b721b3911957b13aa5e8023e6d41534e34afd4bbc70f40435efc52e2017b"
10220
+ "sha256": "9dd3cdc4c6cf793d219cc7de63da8ecc476425e899abe3728d89f382b827d72e"
10171
10221
  },
10172
10222
  {
10173
10223
  "path": "scripts/gds/test-path-guard.js",
@@ -10189,6 +10239,11 @@
10189
10239
  "mode": "0000644",
10190
10240
  "sha256": "cc6e8640376ada7ceff6a896007b3257c8ea4d943a900eae28433cd41bdd139d"
10191
10241
  },
10242
+ {
10243
+ "path": "scripts/gds/tweak-renders.js",
10244
+ "mode": "0000644",
10245
+ "sha256": "db4039de7f45d063f712bfabbde447497dfea233d885812d95c7e5285491555a"
10246
+ },
10192
10247
  {
10193
10248
  "path": "scripts/gds/ui-kit-transform.js",
10194
10249
  "mode": "0000644",
@@ -10272,7 +10327,7 @@
10272
10327
  {
10273
10328
  "path": "scripts/hall-preview/server.js",
10274
10329
  "mode": "0000644",
10275
- "sha256": "1e1aa2e636b388c791eccd8c4bf8ad2b1365820594258579b945858fa1646831"
10330
+ "sha256": "9d5a86871bdde4ff12502a054b03c1113236cb2eeb0f32ddb431fd7840fa5704"
10276
10331
  },
10277
10332
  {
10278
10333
  "path": "scripts/hall-preview/task-visual.js",
@@ -10687,7 +10742,7 @@
10687
10742
  {
10688
10743
  "path": "src/module-api.js",
10689
10744
  "mode": "0000644",
10690
- "sha256": "3bb2c146ee72b0f97bf1c6fa9a02fe90bb7d32cbe5bc1e28d40d2998aff2f187"
10745
+ "sha256": "035ede76c10191aa4ec780853ba1dca6cd8198d46dc06917e1f9b16f5d8c55c1"
10691
10746
  },
10692
10747
  {
10693
10748
  "path": "src/module-loader/catalog.js",
@@ -11639,6 +11694,11 @@
11639
11694
  "mode": "0000644",
11640
11695
  "sha256": "739bbd623955742864ac712a5f119968ebac671c005054a07a8521c7770a929b"
11641
11696
  },
11697
+ {
11698
+ "path": "tests/copy_desk_page_approve.mjs",
11699
+ "mode": "0000644",
11700
+ "sha256": "a418493a633ce89aa0919d7f5f00c8e64eab79602036dc9d883a0c83861c3fbb"
11701
+ },
11642
11702
  {
11643
11703
  "path": "tests/copy_desk_page_claim.mjs",
11644
11704
  "mode": "0000644",
@@ -12152,7 +12212,7 @@
12152
12212
  {
12153
12213
  "path": "tests/fixtures/page-ledger.mjs",
12154
12214
  "mode": "0000644",
12155
- "sha256": "9087b5a76ddc3d11e5b7a8bf23ac56c824e763e63d302ac457d9515707f0c7a5"
12215
+ "sha256": "b3a9a8cb1f396760302b0b85e53ccca66145061002dabda1c1d94254a2ded399"
12156
12216
  },
12157
12217
  {
12158
12218
  "path": "tests/fixtures/session-506-digest.json",
@@ -12167,7 +12227,7 @@
12167
12227
  {
12168
12228
  "path": "tests/gate_approvals.mjs",
12169
12229
  "mode": "0000644",
12170
- "sha256": "d8c078b127386a55f2df18412b592b95e211d1e535ab09888ba3b6422bf8492b"
12230
+ "sha256": "56f4b5a90894a8cd1a390198a9155241c5ebced712145b07768e163fd5dfeb27"
12171
12231
  },
12172
12232
  {
12173
12233
  "path": "tests/gate_review.mjs",
@@ -12749,10 +12809,15 @@
12749
12809
  "mode": "0000644",
12750
12810
  "sha256": "f4d974c9fd565ff6b81f3a3183e2c933e93b35d731b87505513b32ddd3daf337"
12751
12811
  },
12812
+ {
12813
+ "path": "tests/hall_approval_queue.mjs",
12814
+ "mode": "0000644",
12815
+ "sha256": "a70fe8643bf0d32088ec9957b403518c84b8742e1c3f7b0b42b4852beec02fb2"
12816
+ },
12752
12817
  {
12753
12818
  "path": "tests/hall_audit.mjs",
12754
12819
  "mode": "0000644",
12755
- "sha256": "56a0822be45f279aa2be982ff17d405ac059a1db0199a3cf1febec20dd92c699"
12820
+ "sha256": "14d963a3bb9d30d14a619c65c6e7a32ace57cd6be2424c16f62062a7aeb1c034"
12756
12821
  },
12757
12822
  {
12758
12823
  "path": "tests/hall_board_world.mjs",
@@ -13804,6 +13869,11 @@
13804
13869
  "mode": "0000644",
13805
13870
  "sha256": "2d86f24827327f8015feec80de6fb1089d7f5d5589847a1c0cf4fad59412d307"
13806
13871
  },
13872
+ {
13873
+ "path": "tests/page_tweak_hold.mjs",
13874
+ "mode": "0000644",
13875
+ "sha256": "0ab837626d1d9f70f8dcc0037f9162dfbc596fa5b846820f2108bdd539126825"
13876
+ },
13807
13877
  {
13808
13878
  "path": "tests/parallel-load.mjs",
13809
13879
  "mode": "0000644",
@@ -14322,7 +14392,7 @@
14322
14392
  {
14323
14393
  "path": "tests/publish_status_branch.mjs",
14324
14394
  "mode": "0000644",
14325
- "sha256": "f253738afbce6d36577ad3be9cb580ad065a9689ede011251cdad8742f47e27b"
14395
+ "sha256": "ed744edafe8dd7b9578fc66580a61d902a4969dba86bbfe54a4907c52449a3af"
14326
14396
  },
14327
14397
  {
14328
14398
  "path": "tests/publish_watch.mjs",
@@ -15269,6 +15339,11 @@
15269
15339
  "mode": "0000644",
15270
15340
  "sha256": "35654aab981213d7a944183e8710f1bef967c109886f996dfeb7dfc82bf665e7"
15271
15341
  },
15342
+ {
15343
+ "path": "tests/task_visual_slots.mjs",
15344
+ "mode": "0000644",
15345
+ "sha256": "a6f9d53d02e68215270bd1589f936cd0838581e8296d4b018cc82e5ab8b1ae94"
15346
+ },
15272
15347
  {
15273
15348
  "path": "tests/task_visuals.mjs",
15274
15349
  "mode": "0000644",
@@ -15359,6 +15434,11 @@
15359
15434
  "mode": "0000644",
15360
15435
  "sha256": "56ff1fab014462291349ac200aab9d12e11a73c028aebeb564866b7a1b309fbd"
15361
15436
  },
15437
+ {
15438
+ "path": "tests/tweak_batch_apply.mjs",
15439
+ "mode": "0000644",
15440
+ "sha256": "a9f8a3881b343ac02c19cac0539cf0de839041565de2a6d2f974343ccf0812fd"
15441
+ },
15362
15442
  {
15363
15443
  "path": "tests/ui_design_kit.mjs",
15364
15444
  "mode": "0000644",
@@ -23,6 +23,7 @@ node scripts/gds/api.js GET "/api/bongos/tasks/<id>?include=grade,last_claim"
23
23
  ```
24
24
 
25
25
  - Task not at `completed` → stop; there is nothing to recover. `confirmed`/`shipped` means the grade passed (a `confirmed` strand lands via the ~5-min reconciler; `/merge-mode` is the rare manual fallback). `active` means ship first.
26
+ - **A page tweak whose grade PASSED** (`task.source` is `page-tweak`, `grade.passed` is `true`) → stop; it is **waiting for the artist**, not a failed grade (ADR 0341 D7). Its pass is held at `completed` on purpose until the artist approves the applied page. Do not re-grade it and do not ask for an override. If its branch never published, a plain `node scripts/gds/ship.js <id>` re-publishes it without re-grading.
26
27
  - `grade: null` → the ship never reached the grade step; re-run `/builder-ship`, not `--regrade`.
27
28
  - Otherwise diagnose from the grade row: `signals.panel_outcome`, `signals.server_guard`, `passed`, `rubric_scores`, `issues[]`.
28
29
 
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: tweak
3
+ description: >-
4
+ Apply the next submitted page tweak: claim the round, apply every line, render the page before and after, attach the renders and ship it to wait for the artist. Metic+. Triggers: "/tweak", "apply the next page tweak", "work the tweak queue".
5
+ ---
6
+
7
+ You are applying ONE page an artist rewrote in the studio (Tweak Mode, ADR 0341). The artist wrote the words; your job is to transcribe them faithfully, show the artist the result, and park it. **You never land it.** The artist approves the applied page first (ADR 0341 D7), and nothing here arms a merge.
8
+
9
+ ## 1. Take the next submitted round
10
+
11
+ ```bash
12
+ node scripts/gds/api.js GET /api/bongos/copy-desk/pages --quiet
13
+ ```
14
+
15
+ A round is in the queue when its page's `open_round.state` is `submitted`. Take the one with the lowest `open_round.task_id` (the oldest). None? Say "the tweak queue is empty" and stop.
16
+
17
+ Claim it in THIS worktree, on a fresh branch from `origin/main`:
18
+
19
+ ```bash
20
+ node scripts/gds/claim.js <task-id>
21
+ ```
22
+
23
+ Read the whole printout and confirm it says "Claimed". A refusal can be silent under grep. The round sits in the version's catch-all goal: a `GOAL_MEMBERSHIP_REQUIRED` refusal means join that goal first. Writing the applied block (step 3) needs `task.edit`, which is Metic+.
24
+
25
+ ## 2. Render the page BEFORE
26
+
27
+ ```bash
28
+ node scripts/gds/tweak-renders.js shoot --page <page-id> --phase before --out <scratchpad>/tweak-<task-id>
29
+ ```
30
+
31
+ The page id is in the round's title, `Tweak: <title> (<page-id>)`. Four shots: desktop 1440 and phone 390, light and dark. A page that pins one mode is shot in that mode for both, and the run says so.
32
+
33
+ ## 3. Apply every line
34
+
35
+ ```bash
36
+ node scripts/gds/copy-apply.js --batch --dry-run
37
+ node scripts/gds/copy-apply.js --batch
38
+ ```
39
+
40
+ It reads the round you hold, applies every line of its `page-tweak` block by ADR 0233's rules (the `${expr}` holes go back in), regenerates the copy registry, re-reads the changed pages (it opens a browser) and records a `page-tweak-applied` block on the task.
41
+
42
+ **A refused line is named, never skipped.** Each one prints `REFUSED (<code>)`: `target_gone`, `ambiguous_target`, `no_exact_span`, `placeholder_mismatch` or `path_outside_surface`. It is recorded in the applied block, and the artist sees it at approval. Do not hand-edit a refused line into place, because that would put words on the page the artist cannot see were refused. The rest of the batch still lands. Exit 2 means no line applied: release the claim (`node scripts/gds/release.js <task-id>`) and say which lines refused.
43
+
44
+ Review `git diff`: only the artist's words changed, plus the regenerated registry and readings. Commit.
45
+
46
+ If a line changed `modules/hall-ui/public/shell.js` (a shared line), bump the shell cache-bust on every hall page and update `SHELL_SHA` in `tests/nav_permission_atoms.mjs`, then commit.
47
+
48
+ ## 4. Render AFTER and attach all eight
49
+
50
+ ```bash
51
+ node scripts/gds/tweak-renders.js shoot --page <page-id> --phase after --out <scratchpad>/tweak-<task-id>
52
+ node scripts/gds/tweak-renders.js attach <task-id> --dir <scratchpad>/tweak-<task-id>
53
+ ```
54
+
55
+ Look at the after shots yourself. If a rewritten line overflows or breaks the layout, say so in the ship notes: the artist decides, not you.
56
+
57
+ ## 5. Ship it to wait for the artist
58
+
59
+ ```bash
60
+ node scripts/gds/ship-check.js
61
+ node scripts/gds/ship.js <task-id> --notes-file <notes> --summary-file <summary>
62
+ ```
63
+
64
+ Heal whatever ship-check names first (`git add` new files before it). Run ship.js in the background and wait for it; never pipe it through tail. On a passed grade it prints **WAITING FOR THE ARTIST**: the branch and its PR are published, auto-merge is not armed, and the task stays at `completed`. That is the finish line. Never pass `--skip-grade`: it would confirm the round past the artist.
65
+
66
+ A failed grade is an ordinary one: read it (`GET /api/bongos/tasks/<task-id>?include=grade`), fix, commit, `node scripts/gds/ship.js <task-id> --regrade`. If the branch did not publish, a plain `node scripts/gds/ship.js <task-id>` publishes it again without re-grading.
67
+
68
+ ## What happens next (not yours)
69
+
70
+ The artist approves in the studio's Approval queue (TW12), which lands it like any confirmed task, or sends it back with a note, which returns the round to the queue for the next `/tweak`.
@@ -5,7 +5,7 @@ A **generated**, zero-dependency typed client for the Bongos API — produced fr
5
5
  by hand; it regenerates when the spec changes, so it can never drift from the routes.
6
6
 
7
7
  - API version: **v1** (served at `/api/bongos/v1`)
8
- - 454 operations across 68 resource groups
8
+ - 460 operations across 68 resource groups
9
9
 
10
10
  ## Use it from your project
11
11