@1aboveio/skills 1.0.18 → 1.0.20
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/.codex-plugin/plugin.json +1 -1
- package/.codex-plugin/resources.json +151 -145
- package/package.json +4 -4
- package/skills/app-dev/airflow/SKILL.md +1 -1
- package/skills/app-dev/android-development/SKILL.md +1 -1
- package/skills/app-dev/app-debug/SKILL.md +1 -1
- package/skills/app-dev/better-auth/SKILL.md +1 -1
- package/skills/app-dev/data-catalog/SKILL.md +1 -1
- package/skills/app-dev/data-quality/SKILL.md +1 -1
- package/skills/app-dev/ios-foundation/SKILL.md +1 -1
- package/skills/app-dev/maestro/SKILL.md +1 -1
- package/skills/app-dev/monorepo/SKILL.md +1 -1
- package/skills/app-dev/nextjs-fullstack/SKILL.md +1 -1
- package/skills/app-dev/prisma-setup/SKILL.md +1 -1
- package/skills/app-dev/pyspark/SKILL.md +1 -1
- package/skills/app-dev/python-backend/SKILL.md +1 -1
- package/skills/app-dev/shadcn/SKILL.md +1 -1
- package/skills/app-dev/zod-v4/SKILL.md +1 -1
- package/skills/cicd/cloud-build/SKILL.md +1 -1
- package/skills/cicd/cloud-debug/SKILL.md +1 -1
- package/skills/cicd/cloud-deploy/SKILL.md +1 -1
- package/skills/cicd/docker/SKILL.md +1 -1
- package/skills/cicd/github-actions/SKILL.md +1 -1
- package/skills/cicd/github-flow/SKILL.md +1 -1
- package/skills/cicd/google-cloud/SKILL.md +1 -1
- package/skills/cicd/mergify/SKILL.md +1 -1
- package/skills/cicd/podman/SKILL.md +1 -1
- package/skills/content/article-review/SKILL.md +1 -1
- package/skills/content/article-to-image/SKILL.md +1 -1
- package/skills/content/flowchart-svg/SKILL.md +1 -1
- package/skills/content/image-gen/SKILL.md +1 -1
- package/skills/content/mermaid/SKILL.md +1 -1
- package/skills/content/wechat-article-writer/SKILL.md +1 -1
- package/skills/content/wechat-publisher/SKILL.md +1 -1
- package/skills/content/wechat-search/SKILL.md +1 -1
- package/skills/content/xai-search/SKILL.md +1 -1
- package/skills/core/distill-writing/SKILL.md +1 -1
- package/skills/core/doc-to-md/SKILL.md +1 -1
- package/skills/core/editorial-review/SKILL.md +1 -1
- package/skills/core/house-style/SKILL.md +1 -1
- package/skills/core/plain-language/SKILL.md +1 -1
- package/skills/core/polish-cn/SKILL.md +1 -1
- package/skills/core/reg-parser/SKILL.md +1 -1
- package/skills/core/terminology/SKILL.md +1 -1
- package/skills/core/write-doc/SKILL.md +1 -1
- package/skills/core/write-report/SKILL.md +1 -1
- package/skills/engineering/better-review/SKILL.md +5 -4
- package/skills/engineering/better-review/references/passes.md +15 -0
- package/skills/engineering/better-review/references/result.md +14 -0
- package/skills/engineering/e2e-test/SKILL.md +1 -1
- package/skills/engineering/engineering/SKILL.md +1 -1
- package/skills/engineering/engineering-runtime/SKILL.md +1 -1
- package/skills/engineering/engineering-runtime/coherence/workflow.json +13 -13
- package/skills/engineering/ensure-coverage/SKILL.md +1 -1
- package/skills/engineering/golden-path/SKILL.md +1 -1
- package/skills/engineering/harness-runtime/SKILL.md +1 -1
- package/skills/engineering/resolve-issues/SKILL.md +14 -9
- package/skills/engineering/resolve-issues/references/ci.md +3 -1
- package/skills/engineering/resolve-issues/references/delivery-progress.md +16 -0
- package/skills/engineering/resolve-issues/references/done.md +7 -0
- package/skills/engineering/resolve-issues/references/dropbox.md +31 -6
- package/skills/engineering/resolve-issues/references/expire.md +6 -3
- package/skills/engineering/resolve-issues/references/implementation.md +67 -6
- package/skills/engineering/resolve-issues/references/preflight.md +17 -3
- package/skills/engineering/resolve-issues/references/retention.md +162 -0
- package/skills/engineering/resolve-issues/references/review.md +42 -9
- package/skills/engineering/resolve-issues/references/task-plan.md +17 -2
- package/skills/engineering/resolve-issues/references/workspaces.md +40 -10
- package/skills/engineering/resolve-issues/scripts/daily-cleanup.mjs +169 -0
- package/skills/engineering/resolve-issues/scripts/dropbox.mjs +2 -1
- package/skills/engineering/resolve-issues/scripts/next-actions.mjs +79 -4
- package/skills/engineering/resolve-issues/scripts/resource-formats.mjs +625 -0
- package/skills/engineering/resolve-issues/scripts/retention-lock.mjs +548 -0
- package/skills/engineering/resolve-issues/scripts/retention-plans.mjs +57 -0
- package/skills/engineering/resolve-issues/scripts/retention.mjs +2314 -0
- package/skills/engineering/resolve-issues/scripts/review-verdict.mjs +63 -10
- package/skills/engineering/resolve-release/SKILL.md +1 -1
- package/skills/engineering/rush-issues/SKILL.md +1 -1
- package/skills/engineering/rush-release/SKILL.md +1 -1
- package/skills/engineering/test-quality/SKILL.md +1 -1
- package/skills/risk-compliance/compliance-audit/SKILL.md +1 -1
- package/skills/risk-compliance/contract-compare/SKILL.md +1 -1
- package/skills/risk-compliance/contract-review/SKILL.md +1 -1
- package/skills/risk-compliance/doc-authenticity/SKILL.md +1 -1
- package/skills/risk-compliance/fraud-detection/SKILL.md +1 -1
- package/skills/risk-compliance/payment-analysis/SKILL.md +1 -1
- package/skills/risk-compliance/portfolio-payment-analysis/SKILL.md +1 -1
- package/skills/risk-compliance/similar-domain/SKILL.md +1 -1
- package/skills/risk-compliance/tld-detection/SKILL.md +1 -1
|
@@ -369,7 +369,7 @@
|
|
|
369
369
|
"repository": "1aboveio/ai",
|
|
370
370
|
"revision": "main"
|
|
371
371
|
},
|
|
372
|
-
"contentDigest": "
|
|
372
|
+
"contentDigest": "46f0a76cadebab0a7de8dabf7a93eb194c7f41e0c872fa9c1a04dec86ee0fd88",
|
|
373
373
|
"digestExcludes": []
|
|
374
374
|
},
|
|
375
375
|
{
|
|
@@ -382,7 +382,7 @@
|
|
|
382
382
|
"repository": "1aboveio/ai",
|
|
383
383
|
"revision": "main"
|
|
384
384
|
},
|
|
385
|
-
"contentDigest": "
|
|
385
|
+
"contentDigest": "e1a794446b04b5b70d356ceb9bbbe2a3c518eac486286d5905da98a3d038de65",
|
|
386
386
|
"digestExcludes": []
|
|
387
387
|
},
|
|
388
388
|
{
|
|
@@ -395,7 +395,7 @@
|
|
|
395
395
|
"repository": "1aboveio/ai",
|
|
396
396
|
"revision": "main"
|
|
397
397
|
},
|
|
398
|
-
"contentDigest": "
|
|
398
|
+
"contentDigest": "451349ddb0393831abe922cd66c77dd96ea6a4bdd6950c1546e507f5d056dc84",
|
|
399
399
|
"digestExcludes": []
|
|
400
400
|
},
|
|
401
401
|
{
|
|
@@ -408,7 +408,7 @@
|
|
|
408
408
|
"repository": "1aboveio/ai",
|
|
409
409
|
"revision": "main"
|
|
410
410
|
},
|
|
411
|
-
"contentDigest": "
|
|
411
|
+
"contentDigest": "b4c6ae8cb2e708e3695330e65567aab4a301b963d86a4b6706c324fd5e56a36e",
|
|
412
412
|
"digestExcludes": []
|
|
413
413
|
},
|
|
414
414
|
{
|
|
@@ -421,7 +421,7 @@
|
|
|
421
421
|
"repository": "1aboveio/ai",
|
|
422
422
|
"revision": "main"
|
|
423
423
|
},
|
|
424
|
-
"contentDigest": "
|
|
424
|
+
"contentDigest": "2dc4ffd9d459c1c61ff9472caf6b318bd45531995d8b8f142e775252c496b22b",
|
|
425
425
|
"digestExcludes": []
|
|
426
426
|
},
|
|
427
427
|
{
|
|
@@ -434,7 +434,7 @@
|
|
|
434
434
|
"repository": "1aboveio/ai",
|
|
435
435
|
"revision": "main"
|
|
436
436
|
},
|
|
437
|
-
"contentDigest": "
|
|
437
|
+
"contentDigest": "25ac49e98ce28203feccc17b4f85c67627db9c979511cca349df9dd1fe156d58",
|
|
438
438
|
"digestExcludes": []
|
|
439
439
|
},
|
|
440
440
|
{
|
|
@@ -447,7 +447,7 @@
|
|
|
447
447
|
"repository": "1aboveio/ai",
|
|
448
448
|
"revision": "main"
|
|
449
449
|
},
|
|
450
|
-
"contentDigest": "
|
|
450
|
+
"contentDigest": "bde840d0e6ea6d333c48b47f2635c31c54e1e86a1beee21e26d5a9788c5f7977",
|
|
451
451
|
"digestExcludes": []
|
|
452
452
|
},
|
|
453
453
|
{
|
|
@@ -460,7 +460,7 @@
|
|
|
460
460
|
"repository": "1aboveio/ai",
|
|
461
461
|
"revision": "main"
|
|
462
462
|
},
|
|
463
|
-
"contentDigest": "
|
|
463
|
+
"contentDigest": "be04047cebb486d9f0b56c59705210038c13ce8f3f10c5ecf7acb361f3a56d0c",
|
|
464
464
|
"digestExcludes": []
|
|
465
465
|
},
|
|
466
466
|
{
|
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
"repository": "1aboveio/ai",
|
|
474
474
|
"revision": "main"
|
|
475
475
|
},
|
|
476
|
-
"contentDigest": "
|
|
476
|
+
"contentDigest": "d7c62210fdfdfa3504a056a8977aa3b67370b65f92d5d32e001fd394fabd44bd",
|
|
477
477
|
"digestExcludes": []
|
|
478
478
|
},
|
|
479
479
|
{
|
|
@@ -486,7 +486,7 @@
|
|
|
486
486
|
"repository": "1aboveio/ai",
|
|
487
487
|
"revision": "main"
|
|
488
488
|
},
|
|
489
|
-
"contentDigest": "
|
|
489
|
+
"contentDigest": "f1acfff02ba2ddb0e0d4ffbcd9b5411a394b3b38e9a48ab2ab01ba46fb9bed1f",
|
|
490
490
|
"digestExcludes": []
|
|
491
491
|
},
|
|
492
492
|
{
|
|
@@ -499,7 +499,7 @@
|
|
|
499
499
|
"repository": "1aboveio/ai",
|
|
500
500
|
"revision": "main"
|
|
501
501
|
},
|
|
502
|
-
"contentDigest": "
|
|
502
|
+
"contentDigest": "cd858ed046f7c4ecb10817307e906a8057db5b8fb5a8c8e9334ef04aff34b9b2",
|
|
503
503
|
"digestExcludes": []
|
|
504
504
|
},
|
|
505
505
|
{
|
|
@@ -512,13 +512,13 @@
|
|
|
512
512
|
"repository": "1aboveio/ai",
|
|
513
513
|
"revision": "main"
|
|
514
514
|
},
|
|
515
|
-
"contentDigest": "
|
|
515
|
+
"contentDigest": "c3cbfef912ac7448710a7ed5a5014a76928d0350e2032c264c3e0a3212468b6d",
|
|
516
516
|
"digestExcludes": [
|
|
517
517
|
"coherence/workflow.json"
|
|
518
518
|
]
|
|
519
519
|
}
|
|
520
520
|
],
|
|
521
|
-
"releaseIdentity": "
|
|
521
|
+
"releaseIdentity": "b2e273424d4ceb9a24d78ad163daeb516538defae3f7e6ebea4f59edb055df9a",
|
|
522
522
|
"lifecycleAuthority": "native-skills-cli",
|
|
523
523
|
"repairRecipe": {
|
|
524
524
|
"id": "engineering-workflow-dependency-first",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: ensure-coverage
|
|
3
3
|
description: "Define or audit behavior-first test criteria — ACs, required test levels, mock/integration/E2E policy — across three axes: breadth (Coverage Ledger), depth (over-mocking), presentation (perceivability of browser surfaces). NOT judging whether a single test is any good (test-quality), authoring browser tests (e2e-test), reviewing a PR (better-review), or delivering issues (resolve-issues)."
|
|
4
4
|
disable-model-invocation: true
|
|
5
|
-
release-version: 0.
|
|
5
|
+
release-version: 0.50.0
|
|
6
6
|
---
|
|
7
7
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
8
8
|
# Ensure Coverage
|
|
@@ -3,7 +3,7 @@ name: golden-path
|
|
|
3
3
|
description: "Golden-path E2E: the short list of user journeys whose failure blocks a release, kept in a repo as one contract (golden-paths.json) with a generated GOLDEN_PATHS.md and a generated GitHub Actions workflow, and run against a local build or a deployed URL for an ALIVE/DEAD verdict. Use to set golden paths up in a repo ('init golden paths', 'add golden-path CI'), to migrate an older smoke.manifest.json or a hand-built smoke setup ('audit', 'migrate smoke'), to add, change, or remove a golden path, to ask 'is the build alive?' or run them before a PR or release, or when a change touches a flow listed in GOLDEN_PATHS.md. NOT for writing the Playwright specs themselves (e2e-test), deciding what a change must prove (ensure-coverage), or general workflow YAML (github-actions)."
|
|
4
4
|
dependencies:
|
|
5
5
|
- e2e-test
|
|
6
|
-
release-version: 0.
|
|
6
|
+
release-version: 0.50.0
|
|
7
7
|
---
|
|
8
8
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
9
9
|
# Golden path
|
|
@@ -3,7 +3,7 @@ name: harness-runtime
|
|
|
3
3
|
description: Internal import-only library shared by first-party engineering packages. Not a workflow skill; never select or invoke it as a user capability.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
user-invocable: false
|
|
6
|
-
release-version: 0.
|
|
6
|
+
release-version: 0.50.0
|
|
7
7
|
---
|
|
8
8
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
9
9
|
# Harness Runtime
|
|
@@ -8,7 +8,7 @@ dependencies:
|
|
|
8
8
|
- better-review
|
|
9
9
|
- golden-path
|
|
10
10
|
- harness-runtime
|
|
11
|
-
release-version: 0.
|
|
11
|
+
release-version: 0.50.0
|
|
12
12
|
---
|
|
13
13
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
14
14
|
# Resolve issues
|
|
@@ -63,8 +63,8 @@ preflight: ready label -> model fills -> plan draft
|
|
|
63
63
|
-> when a unit's code is done, for that unit:
|
|
64
64
|
rebase on its parent (stack, chain) or the target (wait)
|
|
65
65
|
-> independent review, while CI runs -> review-verdict.mjs decides:
|
|
66
|
-
`pass`: review passes (P2
|
|
67
|
-
|
|
66
|
+
`pass`: review passes (route P2 by its contribution to delivery;
|
|
67
|
+
P3 is skipped); `fix`: its fixBrief (P0/P1) plus explicitly selected supporting P2,
|
|
68
68
|
push, re-review; `review-again`: review again
|
|
69
69
|
-> CI red: fix, push; after a passing review, carry it (no reviewer)
|
|
70
70
|
-> review passed and CI green on one HEAD: mark ready
|
|
@@ -83,6 +83,7 @@ Read each procedure right before its stage; never substitute your own.
|
|
|
83
83
|
| Implementation loop and opening each PR | [references/implementation.md](references/implementation.md) |
|
|
84
84
|
| Read-only warehouse canary | [references/canary.md](references/canary.md) |
|
|
85
85
|
| Owned workspaces: plan, prepare, cleanup, recover, inventory | [references/workspaces.md](references/workspaces.md) |
|
|
86
|
+
| Daily resource retention: enrollment, age tiers, preview, registration, apply | [references/retention.md](references/retention.md) |
|
|
86
87
|
| Independent review | [references/review.md](references/review.md) |
|
|
87
88
|
| Routing small problems; posting them at the end | [references/dropbox.md](references/dropbox.md) |
|
|
88
89
|
| CI, queue, and merge | [references/ci.md](references/ci.md) |
|
|
@@ -115,8 +116,10 @@ Read each procedure right before its stage; never substitute your own.
|
|
|
115
116
|
- **The human.** Ask once, at the approval. Record every decision, correction, and scope change in
|
|
116
117
|
`decisions` at once, and each standing instruction in `standingOrders`; re-read the standing orders on
|
|
117
118
|
resume and before any push, enqueue, data write, or deletion. Default merge mode is `autonomous`.
|
|
118
|
-
- **Proof.** Treat producer reports as claims until the reviewer or CI checks them.
|
|
119
|
-
|
|
119
|
+
- **Proof.** Treat producer reports as claims until the reviewer or CI checks them. Tests and diagnostic probes
|
|
120
|
+
encode failure in their exit status under [Proof](references/implementation.md#proof); printing an exception
|
|
121
|
+
and returning 0 is not a passing check. Coordination CLIs keep their documented structured-verdict contracts.
|
|
122
|
+
A unit owes coding acceptance only: its criteria at its `proof.level` plus the required CI
|
|
120
123
|
on its final HEAD. Integrated release acceptance (a device or system campaign the spec or repository assigns
|
|
121
124
|
to a release or campaign gate) runs at that gate, never per unit; the handback links its owning issue. Produce
|
|
122
125
|
no evidence documents; the plan, findings, and reviews are the only records.
|
|
@@ -143,7 +146,8 @@ Treat a missing or unreadable result as incomplete; resume a dead spawn once in
|
|
|
143
146
|
|
|
144
147
|
Follow [preflight.md](references/preflight.md):
|
|
145
148
|
|
|
146
|
-
0. **
|
|
149
|
+
0. **Retention and ready label:** enroll this repository's daily resource cleanup
|
|
150
|
+
through the persistent installed skill; resume the spec's run if one exists; run `ready-check.mjs`;
|
|
147
151
|
stop on an `unreadable` outcome; ask at step 6 on `unlabeled` or a `missing` compaction
|
|
148
152
|
hook (`install-hooks.mjs --check`; shortcut: warn).
|
|
149
153
|
1. **Model slots:** record the fast-path fills without asking; the models and
|
|
@@ -167,7 +171,8 @@ efforts are run metadata, never a question.
|
|
|
167
171
|
### 2. Implement and open the PR
|
|
168
172
|
|
|
169
173
|
Give each unit a branch, its prepared workspace, and an implementer with its findings entry
|
|
170
|
-
and parents' contracts;
|
|
174
|
+
and parents' contracts; retain its [implementation owner](references/implementation.md#implementation-owner)
|
|
175
|
+
through review/CI fixes, separately from its active worker slot. State outcome and validation, not method. Refill
|
|
171
176
|
slots at once. At a unit's first coherent commit its PR opens as a draft, so CI
|
|
172
177
|
starts and the work is safe; later work goes to the same PR (in a Mergify stack
|
|
173
178
|
repository, amend the one commit); review starts when its code is done
|
|
@@ -176,13 +181,13 @@ the unit's own PR branch need no approval.
|
|
|
176
181
|
|
|
177
182
|
### 3. Review
|
|
178
183
|
|
|
179
|
-
Spawn one `better-review` reviewer once the unit's code is done, unless a
|
|
184
|
+
Spawn one fresh `better-review` reviewer once the unit's code is done, unless a
|
|
180
185
|
trusted complete result for that HEAD is posted on the PR; it runs alongside
|
|
181
186
|
CI. From round 2, carry a HEAD that follows a pass, else pick the tier: a
|
|
182
187
|
carry or skip writes its record and spawns no reviewer ([review.md](references/review.md#tier-then-verdict)).
|
|
183
188
|
Merge [GitHub reviews](references/review.md#github-reviews) into its result,
|
|
184
189
|
run `review-verdict.mjs`, and follow the `verdict` it prints (exit 0; 2 only if it could not run): `pass`; `fix`, give the
|
|
185
|
-
`fixBrief` (P0/P1
|
|
190
|
+
`fixBrief` (P0/P1), its retained reproducers and any selected supporting P2 under [dropbox routing](references/dropbox.md#supporting-p2-work) to the implementation owner as its `action` says, then review
|
|
186
191
|
again; `review-again`; `handback`, defer the PR with its open findings; `wait`,
|
|
187
192
|
request the awaited re-review; `decide`, answer the `decide` file
|
|
188
193
|
([expire.md](references/expire.md#decide-before-you-defer)) and rerun with `--decision`.
|
|
@@ -105,7 +105,9 @@ provider shows that PR merged.
|
|
|
105
105
|
|
|
106
106
|
Clean that unit's workspace and resources, then finish it, in every scheduler
|
|
107
107
|
mode: `next-actions.mjs` prints `cleanup-workspace` until its cleanup settles.
|
|
108
|
-
First
|
|
108
|
+
First [release any session retention still held](implementation.md#settle-session-retention)
|
|
109
|
+
for it, even while other units remain active; a conversation launched without protection has
|
|
110
|
+
nothing to release. Then record the intent through the [checkpoint mechanism](task-plan.md#checkpoints) (`lifecycle.cleanup`
|
|
109
111
|
`{state: applying, headSha: <the unit's headSha>}`), then run:
|
|
110
112
|
|
|
111
113
|
```bash
|
|
@@ -13,6 +13,12 @@ units keep their own checkpoints and continue in parallel within actual resource
|
|
|
13
13
|
observation that would distinguish the remaining causes. Run the relevant host,
|
|
14
14
|
integration or device check before another broad acceptance cycle. After a correction,
|
|
15
15
|
run affected checks and the required delivery checks, not extra assurance work.
|
|
16
|
+
- **Keep the repair's contract intact.** Reproduce the reported input/state and check
|
|
17
|
+
the observable result the existing criteria require. Reuse sufficient checks; an added
|
|
18
|
+
regression establishes the condition that reaches the failure. If that operation exposes
|
|
19
|
+
another failure of the same contract, continue the repair while preserving earlier
|
|
20
|
+
assertions. Return when affected criteria and required local checks pass, or an existing
|
|
21
|
+
stop/handback condition applies. This adds no fixed journey or test layer.
|
|
16
22
|
- **Justify infrastructure before adding it.** State which existing criterion requires
|
|
17
23
|
it, why the current path cannot provide that proof, and the smallest alternative.
|
|
18
24
|
Record the choice in the existing decision/note, within current authorization. Routine
|
|
@@ -39,6 +45,13 @@ issue or automatic scheduler gate. They do not waive required validation.
|
|
|
39
45
|
|
|
40
46
|
## Every brief contains
|
|
41
47
|
|
|
48
|
+
Use the full checklist for a fresh or replacement worker. For a retained conversation,
|
|
49
|
+
send the new feedback, current checkpoint, latest failure/fix brief and local evidence,
|
|
50
|
+
current standing orders and changed decisions, affected skill/proof pointers, and new
|
|
51
|
+
result path. Re-read the saved source/criteria after context loss; do not resend the original
|
|
52
|
+
role or whole assignment already in that session. This shorter continuation keeps the same
|
|
53
|
+
acceptance bar, launch-authority rules and history; it is not a new setup or proof campaign.
|
|
54
|
+
|
|
42
55
|
- the source and criteria, as a file already in the run directory
|
|
43
56
|
- the plan's `standingOrders`, verbatim, and the decisions that answer this unit's questions
|
|
44
57
|
- absolute run, workspace, and findings paths; for implementers, the unit's
|
|
@@ -51,6 +64,9 @@ issue or automatic scheduler gate. They do not waive required validation.
|
|
|
51
64
|
test; retain the same checkpoint/history when changing workers
|
|
52
65
|
- for a fix after a failed check or case, the last `failure` block (case, step, error,
|
|
53
66
|
evidence path) verbatim, so the worker starts from the cause
|
|
67
|
+
- for review fixes, the generated brief's `reproducers` with their original triggers,
|
|
68
|
+
source rounds/HEADs, command, workspace-relative cwd, expected result and retained evidence;
|
|
69
|
+
run them against the candidate, rather than replaying in the reviewer's old checkout
|
|
54
70
|
- a concise worker-specific contract: business outcome and context, full acceptance,
|
|
55
71
|
security and quality requirements, and principles relevant to the assigned work; a
|
|
56
72
|
reviewer gets review.md's two rules instead. Do not forward coordinator scheduling
|
|
@@ -15,6 +15,13 @@ nothing is left to settle.
|
|
|
15
15
|
|
|
16
16
|
## Clean before handoff
|
|
17
17
|
|
|
18
|
+
[Release any session retention still held](implementation.md#settle-session-retention) for each
|
|
19
|
+
unit before normal workspace cleanup; this also applies at each merge while other units
|
|
20
|
+
continue. A launch that asked for none has nothing to release, and an acknowledgement is
|
|
21
|
+
recorded only where protection was actually held. Record any
|
|
22
|
+
resource intentionally kept under the existing lifecycle; never claim it was cleaned
|
|
23
|
+
because its worker exited.
|
|
24
|
+
|
|
18
25
|
Clean every delivered unit's workspace and resources before the report, in every
|
|
19
26
|
scheduler mode ([workspaces.md](workspaces.md#cleanup-after-delivery-before-finish)).
|
|
20
27
|
Its `lifecycle.cleanup` is `complete`, or `retained` with the current `headSha`
|
|
@@ -8,8 +8,9 @@ Workers report problems; you route them.
|
|
|
8
8
|
|
|
9
9
|
## Route every problem
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
Skip P3: no repair, dropbox entry or follow-up issue. For the remaining problems,
|
|
12
|
+
ask these in order; the first yes decides. A P2 label alone does not decide whether
|
|
13
|
+
work supports this delivery.
|
|
13
14
|
|
|
14
15
|
1. **Could it hurt someone now?** Security, auth, tenancy, money, data loss,
|
|
15
16
|
a failure users see, a flake that knocks other PRs out of the queue, or a
|
|
@@ -19,15 +20,17 @@ labels miss in both directions.
|
|
|
19
20
|
Example: a reviewer notes, as P2, that a provider webhook amount is parsed
|
|
20
21
|
without a check, "unreachable today". The input is external: file it now.
|
|
21
22
|
2. **Does it stop this unit from being finished or proven?** Small and in the
|
|
22
|
-
unit's files: fix it in the unit
|
|
23
|
+
unit's files: fix it in the unit; for P2, first record the explicit selection
|
|
24
|
+
under [Supporting P2 work](#supporting-p2-work). A question: take its automatic answer
|
|
23
25
|
([preflight.md](preflight.md#never-block-on-the-human)); defer it only when it is human-only. Anything else outside the unit's files, code or
|
|
24
26
|
environment: an [infrastructure failure](expire.md#infrastructure-failures).
|
|
25
27
|
Example: the shared test helper the unit's tests need is broken on the
|
|
26
28
|
target: an infrastructure failure.
|
|
27
29
|
3. **Did this unit cause it?** Fix it in the unit, however small; it costs
|
|
28
30
|
less now than as an issue. `dropbox.mjs check` decides (`inDiff` true inside the
|
|
29
|
-
unit's diff), and `add` refuses an implementer entry there.
|
|
30
|
-
|
|
31
|
+
unit's diff), and `add` refuses an implementer entry there. For a reviewer's P2,
|
|
32
|
+
`inDiff` records location, not repair authorization: apply the supporting-work
|
|
33
|
+
test below; otherwise keep it in the dropbox.
|
|
31
34
|
4. **Would fixing it change nothing** for behavior or for a reader? A style
|
|
32
35
|
nit, a smell no documented rule names, hardening the
|
|
33
36
|
code shows cannot trigger (internal input only, and this unit adds no new
|
|
@@ -44,6 +47,28 @@ labels miss in both directions.
|
|
|
44
47
|
Record a blocking relation with `--blocks <#n | owner/name#n | issue URL>`:
|
|
45
48
|
the posted issue says `Blocks #n` so a later run takes it first.
|
|
46
49
|
|
|
50
|
+
## Supporting P2 work
|
|
51
|
+
|
|
52
|
+
Select a P2 for the current unit only when it directly enables an existing
|
|
53
|
+
authorized outcome, agreed verification or delivery. For example, include the
|
|
54
|
+
unit's new regression module in its existing CI test list. Nearby cleanup,
|
|
55
|
+
optional hardening and unrelated performance work stay deferred, even inside the diff.
|
|
56
|
+
|
|
57
|
+
Record the finding/dropbox id, existing criterion and concrete reason in the plan's
|
|
58
|
+
`decisions`, and include that selection in the implementer or fix brief. Keep P2
|
|
59
|
+
nonblocking: its severity alone changes no verdict, fix counter or acceptance bar.
|
|
60
|
+
Use the existing implementation or fix work when available. When review already
|
|
61
|
+
passed, return the unit to implementation for the selected repair while retaining
|
|
62
|
+
its passed review. After the repair push, use the existing post-pass carry and final
|
|
63
|
+
CI rules; it does not reopen the blocking review loop.
|
|
64
|
+
|
|
65
|
+
After the selected work is verified, record its SHA and check result in the unit's
|
|
66
|
+
existing result/note and mark the dropbox entry with `--drop "fixed on <sha>; <check
|
|
67
|
+
and result>"` so it is not filed as unfinished work. Leave the original review
|
|
68
|
+
unchanged. If the work is not completed, retain its pending entry and report it
|
|
69
|
+
truthfully. Shared-environment changes and changes to required checks keep their
|
|
70
|
+
existing authorization boundaries.
|
|
71
|
+
|
|
47
72
|
## Commands
|
|
48
73
|
|
|
49
74
|
```bash
|
|
@@ -56,7 +81,7 @@ node $D add --dropbox <run>/dropbox.json --unit <id> --source implementer \
|
|
|
56
81
|
--summary "<one line: what is wrong>" [--pr <url>] [--blocks <issue>] \
|
|
57
82
|
--git <workspace> --base <review base>
|
|
58
83
|
# coordinator, after every review round, before the verdict: adds every P2 (P3 is skipped),
|
|
59
|
-
# then route each new entry
|
|
84
|
+
# then route each new entry, including any explicitly selected supporting work:
|
|
60
85
|
node $D from-review --dropbox <run>/dropbox.json --review <run>/reviews/<unit>-r<N>.json \
|
|
61
86
|
--pr <url> --git <unit review clone> --base <review base>
|
|
62
87
|
node $D post --dropbox <run>/dropbox.json --repo <owner/name> --ids D3 # 1: file now
|
|
@@ -235,15 +235,18 @@ missing, or names a step without a reason.
|
|
|
235
235
|
| Review: `review-verdict.mjs` verdict `fix` | Follow its `action` ([review.md](review.md#fix-loop)). |
|
|
236
236
|
| Review: `review-verdict.mjs` verdict `handback` (`not-converging`) | Stop fixing; mark the unit `blocked` (`blockedReason: review-handback`) and defer the PR with its open findings on its issue. |
|
|
237
237
|
| Review: `review-verdict.mjs` verdict `decide`, or a worker's `decisionNeeded` | [Decide before you defer](#decide-before-you-defer). |
|
|
238
|
-
| CI: a fix cycle without progress | Treat the failing check as the failing test: the
|
|
238
|
+
| CI: a fix cycle without progress | Treat the failing check as the failing test: continue the implementation owner with the required escalation fill and that check as its only target, using the [continuation/replacement selection](task-plan.md#worker-selection-on-resume) rather than fabricating a pin. 2 cycles in a row without progress: `blocked` (`blockedReason: retry-ci`), deferred on its issue. |
|
|
239
239
|
| Too big for one attempt | Resume in the kept workspace while each resume makes [progress](#retry-by-failure-mode); after 2 in a row without verified checkpoint/failure-count progress, draft a split in `<run>/splits/`, file it into the spec's tree, and run the slices the sync adds ([preflight.md](preflight.md#put-every-filed-issue-in-the-tree)). |
|
|
240
240
|
| A required proof the unit has no environment for yet | The unit builds it; see [Proof stays with its unit](#proof-stays-with-its-unit). |
|
|
241
241
|
| Dependency | Fix the edge; resume when runnable. |
|
|
242
242
|
| A capability the unit needs is missing and no unit builds it (a shared driver, fixture, or hook) | Build it inside the first unit that needs it; units that need it later get `dependsOn` on that unit. Only when that puts the unit past the size check's line limit, file it as its own issue beside them, with `blocked_by` on the units that use it, never on their parent issue. Example: three proof units each need a device-state reader: the first builds it, the other two depend on the first. |
|
|
243
243
|
| [Human-only](#human-only) blocker | Take its automatic answer ([preflight.md](preflight.md#never-block-on-the-human)); when that defers it, mark `blocked` (`blockedReason: human-decision`, its `humanItem` and `humanNeed`), keep the work, and record what is needed on its owning issue; never ship part of the unit. |
|
|
244
244
|
|
|
245
|
-
Continue in the kept workspace with the
|
|
246
|
-
|
|
245
|
+
Continue the retained owner in the kept workspace with the current checkpoint, findings
|
|
246
|
+
and failure evidence. If its process state or required selection prevents continuation,
|
|
247
|
+
use an explicit replacement under the [owner contract](implementation.md#implementation-owner),
|
|
248
|
+
keeping its old session reference for settlement; replacement briefs use those local facts
|
|
249
|
+
rather than an old transcript. Keep the response limits and history above. Record a queue stall with the
|
|
247
250
|
provider pending as a wait and watch again. End the run only when
|
|
248
251
|
`next-actions.mjs`, invoked with [live capacity](implementation.md#live-capacity), prints `finish`, and never claim the spec complete.
|
|
249
252
|
|
|
@@ -53,6 +53,55 @@ independent clone prepared before its first spawn; after that, never pass
|
|
|
53
53
|
`git_clone_workspace:true` again, and use `sandbox:false` only when the caller
|
|
54
54
|
accepts unrestricted writes.
|
|
55
55
|
|
|
56
|
+
## Implementation owner
|
|
57
|
+
|
|
58
|
+
Keep one implementation conversation per unit through local proof, independent review,
|
|
59
|
+
review fixes and CI repairs. Its saved conversation outlives the active worker slot: launch
|
|
60
|
+
each worker normally, single or batch as the assignment needs, and record the receipt as
|
|
61
|
+
`implementationOwner` ([task-plan.md](task-plan.md#shape)). `retain_session` is optional
|
|
62
|
+
protection from later cleanup, not a precondition for continuing: a completed conversation is
|
|
63
|
+
resumed by its `runId` whether or not retention was requested, and the harness never asks for
|
|
64
|
+
it on resume. Request it only when this caller needs the conversation protected through a long
|
|
65
|
+
wait before cleanup, using the exact argument the launched tool advertises and never inventing
|
|
66
|
+
one for a call that lacks it. A parked owner has no live process and reserves no slot. The
|
|
67
|
+
coordinator still owns scheduling, plan writes, external CI, readiness and delivery;
|
|
68
|
+
reviewers use separate conversations.
|
|
69
|
+
|
|
70
|
+
`next-actions.mjs` supplies `continuation`, `workerKind`, and, for
|
|
71
|
+
`owner-resume`, `owner`. Resume that completed attempt with
|
|
72
|
+
`subagent_resume({id: owner.runId, prompt: <current brief>})`; record the new attempt ID
|
|
73
|
+
without changing the conversation ID. Selection follows [continuation versus new launch](task-plan.md#worker-selection-on-resume): omit model/effort for ordinary continuation. Use only
|
|
74
|
+
authorized, supported explicit overrides; when a required role-only fill cannot be expressed
|
|
75
|
+
by the resume API, replace from that fill with the retained evidence instead of creating a
|
|
76
|
+
pin from its resolved model ID. Clear `worker` when an attempt
|
|
77
|
+
ends, but keep `implementationOwner` while review or CI is pending. Keep all counters and
|
|
78
|
+
earlier results across attempts. `one-by-one` fixes findings sequentially in this owner.
|
|
79
|
+
|
|
80
|
+
A missing history/workspace, an unusable saved owner, or an owner that cannot continue
|
|
81
|
+
requires an explicit replacement reason and the retained checkpoint, failures and reproducer
|
|
82
|
+
references in the replacement brief. Try the saved conversation first: a `retentionReleased`
|
|
83
|
+
marker says only that optional protection lapsed, so it is not a replacement reason by itself
|
|
84
|
+
and the conversation it names usually still resumes. Report lost continuity; never label a
|
|
85
|
+
new conversation a resume. Existing recovery/stop rules still apply, and old plans without
|
|
86
|
+
an owner use the fresh-worker path. Do not install or update the harness during a run merely
|
|
87
|
+
to obtain continuation.
|
|
88
|
+
|
|
89
|
+
### Settle session retention
|
|
90
|
+
|
|
91
|
+
When this unit settles (merged, cancelled, deferred or handed back merge-ready), release any
|
|
92
|
+
retention still held for its `implementationOwner`, `reviewSession` and `retiredSessions` with
|
|
93
|
+
`subagent_release({id: <runId>})` before its normal workspace/resource cleanup. Only a
|
|
94
|
+
conversation launched with `retain_session` has anything to release, so a normal launch skips
|
|
95
|
+
this and a second release is not owed. Record the acknowledgement on that reference when it
|
|
96
|
+
was actually held; an unavailable or refused release stays explicit rather than being
|
|
97
|
+
recorded as done.
|
|
98
|
+
|
|
99
|
+
Reopening is the ordinary case: resume the saved conversation even when its protection was
|
|
100
|
+
released, because release stops protection and leaves the history in place. Start a fresh
|
|
101
|
+
replacement only when continuation is genuinely unavailable, and carry the original
|
|
102
|
+
checkpoint/findings/counters into it. The same rule covers a released unfinished review,
|
|
103
|
+
keeping its round and existing full-review fallback.
|
|
104
|
+
|
|
56
105
|
## Brief
|
|
57
106
|
|
|
58
107
|
Add to SKILL.md's brief list: whole-spec context and neighboring unit
|
|
@@ -83,8 +132,8 @@ handback step. Never edit `findings.json`.
|
|
|
83
132
|
|
|
84
133
|
## Per-unit loop
|
|
85
134
|
|
|
86
|
-
On `resume` (in flight, no worker, code not done),
|
|
87
|
-
|
|
135
|
+
On `resume` (in flight, no worker, code not done), continue the unit's
|
|
136
|
+
[implementation owner](#implementation-owner) in its kept workspace with the current brief.
|
|
88
137
|
|
|
89
138
|
1. **Implement:** change only the unit's scope; commit coherent progress.
|
|
90
139
|
2. **Validate:** prove the criteria with the repository's checks: the
|
|
@@ -119,13 +168,25 @@ implementer in its kept workspace with the brief and its findings entry.
|
|
|
119
168
|
not prohibit long local tests or builds needed for the assigned validation.
|
|
120
169
|
|
|
121
170
|
After 2 fix cycles without progress, or a stuck or late worker, follow
|
|
122
|
-
[expire.md](expire.md).
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
171
|
+
[expire.md](expire.md). Apply the next response through the retained owner where its
|
|
172
|
+
completed conversation and required launch controls permit continuation. A replacement
|
|
173
|
+
uses the same workspace and the findings entry, failing command/output and `git diff <base>`;
|
|
174
|
+
record why it replaces the owner and retain its session reference as above. Give replacement
|
|
175
|
+
workers those local facts rather than copying the old transcript. Keep all progress counters.
|
|
126
176
|
|
|
127
177
|
## Proof
|
|
128
178
|
|
|
179
|
+
- **Make diagnostic failures executable.** Reuse the existing test runner/assertions.
|
|
180
|
+
A standalone probe exits nonzero for an unexpected exception, failed assertion or
|
|
181
|
+
result outside the expected contract. A catch used to add context rethrows or sets
|
|
182
|
+
a nonzero exit; log capture and cleanup preserve that failure status. For shell
|
|
183
|
+
pipelines, preserve the tested command's failure, for example with `set -o pipefail`.
|
|
184
|
+
An expected-exception test passes only when it asserts the expected exception and
|
|
185
|
+
relevant contract details; no exception or the wrong exception fails. Assess the
|
|
186
|
+
process status under that contract, rather than having the model classify log text.
|
|
187
|
+
Coordination commands that exit 0 to return a structured verdict keep that protocol;
|
|
188
|
+
read their verdict as documented. Record the command, status and failing step in
|
|
189
|
+
the existing result/failure fields; no new harness or evidence document is needed.
|
|
129
190
|
- Prove `browser` and `emulator` levels with the existing end-to-end suite;
|
|
130
191
|
with none, the unit builds the journey its proof needs
|
|
131
192
|
([expire.md](expire.md#proof-stays-with-its-unit)).
|
|
@@ -3,7 +3,21 @@
|
|
|
3
3
|
Run these steps in order, in every run, including a one-unit run. Ask nothing
|
|
4
4
|
until step 6.
|
|
5
5
|
|
|
6
|
-
## 0.
|
|
6
|
+
## 0. Repository retention and ready label
|
|
7
|
+
|
|
8
|
+
Enroll this repository's daily tiered retention through the installed skill copy:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node <skill-base-dir>/scripts/daily-cleanup.mjs install --repo <canonical-repo-root>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Repeat on each invocation to refresh the same job, never discover sibling projects.
|
|
15
|
+
Use a persistent installed skill path, not a temporary worktree. Report an enrollment
|
|
16
|
+
failure as "daily cleanup not enabled" and continue the issue workflow. The daily
|
|
17
|
+
job cleans only explicitly registered disposable resources; it preserves run history.
|
|
18
|
+
See [retention.md](retention.md) for age tiers, registration and uninstall. Register
|
|
19
|
+
owned reconstructable resources when they are created and update their activity before
|
|
20
|
+
reuse; never turn an inventory guess into deletion authority.
|
|
7
21
|
|
|
8
22
|
**One run per spec.** Before anything else, find the spec's run:
|
|
9
23
|
|
|
@@ -52,8 +66,8 @@ The script exits 0 whenever it ran (2 if it could not); read `outcome` in its JS
|
|
|
52
66
|
planned from an issue that cannot be read.
|
|
53
67
|
- **Exit 2** (the script could not run): fix the issue reference and rerun.
|
|
54
68
|
|
|
55
|
-
Skip
|
|
56
|
-
sub-issues, never a checklist.
|
|
69
|
+
Skip only the ready-label check for a local or pasted spec; repository retention
|
|
70
|
+
enrollment still runs. Count only GitHub's native sub-issues, never a checklist.
|
|
57
71
|
|
|
58
72
|
### Compaction hook
|
|
59
73
|
|