@bongos/core 1.20.5 → 1.20.6
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 +102 -52
- package/.claude/skills/goal-review/SKILL.md +16 -24
- package/.claude/skills/goal-uat/SKILL.md +84 -0
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +12 -0
- package/clients/bongos-client/index.cjs +12 -0
- package/clients/bongos-client/index.d.ts +18 -1
- package/clients/bongos-client/index.mjs +12 -0
- package/docs/adr/0183-criteria-close-themselves.md +1 -1
- package/docs/adr/0310-a-speciality-offers-skills-and-the-adopter-chooses-them.md +1 -1
- package/docs/adr/0351-a-criterion-closes-on-a-uat.md +73 -0
- package/docs/adr/README.md +28 -0
- package/docs/api/openapi.json +385 -5
- package/docs/api-reference.md +14 -4
- package/docs/architecture.md +7 -0
- package/docs/copy-inventory.md +22 -22
- package/docs/copy-registry.json +23 -23
- package/docs/file-map.md +2 -1
- package/docs/module-api-changelog.md +3 -1
- package/docs/page-readings.json +3 -3
- package/modules/hall-ui/public/goals-page.js +8 -3
- package/modules/hall-ui/public/tweak-editor.css +4 -7
- package/modules/hall-ui/public/tweak-editor.html +3 -3
- package/modules/hall-ui/public/tweak-editor.js +3 -0
- package/modules/lifecycle/criterion-uat-db.js +267 -0
- package/modules/lifecycle/criterion-uat.js +303 -0
- package/modules/lifecycle/db-goals.js +25 -12
- package/modules/lifecycle/done-when.js +84 -17
- package/modules/lifecycle/migrations/lifecycle_015_criterion_uat.sql +73 -0
- package/modules/lifecycle/module.json +1 -0
- package/modules/lifecycle/routes/criterion-uat.js +169 -0
- package/modules/lifecycle/routes/done-when.js +25 -1
- package/modules/npm-release/module.json +3 -1
- package/modules/npm-release/routes/task-where.js +18 -1
- package/modules/npm-release/work.js +38 -7
- package/modules/specialities/routes/specialities.js +8 -1
- package/modules/specialities/specialities.js +26 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +18 -0
- package/scripts/gds/cli-lib.js +4 -1
- package/scripts/gds/fitness-checks-write-validation.js +4 -0
- package/scripts/gds/status.js +14 -3
- package/scripts/gds/uat.js +120 -0
- package/src/bongos/route-rank-check.js +9 -0
- package/src/module-api.js +1 -1
- package/tests/auto_satisfy_criteria.mjs +4 -2
- package/tests/criterion_uat.mjs +467 -0
- package/tests/criterion_uat_routes.mjs +232 -0
- package/tests/fitness.mjs +3 -1
- package/tests/goal_achievement.mjs +4 -2
- package/tests/goal_routes.mjs +4 -2
- package/tests/ideator_full_idea_shapes_space_proof.mjs +3 -2
- package/tests/npm_release_where.mjs +18 -2
- package/tests/speciality_session_skills.mjs +150 -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.20.
|
|
6
|
-
"core_contract": "1.20.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.20.6",
|
|
6
|
+
"core_contract": "1.20.6",
|
|
7
|
+
"source_commit": "7887b42a9147d4ca749389bca6fbff6120c41766",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-09-
|
|
9
|
+
"built_at": "2026-09-30T04:05:09.203Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
|
-
"docs_redacted":
|
|
12
|
+
"docs_redacted": 556,
|
|
13
13
|
"agent_docs_stubbed": 25,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 2619,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 3201,
|
|
20
|
+
"tree_sha256": "e7197c9a0497ef19bdfcd4085f7d6509536dbd1a85e1e52629d416a46530bce2",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -152,7 +152,12 @@
|
|
|
152
152
|
{
|
|
153
153
|
"path": ".claude/skills/goal-review/SKILL.md",
|
|
154
154
|
"mode": "0000644",
|
|
155
|
-
"sha256": "
|
|
155
|
+
"sha256": "bcee363c7e38108d43a8a1ada4bec72e21e4ac9439ed702d2ee905fc83156d15"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"path": ".claude/skills/goal-uat/SKILL.md",
|
|
159
|
+
"mode": "0000644",
|
|
160
|
+
"sha256": "a9a59d541ce5956b36cfd7f170f242f996297fdced7ff0bea73d37bc19c02b8e"
|
|
156
161
|
},
|
|
157
162
|
{
|
|
158
163
|
"path": ".claude/skills/grade-audit/SKILL.md",
|
|
@@ -322,12 +327,12 @@
|
|
|
322
327
|
{
|
|
323
328
|
"path": "clients/bongos-client/README.md",
|
|
324
329
|
"mode": "0000644",
|
|
325
|
-
"sha256": "
|
|
330
|
+
"sha256": "655edd2659cc7ea8267529eb86f3a9454df4765f84ab5090208bab74b9befc93"
|
|
326
331
|
},
|
|
327
332
|
{
|
|
328
333
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
329
334
|
"mode": "0000644",
|
|
330
|
-
"sha256": "
|
|
335
|
+
"sha256": "1b5dfe77f736f8da7059734b1e38b7ae991810245799678235866ce7c2a02494"
|
|
331
336
|
},
|
|
332
337
|
{
|
|
333
338
|
"path": "clients/bongos-client/examples/hello-world.mjs",
|
|
@@ -337,17 +342,17 @@
|
|
|
337
342
|
{
|
|
338
343
|
"path": "clients/bongos-client/index.cjs",
|
|
339
344
|
"mode": "0000644",
|
|
340
|
-
"sha256": "
|
|
345
|
+
"sha256": "5fa483ccc721ed1b1ed715bfd01fe432486397eeb6d0ae8f6e504b3f28a8b72d"
|
|
341
346
|
},
|
|
342
347
|
{
|
|
343
348
|
"path": "clients/bongos-client/index.d.ts",
|
|
344
349
|
"mode": "0000644",
|
|
345
|
-
"sha256": "
|
|
350
|
+
"sha256": "bb4de29e1723e57afe52bccbd86b22c768272917951551ac3612ba732efa8d07"
|
|
346
351
|
},
|
|
347
352
|
{
|
|
348
353
|
"path": "clients/bongos-client/index.mjs",
|
|
349
354
|
"mode": "0000644",
|
|
350
|
-
"sha256": "
|
|
355
|
+
"sha256": "bc339a45e590e5e5e1d3f75abb63e10304d2a980e20122bf8d1f44f1ee315277"
|
|
351
356
|
},
|
|
352
357
|
{
|
|
353
358
|
"path": "clients/bongos-client/package.json",
|
|
@@ -1372,7 +1377,7 @@
|
|
|
1372
1377
|
{
|
|
1373
1378
|
"path": "docs/adr/0183-criteria-close-themselves.md",
|
|
1374
1379
|
"mode": "0000644",
|
|
1375
|
-
"sha256": "
|
|
1380
|
+
"sha256": "83d29d1d09d4b77f8281fc63b30c99cf357c82425ee3792e1539e22e5d11f635"
|
|
1376
1381
|
},
|
|
1377
1382
|
{
|
|
1378
1383
|
"path": "docs/adr/0184-a-task-visual-inherits-its-summary-audience.md",
|
|
@@ -2017,7 +2022,7 @@
|
|
|
2017
2022
|
{
|
|
2018
2023
|
"path": "docs/adr/0310-a-speciality-offers-skills-and-the-adopter-chooses-them.md",
|
|
2019
2024
|
"mode": "0000644",
|
|
2020
|
-
"sha256": "
|
|
2025
|
+
"sha256": "26c9bcf97fdfbbd6fb8da07c7bd0be58b6f7c0b778e1296fe6a5431824e51810"
|
|
2021
2026
|
},
|
|
2022
2027
|
{
|
|
2023
2028
|
"path": "docs/adr/0311-an-idea-is-a-permanent-origin-tag.md",
|
|
@@ -2219,25 +2224,30 @@
|
|
|
2219
2224
|
"mode": "0000644",
|
|
2220
2225
|
"sha256": "a2049480333d5cf3ff6890463a7381d80182ff7f934edf841a7e92c0c58990e6"
|
|
2221
2226
|
},
|
|
2227
|
+
{
|
|
2228
|
+
"path": "docs/adr/0351-a-criterion-closes-on-a-uat.md",
|
|
2229
|
+
"mode": "0000644",
|
|
2230
|
+
"sha256": "4ca4eae961c994cae0dd9d306ea0a5a6f9ce660de161a62c5ccd125d910f70ec"
|
|
2231
|
+
},
|
|
2222
2232
|
{
|
|
2223
2233
|
"path": "docs/adr/README.md",
|
|
2224
2234
|
"mode": "0000644",
|
|
2225
|
-
"sha256": "
|
|
2235
|
+
"sha256": "bcfa8004aeaebbfb6c32c53042665d7da49098e80dd858a3f353420f8ef2c523"
|
|
2226
2236
|
},
|
|
2227
2237
|
{
|
|
2228
2238
|
"path": "docs/api-reference.md",
|
|
2229
2239
|
"mode": "0000644",
|
|
2230
|
-
"sha256": "
|
|
2240
|
+
"sha256": "822f6c627d3bf4b7470740dd6a6f37cfeaef934d88bd44cd8616534481d8c1cf"
|
|
2231
2241
|
},
|
|
2232
2242
|
{
|
|
2233
2243
|
"path": "docs/api/openapi.json",
|
|
2234
2244
|
"mode": "0000644",
|
|
2235
|
-
"sha256": "
|
|
2245
|
+
"sha256": "6dea7c163c31d7b5128ebaea93d97c03262a560f489fd68f0edba551dc46403b"
|
|
2236
2246
|
},
|
|
2237
2247
|
{
|
|
2238
2248
|
"path": "docs/architecture.md",
|
|
2239
2249
|
"mode": "0000644",
|
|
2240
|
-
"sha256": "
|
|
2250
|
+
"sha256": "682588d5c6f8dc16bfd25c23b441d333691678ac49f55500e6745fedf7c7851d"
|
|
2241
2251
|
},
|
|
2242
2252
|
{
|
|
2243
2253
|
"path": "docs/branding-contract.md",
|
|
@@ -2257,12 +2267,12 @@
|
|
|
2257
2267
|
{
|
|
2258
2268
|
"path": "docs/copy-inventory.md",
|
|
2259
2269
|
"mode": "0000644",
|
|
2260
|
-
"sha256": "
|
|
2270
|
+
"sha256": "3efebbe96dcf76fa9e6f30e66594641b906c8b04b1d9c4c3ea57a8634dc143d8"
|
|
2261
2271
|
},
|
|
2262
2272
|
{
|
|
2263
2273
|
"path": "docs/copy-registry.json",
|
|
2264
2274
|
"mode": "0000644",
|
|
2265
|
-
"sha256": "
|
|
2275
|
+
"sha256": "efd6dd52270465cfc046d2283321e7513769807fe795c57e2207ac284dcf4a0b"
|
|
2266
2276
|
},
|
|
2267
2277
|
{
|
|
2268
2278
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -2752,7 +2762,7 @@
|
|
|
2752
2762
|
{
|
|
2753
2763
|
"path": "docs/file-map.md",
|
|
2754
2764
|
"mode": "0000644",
|
|
2755
|
-
"sha256": "
|
|
2765
|
+
"sha256": "803f616840f604487828796195cdc74a3f834dc5f5117309ef01725b9d13b7aa"
|
|
2756
2766
|
},
|
|
2757
2767
|
{
|
|
2758
2768
|
"path": "docs/handoff-template.md",
|
|
@@ -2762,7 +2772,7 @@
|
|
|
2762
2772
|
{
|
|
2763
2773
|
"path": "docs/module-api-changelog.md",
|
|
2764
2774
|
"mode": "0000644",
|
|
2765
|
-
"sha256": "
|
|
2775
|
+
"sha256": "4604938cde7776d0076401f0a76aea306838b3498cd6c6834bf2ce34e68d84c9"
|
|
2766
2776
|
},
|
|
2767
2777
|
{
|
|
2768
2778
|
"path": "docs/modules-contract.md",
|
|
@@ -2852,7 +2862,7 @@
|
|
|
2852
2862
|
{
|
|
2853
2863
|
"path": "docs/page-readings.json",
|
|
2854
2864
|
"mode": "0000644",
|
|
2855
|
-
"sha256": "
|
|
2865
|
+
"sha256": "3a08cbdaca08161fd7db132153a0e43badc9b7b156ad24825d38e2e760193226"
|
|
2856
2866
|
},
|
|
2857
2867
|
{
|
|
2858
2868
|
"path": "docs/project-context.template.md",
|
|
@@ -5147,7 +5157,7 @@
|
|
|
5147
5157
|
{
|
|
5148
5158
|
"path": "modules/hall-ui/public/goals-page.js",
|
|
5149
5159
|
"mode": "0000644",
|
|
5150
|
-
"sha256": "
|
|
5160
|
+
"sha256": "14e688e5adbffc9c9d15fb5baa8637a60b8f4536fee7351c9a7e1e10747d80ca"
|
|
5151
5161
|
},
|
|
5152
5162
|
{
|
|
5153
5163
|
"path": "modules/hall-ui/public/goals-render.js",
|
|
@@ -5662,17 +5672,17 @@
|
|
|
5662
5672
|
{
|
|
5663
5673
|
"path": "modules/hall-ui/public/tweak-editor.css",
|
|
5664
5674
|
"mode": "0000644",
|
|
5665
|
-
"sha256": "
|
|
5675
|
+
"sha256": "4bfbc72980f2b4e51eb98d26542a0ceabd39b7fa591781017953a3365a76323a"
|
|
5666
5676
|
},
|
|
5667
5677
|
{
|
|
5668
5678
|
"path": "modules/hall-ui/public/tweak-editor.html",
|
|
5669
5679
|
"mode": "0000644",
|
|
5670
|
-
"sha256": "
|
|
5680
|
+
"sha256": "dc0d329e5e65a38febfcdb3d0e1a2b14073c85ed3aa1db3788e2ecd8ace7e7e7"
|
|
5671
5681
|
},
|
|
5672
5682
|
{
|
|
5673
5683
|
"path": "modules/hall-ui/public/tweak-editor.js",
|
|
5674
5684
|
"mode": "0000644",
|
|
5675
|
-
"sha256": "
|
|
5685
|
+
"sha256": "c44ee76a48bb651d313a3bd36fb825d9908df0dbf66606fa753f341054c23fb5"
|
|
5676
5686
|
},
|
|
5677
5687
|
{
|
|
5678
5688
|
"path": "modules/hall-ui/public/tweak-editor.states.json",
|
|
@@ -6054,6 +6064,16 @@
|
|
|
6054
6064
|
"mode": "0000644",
|
|
6055
6065
|
"sha256": "4a4a513ed0759e1e999454e6b6972b921789a5c2a88521755812d97fb6194f83"
|
|
6056
6066
|
},
|
|
6067
|
+
{
|
|
6068
|
+
"path": "modules/lifecycle/criterion-uat-db.js",
|
|
6069
|
+
"mode": "0000644",
|
|
6070
|
+
"sha256": "c564838f98186f8d95c248711837205a5b4b659f508868eb2d06ae82299496a5"
|
|
6071
|
+
},
|
|
6072
|
+
{
|
|
6073
|
+
"path": "modules/lifecycle/criterion-uat.js",
|
|
6074
|
+
"mode": "0000644",
|
|
6075
|
+
"sha256": "4ba38d17487e75217941a51cb26befe2168fe50dfb013c3ab3ae3f96d5c75f17"
|
|
6076
|
+
},
|
|
6057
6077
|
{
|
|
6058
6078
|
"path": "modules/lifecycle/db-analytics.js",
|
|
6059
6079
|
"mode": "0000644",
|
|
@@ -6082,7 +6102,7 @@
|
|
|
6082
6102
|
{
|
|
6083
6103
|
"path": "modules/lifecycle/db-goals.js",
|
|
6084
6104
|
"mode": "0000644",
|
|
6085
|
-
"sha256": "
|
|
6105
|
+
"sha256": "405501ea6a190c2c0f35daa813a5fc48ff236015cfa90d6e52e358cc834cdb30"
|
|
6086
6106
|
},
|
|
6087
6107
|
{
|
|
6088
6108
|
"path": "modules/lifecycle/db-grade.js",
|
|
@@ -6142,7 +6162,7 @@
|
|
|
6142
6162
|
{
|
|
6143
6163
|
"path": "modules/lifecycle/done-when.js",
|
|
6144
6164
|
"mode": "0000644",
|
|
6145
|
-
"sha256": "
|
|
6165
|
+
"sha256": "5d2bba7da9bd898ab58f788ef405beec15932de619f3ccb734f98c3ec8af9a43"
|
|
6146
6166
|
},
|
|
6147
6167
|
{
|
|
6148
6168
|
"path": "modules/lifecycle/est-advisory.js",
|
|
@@ -6319,6 +6339,11 @@
|
|
|
6319
6339
|
"mode": "0000644",
|
|
6320
6340
|
"sha256": "ee6fd18f9752022fa97513032742a737f96571363946be1917ae52ff27056362"
|
|
6321
6341
|
},
|
|
6342
|
+
{
|
|
6343
|
+
"path": "modules/lifecycle/migrations/lifecycle_015_criterion_uat.sql",
|
|
6344
|
+
"mode": "0000644",
|
|
6345
|
+
"sha256": "896a41413ab6a21ac2083b60e70502cd8e35cc594c3defaffc122c01cfea9239"
|
|
6346
|
+
},
|
|
6322
6347
|
{
|
|
6323
6348
|
"path": "modules/lifecycle/mingle.js",
|
|
6324
6349
|
"mode": "0000644",
|
|
@@ -6332,7 +6357,7 @@
|
|
|
6332
6357
|
{
|
|
6333
6358
|
"path": "modules/lifecycle/module.json",
|
|
6334
6359
|
"mode": "0000644",
|
|
6335
|
-
"sha256": "
|
|
6360
|
+
"sha256": "75b5ab14761c7c83b44219a0d4540b064548a38ecb1de20eab540c5cbebf162b"
|
|
6336
6361
|
},
|
|
6337
6362
|
{
|
|
6338
6363
|
"path": "modules/lifecycle/page-tweak-approve.js",
|
|
@@ -6424,6 +6449,11 @@
|
|
|
6424
6449
|
"mode": "0000644",
|
|
6425
6450
|
"sha256": "1ad8e353ead5c3fe39fadc1d48a2fc65725762cc298e206464ef242f7fdd292d"
|
|
6426
6451
|
},
|
|
6452
|
+
{
|
|
6453
|
+
"path": "modules/lifecycle/routes/criterion-uat.js",
|
|
6454
|
+
"mode": "0000644",
|
|
6455
|
+
"sha256": "f2e91e940a5b35f4320a461f826cc2053d09acbaa323898a1d9f7cd3228e453c"
|
|
6456
|
+
},
|
|
6427
6457
|
{
|
|
6428
6458
|
"path": "modules/lifecycle/routes/dependencies.js",
|
|
6429
6459
|
"mode": "0000644",
|
|
@@ -6432,7 +6462,7 @@
|
|
|
6432
6462
|
{
|
|
6433
6463
|
"path": "modules/lifecycle/routes/done-when.js",
|
|
6434
6464
|
"mode": "0000644",
|
|
6435
|
-
"sha256": "
|
|
6465
|
+
"sha256": "503d1b4f483dcca715146530e8ca71e33f72d855dd19aa7a59eebe7a8ba574d1"
|
|
6436
6466
|
},
|
|
6437
6467
|
{
|
|
6438
6468
|
"path": "modules/lifecycle/routes/gate-approvals.js",
|
|
@@ -6652,7 +6682,7 @@
|
|
|
6652
6682
|
{
|
|
6653
6683
|
"path": "modules/npm-release/module.json",
|
|
6654
6684
|
"mode": "0000644",
|
|
6655
|
-
"sha256": "
|
|
6685
|
+
"sha256": "ede907b6b579c3213eaf45d12320a8765aebaa11adc9b534e9402271c5eb39f7"
|
|
6656
6686
|
},
|
|
6657
6687
|
{
|
|
6658
6688
|
"path": "modules/npm-release/preview/commands.js",
|
|
@@ -6707,7 +6737,7 @@
|
|
|
6707
6737
|
{
|
|
6708
6738
|
"path": "modules/npm-release/routes/task-where.js",
|
|
6709
6739
|
"mode": "0000644",
|
|
6710
|
-
"sha256": "
|
|
6740
|
+
"sha256": "b68888b27f70fceb70c2a4a3272ee592179b4e9d46d0d274012afe122f4b3458"
|
|
6711
6741
|
},
|
|
6712
6742
|
{
|
|
6713
6743
|
"path": "modules/npm-release/routes/work.js",
|
|
@@ -6717,7 +6747,7 @@
|
|
|
6717
6747
|
{
|
|
6718
6748
|
"path": "modules/npm-release/work.js",
|
|
6719
6749
|
"mode": "0000644",
|
|
6720
|
-
"sha256": "
|
|
6750
|
+
"sha256": "fc5b52e97baf435dcc090104258209a48aa34e417835754df0a4b17cd73f6605"
|
|
6721
6751
|
},
|
|
6722
6752
|
{
|
|
6723
6753
|
"path": "modules/onboarding/CLAUDE.md",
|
|
@@ -8317,7 +8347,7 @@
|
|
|
8317
8347
|
{
|
|
8318
8348
|
"path": "modules/specialities/routes/specialities.js",
|
|
8319
8349
|
"mode": "0000644",
|
|
8320
|
-
"sha256": "
|
|
8350
|
+
"sha256": "2b5983c0014f6e103d6bee21256f696364498ed6f955db3043c12b69c84ac3c6"
|
|
8321
8351
|
},
|
|
8322
8352
|
{
|
|
8323
8353
|
"path": "modules/specialities/skills.js",
|
|
@@ -8327,7 +8357,7 @@
|
|
|
8327
8357
|
{
|
|
8328
8358
|
"path": "modules/specialities/specialities.js",
|
|
8329
8359
|
"mode": "0000644",
|
|
8330
|
-
"sha256": "
|
|
8360
|
+
"sha256": "d88a1cd7e457d816ff267d7b40956e87577814eaa026cc4a357f71782d5f4355"
|
|
8331
8361
|
},
|
|
8332
8362
|
{
|
|
8333
8363
|
"path": "modules/status-ui/CLAUDE.md",
|
|
@@ -8822,12 +8852,12 @@
|
|
|
8822
8852
|
{
|
|
8823
8853
|
"path": "package-lock.json",
|
|
8824
8854
|
"mode": "0000644",
|
|
8825
|
-
"sha256": "
|
|
8855
|
+
"sha256": "d445839a2e943ee2d1f3309b1366f72132d11925c29aa19a46891ce7925ad116"
|
|
8826
8856
|
},
|
|
8827
8857
|
{
|
|
8828
8858
|
"path": "package.json",
|
|
8829
8859
|
"mode": "0000644",
|
|
8830
|
-
"sha256": "
|
|
8860
|
+
"sha256": "d5d908e1d217603998e494d6c8343087d61dacc1b8fe894983a56cc4d809b819"
|
|
8831
8861
|
},
|
|
8832
8862
|
{
|
|
8833
8863
|
"path": "public-docs/index.html",
|
|
@@ -8847,7 +8877,7 @@
|
|
|
8847
8877
|
{
|
|
8848
8878
|
"path": "release-notes.json",
|
|
8849
8879
|
"mode": "0000644",
|
|
8850
|
-
"sha256": "
|
|
8880
|
+
"sha256": "0836c84d2d1fbda2104f75831bcc05bd10fa3e05d29db763c250d8d4416769b3"
|
|
8851
8881
|
},
|
|
8852
8882
|
{
|
|
8853
8883
|
"path": "scripts/bongos-mcp.js",
|
|
@@ -9167,7 +9197,7 @@
|
|
|
9167
9197
|
{
|
|
9168
9198
|
"path": "scripts/gds/cli-lib.js",
|
|
9169
9199
|
"mode": "0000644",
|
|
9170
|
-
"sha256": "
|
|
9200
|
+
"sha256": "2e83ab5c93b100c0bcce0079b4434fdc9cef6358e50e3c2d6be163bd4fd6e35b"
|
|
9171
9201
|
},
|
|
9172
9202
|
{
|
|
9173
9203
|
"path": "scripts/gds/client-baseurl-guard.js",
|
|
@@ -9392,7 +9422,7 @@
|
|
|
9392
9422
|
{
|
|
9393
9423
|
"path": "scripts/gds/fitness-checks-write-validation.js",
|
|
9394
9424
|
"mode": "0000644",
|
|
9395
|
-
"sha256": "
|
|
9425
|
+
"sha256": "58fbc88c10e24a0b2fbfbaeef69ed47c65501a98039518c8bc542642d2a965f4"
|
|
9396
9426
|
},
|
|
9397
9427
|
{
|
|
9398
9428
|
"path": "scripts/gds/fitness-lib.js",
|
|
@@ -10397,7 +10427,7 @@
|
|
|
10397
10427
|
{
|
|
10398
10428
|
"path": "scripts/gds/status.js",
|
|
10399
10429
|
"mode": "0000644",
|
|
10400
|
-
"sha256": "
|
|
10430
|
+
"sha256": "fc43101db90a2f2d58b99e8428ad8546403147a99bba43785c2ca1ce1d0c506f"
|
|
10401
10431
|
},
|
|
10402
10432
|
{
|
|
10403
10433
|
"path": "scripts/gds/strand-watch.js",
|
|
@@ -10444,6 +10474,11 @@
|
|
|
10444
10474
|
"mode": "0000644",
|
|
10445
10475
|
"sha256": "db4039de7f45d063f712bfabbde447497dfea233d885812d95c7e5285491555a"
|
|
10446
10476
|
},
|
|
10477
|
+
{
|
|
10478
|
+
"path": "scripts/gds/uat.js",
|
|
10479
|
+
"mode": "0000644",
|
|
10480
|
+
"sha256": "f03a4d8400702954eebe159c8b42f84f101908cbf4b4a10ccf83be6acb43bb6a"
|
|
10481
|
+
},
|
|
10447
10482
|
{
|
|
10448
10483
|
"path": "scripts/gds/ui-kit-transform.js",
|
|
10449
10484
|
"mode": "0000644",
|
|
@@ -10802,7 +10837,7 @@
|
|
|
10802
10837
|
{
|
|
10803
10838
|
"path": "src/bongos/route-rank-check.js",
|
|
10804
10839
|
"mode": "0000644",
|
|
10805
|
-
"sha256": "
|
|
10840
|
+
"sha256": "3d8c71836bd7a33ed336497ad98a5085ef1aaed216d6427dec09f6dcebe59250"
|
|
10806
10841
|
},
|
|
10807
10842
|
{
|
|
10808
10843
|
"path": "src/bongos/routes.js",
|
|
@@ -10947,7 +10982,7 @@
|
|
|
10947
10982
|
{
|
|
10948
10983
|
"path": "src/module-api.js",
|
|
10949
10984
|
"mode": "0000644",
|
|
10950
|
-
"sha256": "
|
|
10985
|
+
"sha256": "b76b3ccf9bc56f911703cf59e4e02652ab73076407ab164ef746f1177b7f72aa"
|
|
10951
10986
|
},
|
|
10952
10987
|
{
|
|
10953
10988
|
"path": "src/module-loader/catalog.js",
|
|
@@ -11377,7 +11412,7 @@
|
|
|
11377
11412
|
{
|
|
11378
11413
|
"path": "tests/auto_satisfy_criteria.mjs",
|
|
11379
11414
|
"mode": "0000644",
|
|
11380
|
-
"sha256": "
|
|
11415
|
+
"sha256": "121d5d7458015f3a6337512b566fc303232f4f37e8622eb826d7496fc496acd2"
|
|
11381
11416
|
},
|
|
11382
11417
|
{
|
|
11383
11418
|
"path": "tests/autobongos_cadence.mjs",
|
|
@@ -11974,6 +12009,16 @@
|
|
|
11974
12009
|
"mode": "0000644",
|
|
11975
12010
|
"sha256": "446395813f17cea373ad888e5bcaab5a64607567a31c4f19e98102220a782949"
|
|
11976
12011
|
},
|
|
12012
|
+
{
|
|
12013
|
+
"path": "tests/criterion_uat.mjs",
|
|
12014
|
+
"mode": "0000644",
|
|
12015
|
+
"sha256": "7b5fd90bbb824503bc89a9e02160c54ba4c2d67ee66494df54c37a653bdb4cda"
|
|
12016
|
+
},
|
|
12017
|
+
{
|
|
12018
|
+
"path": "tests/criterion_uat_routes.mjs",
|
|
12019
|
+
"mode": "0000644",
|
|
12020
|
+
"sha256": "438befd036d86c930263cf7b35d7b70467091f7df77833bb22593a33b5c7b1fa"
|
|
12021
|
+
},
|
|
11977
12022
|
{
|
|
11978
12023
|
"path": "tests/cross_discipline_priority_direction.mjs",
|
|
11979
12024
|
"mode": "0000644",
|
|
@@ -12302,7 +12347,7 @@
|
|
|
12302
12347
|
{
|
|
12303
12348
|
"path": "tests/fitness.mjs",
|
|
12304
12349
|
"mode": "0000644",
|
|
12305
|
-
"sha256": "
|
|
12350
|
+
"sha256": "5b2372305e439920a251c3827bf3781f3e1ed683f28dc4eedebe5865066507b8"
|
|
12306
12351
|
},
|
|
12307
12352
|
{
|
|
12308
12353
|
"path": "tests/fitness_gds_ratchet.mjs",
|
|
@@ -12447,7 +12492,7 @@
|
|
|
12447
12492
|
{
|
|
12448
12493
|
"path": "tests/goal_achievement.mjs",
|
|
12449
12494
|
"mode": "0000644",
|
|
12450
|
-
"sha256": "
|
|
12495
|
+
"sha256": "8060a0e09cbb8a175cbb152ab45414c8b2390c0b164bacdc0e5822d72f85c102"
|
|
12451
12496
|
},
|
|
12452
12497
|
{
|
|
12453
12498
|
"path": "tests/goal_admission_override.mjs",
|
|
@@ -12572,7 +12617,7 @@
|
|
|
12572
12617
|
{
|
|
12573
12618
|
"path": "tests/goal_routes.mjs",
|
|
12574
12619
|
"mode": "0000644",
|
|
12575
|
-
"sha256": "
|
|
12620
|
+
"sha256": "9657bccd720cc1003d6c924bb5a42cfe0c986d8f0e74bddf43ae4f9b2fe04564"
|
|
12576
12621
|
},
|
|
12577
12622
|
{
|
|
12578
12623
|
"path": "tests/goal_scope_check.mjs",
|
|
@@ -13422,7 +13467,7 @@
|
|
|
13422
13467
|
{
|
|
13423
13468
|
"path": "tests/ideator_full_idea_shapes_space_proof.mjs",
|
|
13424
13469
|
"mode": "0000644",
|
|
13425
|
-
"sha256": "
|
|
13470
|
+
"sha256": "d4084edce2ae88811b5ef459d7594acb96cf56a8423dce33ef8d401d322cd409"
|
|
13426
13471
|
},
|
|
13427
13472
|
{
|
|
13428
13473
|
"path": "tests/ideator_large_dead_thought_proof.mjs",
|
|
@@ -14007,7 +14052,7 @@
|
|
|
14007
14052
|
{
|
|
14008
14053
|
"path": "tests/npm_release_where.mjs",
|
|
14009
14054
|
"mode": "0000644",
|
|
14010
|
-
"sha256": "
|
|
14055
|
+
"sha256": "36da5656e5d6c3d90611e3e67ad218f7f6ea1a15ef1b1e38aad4b7767fce2b2d"
|
|
14011
14056
|
},
|
|
14012
14057
|
{
|
|
14013
14058
|
"path": "tests/npm_release_work.mjs",
|
|
@@ -15434,6 +15479,11 @@
|
|
|
15434
15479
|
"mode": "0000644",
|
|
15435
15480
|
"sha256": "13d7be30c41855ac4a39689bc88ea2be2c896ca071b884bbd0e81cc9c29bc180"
|
|
15436
15481
|
},
|
|
15482
|
+
{
|
|
15483
|
+
"path": "tests/speciality_session_skills.mjs",
|
|
15484
|
+
"mode": "0000644",
|
|
15485
|
+
"sha256": "c08ac1cff3955a0fc55d285402353f34c820855a4e019c40a3d507d45d126862"
|
|
15486
|
+
},
|
|
15437
15487
|
{
|
|
15438
15488
|
"path": "tests/speciality_skills.mjs",
|
|
15439
15489
|
"mode": "0000644",
|
|
@@ -1,27 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: goal-review
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
4
|
+
Decide criteria a UAT can't close: work abandoned or unlinked. Metic+. Triggers: "/goal-review".
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
You are running the **goal-review** session
|
|
7
|
+
You are running the **goal-review** session: the residue of the criterion close. It mirrors `/idea-triage`, for the *closing* end of the work hierarchy (ADR 0086 §6).
|
|
8
8
|
|
|
9
|
-
> **
|
|
9
|
+
> **Criteria close on a UAT now, and that is [`/goal-uat`](../goal-uat/SKILL.md), not this skill** ([ADR 0351](../../../docs/adr/0351-a-criterion-closes-on-a-uat.md), task 1004392, superseding ADR 0183's "shipped is enough"). A criterion whose linked work has shipped reads **Awaiting UAT** and closes when someone who did not ship it tests it on the live site and signs it off. If the builder wants to close finished work, send them to `/goal-uat`.
|
|
10
|
+
>
|
|
11
|
+
> **The other end of this lifecycle is [`/goal-create`](../goal-create/SKILL.md)** — it opens a goal (scope wall, criteria, seed tasks).
|
|
10
12
|
|
|
11
|
-
**
|
|
13
|
+
**What is left for this skill.** The review queue (`GET /done-when/pending-review`) also holds criteria nothing was delivered for, and a UAT cannot test those (every row carries `uat_state`; skip the `awaiting_uat` ones, they are `/goal-uat`'s):
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
1. **A criterion whose linked tasks were ALL ABANDONED.** Nothing shipped, so there is nothing to test. *Somebody must decide whether the criterion still means anything now that its work is gone*: reject it (file the work that will really deliver it, linked to it), or, if it was genuinely met another way, override it with the reason.
|
|
16
|
+
2. **A criterion with NO linked tasks.** It cannot even reach Awaiting UAT. Link the tasks that deliver it (better — it makes the board true); it then goes through `/goal-uat` like any other.
|
|
14
17
|
|
|
15
|
-
**
|
|
16
|
-
|
|
17
|
-
So expect the queue to be **mostly empty**, and read what IS in it as a signal rather than a chore. Automation refuses exactly two shapes, and they are what you are here for:
|
|
18
|
-
|
|
19
|
-
1. **A criterion whose linked tasks were ALL ABANDONED.** Auto-close requires ≥1 task actually `shipped`, so cut work can never complete anything — but the review flag deliberately still surfaces it, because *somebody must decide whether the criterion still means anything now that its work is gone*. Options: confirm (it was satisfied another way), reject, or re-link it to the work that will actually deliver it. **This is the main reason the skill still exists.**
|
|
20
|
-
2. **A criterion with NO linked tasks.** Automation requires ≥1 linked task, so it never auto-closes. If a criterion is genuinely met by work that was never linked, link the tasks (better — it makes the board true) or confirm manually.
|
|
21
|
-
|
|
22
|
-
A criterion sitting here with shipped tasks and no explanation means the sweep has not run or errored — check the `publish-reconciler` logs rather than confirming by hand, or you will paper over a broken sweep.
|
|
23
|
-
|
|
24
|
-
**Rejecting is now the more valuable verdict.** Confirming mostly duplicates what automation already did; rejecting is information only a human has.
|
|
18
|
+
**Rejecting is the valuable verdict here**; an override is the exception and says so forever ("Satisfied (override)").
|
|
25
19
|
|
|
26
20
|
## Rank gate — Metic+ only
|
|
27
21
|
|
|
@@ -37,8 +31,8 @@ A criterion sitting here with shipped tasks and no explanation means the sweep h
|
|
|
37
31
|
## What this skill does
|
|
38
32
|
|
|
39
33
|
1. Lists flagged criteria via `GET /api/bongos/done-when/pending-review` (optionally `?version=<id>`).
|
|
40
|
-
2. For each
|
|
41
|
-
3. Applies
|
|
34
|
+
2. For each row that is NOT `awaiting_uat`, prompts the user with: **reject** (leave it open and file the work that delivers it), **override** (it was met another way: close it with a written reason), or **note / defer** (it resurfaces next session).
|
|
35
|
+
3. Applies an override via `POST /api/bongos/done-when/:criterionId/satisfy` with `override_reason` — and reports any goal that auto-achieved as a result.
|
|
42
36
|
|
|
43
37
|
## How to use
|
|
44
38
|
|
|
@@ -60,21 +54,19 @@ Present each criterion with: its `criterion_md`, its goal (`goal_title`), how ma
|
|
|
60
54
|
|
|
61
55
|
> ⚠️ This is the LAST open criterion in **{goal_title}** — confirming it will mark the whole goal **achieved**.
|
|
62
56
|
|
|
63
|
-
Then ask the user (concise; frame in product/outcome terms
|
|
57
|
+
Then ask the user (concise; frame in product/outcome terms):
|
|
64
58
|
|
|
65
|
-
> Criterion C{n} — "{criterion_md}".
|
|
59
|
+
> Criterion C{n} — "{criterion_md}". None of its linked work was delivered. **Reject and file the real work, override (it was met another way), or defer?**
|
|
66
60
|
|
|
67
61
|
**Step 3 — apply the verdict.**
|
|
68
62
|
|
|
69
|
-
**
|
|
63
|
+
**Override** (only for a criterion met some other way, never for one awaiting UAT) → it closes WITHOUT a UAT, so the server requires the reason and records it; the criterion reads "Satisfied (override)" from then on:
|
|
70
64
|
|
|
71
65
|
```
|
|
72
|
-
node scripts/gds/api.js POST /api/bongos/done-when/<criterion_id>/satisfy --body '{}'
|
|
73
|
-
# or, to record which task fulfilled it:
|
|
74
|
-
node scripts/gds/api.js POST /api/bongos/done-when/<criterion_id>/satisfy --body '{"satisfied_by_task_id":<task_id>}'
|
|
66
|
+
node scripts/gds/api.js POST /api/bongos/done-when/<criterion_id>/satisfy --body '{"override_reason":"<why this is met without a UAT>"}'
|
|
75
67
|
```
|
|
76
68
|
|
|
77
|
-
The response is `{ criterion, goal_achieved, goal }`. **If `goal_achieved` is true**, announce it: *"
|
|
69
|
+
The response is `{ criterion, goal_achieved, goal }`. **If `goal_achieved` is true**, announce it: *"Goal '{goal.title}' is now achieved — all its criteria are closed."* (That goal now awaits disposition — see Step 4.)
|
|
78
70
|
|
|
79
71
|
**Reject** → the criterion's tasks all shipped, but on review it is **not actually met** (the work missed something, or "done" was mis-scoped). There is no "unsatisfy the flag" — the flag is *derived* from shipped tasks, so the durable fix is to **add the missing work**: capture what's still needed (a follow-up task linked to this criterion, or an idea via `node scripts/gds/capture.js "..."`), and note the rejection in the session log. Once an unshipped task is linked to the criterion, it drops out of `pending_review` on its own. If no follow-up is filed, the criterion simply stays flagged and resurfaces next session — an honest signal that a human said "not done" but nothing was queued to close the gap. **Do not confirm a criterion you would not stake the version on.**
|
|
80
72
|
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: goal-uat
|
|
3
|
+
description: >-
|
|
4
|
+
Test criteria awaiting UAT on the live site, then sign off. Metic+. Triggers: "/goal-uat", "what's awaiting UAT".
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are running the **goal-uat** session: the closing step of a goal. A criterion no longer closes because its linked tasks shipped ([ADR 0351](../../../docs/adr/0351-a-criterion-closes-on-a-uat.md), task 1004392). Once its work has shipped it reads **Awaiting UAT**, and it closes only when a person who did **not** ship that work does what the criterion describes **on the live site** and signs it off.
|
|
8
|
+
|
|
9
|
+
This is the owner's rule because criteria were being closed by any tasks that happened to be linked to them, whether or not the thing the criterion describes was real. A UAT is the check against the criterion's **words**, not against the task list. Hold it to that.
|
|
10
|
+
|
|
11
|
+
## Rank gate: Metic+ only
|
|
12
|
+
|
|
13
|
+
Signing off rides `criterion.review` (Metic+); the server enforces it. Check first so a Xenos is not walked into a wall of 403s: `node scripts/gds/api.js GET /api/bongos/me` and read `builder.rank`. If it lowercases to `xenos` or `thetes`, stop and say: *"Signing off a UAT is a Metic+ step. Ask an Archon to promote you, or ask a Metic to run it."*
|
|
14
|
+
|
|
15
|
+
## The three checks (what you are verifying)
|
|
16
|
+
|
|
17
|
+
| Check | Passes when | Who decides |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| **Code** | every linked task is done and at least one shipped | automatic |
|
|
20
|
+
| **Live** | the shipped work is running on the deployed site | read automatically where the site can tell; otherwise the signer confirms it |
|
|
21
|
+
| **UAT** | a signed-in person performed the criterion on the live site; a recording is stored | the signer, who must not have shipped any linked task (the project owner excepted) |
|
|
22
|
+
|
|
23
|
+
A criterion marked **backend-only** (set when it was written, visible on the criterion) has no screen to record, so it takes a recording-free **backend sign-off** instead. It still needs a non-shipper to sign it.
|
|
24
|
+
|
|
25
|
+
## Step 1: the queue
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
node scripts/gds/uat.js --queue
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
(Add `--version <id>` to scope it.) If nothing is awaiting UAT, say so and stop. If the builder named a goal, keep only that goal's rows.
|
|
32
|
+
|
|
33
|
+
## Step 2: one criterion at a time
|
|
34
|
+
|
|
35
|
+
For each, run `node scripts/gds/uat.js <criterion-id>` and present, in plain words:
|
|
36
|
+
|
|
37
|
+
- the criterion's text, in full;
|
|
38
|
+
- its goal, and whether it is the goal's **last** open criterion (then signing it off achieves the goal);
|
|
39
|
+
- the Live line (running, not yet, or "this site cannot tell");
|
|
40
|
+
- whether it is backend-only.
|
|
41
|
+
|
|
42
|
+
Then tell the tester exactly what to do **on the live site**, derived from the criterion's words: which page, what to click, what they should see. Write it as a short numbered script. If the criterion's words describe something the tester cannot find on the live site, that is the answer: **it is not met.** Say so and go to Step 4 (reject) rather than looking for a reading under which it passes.
|
|
43
|
+
|
|
44
|
+
## Step 3: record and sign off
|
|
45
|
+
|
|
46
|
+
The tester records their screen doing the script (any screen recorder that saves **mp4 or webm**, up to **100 MB**; Windows: Win+Alt+R with Xbox Game Bar, or the Snipping Tool's record button; macOS: Cmd+Shift+5). Then:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
node scripts/gds/uat.js <criterion-id> --recording <path-to-file> --note "<one line: what was checked>"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
For a backend-only criterion, after the tester has checked it by whatever means proves it (a log line, an API read, a test run against live):
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
node scripts/gds/uat.js <criterion-id> --backend-signoff --note "<how it was checked>"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Add `--live-attested` only when the server says this site cannot tell whether the work is live, and only if the tester really did it on the live site.
|
|
59
|
+
|
|
60
|
+
**Refusals, in the words to give the builder:**
|
|
61
|
+
|
|
62
|
+
| Refusal | Meaning |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `signer_shipped_this_work` | they shipped linked work; someone else signs this one |
|
|
65
|
+
| `work_not_live` | shipped but not deployed yet; sign off after the deploy |
|
|
66
|
+
| `criterion_not_awaiting_uat` | linked work still open (or none linked, or all abandoned: that is `/goal-review`) |
|
|
67
|
+
| `criterion_needs_recording` / `criterion_is_backend_only` | wrong kind of sign-off for this criterion |
|
|
68
|
+
| `live_attestation_required` | confirm it was tested on the live site (`--live-attested`) |
|
|
69
|
+
|
|
70
|
+
A sign-off on a goal's last open criterion reports the goal achieved; say so.
|
|
71
|
+
|
|
72
|
+
## Step 4: when it is NOT met
|
|
73
|
+
|
|
74
|
+
The shipped work does not do what the criterion says. Do not sign off. File the missing work as a task linked to the criterion (`POST /api/bongos/tasks`, then `POST /api/bongos/tasks/<id>/criteria` with `{"criterion_id": <criterion-id>}`) so the criterion drops back to Open until that ships. That is what happened to `wa7-government` (task 1004400).
|
|
75
|
+
|
|
76
|
+
## What this skill does NOT do
|
|
77
|
+
|
|
78
|
+
- It never uses `POST /done-when/:id/satisfy`. That is the **override** now: it requires a written `override_reason` and the criterion reads "Satisfied (override)" for good. Use it only when the owner asks, and never to get past a refusal above.
|
|
79
|
+
- It never marks a criterion backend-only to avoid recording one. Backend-only is set while a criterion is still open (`uat.js <id> --backend-only on`), and the server refuses it once the criterion is awaiting UAT.
|
|
80
|
+
- The all-abandoned and no-linked-task residue is `/goal-review`'s, not this skill's.
|
|
81
|
+
|
|
82
|
+
## Summary to give at the end
|
|
83
|
+
|
|
84
|
+
Criteria walked · signed off (ids) · goals achieved · rejected, with the follow-up task filed for each · left waiting (not live yet, or no tester available).
|