@bongos/core 1.19.1063 → 1.19.1064
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bongos-core.json +72 -37
- package/.claude/skills/grade-recover/SKILL.md +1 -0
- package/.claude/skills/tweak/SKILL.md +70 -0
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +6 -0
- package/clients/bongos-client/index.cjs +6 -0
- package/clients/bongos-client/index.d.ts +10 -0
- package/clients/bongos-client/index.mjs +6 -0
- package/docs/api/openapi.json +258 -3
- package/docs/api-reference.md +5 -2
- package/docs/file-map.md +1 -0
- package/docs/module-api-changelog.md +2 -0
- package/modules/lifecycle/db-grade.js +16 -0
- package/modules/lifecycle/migrations/lifecycle_013_task_visual_slots.sql +52 -0
- package/modules/lifecycle/page-tweak-hold.js +74 -0
- package/modules/lifecycle/page-tweak-reads.js +33 -1
- package/modules/lifecycle/routes/tasks.js +4 -2
- package/modules/lifecycle/routes/visuals.js +82 -0
- package/modules/lifecycle/task-visual-db.js +40 -1
- package/modules/lifecycle/task-visuals.js +24 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +6 -0
- package/scripts/gds/copy-apply.js +277 -1
- package/scripts/gds/page-reader.js +2 -0
- package/scripts/gds/ship-finish.js +27 -2
- package/scripts/gds/ship-flow.js +17 -1
- package/scripts/gds/ship-land.js +30 -7
- package/scripts/gds/ship-merge.js +43 -15
- package/scripts/gds/strand-watch.js +41 -1
- package/scripts/gds/task.js +23 -5
- package/scripts/gds/tweak-renders.js +200 -0
- package/src/module-api.js +1 -1
- package/tests/page_tweak_hold.mjs +265 -0
- package/tests/publish_status_branch.mjs +23 -0
- package/tests/task_visual_slots.mjs +161 -0
- 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.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.1064",
|
|
6
|
+
"core_contract": "1.19.1064",
|
|
7
|
+
"source_commit": "4a2268b3adb3b7fc2f2a02e18f44b093bd9521ad",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-09-
|
|
9
|
+
"built_at": "2026-09-28T15:12:17.421Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
|
-
"docs_redacted":
|
|
12
|
+
"docs_redacted": 545,
|
|
13
13
|
"agent_docs_stubbed": 26,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 2548,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 3120,
|
|
20
|
+
"tree_sha256": "91535cdce26563549612b84d47725ec9e311aceeb7f454140906f669eb1828da",
|
|
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": "
|
|
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": "
|
|
325
|
+
"sha256": "acebc6442067f5791f70dba02ddbf13fcb0d52838f8eaa1b4f9a15753be6d107"
|
|
321
326
|
},
|
|
322
327
|
{
|
|
323
328
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
324
329
|
"mode": "0000644",
|
|
325
|
-
"sha256": "
|
|
330
|
+
"sha256": "eed9f450432045c97bf573a62a134be3511d3f19d0ba9d98606bcd89542684b0"
|
|
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": "
|
|
340
|
+
"sha256": "011c065c0f5d36cf8f0e523daf88db34b6aef682875de6433472aae17248c88f"
|
|
336
341
|
},
|
|
337
342
|
{
|
|
338
343
|
"path": "clients/bongos-client/index.d.ts",
|
|
339
344
|
"mode": "0000644",
|
|
340
|
-
"sha256": "
|
|
345
|
+
"sha256": "b022c09759c76e538d7217d780f169af42445394ef93c36d8ee64ec845eac6bf"
|
|
341
346
|
},
|
|
342
347
|
{
|
|
343
348
|
"path": "clients/bongos-client/index.mjs",
|
|
344
349
|
"mode": "0000644",
|
|
345
|
-
"sha256": "
|
|
350
|
+
"sha256": "ba64e23fdb0999b6d6bc143df8a35e9efbf1a7c59363429560d2a48c151c47e5"
|
|
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": "
|
|
2185
|
+
"sha256": "a34f2760cbd848714a29bb88182f9389245bbf1948b29b5bff983b877d5726ea"
|
|
2181
2186
|
},
|
|
2182
2187
|
{
|
|
2183
2188
|
"path": "docs/api/openapi.json",
|
|
2184
2189
|
"mode": "0000644",
|
|
2185
|
-
"sha256": "
|
|
2190
|
+
"sha256": "42b64c512c4da177324911f644b17a3f39879bed5eac72da34c654c3e20b6fcd"
|
|
2186
2191
|
},
|
|
2187
2192
|
{
|
|
2188
2193
|
"path": "docs/architecture.md",
|
|
@@ -2732,7 +2737,7 @@
|
|
|
2732
2737
|
{
|
|
2733
2738
|
"path": "docs/file-map.md",
|
|
2734
2739
|
"mode": "0000644",
|
|
2735
|
-
"sha256": "
|
|
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": "
|
|
2750
|
+
"sha256": "454cb832572f05ba13a9f8e6efcd0f37f504645a57f5e281c91638d2fe6c4a90"
|
|
2746
2751
|
},
|
|
2747
2752
|
{
|
|
2748
2753
|
"path": "docs/modules-contract.md",
|
|
@@ -6042,7 +6047,7 @@
|
|
|
6042
6047
|
{
|
|
6043
6048
|
"path": "modules/lifecycle/db-grade.js",
|
|
6044
6049
|
"mode": "0000644",
|
|
6045
|
-
"sha256": "
|
|
6050
|
+
"sha256": "c8f07ab3ac6088c03b85b631628e93ed294b2284ec25460248effac78fe80ca0"
|
|
6046
6051
|
},
|
|
6047
6052
|
{
|
|
6048
6053
|
"path": "modules/lifecycle/db-overrides.js",
|
|
@@ -6244,6 +6249,11 @@
|
|
|
6244
6249
|
"mode": "0000644",
|
|
6245
6250
|
"sha256": "587c786c560c9621ee1d312370343007a966ac521bc877ebca3278f096e8b7b5"
|
|
6246
6251
|
},
|
|
6252
|
+
{
|
|
6253
|
+
"path": "modules/lifecycle/migrations/lifecycle_013_task_visual_slots.sql",
|
|
6254
|
+
"mode": "0000644",
|
|
6255
|
+
"sha256": "689b366ade4169c7cd889ed919106e1edc9817fc022d83cde4c5471862a0f510"
|
|
6256
|
+
},
|
|
6247
6257
|
{
|
|
6248
6258
|
"path": "modules/lifecycle/mingle.js",
|
|
6249
6259
|
"mode": "0000644",
|
|
@@ -6264,10 +6274,15 @@
|
|
|
6264
6274
|
"mode": "0000644",
|
|
6265
6275
|
"sha256": "4b9f9c23161a961381857a01fc810ce1b960e2b89b74e616fa17d34a403b592f"
|
|
6266
6276
|
},
|
|
6277
|
+
{
|
|
6278
|
+
"path": "modules/lifecycle/page-tweak-hold.js",
|
|
6279
|
+
"mode": "0000644",
|
|
6280
|
+
"sha256": "3938cb60e74e910c57ef84384bfd0363c0700e0368dbea98ee880c7b9fe60aeb"
|
|
6281
|
+
},
|
|
6267
6282
|
{
|
|
6268
6283
|
"path": "modules/lifecycle/page-tweak-reads.js",
|
|
6269
6284
|
"mode": "0000644",
|
|
6270
|
-
"sha256": "
|
|
6285
|
+
"sha256": "6301f5c7bda0da7fcea7b08fd9680275e08fe3ca99d802377995b5ad408bc704"
|
|
6271
6286
|
},
|
|
6272
6287
|
{
|
|
6273
6288
|
"path": "modules/lifecycle/page-tweak-write.js",
|
|
@@ -6422,7 +6437,7 @@
|
|
|
6422
6437
|
{
|
|
6423
6438
|
"path": "modules/lifecycle/routes/tasks.js",
|
|
6424
6439
|
"mode": "0000644",
|
|
6425
|
-
"sha256": "
|
|
6440
|
+
"sha256": "2c47a92bfbe14507770ed5220779ac772a046fa2ee87646b6cb0725e831ba9e2"
|
|
6426
6441
|
},
|
|
6427
6442
|
{
|
|
6428
6443
|
"path": "modules/lifecycle/routes/version-route-authz.js",
|
|
@@ -6437,7 +6452,7 @@
|
|
|
6437
6452
|
{
|
|
6438
6453
|
"path": "modules/lifecycle/routes/visuals.js",
|
|
6439
6454
|
"mode": "0000644",
|
|
6440
|
-
"sha256": "
|
|
6455
|
+
"sha256": "8329a7b1f3d04e705e6242c7e4f5ffd23af0d528337c4dad23d756b09d6ea625"
|
|
6441
6456
|
},
|
|
6442
6457
|
{
|
|
6443
6458
|
"path": "modules/lifecycle/ship-assurance.js",
|
|
@@ -6487,12 +6502,12 @@
|
|
|
6487
6502
|
{
|
|
6488
6503
|
"path": "modules/lifecycle/task-visual-db.js",
|
|
6489
6504
|
"mode": "0000644",
|
|
6490
|
-
"sha256": "
|
|
6505
|
+
"sha256": "e6baf4e3e5c8d0fa6c051394b8f72c976e0503c21f01b3d456283d001d73c19c"
|
|
6491
6506
|
},
|
|
6492
6507
|
{
|
|
6493
6508
|
"path": "modules/lifecycle/task-visuals.js",
|
|
6494
6509
|
"mode": "0000644",
|
|
6495
|
-
"sha256": "
|
|
6510
|
+
"sha256": "6795bbbc8b86b2e17205cb3a240b7d877d9b1b2307f4d9ad3d85d27b23eeed0e"
|
|
6496
6511
|
},
|
|
6497
6512
|
{
|
|
6498
6513
|
"path": "modules/lifecycle/tests/cascade.mjs",
|
|
@@ -8577,12 +8592,12 @@
|
|
|
8577
8592
|
{
|
|
8578
8593
|
"path": "package-lock.json",
|
|
8579
8594
|
"mode": "0000644",
|
|
8580
|
-
"sha256": "
|
|
8595
|
+
"sha256": "944076d2d68c56ab145d480f992d18e32ef80f2395d0945a2fca3a8099b273d0"
|
|
8581
8596
|
},
|
|
8582
8597
|
{
|
|
8583
8598
|
"path": "package.json",
|
|
8584
8599
|
"mode": "0000644",
|
|
8585
|
-
"sha256": "
|
|
8600
|
+
"sha256": "e21816b43bd315e58c41026c064aba41957bf2001202b52382b6fa17675abcff"
|
|
8586
8601
|
},
|
|
8587
8602
|
{
|
|
8588
8603
|
"path": "public-docs/index.html",
|
|
@@ -8602,7 +8617,7 @@
|
|
|
8602
8617
|
{
|
|
8603
8618
|
"path": "release-notes.json",
|
|
8604
8619
|
"mode": "0000644",
|
|
8605
|
-
"sha256": "
|
|
8620
|
+
"sha256": "b63b5af38cfc586570ada8ba36ca8bed7541541bb37923b2ff57b3c030f3bf07"
|
|
8606
8621
|
},
|
|
8607
8622
|
{
|
|
8608
8623
|
"path": "scripts/bongos-mcp.js",
|
|
@@ -8977,7 +8992,7 @@
|
|
|
8977
8992
|
{
|
|
8978
8993
|
"path": "scripts/gds/copy-apply.js",
|
|
8979
8994
|
"mode": "0000644",
|
|
8980
|
-
"sha256": "
|
|
8995
|
+
"sha256": "6e01cd6c1e7166301a41ea1103f56c0b2f457c8dd4a81da3dfb7d3c29732b765"
|
|
8981
8996
|
},
|
|
8982
8997
|
{
|
|
8983
8998
|
"path": "scripts/gds/copy-inventory.js",
|
|
@@ -9507,7 +9522,7 @@
|
|
|
9507
9522
|
{
|
|
9508
9523
|
"path": "scripts/gds/page-reader.js",
|
|
9509
9524
|
"mode": "0000644",
|
|
9510
|
-
"sha256": "
|
|
9525
|
+
"sha256": "87be82a02239912c8080285562397864a7f580326e7d6afd5748c9e57474ebdf"
|
|
9511
9526
|
},
|
|
9512
9527
|
{
|
|
9513
9528
|
"path": "scripts/gds/paste-token.js",
|
|
@@ -9982,12 +9997,12 @@
|
|
|
9982
9997
|
{
|
|
9983
9998
|
"path": "scripts/gds/ship-finish.js",
|
|
9984
9999
|
"mode": "0000644",
|
|
9985
|
-
"sha256": "
|
|
10000
|
+
"sha256": "43e41495cb86db773831857d4d83197f0fcd11663e45f8ee04fe3cc84f29da1b"
|
|
9986
10001
|
},
|
|
9987
10002
|
{
|
|
9988
10003
|
"path": "scripts/gds/ship-flow.js",
|
|
9989
10004
|
"mode": "0000644",
|
|
9990
|
-
"sha256": "
|
|
10005
|
+
"sha256": "c8b3e3d06ee9d4b18917d88a94efeb4043f7dcf65e3c4cc86ba480259d262f98"
|
|
9991
10006
|
},
|
|
9992
10007
|
{
|
|
9993
10008
|
"path": "scripts/gds/ship-git.js",
|
|
@@ -10017,7 +10032,7 @@
|
|
|
10017
10032
|
{
|
|
10018
10033
|
"path": "scripts/gds/ship-land.js",
|
|
10019
10034
|
"mode": "0000644",
|
|
10020
|
-
"sha256": "
|
|
10035
|
+
"sha256": "24d8daaf9006dcc83979a551bb3210e9352ae6176ff9b3e04293b3a175c2d578"
|
|
10021
10036
|
},
|
|
10022
10037
|
{
|
|
10023
10038
|
"path": "scripts/gds/ship-memory-sync.js",
|
|
@@ -10032,7 +10047,7 @@
|
|
|
10032
10047
|
{
|
|
10033
10048
|
"path": "scripts/gds/ship-merge.js",
|
|
10034
10049
|
"mode": "0000644",
|
|
10035
|
-
"sha256": "
|
|
10050
|
+
"sha256": "9307c194843a2059327e358f5d1dea621d1512aadd2e6e27d2db8280b0b5b835"
|
|
10036
10051
|
},
|
|
10037
10052
|
{
|
|
10038
10053
|
"path": "scripts/gds/ship-preflight-steps.js",
|
|
@@ -10147,7 +10162,7 @@
|
|
|
10147
10162
|
{
|
|
10148
10163
|
"path": "scripts/gds/strand-watch.js",
|
|
10149
10164
|
"mode": "0000644",
|
|
10150
|
-
"sha256": "
|
|
10165
|
+
"sha256": "9db2e8479b3dda102b24aa8b95c44f49b4fb1726ce5b86ffc1cd9626ea750ad5"
|
|
10151
10166
|
},
|
|
10152
10167
|
{
|
|
10153
10168
|
"path": "scripts/gds/stranded-rows.js",
|
|
@@ -10167,7 +10182,7 @@
|
|
|
10167
10182
|
{
|
|
10168
10183
|
"path": "scripts/gds/task.js",
|
|
10169
10184
|
"mode": "0000644",
|
|
10170
|
-
"sha256": "
|
|
10185
|
+
"sha256": "9dd3cdc4c6cf793d219cc7de63da8ecc476425e899abe3728d89f382b827d72e"
|
|
10171
10186
|
},
|
|
10172
10187
|
{
|
|
10173
10188
|
"path": "scripts/gds/test-path-guard.js",
|
|
@@ -10189,6 +10204,11 @@
|
|
|
10189
10204
|
"mode": "0000644",
|
|
10190
10205
|
"sha256": "cc6e8640376ada7ceff6a896007b3257c8ea4d943a900eae28433cd41bdd139d"
|
|
10191
10206
|
},
|
|
10207
|
+
{
|
|
10208
|
+
"path": "scripts/gds/tweak-renders.js",
|
|
10209
|
+
"mode": "0000644",
|
|
10210
|
+
"sha256": "db4039de7f45d063f712bfabbde447497dfea233d885812d95c7e5285491555a"
|
|
10211
|
+
},
|
|
10192
10212
|
{
|
|
10193
10213
|
"path": "scripts/gds/ui-kit-transform.js",
|
|
10194
10214
|
"mode": "0000644",
|
|
@@ -10687,7 +10707,7 @@
|
|
|
10687
10707
|
{
|
|
10688
10708
|
"path": "src/module-api.js",
|
|
10689
10709
|
"mode": "0000644",
|
|
10690
|
-
"sha256": "
|
|
10710
|
+
"sha256": "e2f8f04fc10d0771e46b4849c7691ad103836400049e2852056d87b2d0d57ef0"
|
|
10691
10711
|
},
|
|
10692
10712
|
{
|
|
10693
10713
|
"path": "src/module-loader/catalog.js",
|
|
@@ -13804,6 +13824,11 @@
|
|
|
13804
13824
|
"mode": "0000644",
|
|
13805
13825
|
"sha256": "2d86f24827327f8015feec80de6fb1089d7f5d5589847a1c0cf4fad59412d307"
|
|
13806
13826
|
},
|
|
13827
|
+
{
|
|
13828
|
+
"path": "tests/page_tweak_hold.mjs",
|
|
13829
|
+
"mode": "0000644",
|
|
13830
|
+
"sha256": "0ab837626d1d9f70f8dcc0037f9162dfbc596fa5b846820f2108bdd539126825"
|
|
13831
|
+
},
|
|
13807
13832
|
{
|
|
13808
13833
|
"path": "tests/parallel-load.mjs",
|
|
13809
13834
|
"mode": "0000644",
|
|
@@ -14322,7 +14347,7 @@
|
|
|
14322
14347
|
{
|
|
14323
14348
|
"path": "tests/publish_status_branch.mjs",
|
|
14324
14349
|
"mode": "0000644",
|
|
14325
|
-
"sha256": "
|
|
14350
|
+
"sha256": "ed744edafe8dd7b9578fc66580a61d902a4969dba86bbfe54a4907c52449a3af"
|
|
14326
14351
|
},
|
|
14327
14352
|
{
|
|
14328
14353
|
"path": "tests/publish_watch.mjs",
|
|
@@ -15269,6 +15294,11 @@
|
|
|
15269
15294
|
"mode": "0000644",
|
|
15270
15295
|
"sha256": "35654aab981213d7a944183e8710f1bef967c109886f996dfeb7dfc82bf665e7"
|
|
15271
15296
|
},
|
|
15297
|
+
{
|
|
15298
|
+
"path": "tests/task_visual_slots.mjs",
|
|
15299
|
+
"mode": "0000644",
|
|
15300
|
+
"sha256": "a6f9d53d02e68215270bd1589f936cd0838581e8296d4b018cc82e5ab8b1ae94"
|
|
15301
|
+
},
|
|
15272
15302
|
{
|
|
15273
15303
|
"path": "tests/task_visuals.mjs",
|
|
15274
15304
|
"mode": "0000644",
|
|
@@ -15359,6 +15389,11 @@
|
|
|
15359
15389
|
"mode": "0000644",
|
|
15360
15390
|
"sha256": "56ff1fab014462291349ac200aab9d12e11a73c028aebeb564866b7a1b309fbd"
|
|
15361
15391
|
},
|
|
15392
|
+
{
|
|
15393
|
+
"path": "tests/tweak_batch_apply.mjs",
|
|
15394
|
+
"mode": "0000644",
|
|
15395
|
+
"sha256": "a9f8a3881b343ac02c19cac0539cf0de839041565de2a6d2f974343ccf0812fd"
|
|
15396
|
+
},
|
|
15362
15397
|
{
|
|
15363
15398
|
"path": "tests/ui_design_kit.mjs",
|
|
15364
15399
|
"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
|
-
-
|
|
8
|
+
- 457 operations across 68 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -1087,6 +1087,12 @@ function createClient(opts = {}) {
|
|
|
1087
1087
|
deleteTasksIdVisual: (args) => request("DELETE", "/tasks/{id}/visual", { hasBody: false }, args),
|
|
1088
1088
|
// POST /tasks/{id}/visual — rank: any-builder — POST /tasks/:id/visual
|
|
1089
1089
|
postTasksIdVisual: (args) => request("POST", "/tasks/{id}/visual", { hasBody: true }, args),
|
|
1090
|
+
// GET /tasks/{id}/visuals — rank: any-builder — GET /tasks/:id/visuals
|
|
1091
|
+
getTasksIdVisuals: (args) => request("GET", "/tasks/{id}/visuals", { hasBody: false }, args),
|
|
1092
|
+
// DELETE /tasks/{id}/visuals/{slot} — rank: any-builder — DELETE /tasks/:id/visuals/:slot
|
|
1093
|
+
deleteTasksIdVisualsSlot: (args) => request("DELETE", "/tasks/{id}/visuals/{slot}", { hasBody: false }, args),
|
|
1094
|
+
// POST /tasks/{id}/visuals/{slot} — rank: any-builder — POST /tasks/:id/visuals/:slot
|
|
1095
|
+
postTasksIdVisualsSlot: (args) => request("POST", "/tasks/{id}/visuals/{slot}", { hasBody: true }, args),
|
|
1090
1096
|
// POST /tasks/{id}/vote — rank: metic+archon — POST /tasks/:id/vote
|
|
1091
1097
|
postTasksIdVote: (args) => request("POST", "/tasks/{id}/vote", { hasBody: true }, args),
|
|
1092
1098
|
// POST /tasks/{id}/water — rank: any-builder — POST /tasks/:id/water
|
|
@@ -1086,6 +1086,12 @@ function createClient(opts = {}) {
|
|
|
1086
1086
|
deleteTasksIdVisual: (args) => request("DELETE", "/tasks/{id}/visual", { hasBody: false }, args),
|
|
1087
1087
|
// POST /tasks/{id}/visual — rank: any-builder — POST /tasks/:id/visual
|
|
1088
1088
|
postTasksIdVisual: (args) => request("POST", "/tasks/{id}/visual", { hasBody: true }, args),
|
|
1089
|
+
// GET /tasks/{id}/visuals — rank: any-builder — GET /tasks/:id/visuals
|
|
1090
|
+
getTasksIdVisuals: (args) => request("GET", "/tasks/{id}/visuals", { hasBody: false }, args),
|
|
1091
|
+
// DELETE /tasks/{id}/visuals/{slot} — rank: any-builder — DELETE /tasks/:id/visuals/:slot
|
|
1092
|
+
deleteTasksIdVisualsSlot: (args) => request("DELETE", "/tasks/{id}/visuals/{slot}", { hasBody: false }, args),
|
|
1093
|
+
// POST /tasks/{id}/visuals/{slot} — rank: any-builder — POST /tasks/:id/visuals/:slot
|
|
1094
|
+
postTasksIdVisualsSlot: (args) => request("POST", "/tasks/{id}/visuals/{slot}", { hasBody: true }, args),
|
|
1089
1095
|
// POST /tasks/{id}/vote — rank: metic+archon — POST /tasks/:id/vote
|
|
1090
1096
|
postTasksIdVote: (args) => request("POST", "/tasks/{id}/vote", { hasBody: true }, args),
|
|
1091
1097
|
// POST /tasks/{id}/water — rank: any-builder — POST /tasks/:id/water
|
|
@@ -23,6 +23,7 @@ export interface DeleteSpecialitiesIdDocumentsDocIdResponse { ok: boolean }
|
|
|
23
23
|
export interface DeleteTasksIdCriteriaCriterionIdResponse { ok: boolean; removed: unknown }
|
|
24
24
|
export interface DeleteTasksIdDependenciesDepIdResponse { ok: boolean; removed: unknown }
|
|
25
25
|
export interface DeleteTasksIdVisualResponse { ok: boolean; visual_url: unknown }
|
|
26
|
+
export interface DeleteTasksIdVisualsSlotResponse { ok: boolean; slot: unknown; visual_url: unknown }
|
|
26
27
|
export interface ErrorEnvelope { error: ApiErrorObject }
|
|
27
28
|
export interface GetAccessRequestsInvitesResponse { invites: unknown }
|
|
28
29
|
export interface GetAccessRequestsResponse { requests: unknown }
|
|
@@ -170,6 +171,7 @@ export interface GetTasksClaimableResponse { claimable: unknown; claimable_total
|
|
|
170
171
|
export interface GetTasksIdCriteriaResponse { criteria: unknown }
|
|
171
172
|
export interface GetTasksIdDependenciesResponse { dependencies: unknown; dependents: unknown }
|
|
172
173
|
export interface GetTasksIdRecommendationsResponse { recommendations: unknown; count: unknown }
|
|
174
|
+
export interface GetTasksIdVisualsResponse { ok: boolean; task_id: unknown; slots: unknown }
|
|
173
175
|
export interface GetTasksNewcomerFloorResponse { disciplines: unknown }
|
|
174
176
|
export interface GetTasksPeerVotesFeedResponse { tasks: unknown; can_vote: unknown }
|
|
175
177
|
export interface GetTasksResponse { tasks: unknown }
|
|
@@ -471,6 +473,8 @@ export interface PostTasksIdPublishBranchRequest { branch: string; head_sha: str
|
|
|
471
473
|
export interface PostTasksIdShipResponse { ok: boolean; task: unknown }
|
|
472
474
|
export interface PostTasksIdVisualRequest { image_b64: string; content_type: string; alt?: string }
|
|
473
475
|
export interface PostTasksIdVisualResponse { ok: boolean; visual_url: unknown; visual_alt: unknown; bytes: unknown }
|
|
476
|
+
export interface PostTasksIdVisualsSlotRequest { image_b64: string; content_type: string; alt?: string }
|
|
477
|
+
export interface PostTasksIdVisualsSlotResponse { ok: boolean; slot: unknown; visual_url: unknown; visual_alt: unknown; bytes: unknown }
|
|
474
478
|
export interface PostTasksIdVoteRequest { vote: -1 | 0 | 1 }
|
|
475
479
|
export interface PostTasksIdVoteResponse { ok: boolean; task_id: unknown; my_vote: unknown; net_votes: unknown; total_votes: unknown }
|
|
476
480
|
export interface PostTasksNewcomerRestockResponse { ok: boolean; stamped: unknown; results: unknown }
|
|
@@ -1507,6 +1511,12 @@ export interface BongosClient {
|
|
|
1507
1511
|
deleteTasksIdVisual(args?: RequestArgs): Promise<DeleteTasksIdVisualResponse>;
|
|
1508
1512
|
/** POST /tasks/{id}/visual — rank: any-builder */
|
|
1509
1513
|
postTasksIdVisual(args: RequestArgs & { body: PostTasksIdVisualRequest }): Promise<PostTasksIdVisualResponse>;
|
|
1514
|
+
/** GET /tasks/{id}/visuals — rank: any-builder */
|
|
1515
|
+
getTasksIdVisuals(args?: RequestArgs): Promise<GetTasksIdVisualsResponse>;
|
|
1516
|
+
/** DELETE /tasks/{id}/visuals/{slot} — rank: any-builder */
|
|
1517
|
+
deleteTasksIdVisualsSlot(args?: RequestArgs): Promise<DeleteTasksIdVisualsSlotResponse>;
|
|
1518
|
+
/** POST /tasks/{id}/visuals/{slot} — rank: any-builder */
|
|
1519
|
+
postTasksIdVisualsSlot(args: RequestArgs & { body: PostTasksIdVisualsSlotRequest }): Promise<PostTasksIdVisualsSlotResponse>;
|
|
1510
1520
|
/** POST /tasks/{id}/vote — rank: metic+archon */
|
|
1511
1521
|
postTasksIdVote(args: RequestArgs & { body: PostTasksIdVoteRequest }): Promise<PostTasksIdVoteResponse>;
|
|
1512
1522
|
/** POST /tasks/{id}/water — rank: any-builder */
|
|
@@ -1083,6 +1083,12 @@ export function createClient(opts = {}) {
|
|
|
1083
1083
|
deleteTasksIdVisual: (args) => request("DELETE", "/tasks/{id}/visual", { hasBody: false }, args),
|
|
1084
1084
|
// POST /tasks/{id}/visual — rank: any-builder — POST /tasks/:id/visual
|
|
1085
1085
|
postTasksIdVisual: (args) => request("POST", "/tasks/{id}/visual", { hasBody: true }, args),
|
|
1086
|
+
// GET /tasks/{id}/visuals — rank: any-builder — GET /tasks/:id/visuals
|
|
1087
|
+
getTasksIdVisuals: (args) => request("GET", "/tasks/{id}/visuals", { hasBody: false }, args),
|
|
1088
|
+
// DELETE /tasks/{id}/visuals/{slot} — rank: any-builder — DELETE /tasks/:id/visuals/:slot
|
|
1089
|
+
deleteTasksIdVisualsSlot: (args) => request("DELETE", "/tasks/{id}/visuals/{slot}", { hasBody: false }, args),
|
|
1090
|
+
// POST /tasks/{id}/visuals/{slot} — rank: any-builder — POST /tasks/:id/visuals/:slot
|
|
1091
|
+
postTasksIdVisualsSlot: (args) => request("POST", "/tasks/{id}/visuals/{slot}", { hasBody: true }, args),
|
|
1086
1092
|
// POST /tasks/{id}/vote — rank: metic+archon — POST /tasks/:id/vote
|
|
1087
1093
|
postTasksIdVote: (args) => request("POST", "/tasks/{id}/vote", { hasBody: true }, args),
|
|
1088
1094
|
// POST /tasks/{id}/water — rank: any-builder — POST /tasks/:id/water
|