@bongos/core 1.23.15 → 1.23.17
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 +51 -36
- package/docs/copy-inventory.md +8 -8
- package/docs/copy-registry.json +26 -26
- package/docs/module-api-changelog.md +4 -0
- package/docs/page-readings.json +3 -3
- package/modules/copy-desk/auto-close.js +67 -0
- package/modules/copy-desk/module.json +1 -1
- package/modules/copy-desk/page-decisions.js +32 -4
- package/modules/copy-desk/page-status.js +19 -10
- package/modules/copy-desk/pages.js +61 -0
- package/modules/copy-desk/pollers/auto-close-rounds.js +32 -0
- package/modules/copy-desk/routes/copy-desk.js +7 -3
- package/modules/copy-desk/skills/tweak/SKILL.md +1 -1
- package/modules/copy-desk/tests/copy_no_cms.mjs +5 -1
- package/modules/copy-desk/tests/copy_page_auto_close.mjs +92 -0
- package/modules/copy-desk/tests/copy_page_next.mjs +1 -1
- package/modules/copy-desk/tests/copy_page_status.mjs +9 -4
- package/modules/hall-ui/public/approval-queue-lib.js +10 -3
- package/modules/hall-ui/public/approval-queue.js +7 -5
- package/modules/hall-ui/public/studio-lib.js +3 -2
- package/modules/lifecycle/lifecycle.js +2 -0
- package/modules/lifecycle/page-tweak-approve.js +50 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +12 -0
- package/src/module-api.js +1 -1
- package/tests/copy_desk_page_approve.mjs +53 -0
- package/tests/copy_desk_page_editor.mjs +2 -2
- package/tests/copy_desk_page_next.mjs +1 -1
- package/tests/copy_desk_page_release.mjs +1 -1
- package/tests/copy_desk_page_submit.mjs +2 -2
- package/tests/copy_stuck_page_tweaks.mjs +12 -3
- package/tests/hall_approval_queue.mjs +6 -6
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/bongos/package-core.js",
|
|
5
|
-
"core_version": "1.23.
|
|
6
|
-
"core_contract": "1.23.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.23.17",
|
|
6
|
+
"core_contract": "1.23.17",
|
|
7
|
+
"source_commit": "4a502e79527cf82113e88b2023d3008dfbae984f",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-10-
|
|
9
|
+
"built_at": "2026-10-28T00:35:19.416Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 616,
|
|
13
13
|
"agent_docs_stubbed": 29,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 3587,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 4233,
|
|
20
|
+
"tree_sha256": "99139b31ab3e5e0d6fb9464e6ad1295547d3b7dad361ee272235333df79fc8a2",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -2422,12 +2422,12 @@
|
|
|
2422
2422
|
{
|
|
2423
2423
|
"path": "docs/copy-inventory.md",
|
|
2424
2424
|
"mode": "0000644",
|
|
2425
|
-
"sha256": "
|
|
2425
|
+
"sha256": "69cb0fe832f44eefdde865a12e78cf7d59e617c49d0a8ba1a973b0f389b4fb8a"
|
|
2426
2426
|
},
|
|
2427
2427
|
{
|
|
2428
2428
|
"path": "docs/copy-registry.json",
|
|
2429
2429
|
"mode": "0000644",
|
|
2430
|
-
"sha256": "
|
|
2430
|
+
"sha256": "b804aa72056e19c5348b9d8e3be47007bc62aa6e8d6dd9c34439b360d2d7d23e"
|
|
2431
2431
|
},
|
|
2432
2432
|
{
|
|
2433
2433
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -2937,7 +2937,7 @@
|
|
|
2937
2937
|
{
|
|
2938
2938
|
"path": "docs/module-api-changelog.md",
|
|
2939
2939
|
"mode": "0000644",
|
|
2940
|
-
"sha256": "
|
|
2940
|
+
"sha256": "4bc6873970f7d2632aea896316a31aaef5a2cc6fd51cfa69f1609974b999cb67"
|
|
2941
2941
|
},
|
|
2942
2942
|
{
|
|
2943
2943
|
"path": "docs/modules-contract.md",
|
|
@@ -3027,7 +3027,7 @@
|
|
|
3027
3027
|
{
|
|
3028
3028
|
"path": "docs/page-readings.json",
|
|
3029
3029
|
"mode": "0000644",
|
|
3030
|
-
"sha256": "
|
|
3030
|
+
"sha256": "1779c6f06aa087cee66120b5ef52c9dafe0d4889a755d9762df044223576b257"
|
|
3031
3031
|
},
|
|
3032
3032
|
{
|
|
3033
3033
|
"path": "docs/project-context.template.md",
|
|
@@ -4484,6 +4484,11 @@
|
|
|
4484
4484
|
"mode": "0000644",
|
|
4485
4485
|
"sha256": "6bf4b2a9b9468ca6a5d077a5e01584c66e2ba3a82af3039ee7b9d4be7bc4dbde"
|
|
4486
4486
|
},
|
|
4487
|
+
{
|
|
4488
|
+
"path": "modules/copy-desk/auto-close.js",
|
|
4489
|
+
"mode": "0000644",
|
|
4490
|
+
"sha256": "e27d2856bdc6e61116e486c053a353bde07c36ac5d850dce278e5d3c1e4135d0"
|
|
4491
|
+
},
|
|
4487
4492
|
{
|
|
4488
4493
|
"path": "modules/copy-desk/docx.js",
|
|
4489
4494
|
"mode": "0000644",
|
|
@@ -4517,7 +4522,7 @@
|
|
|
4517
4522
|
{
|
|
4518
4523
|
"path": "modules/copy-desk/module.json",
|
|
4519
4524
|
"mode": "0000644",
|
|
4520
|
-
"sha256": "
|
|
4525
|
+
"sha256": "e5885c9524764cd3e5a1cafc5d352b47e8b1773509854f53c989570c3d02be5d"
|
|
4521
4526
|
},
|
|
4522
4527
|
{
|
|
4523
4528
|
"path": "modules/copy-desk/page-data.js",
|
|
@@ -4527,17 +4532,22 @@
|
|
|
4527
4532
|
{
|
|
4528
4533
|
"path": "modules/copy-desk/page-decisions.js",
|
|
4529
4534
|
"mode": "0000644",
|
|
4530
|
-
"sha256": "
|
|
4535
|
+
"sha256": "1e678fd1234265784141d5649c87dac43852e37e08fba4a3afa17e6b01ad9d34"
|
|
4531
4536
|
},
|
|
4532
4537
|
{
|
|
4533
4538
|
"path": "modules/copy-desk/page-status.js",
|
|
4534
4539
|
"mode": "0000644",
|
|
4535
|
-
"sha256": "
|
|
4540
|
+
"sha256": "de12a5dd005cb8ab8f078cc2295af5fb220f09e0ca21192719698ab9037b57be"
|
|
4536
4541
|
},
|
|
4537
4542
|
{
|
|
4538
4543
|
"path": "modules/copy-desk/pages.js",
|
|
4539
4544
|
"mode": "0000644",
|
|
4540
|
-
"sha256": "
|
|
4545
|
+
"sha256": "595946a1ef88b65612779de0f3dafa0b44b2a02e2b3652f0e026863a9ef4d60c"
|
|
4546
|
+
},
|
|
4547
|
+
{
|
|
4548
|
+
"path": "modules/copy-desk/pollers/auto-close-rounds.js",
|
|
4549
|
+
"mode": "0000644",
|
|
4550
|
+
"sha256": "1f370c827350735270704e0e1c7bd5c4427449709c071e3917b1251acfc8dc52"
|
|
4541
4551
|
},
|
|
4542
4552
|
{
|
|
4543
4553
|
"path": "modules/copy-desk/pollers/stuck-page-digest.js",
|
|
@@ -4567,12 +4577,12 @@
|
|
|
4567
4577
|
{
|
|
4568
4578
|
"path": "modules/copy-desk/routes/copy-desk.js",
|
|
4569
4579
|
"mode": "0000644",
|
|
4570
|
-
"sha256": "
|
|
4580
|
+
"sha256": "a0971fc1bd4daa88d5ecb753960b667e108fac2e969a21857ffad9c248220161"
|
|
4571
4581
|
},
|
|
4572
4582
|
{
|
|
4573
4583
|
"path": "modules/copy-desk/skills/tweak/SKILL.md",
|
|
4574
4584
|
"mode": "0000644",
|
|
4575
|
-
"sha256": "
|
|
4585
|
+
"sha256": "8de83827c8ff4690ea58a7e47a539a937be5af4587632685863f3785729210e3"
|
|
4576
4586
|
},
|
|
4577
4587
|
{
|
|
4578
4588
|
"path": "modules/copy-desk/stuck-tweaks.js",
|
|
@@ -4592,7 +4602,12 @@
|
|
|
4592
4602
|
{
|
|
4593
4603
|
"path": "modules/copy-desk/tests/copy_no_cms.mjs",
|
|
4594
4604
|
"mode": "0000644",
|
|
4595
|
-
"sha256": "
|
|
4605
|
+
"sha256": "3c5401ec7fbf0aa8a255f0a20ce4a25e285b5c7b3ceb90b88ba1434a837f17b6"
|
|
4606
|
+
},
|
|
4607
|
+
{
|
|
4608
|
+
"path": "modules/copy-desk/tests/copy_page_auto_close.mjs",
|
|
4609
|
+
"mode": "0000644",
|
|
4610
|
+
"sha256": "ec7b6b3ec7f974f79abe5ffdcfb08668ec11477599b021303335374b3e7c59ec"
|
|
4596
4611
|
},
|
|
4597
4612
|
{
|
|
4598
4613
|
"path": "modules/copy-desk/tests/copy_page_draft.mjs",
|
|
@@ -4602,12 +4617,12 @@
|
|
|
4602
4617
|
{
|
|
4603
4618
|
"path": "modules/copy-desk/tests/copy_page_next.mjs",
|
|
4604
4619
|
"mode": "0000644",
|
|
4605
|
-
"sha256": "
|
|
4620
|
+
"sha256": "1f9f6c26f1ae162af2e238cbd8ac2892447825da1e2cbd17b340351d9be56fd1"
|
|
4606
4621
|
},
|
|
4607
4622
|
{
|
|
4608
4623
|
"path": "modules/copy-desk/tests/copy_page_status.mjs",
|
|
4609
4624
|
"mode": "0000644",
|
|
4610
|
-
"sha256": "
|
|
4625
|
+
"sha256": "f968af0d0f0bd8d1202816ae1d660c9bd75f706997167a75c2a09c8a9d8ed579"
|
|
4611
4626
|
},
|
|
4612
4627
|
{
|
|
4613
4628
|
"path": "modules/copy-desk/tests/copy_proposals.mjs",
|
|
@@ -5607,7 +5622,7 @@
|
|
|
5607
5622
|
{
|
|
5608
5623
|
"path": "modules/hall-ui/public/approval-queue-lib.js",
|
|
5609
5624
|
"mode": "0000644",
|
|
5610
|
-
"sha256": "
|
|
5625
|
+
"sha256": "af16293eec6fbb3971041abcddc79080e69289f786deaae347441756973b5da4"
|
|
5611
5626
|
},
|
|
5612
5627
|
{
|
|
5613
5628
|
"path": "modules/hall-ui/public/approval-queue.css",
|
|
@@ -5617,7 +5632,7 @@
|
|
|
5617
5632
|
{
|
|
5618
5633
|
"path": "modules/hall-ui/public/approval-queue.js",
|
|
5619
5634
|
"mode": "0000644",
|
|
5620
|
-
"sha256": "
|
|
5635
|
+
"sha256": "8f61c926def19ec74a57d17cee550f8407865bfda90db16f38101c8b9e2aabb2"
|
|
5621
5636
|
},
|
|
5622
5637
|
{
|
|
5623
5638
|
"path": "modules/hall-ui/public/atlas.css",
|
|
@@ -6697,7 +6712,7 @@
|
|
|
6697
6712
|
{
|
|
6698
6713
|
"path": "modules/hall-ui/public/studio-lib.js",
|
|
6699
6714
|
"mode": "0000644",
|
|
6700
|
-
"sha256": "
|
|
6715
|
+
"sha256": "75626502bef9f153ab768b51457a0632351d8a95f701bb92e7effc54f153c403"
|
|
6701
6716
|
},
|
|
6702
6717
|
{
|
|
6703
6718
|
"path": "modules/hall-ui/public/studio.css",
|
|
@@ -7577,7 +7592,7 @@
|
|
|
7577
7592
|
{
|
|
7578
7593
|
"path": "modules/lifecycle/lifecycle.js",
|
|
7579
7594
|
"mode": "0000644",
|
|
7580
|
-
"sha256": "
|
|
7595
|
+
"sha256": "fd61ef045f35d8b488b1fce81cd2e288a0d9841e980fc80b4a8562dfc53d7d40"
|
|
7581
7596
|
},
|
|
7582
7597
|
{
|
|
7583
7598
|
"path": "modules/lifecycle/local-land-proof.js",
|
|
@@ -7697,7 +7712,7 @@
|
|
|
7697
7712
|
{
|
|
7698
7713
|
"path": "modules/lifecycle/page-tweak-approve.js",
|
|
7699
7714
|
"mode": "0000644",
|
|
7700
|
-
"sha256": "
|
|
7715
|
+
"sha256": "b4d5905fac9db131442f0d1b75d4a192fdc6e86a8b9faa0cd9c42c92495ef085"
|
|
7701
7716
|
},
|
|
7702
7717
|
{
|
|
7703
7718
|
"path": "modules/lifecycle/page-tweak-artist.js",
|
|
@@ -10942,12 +10957,12 @@
|
|
|
10942
10957
|
{
|
|
10943
10958
|
"path": "package-lock.json",
|
|
10944
10959
|
"mode": "0000644",
|
|
10945
|
-
"sha256": "
|
|
10960
|
+
"sha256": "22b8b7bf76a70bbd3bbb57ed0ab3f53657cf2a989eb6acc8578022311932e5c1"
|
|
10946
10961
|
},
|
|
10947
10962
|
{
|
|
10948
10963
|
"path": "package.json",
|
|
10949
10964
|
"mode": "0000644",
|
|
10950
|
-
"sha256": "
|
|
10965
|
+
"sha256": "a9218f9cc690dc0c929a5fe7b6a4fccb6a0103f08c1637d09be5c2d23b96b035"
|
|
10951
10966
|
},
|
|
10952
10967
|
{
|
|
10953
10968
|
"path": "public-docs/index.html",
|
|
@@ -10967,7 +10982,7 @@
|
|
|
10967
10982
|
{
|
|
10968
10983
|
"path": "release-notes.json",
|
|
10969
10984
|
"mode": "0000644",
|
|
10970
|
-
"sha256": "
|
|
10985
|
+
"sha256": "d1193b47af93db407c4fe4ec5a227fdd5c97bd8ebeaa5d1f2c9b0a4c0fab32ca"
|
|
10971
10986
|
},
|
|
10972
10987
|
{
|
|
10973
10988
|
"path": "scripts/bongos/CLAUDE.md",
|
|
@@ -14842,7 +14857,7 @@
|
|
|
14842
14857
|
{
|
|
14843
14858
|
"path": "src/module-api.js",
|
|
14844
14859
|
"mode": "0000644",
|
|
14845
|
-
"sha256": "
|
|
14860
|
+
"sha256": "e28e39ed8813e02cf4f2689fdf369d45ea3631a6fb6f2994cfaa0089eb4898c1"
|
|
14846
14861
|
},
|
|
14847
14862
|
{
|
|
14848
14863
|
"path": "src/module-loader/catalog.js",
|
|
@@ -15842,7 +15857,7 @@
|
|
|
15842
15857
|
{
|
|
15843
15858
|
"path": "tests/copy_desk_page_approve.mjs",
|
|
15844
15859
|
"mode": "0000644",
|
|
15845
|
-
"sha256": "
|
|
15860
|
+
"sha256": "b8699ade0e7c953226294dddbdcd2f875da74eef0e0f022f6686492b2519c83f"
|
|
15846
15861
|
},
|
|
15847
15862
|
{
|
|
15848
15863
|
"path": "tests/copy_desk_page_claim.mjs",
|
|
@@ -15857,12 +15872,12 @@
|
|
|
15857
15872
|
{
|
|
15858
15873
|
"path": "tests/copy_desk_page_editor.mjs",
|
|
15859
15874
|
"mode": "0000644",
|
|
15860
|
-
"sha256": "
|
|
15875
|
+
"sha256": "055a2da4169ba7bcc1f910bc0349abb4ccc015b0d95f3604bb64a5b7b9986221"
|
|
15861
15876
|
},
|
|
15862
15877
|
{
|
|
15863
15878
|
"path": "tests/copy_desk_page_next.mjs",
|
|
15864
15879
|
"mode": "0000644",
|
|
15865
|
-
"sha256": "
|
|
15880
|
+
"sha256": "2649574d0cb0b3a6e261e654117cba0d692d1f4ffc0baa659cf4237559d8e352"
|
|
15866
15881
|
},
|
|
15867
15882
|
{
|
|
15868
15883
|
"path": "tests/copy_desk_page_reads.mjs",
|
|
@@ -15872,12 +15887,12 @@
|
|
|
15872
15887
|
{
|
|
15873
15888
|
"path": "tests/copy_desk_page_release.mjs",
|
|
15874
15889
|
"mode": "0000644",
|
|
15875
|
-
"sha256": "
|
|
15890
|
+
"sha256": "0107dc58b7a59c030d2ac6e45ed61b8a166804879e2c7bcdacb058d7c4bd36dd"
|
|
15876
15891
|
},
|
|
15877
15892
|
{
|
|
15878
15893
|
"path": "tests/copy_desk_page_submit.mjs",
|
|
15879
15894
|
"mode": "0000644",
|
|
15880
|
-
"sha256": "
|
|
15895
|
+
"sha256": "c1014ec06b183c120bd95620f303e814c95437d710cf6ac6b4870106526a393a"
|
|
15881
15896
|
},
|
|
15882
15897
|
{
|
|
15883
15898
|
"path": "tests/copy_guarded_lines.mjs",
|
|
@@ -15892,7 +15907,7 @@
|
|
|
15892
15907
|
{
|
|
15893
15908
|
"path": "tests/copy_stuck_page_tweaks.mjs",
|
|
15894
15909
|
"mode": "0000644",
|
|
15895
|
-
"sha256": "
|
|
15910
|
+
"sha256": "d0a860520d482be8014a036d183e570f789195597891c367c16ee7e817825e2a"
|
|
15896
15911
|
},
|
|
15897
15912
|
{
|
|
15898
15913
|
"path": "tests/core_258_box_session_claims_db.mjs",
|
|
@@ -17362,7 +17377,7 @@
|
|
|
17362
17377
|
{
|
|
17363
17378
|
"path": "tests/hall_approval_queue.mjs",
|
|
17364
17379
|
"mode": "0000644",
|
|
17365
|
-
"sha256": "
|
|
17380
|
+
"sha256": "8dac1a878d1eea79781861f12a82f19517ffa72b57a4579b3bcc28505f602d45"
|
|
17366
17381
|
},
|
|
17367
17382
|
{
|
|
17368
17383
|
"path": "tests/hall_asset_cache.mjs",
|
package/docs/copy-inventory.md
CHANGED
|
@@ -186,7 +186,8 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
186
186
|
| `8832c7204180` | certain | Anyone in the owning project | `modules/hall-ui/public/settings.html:295` |
|
|
187
187
|
| `7d2ab55d4112` | certain | Anyone on this instance | `modules/hall-ui/public/settings.html:296` |
|
|
188
188
|
| `2bd592da42f8` | certain | Approve and confirm tweaks | `modules/hall-ui/public/studio.html:127` |
|
|
189
|
-
| `
|
|
189
|
+
| `74908b8974fe` | certain | Approved, not applied yet | `modules/hall-ui/public/approval-queue.js:212` |
|
|
190
|
+
| `2ac725ca856a` | certain | Approved, not applied yet ({…}) | `modules/hall-ui/public/approval-queue.js:212` |
|
|
190
191
|
| `4160b56d14af` | certain | Archive goal | `modules/hall-ui/public/goals-render.js:953` |
|
|
191
192
|
| `4160b56d14af` | certain | Archive goal | `modules/hall-ui/public/goals-render.js:1035` |
|
|
192
193
|
| `206acb4467a2` | certain | Archive this goal? | `modules/hall-ui/public/goals-render.js:1025` |
|
|
@@ -585,7 +586,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
585
586
|
| `3dec722a5f6e` | certain | Hidden from Claude's menu: type the slash command yourself | `modules/hall-ui/public/commands-lib.js:93` |
|
|
586
587
|
| `0f5541a412d5` | certain | Hide the clock | `modules/hall-ui/public/goal-map.html:129` |
|
|
587
588
|
| `0f5541a412d5` | certain | Hide the clock | `modules/hall-ui/public/thinking.html:130` |
|
|
588
|
-
| `a2a30b0a7e90` | certain | Hide the page | `modules/hall-ui/public/approval-queue.js:
|
|
589
|
+
| `a2a30b0a7e90` | certain | Hide the page | `modules/hall-ui/public/approval-queue.js:195` |
|
|
589
590
|
| `1ac382ed7010` | certain | Hide the review panel | `modules/hall-ui/public/page-notes.js:130` |
|
|
590
591
|
| `ce8a068a34cf` | certain | Higher ranks only | `modules/hall-ui/public/sessions.html:36` |
|
|
591
592
|
| `31339c20c06f` | certain | Hold the card to your reader or touch it when your browser asks. Keep more than one registered in case one is | `modules/hall-ui/public/settings.html:190` |
|
|
@@ -860,6 +861,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
860
861
|
| `8226c979db4d` | certain | Not now | `modules/hall-ui/public/collab.js:668` |
|
|
861
862
|
| `8226c979db4d` | certain | Not now | `modules/hall-ui/public/paintbrush.js:115` |
|
|
862
863
|
| `8226c979db4d` | certain | Not now | `modules/hall-ui/public/paintbrush.js:179` |
|
|
864
|
+
| `588d69f36a3b` | certain | Not on the page yet. Once you approve the words, the page is updated and checked on its own. | `modules/hall-ui/public/approval-queue.js:191` |
|
|
863
865
|
| `14dc77e1c533` | certain | Not proposed | `modules/hall-ui/public/my-agents.js:565` |
|
|
864
866
|
| `b65385181fea` | certain | Not proposed: a law already holds this. Nothing filed. | `modules/hall-ui/public/my-agents.js:564` |
|
|
865
867
|
| `fd958805d815` | certain | Not proposed: no answer. | `modules/hall-ui/public/my-agents.js:566` |
|
|
@@ -1120,7 +1122,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1120
1122
|
| `9e370ee74bc4` | certain | See all ready work → | `modules/hall-ui/public/hall-widgets.js:112` |
|
|
1121
1123
|
| `324af64c8b6e` | certain | See all {…} goals {…} | `modules/hall-ui/public/roadmap.js:128` |
|
|
1122
1124
|
| `324af64c8b6e` | certain | See all {…} goals {…} | `modules/hall-ui/public/roadmap.js:230` |
|
|
1123
|
-
| `9bd297602336` | certain | See it on the page | `modules/hall-ui/public/approval-queue.js:
|
|
1125
|
+
| `9bd297602336` | certain | See it on the page | `modules/hall-ui/public/approval-queue.js:193` |
|
|
1124
1126
|
| `00473a773fd7` | certain | See the UAT | `modules/hall-ui/public/criterion-uat-ui.js:80` |
|
|
1125
1127
|
| `9276193a0e41` | certain | See the full picture → | `modules/hall-ui/public/goal-forest-render.js:138` |
|
|
1126
1128
|
| `fe80c9d8ba9c` | certain | See the public side of the project. | `modules/hall-ui/public/welcome-boot.js:183` |
|
|
@@ -1232,8 +1234,6 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1232
1234
|
| `6c6544f5c011` | certain | Stored encrypted; never shown again after saving — only its last four digits. | `modules/hall-ui/public/settings.html:226` |
|
|
1233
1235
|
| `5831de503015` | certain | Studio — {{worldName}} | `modules/hall-ui/public/studio.html:10` |
|
|
1234
1236
|
| `5831de503015` | certain | Studio — {{worldName}} | `modules/hall-ui/public/studio.html:10` |
|
|
1235
|
-
| `30b78bc382a1` | certain | Submitted, not applied yet | `modules/hall-ui/public/approval-queue.js:210` |
|
|
1236
|
-
| `7d56be90cd16` | certain | Submitted, not applied yet ({…}) | `modules/hall-ui/public/approval-queue.js:210` |
|
|
1237
1237
|
| `f79e1fb8ebd4` | certain | Suggested as you type; leave it on "no goal" and it waits for triage. | `modules/hall-ui/public/ideas.html:84` |
|
|
1238
1238
|
| `a1482eff4ead` | certain | Suggested for you | `modules/hall-ui/public/settings-specialities.js:384` |
|
|
1239
1239
|
| `1e40f33483eb` | certain | Switch theme | `modules/hall-ui/public/shell.js:545` |
|
|
@@ -1325,7 +1325,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1325
1325
|
| `329a1d350f07` | certain | The page changed after your draft was saved, so the draft is not shown over its new words. Rewrite the lines a | `modules/hall-ui/public/tweak-editor.js:310` |
|
|
1326
1326
|
| `aa716f3dd551` | certain | The page could not be loaded. Try again. | `modules/hall-ui/public/builders.js:1409` |
|
|
1327
1327
|
| `28e0c1457b08` | certain | The page is in. | `modules/hall-ui/public/tweak-editor.html:96` |
|
|
1328
|
-
| `4821b0e74460` | certain | The page, rendered | `modules/hall-ui/public/approval-queue.js:
|
|
1328
|
+
| `4821b0e74460` | certain | The page, rendered | `modules/hall-ui/public/approval-queue.js:195` |
|
|
1329
1329
|
| `74bc22f38140` | certain | The platform confirmed this request came from the account it names. | `modules/hall-ui/public/watch.js:396` |
|
|
1330
1330
|
| `6c3d88de42de` | certain | The primer | `modules/hall-ui/public/primer.html:37` |
|
|
1331
1331
|
| `dea378cd4837` | certain | The primer did not load | `modules/hall-ui/public/primer.html:83` |
|
|
@@ -1370,7 +1370,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1370
1370
|
| `34555793f33e` | certain | The task list could not be loaded right now. | `modules/hall-ui/public/work.js:1080` |
|
|
1371
1371
|
| `8c991355687d` | certain | The upgrade checked {…} and refused:{…} | `modules/hall-ui/public/deploy.js:473` |
|
|
1372
1372
|
| `a42a37c43bfb` | certain | The words this project shows people — what has been flagged, and what nobody has looked at. | `modules/hall-ui/public/copy-desk.js:328` |
|
|
1373
|
-
| `d51b954e0aa9` | certain | The words you changed | `modules/hall-ui/public/approval-queue.js:
|
|
1373
|
+
| `d51b954e0aa9` | certain | The words you changed | `modules/hall-ui/public/approval-queue.js:234` |
|
|
1374
1374
|
| `bcdbded93d4e` | certain | The work board failed to load. Reload to try again. | `modules/hall-ui/public/work.js:1268` |
|
|
1375
1375
|
| `eb4e0e565f6f` | certain | Their rank on that project, as that project reports it. | `modules/hall-ui/public/profile.js:388` |
|
|
1376
1376
|
| `996d2aa0e2f0` | certain | Then copy the project onto your machine, install its dependencies, and sign in: | `modules/hall-ui/public/hall-render.js:841` |
|
|
@@ -1626,7 +1626,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1626
1626
|
| `2177da93be9b` | certain | and leave this alone. | `modules/hall-ui/public/settings.html:347` |
|
|
1627
1627
|
| `0257cb508ae7` | certain | and {…} more below this thought | `modules/hall-ui/public/profile.js:484` |
|
|
1628
1628
|
| `d86265f99668` | certain | and {…} more waiting{…} | `modules/hall-ui/public/studio.js:316` |
|
|
1629
|
-
| `9bf4d3cabf80` | certain | approval queue | `modules/hall-ui/public/approval-queue.js:
|
|
1629
|
+
| `9bf4d3cabf80` | certain | approval queue | `modules/hall-ui/public/approval-queue.js:227` |
|
|
1630
1630
|
| `b4033000c537` | certain | as a table | `modules/hall-ui/public/profile-charts.js:281` |
|
|
1631
1631
|
| `72f977e4c47f` | certain | as configuration: membership rank:{…} — the council rank below, once you have added it and assigned its member | `modules/hall-ui/public/government.js:923` |
|
|
1632
1632
|
| `d7c511423bc0` | certain | as configuration: {…} | `modules/hall-ui/public/government.js:833` |
|
package/docs/copy-registry.json
CHANGED
|
@@ -3832,11 +3832,20 @@
|
|
|
3832
3832
|
"confidence": "certain"
|
|
3833
3833
|
},
|
|
3834
3834
|
{
|
|
3835
|
-
"id": "
|
|
3835
|
+
"id": "74908b8974fe",
|
|
3836
3836
|
"surface": "builders-hall",
|
|
3837
|
-
"text": "
|
|
3837
|
+
"text": "Approved, not applied yet",
|
|
3838
3838
|
"file": "modules/hall-ui/public/approval-queue.js",
|
|
3839
|
-
"line":
|
|
3839
|
+
"line": 212,
|
|
3840
|
+
"origin": "js-markup",
|
|
3841
|
+
"confidence": "certain"
|
|
3842
|
+
},
|
|
3843
|
+
{
|
|
3844
|
+
"id": "2ac725ca856a",
|
|
3845
|
+
"surface": "builders-hall",
|
|
3846
|
+
"text": "Approved, not applied yet ({…})",
|
|
3847
|
+
"file": "modules/hall-ui/public/approval-queue.js",
|
|
3848
|
+
"line": 212,
|
|
3840
3849
|
"origin": "js-markup",
|
|
3841
3850
|
"confidence": "certain"
|
|
3842
3851
|
},
|
|
@@ -7427,7 +7436,7 @@
|
|
|
7427
7436
|
"surface": "builders-hall",
|
|
7428
7437
|
"text": "Hide the page",
|
|
7429
7438
|
"file": "modules/hall-ui/public/approval-queue.js",
|
|
7430
|
-
"line":
|
|
7439
|
+
"line": 195,
|
|
7431
7440
|
"origin": "js-markup",
|
|
7432
7441
|
"confidence": "certain"
|
|
7433
7442
|
},
|
|
@@ -9897,6 +9906,15 @@
|
|
|
9897
9906
|
"origin": "js-markup",
|
|
9898
9907
|
"confidence": "certain"
|
|
9899
9908
|
},
|
|
9909
|
+
{
|
|
9910
|
+
"id": "588d69f36a3b",
|
|
9911
|
+
"surface": "builders-hall",
|
|
9912
|
+
"text": "Not on the page yet. Once you approve the words, the page is updated and checked on its own.",
|
|
9913
|
+
"file": "modules/hall-ui/public/approval-queue.js",
|
|
9914
|
+
"line": 191,
|
|
9915
|
+
"origin": "js-markup",
|
|
9916
|
+
"confidence": "certain"
|
|
9917
|
+
},
|
|
9900
9918
|
{
|
|
9901
9919
|
"id": "14dc77e1c533",
|
|
9902
9920
|
"surface": "builders-hall",
|
|
@@ -12242,7 +12260,7 @@
|
|
|
12242
12260
|
"surface": "builders-hall",
|
|
12243
12261
|
"text": "See it on the page",
|
|
12244
12262
|
"file": "modules/hall-ui/public/approval-queue.js",
|
|
12245
|
-
"line":
|
|
12263
|
+
"line": 193,
|
|
12246
12264
|
"origin": "js-markup",
|
|
12247
12265
|
"confidence": "certain"
|
|
12248
12266
|
},
|
|
@@ -13245,24 +13263,6 @@
|
|
|
13245
13263
|
"origin": "html-title",
|
|
13246
13264
|
"confidence": "certain"
|
|
13247
13265
|
},
|
|
13248
|
-
{
|
|
13249
|
-
"id": "30b78bc382a1",
|
|
13250
|
-
"surface": "builders-hall",
|
|
13251
|
-
"text": "Submitted, not applied yet",
|
|
13252
|
-
"file": "modules/hall-ui/public/approval-queue.js",
|
|
13253
|
-
"line": 210,
|
|
13254
|
-
"origin": "js-markup",
|
|
13255
|
-
"confidence": "certain"
|
|
13256
|
-
},
|
|
13257
|
-
{
|
|
13258
|
-
"id": "7d56be90cd16",
|
|
13259
|
-
"surface": "builders-hall",
|
|
13260
|
-
"text": "Submitted, not applied yet ({…})",
|
|
13261
|
-
"file": "modules/hall-ui/public/approval-queue.js",
|
|
13262
|
-
"line": 210,
|
|
13263
|
-
"origin": "js-markup",
|
|
13264
|
-
"confidence": "certain"
|
|
13265
|
-
},
|
|
13266
13266
|
{
|
|
13267
13267
|
"id": "f79e1fb8ebd4",
|
|
13268
13268
|
"surface": "builders-hall",
|
|
@@ -14087,7 +14087,7 @@
|
|
|
14087
14087
|
"surface": "builders-hall",
|
|
14088
14088
|
"text": "The page, rendered",
|
|
14089
14089
|
"file": "modules/hall-ui/public/approval-queue.js",
|
|
14090
|
-
"line":
|
|
14090
|
+
"line": 195,
|
|
14091
14091
|
"origin": "js-markup",
|
|
14092
14092
|
"confidence": "certain"
|
|
14093
14093
|
},
|
|
@@ -14492,7 +14492,7 @@
|
|
|
14492
14492
|
"surface": "builders-hall",
|
|
14493
14493
|
"text": "The words you changed",
|
|
14494
14494
|
"file": "modules/hall-ui/public/approval-queue.js",
|
|
14495
|
-
"line":
|
|
14495
|
+
"line": 234,
|
|
14496
14496
|
"origin": "js-markup",
|
|
14497
14497
|
"confidence": "certain"
|
|
14498
14498
|
},
|
|
@@ -16796,7 +16796,7 @@
|
|
|
16796
16796
|
"surface": "builders-hall",
|
|
16797
16797
|
"text": "approval queue",
|
|
16798
16798
|
"file": "modules/hall-ui/public/approval-queue.js",
|
|
16799
|
-
"line":
|
|
16799
|
+
"line": 227,
|
|
16800
16800
|
"origin": "js-markup",
|
|
16801
16801
|
"confidence": "certain"
|
|
16802
16802
|
},
|
|
@@ -3245,5 +3245,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
3245
3245
|
landed since 1.23.12 with no explicit bump. run 40600119011. (task 1002620)
|
|
3246
3246
|
1.23.15 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
3247
3247
|
landed since 1.23.14 with no explicit bump. run 40604630697. (task 1002620)
|
|
3248
|
+
1.23.16 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
3249
|
+
landed since 1.23.15 with no explicit bump. run 40607196561. (task 1002620)
|
|
3250
|
+
1.23.17 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
3251
|
+
landed since 1.23.16 with no explicit bump. run 40609586769. (task 1002620)
|
|
3248
3252
|
---------------------------------------------------------------------------
|
|
3249
3253
|
```
|
package/docs/page-readings.json
CHANGED
|
@@ -3868,8 +3868,8 @@
|
|
|
3868
3868
|
"surface": "builders",
|
|
3869
3869
|
"title": "Studio",
|
|
3870
3870
|
"states_read": ["home","out","flow","flow-pick","status","words-offer","words-edit","reviews","full","full-back","approvals","approvals-before","approvals-phone","approvals-note","approved","sent-back","approvals-page"],
|
|
3871
|
-
"files_hash": "
|
|
3872
|
-
"reading_hash": "
|
|
3871
|
+
"files_hash": "424ec7f20bcf0e36",
|
|
3872
|
+
"reading_hash": "77e67719e01e6fba",
|
|
3873
3873
|
"counts": {"lines":30,"placed":16,"shared":6,"unplaced":8},
|
|
3874
3874
|
"omitted": {"data":4},
|
|
3875
3875
|
"notes": ["flow: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","flow-pick: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","status: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","words-offer: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","words-edit: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","reviews: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","full: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","full-back: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","approvals: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","approvals-before: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","approvals-phone: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","approvals-note: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","approved: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","sent-back: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","approvals-page: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood"],
|
|
@@ -3891,7 +3891,7 @@
|
|
|
3891
3891
|
{"key":"L0015","section":"Good evening.","text":"Work through tweaks","placement":"placed","file":"modules/hall-ui/public/studio.html","line":123,"string_id":"51458d92e5bc"},
|
|
3892
3892
|
{"key":"L0016","section":"Good evening.","text":"next up: {…} — {…}","placement":"unplaced"},
|
|
3893
3893
|
{"key":"L0017","section":"Good evening.","text":"Approve and confirm tweaks","placement":"placed","file":"modules/hall-ui/public/studio.html","line":127,"string_id":"2bd592da42f8"},
|
|
3894
|
-
{"key":"L0018","section":"Good evening.","text":"2 pages
|
|
3894
|
+
{"key":"L0018","section":"Good evening.","text":"2 pages waiting for you","placement":"unplaced"},
|
|
3895
3895
|
{"key":"L0019","section":"Good evening.","text":"Needs to be reviewed","placement":"placed","file":"modules/hall-ui/public/studio.html","line":131,"string_id":"dcff7dcecf55"},
|
|
3896
3896
|
{"key":"L0020","section":"Good evening.","text":"From the live site","placement":"placed","file":"modules/hall-ui/public/studio.html","line":137,"string_id":"edced5d528c3"},
|
|
3897
3897
|
{"key":"L0021","section":"Good evening.","text":"2 reviews from the live site","placement":"unplaced"},
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// auto-close.js — a page round with nothing in it closes itself (task 1004899).
|
|
4
|
+
//
|
|
5
|
+
// WHY. A round only moves when a person or a runner acts on it, so a round that
|
|
6
|
+
// holds nothing to act on sat in the Studio as "Needs a look" (or "Submitted,
|
|
7
|
+
// waiting to be applied") forever: someone had to notice it and abandon it by
|
|
8
|
+
// hand. Two shapes hold nothing:
|
|
9
|
+
//
|
|
10
|
+
// blank `ready`, no draft and no frozen batch: opened in the
|
|
11
|
+
// studio, nothing written, the claim dropped.
|
|
12
|
+
// nothing_to_apply `ready` with a frozen batch whose `lines` is empty: every
|
|
13
|
+
// rewrite left the batch for an engineer task at submit
|
|
14
|
+
// (unplaced, shared or removed lines), so /tweak has no line
|
|
15
|
+
// to apply and the round can never move on its own.
|
|
16
|
+
//
|
|
17
|
+
// Both are abandoned through the lifecycle port's releaseStuckTweak (no compose,
|
|
18
|
+
// so the note is the reason and nothing is written to the description). The
|
|
19
|
+
// engineer tasks a submit filed are untouched: they carry the artist's words.
|
|
20
|
+
//
|
|
21
|
+
// `closeReason` is pure; `runAutoClose` is the I/O the poller calls. A round
|
|
22
|
+
// someone holds, or one touched within GRACE_MS, is never closed: an artist who
|
|
23
|
+
// just released a draft to come back to it in a minute keeps it.
|
|
24
|
+
|
|
25
|
+
const api = require('../../src/module-api');
|
|
26
|
+
const pages = require('./pages');
|
|
27
|
+
|
|
28
|
+
const GRACE_MS = Number(process.env.COPY_AUTO_CLOSE_GRACE_MS) || 60 * 60_000;
|
|
29
|
+
|
|
30
|
+
const NOTES = Object.freeze({
|
|
31
|
+
blank: 'Closed by itself: the round was opened but nothing was written in it.',
|
|
32
|
+
nothing_to_apply: 'Closed by itself: every rewritten line went to an engineer task, so nothing was left to apply on the page.',
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
function closeReason(task, { now = Date.now(), graceMs = GRACE_MS } = {}) {
|
|
36
|
+
if (!task || task.status !== 'ready' || task.holder_id != null) return null;
|
|
37
|
+
const touched = Date.parse(task.updated_at || task.created_at || '');
|
|
38
|
+
if (!Number.isFinite(touched) || now - touched < graceMs) return null;
|
|
39
|
+
const p = pages.blockPresence(task.description);
|
|
40
|
+
if (!p.batch) return p.draft ? null : 'blank';
|
|
41
|
+
const b = pages.parseBatchBlock(task.description);
|
|
42
|
+
if (b.ok && b.batch.lines.length === 0) return 'nothing_to_apply';
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// One sweep. Returns what happened per round, so the poller and the tests read
|
|
47
|
+
// the same outcome. The actor is the project owner (a system act, recorded on
|
|
48
|
+
// the task as its abandon reason); no owner, no sweep.
|
|
49
|
+
async function runAutoClose({ now = Date.now(), resolve = (k) => (api.resolveOptional ? api.resolveOptional(k) : null), founder = () => api.getFoundingBuilder() } = {}) {
|
|
50
|
+
const lifecycle = resolve('lifecycle');
|
|
51
|
+
if (!lifecycle || typeof lifecycle.listPageTweakTasks !== 'function' || typeof lifecycle.releaseStuckTweak !== 'function') {
|
|
52
|
+
return { closed: [], skipped: 'no_lifecycle' };
|
|
53
|
+
}
|
|
54
|
+
const tasks = await lifecycle.listPageTweakTasks();
|
|
55
|
+
const due = tasks.map((t) => ({ t, why: closeReason(t, { now }) })).filter((x) => x.why);
|
|
56
|
+
if (!due.length) return { closed: [] };
|
|
57
|
+
const owner = await founder();
|
|
58
|
+
if (!owner) return { closed: [], skipped: 'no_owner' };
|
|
59
|
+
const closed = [];
|
|
60
|
+
for (const { t, why } of due) {
|
|
61
|
+
const r = await lifecycle.releaseStuckTweak({ taskId: t.id, builderId: owner.id, expectedStatus: 'ready', note: NOTES[why] });
|
|
62
|
+
closed.push({ task_id: String(t.id), why, outcome: r.outcome });
|
|
63
|
+
}
|
|
64
|
+
return { closed };
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
module.exports = { closeReason, runAutoClose };
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"category": { "parent": "quality" },
|
|
8
8
|
"default": true,
|
|
9
9
|
"maintenance": { "status": "core-maintained" },
|
|
10
|
-
"contributes": { "routes": ["copy-desk", "copy-desk-artist", "copy-desk-release"], "migrations": true, "skills": ["tweak"], "pollers": ["stuck-page-digest"] },
|
|
10
|
+
"contributes": { "routes": ["copy-desk", "copy-desk-artist", "copy-desk-release"], "migrations": true, "skills": ["tweak"], "pollers": ["stuck-page-digest", "auto-close-rounds"] },
|
|
11
11
|
"provides": ["copy-desk.artistStats", "copy-desk.stuckPageTweaksFor"],
|
|
12
12
|
"consumes": ["lifecycle"]
|
|
13
13
|
}
|
|
@@ -29,11 +29,12 @@ async function waitingRoundOrFail(res, lifecycle, pageId, body, openRoundOf) {
|
|
|
29
29
|
const rounds = await lifecycle.listPageTweakTasks({ pageId });
|
|
30
30
|
const round = openRoundOf(rounds, pageId);
|
|
31
31
|
const state = round ? pageStatus.roundState(round) : null;
|
|
32
|
-
|
|
32
|
+
// task 1004900: a submitted batch whose words wait for review is decided here too.
|
|
33
|
+
if (!round || (state !== 'waiting_for_artist' && state !== 'words_review')) {
|
|
33
34
|
res.fail('not_waiting', 409, {
|
|
34
35
|
page_id: pageId,
|
|
35
36
|
round: round ? { task_id: String(round.id), status: round.status, state } : null,
|
|
36
|
-
what_this_means: 'This page is not waiting for approval. Only a page
|
|
37
|
+
what_this_means: 'This page is not waiting for approval. Only submitted words, or a page that has been applied and checked, can be approved or sent back.',
|
|
37
38
|
});
|
|
38
39
|
return null;
|
|
39
40
|
}
|
|
@@ -45,7 +46,34 @@ async function waitingRoundOrFail(res, lifecycle, pageId, body, openRoundOf) {
|
|
|
45
46
|
});
|
|
46
47
|
return null;
|
|
47
48
|
}
|
|
48
|
-
return { round, rounds };
|
|
49
|
+
return { round, rounds, state };
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// The WORDS decision (task 1004900): a submitted batch approved, so it joins
|
|
53
|
+
// the /tweak queue, or sent back with a note, so the batch is withdrawn and the
|
|
54
|
+
// round is a draft its artist can change and submit again. Answers the route
|
|
55
|
+
// itself; nothing is applied, rendered or landed here.
|
|
56
|
+
async function decideWords(res, lifecycle, { pageId, round, builderId, kind, note, invData }) {
|
|
57
|
+
if (typeof lifecycle.decideTweakWords !== 'function') {
|
|
58
|
+
return res.fail('lifecycle_unavailable', 503, { what_this_means: 'This instance cannot record a decision on submitted words. Nothing was decided.' });
|
|
59
|
+
}
|
|
60
|
+
const at = new Date().toISOString();
|
|
61
|
+
const by = String(builderId);
|
|
62
|
+
const compose = kind === 'approve'
|
|
63
|
+
? (t) => pages.approveWords(t.description, { at, by })
|
|
64
|
+
: (t) => pages.sendBackWords(t.description, { at, by, note });
|
|
65
|
+
const r = await lifecycle.decideTweakWords({ taskId: round.id, builderId, compose });
|
|
66
|
+
if (r.outcome === 'round_moved') return refuseDecision(res, pageId, { outcome: 'not_waiting' });
|
|
67
|
+
if (r.outcome !== 'decided') return refuseDecision(res, pageId, r);
|
|
68
|
+
const crafts = typeof lifecycle.builderCrafts === 'function' ? await lifecycle.builderCrafts(builderId) : [];
|
|
69
|
+
return res.json({
|
|
70
|
+
ok: true,
|
|
71
|
+
outcome: kind === 'approve' ? 'words_approved' : 'words_sent_back',
|
|
72
|
+
page_id: pageId,
|
|
73
|
+
round: { task_id: String(r.task.id), state: kind === 'approve' ? 'submitted' : 'draft', status: r.task.status },
|
|
74
|
+
...(kind === 'approve' ? {} : { sent_back: { at, by, note } }),
|
|
75
|
+
next: await nextWaiting(lifecycle, invData, builderId, crafts),
|
|
76
|
+
});
|
|
49
77
|
}
|
|
50
78
|
|
|
51
79
|
// The port's refusals, as the panel shows them.
|
|
@@ -80,4 +108,4 @@ async function nextWaiting(lifecycle, invData, builderId, crafts) {
|
|
|
80
108
|
return { count: q.count, page: n ? { page_id: n.page_id, title: n.title, path: n.path, task_id: n.task_id } : null };
|
|
81
109
|
}
|
|
82
110
|
|
|
83
|
-
module.exports = { openRoundOf, waitingRoundOrFail, refuseDecision, nextWaiting };
|
|
111
|
+
module.exports = { openRoundOf, waitingRoundOrFail, refuseDecision, nextWaiting, decideWords };
|