@1aboveio/skills 1.0.19 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/.codex-plugin/plugin.json +1 -1
  2. package/.codex-plugin/resources.json +146 -146
  3. package/package.json +4 -4
  4. package/skills/app-dev/airflow/SKILL.md +1 -1
  5. package/skills/app-dev/android-development/SKILL.md +1 -1
  6. package/skills/app-dev/app-debug/SKILL.md +1 -1
  7. package/skills/app-dev/better-auth/SKILL.md +1 -1
  8. package/skills/app-dev/data-catalog/SKILL.md +1 -1
  9. package/skills/app-dev/data-quality/SKILL.md +1 -1
  10. package/skills/app-dev/ios-foundation/SKILL.md +1 -1
  11. package/skills/app-dev/maestro/SKILL.md +8 -1
  12. package/skills/app-dev/monorepo/SKILL.md +1 -1
  13. package/skills/app-dev/nextjs-fullstack/SKILL.md +1 -1
  14. package/skills/app-dev/prisma-setup/SKILL.md +1 -1
  15. package/skills/app-dev/pyspark/SKILL.md +1 -1
  16. package/skills/app-dev/python-backend/SKILL.md +1 -1
  17. package/skills/app-dev/shadcn/SKILL.md +1 -1
  18. package/skills/app-dev/zod-v4/SKILL.md +1 -1
  19. package/skills/cicd/cloud-build/SKILL.md +1 -1
  20. package/skills/cicd/cloud-debug/SKILL.md +1 -1
  21. package/skills/cicd/cloud-deploy/SKILL.md +1 -1
  22. package/skills/cicd/docker/SKILL.md +1 -1
  23. package/skills/cicd/github-actions/SKILL.md +5 -1
  24. package/skills/cicd/github-actions/references/pipeline.md +26 -0
  25. package/skills/cicd/github-flow/SKILL.md +1 -1
  26. package/skills/cicd/google-cloud/SKILL.md +1 -1
  27. package/skills/cicd/mergify/SKILL.md +1 -1
  28. package/skills/cicd/podman/SKILL.md +1 -1
  29. package/skills/content/article-review/SKILL.md +1 -1
  30. package/skills/content/article-to-image/SKILL.md +1 -1
  31. package/skills/content/flowchart-svg/SKILL.md +1 -1
  32. package/skills/content/image-gen/SKILL.md +1 -1
  33. package/skills/content/mermaid/SKILL.md +1 -1
  34. package/skills/content/wechat-article-writer/SKILL.md +1 -1
  35. package/skills/content/wechat-publisher/SKILL.md +1 -1
  36. package/skills/content/wechat-search/SKILL.md +1 -1
  37. package/skills/content/xai-search/SKILL.md +1 -1
  38. package/skills/core/distill-writing/SKILL.md +1 -1
  39. package/skills/core/doc-to-md/SKILL.md +1 -1
  40. package/skills/core/editorial-review/SKILL.md +1 -1
  41. package/skills/core/house-style/SKILL.md +1 -1
  42. package/skills/core/plain-language/SKILL.md +1 -1
  43. package/skills/core/polish-cn/SKILL.md +1 -1
  44. package/skills/core/reg-parser/SKILL.md +1 -1
  45. package/skills/core/terminology/SKILL.md +1 -1
  46. package/skills/core/write-doc/SKILL.md +1 -1
  47. package/skills/core/write-report/SKILL.md +1 -1
  48. package/skills/engineering/better-review/SKILL.md +5 -4
  49. package/skills/engineering/better-review/references/passes.md +20 -0
  50. package/skills/engineering/better-review/references/result.md +14 -0
  51. package/skills/engineering/e2e-test/SKILL.md +8 -1
  52. package/skills/engineering/engineering/SKILL.md +1 -1
  53. package/skills/engineering/engineering-runtime/SKILL.md +1 -1
  54. package/skills/engineering/engineering-runtime/coherence/workflow.json +13 -13
  55. package/skills/engineering/ensure-coverage/SKILL.md +8 -1
  56. package/skills/engineering/golden-path/SKILL.md +5 -1
  57. package/skills/engineering/harness-runtime/SKILL.md +1 -1
  58. package/skills/engineering/resolve-issues/SKILL.md +33 -11
  59. package/skills/engineering/resolve-issues/references/ci.md +15 -1
  60. package/skills/engineering/resolve-issues/references/delivery-progress.md +18 -0
  61. package/skills/engineering/resolve-issues/references/done.md +12 -0
  62. package/skills/engineering/resolve-issues/references/dropbox.md +31 -6
  63. package/skills/engineering/resolve-issues/references/expire.md +6 -3
  64. package/skills/engineering/resolve-issues/references/exploration.md +10 -3
  65. package/skills/engineering/resolve-issues/references/implementation.md +88 -16
  66. package/skills/engineering/resolve-issues/references/preflight.md +6 -0
  67. package/skills/engineering/resolve-issues/references/review.md +42 -9
  68. package/skills/engineering/resolve-issues/references/task-plan.md +17 -2
  69. package/skills/engineering/resolve-issues/scripts/dropbox.mjs +2 -1
  70. package/skills/engineering/resolve-issues/scripts/next-actions.mjs +79 -4
  71. package/skills/engineering/resolve-issues/scripts/review-verdict.mjs +63 -10
  72. package/skills/engineering/resolve-release/SKILL.md +1 -1
  73. package/skills/engineering/rush-issues/SKILL.md +1 -1
  74. package/skills/engineering/rush-release/SKILL.md +1 -1
  75. package/skills/engineering/test-quality/SKILL.md +1 -1
  76. package/skills/risk-compliance/compliance-audit/SKILL.md +1 -1
  77. package/skills/risk-compliance/contract-compare/SKILL.md +1 -1
  78. package/skills/risk-compliance/contract-review/SKILL.md +1 -1
  79. package/skills/risk-compliance/doc-authenticity/SKILL.md +1 -1
  80. package/skills/risk-compliance/fraud-detection/SKILL.md +1 -1
  81. package/skills/risk-compliance/payment-analysis/SKILL.md +1 -1
  82. package/skills/risk-compliance/portfolio-payment-analysis/SKILL.md +1 -1
  83. package/skills/risk-compliance/similar-domain/SKILL.md +1 -1
  84. package/skills/risk-compliance/tld-detection/SKILL.md +1 -1
@@ -64,6 +64,12 @@ P2 lacks its follow-up URL when the caller asked for follow-ups.
64
64
  "file": "src/billing/refund.ts", "line": 42,
65
65
  "trigger": "refund 100 USD at rate 0.9 returns 111.11 EUR, expected 90.00",
66
66
  "rule": "every currency conversion multiplies by the source-to-target rate",
67
+ "reproducer": {
68
+ "command": "pnpm test -- src/billing/refund.test.ts",
69
+ "cwd": ".",
70
+ "expected": "refund 100 USD at rate 0.9 returns 90.00 EUR",
71
+ "evidence": "<run>/reviews/1201/refund-probe.log"
72
+ },
67
73
  "paths": [
68
74
  { "path": "src/billing/refund.ts:42", "status": "open", "evidence": "divides by rate" },
69
75
  { "path": "src/billing/charge.ts:31", "status": "closed", "evidence": "convert() at :31" }
@@ -104,6 +110,14 @@ P2 lacks its follow-up URL when the caller asked for follow-ups.
104
110
  - `trigger` is required on P0/P1: the concrete input, state, or sequence that breaks it; for
105
111
  an explicitly unmet requirement or missing required proof, identify the requirement and the
106
112
  evidence of what is missing.
113
+ - `reproducer` is optional on P0/P1. When an executable case established the finding,
114
+ attach its actual `command`, workspace-relative `cwd` (`.` for the root), and `expected`
115
+ observable result from the existing contract. An optional `evidence` names its retained
116
+ probe/log. Keep the probe available through the fix loop. The command must exercise the
117
+ reported trigger; establish its defining state in the case so a different fixture cannot
118
+ silently bypass the failure. An unmet written requirement need not have an executable case.
119
+ The caller carries these references, including distinct earlier witnesses of a still-open
120
+ finding, into the fix brief. Their old results are baseline evidence, never candidate passes.
107
121
  - `rule` and `paths` are required on P0/P1, with at least one row `open`: the rule as one
108
122
  sentence, and one row per path the diff adds, changes, or relies on (a writer, caller, sweep
109
123
  place, or async cell), each `open` or `closed`, a closed row citing its guard's `file:line`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: e2e-test
3
3
  description: "Playwright end-to-end guidance for affected browser journeys, render health and presentation checks, with route manifests and sweeps for broader audits. Use when browser routes or user flows ship or change, or a Playwright test flakes. NOT for non-browser tests, defining what to test (ensure-coverage), the curated ALIVE/DEAD golden-path gate (golden-path), or CI workflow YAML (github-actions)."
4
- release-version: 0.49.1
4
+ release-version: 0.50.1
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # E2E Testing Standard
@@ -77,6 +77,13 @@ Whether you added tests, wrote notes, or reviewed a PR, the first line answers "
77
77
 
78
78
  ## CI
79
79
 
80
+ For issue Acceptance Criteria that need browser proof, map the criteria to real
81
+ assertions and keep the affected specs runnable through maintained local and CI
82
+ commands. Use isolated fixtures and retain failure traces. Workers run focused
83
+ development checks; CI executes qualifying acceptance against the candidate. Report
84
+ CI pending until its applicable cases pass; a spec file or unrelated green job is
85
+ not acceptance.
86
+
80
87
  Run the repo's existing required checks; routine feature work does not create or change a golden-path gate. When explicitly tasked with CI wiring, see [ci-integration.md](references/ci-integration.md) and [ci-playwright-container.md](references/ci-playwright-container.md).
81
88
 
82
89
  ## Reviewing
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: engineering
3
3
  description: "Engineering conventions: feature-delivery priorities, focused verification and review, operational boundaries, and tracker routing. Standalone /engineering offers Global, Project, or Session setup and targeted resets for configured scopes; /engineering init keeps explicit project setup. Use when setting up AGENTS.md or CONTRIBUTING.md, saving or resetting engineering defaults, or before creating an engineering issue, spec, epic, ticket, or sub-issue on GitHub or Linear. Reads existing policy without writing during ordinary work. NOT the issue-to-PR workflow (resolve-issues), release execution (resolve-release), Git delivery (github-flow), or CI setup (github-actions)."
4
- release-version: 0.49.1
4
+ release-version: 0.50.1
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # Engineering
@@ -3,7 +3,7 @@ name: engineering-runtime
3
3
  description: Internal support package for shared Engineering Workflow executable behavior. Never select or invoke this package as a user capability.
4
4
  disable-model-invocation: true
5
5
  user-invocable: false
6
- release-version: 0.49.1
6
+ release-version: 0.50.1
7
7
  ---
8
8
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
9
  # Engineering Runtime
@@ -369,7 +369,7 @@
369
369
  "repository": "1aboveio/ai",
370
370
  "revision": "main"
371
371
  },
372
- "contentDigest": "93ac20a3d5d41b233b13e521ba1b65d0a3e339958422a56ffad00a844656a23f",
372
+ "contentDigest": "528de8e948bcd1cfdbe92bcb4c14129cbb78d5d9037d8d378d5ac540017cd248",
373
373
  "digestExcludes": []
374
374
  },
375
375
  {
@@ -382,7 +382,7 @@
382
382
  "repository": "1aboveio/ai",
383
383
  "revision": "main"
384
384
  },
385
- "contentDigest": "915715a605bf78f6f69cb8c95f7227548a6d71a6ef0ce502b5b5c5a357676d19",
385
+ "contentDigest": "1b1074c002a7d3ca2dfebe625b65128aee10a662f7f9d4060a018fbaecf3225f",
386
386
  "digestExcludes": []
387
387
  },
388
388
  {
@@ -395,7 +395,7 @@
395
395
  "repository": "1aboveio/ai",
396
396
  "revision": "main"
397
397
  },
398
- "contentDigest": "1ef2fd2ad328c373c7c6fe42007908766860cd8051e1807739797303aaadeae4",
398
+ "contentDigest": "61d744eeddd5b3a5d2fa7a94ea01ec3a570c72a7c19ad526761f21aac993abff",
399
399
  "digestExcludes": []
400
400
  },
401
401
  {
@@ -408,7 +408,7 @@
408
408
  "repository": "1aboveio/ai",
409
409
  "revision": "main"
410
410
  },
411
- "contentDigest": "3c9509027191a2b2612f3905defb5ed9c47580709ba77b46c0e8433d354c4d33",
411
+ "contentDigest": "3140da610485146538ee76048446ea7bac8927890a1469eb8108e63e4056d655",
412
412
  "digestExcludes": []
413
413
  },
414
414
  {
@@ -421,7 +421,7 @@
421
421
  "repository": "1aboveio/ai",
422
422
  "revision": "main"
423
423
  },
424
- "contentDigest": "5e419edc77397a9021a24fc9da83d07c83aa786853dcb24916d8fb2655f81ea9",
424
+ "contentDigest": "12f5230e47afdeab750cb6b1454b3172edb29b922155b2994e96a93f386b6dbd",
425
425
  "digestExcludes": []
426
426
  },
427
427
  {
@@ -434,7 +434,7 @@
434
434
  "repository": "1aboveio/ai",
435
435
  "revision": "main"
436
436
  },
437
- "contentDigest": "ecee12f24d18d49ec1be030e3f831c3d07a66f37b0b16aa5efef365ca381e558",
437
+ "contentDigest": "b8d908580483f3954545e392c11d439ed100688eadc3b41ce508569f6dddc3bc",
438
438
  "digestExcludes": []
439
439
  },
440
440
  {
@@ -447,7 +447,7 @@
447
447
  "repository": "1aboveio/ai",
448
448
  "revision": "main"
449
449
  },
450
- "contentDigest": "2fbd1a9e15087045fa80b47d9b6db8695009c900c2e4aeeab71207875b071c74",
450
+ "contentDigest": "256eac4a31f95d536ef487359df4c84fe7e85436c3b7550f6200f1b15cca4d0b",
451
451
  "digestExcludes": []
452
452
  },
453
453
  {
@@ -460,7 +460,7 @@
460
460
  "repository": "1aboveio/ai",
461
461
  "revision": "main"
462
462
  },
463
- "contentDigest": "8c33282acdf9a7b3ba3adf46065249126efdd8669487ad7def1b4302155db3dd",
463
+ "contentDigest": "25ad674c96748cb5313d13c80dd1ac4be5bdb287e75e7f978d8e5b97f5892833",
464
464
  "digestExcludes": []
465
465
  },
466
466
  {
@@ -473,7 +473,7 @@
473
473
  "repository": "1aboveio/ai",
474
474
  "revision": "main"
475
475
  },
476
- "contentDigest": "e612b320be1b3aee539a26494e2048e0bbdc1947166fa4cffbdfe8085a64b50a",
476
+ "contentDigest": "1d10c734eaef6bb20bf99bf9fa6dcfde6460ea2eecb84c33d7c0474e470684a9",
477
477
  "digestExcludes": []
478
478
  },
479
479
  {
@@ -486,7 +486,7 @@
486
486
  "repository": "1aboveio/ai",
487
487
  "revision": "main"
488
488
  },
489
- "contentDigest": "53732d354995ca40c0325b2f860a4facf2e79b9d6d373fbc76a5ce5b3a1f1e29",
489
+ "contentDigest": "229a6d752c9b17c298172a022c36f8e28e409d665df4ed89f1655c17f37db3f3",
490
490
  "digestExcludes": []
491
491
  },
492
492
  {
@@ -499,7 +499,7 @@
499
499
  "repository": "1aboveio/ai",
500
500
  "revision": "main"
501
501
  },
502
- "contentDigest": "61f8b7f04887b86338984f03527fdaf66ec90df7ff89c19ee9dca6f362fe212a",
502
+ "contentDigest": "c44aa11db1f62995c8b77929143892e421d7068193c959930c8af4fbe8a2d7f5",
503
503
  "digestExcludes": []
504
504
  },
505
505
  {
@@ -512,13 +512,13 @@
512
512
  "repository": "1aboveio/ai",
513
513
  "revision": "main"
514
514
  },
515
- "contentDigest": "ad9bdbfbaeb4c575f8fad5b53367403096594aafce8e686926ddb734c185155a",
515
+ "contentDigest": "14439c4b1390b3dde50dcf8d56ff5c578bbbe08b17627f7bd504db099ba5e92a",
516
516
  "digestExcludes": [
517
517
  "coherence/workflow.json"
518
518
  ]
519
519
  }
520
520
  ],
521
- "releaseIdentity": "2ed547516d442d0bfad21952001956420f71a972849049507530f80ad16eda83",
521
+ "releaseIdentity": "d7ab71565826655a05f576e53932870e4d0176329a1b4110a460457e5cb2d0b8",
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.49.1
5
+ release-version: 0.50.1
6
6
  ---
7
7
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
8
8
  # Ensure Coverage
@@ -16,6 +16,13 @@ Read the relevant source and governing project guidance. When product behavior o
16
16
 
17
17
  ## Scope and proof
18
18
 
19
+ - Start from the issue's Acceptance Criteria, requirements elsewhere in the issue,
20
+ and later human corrections. Map each criterion to sufficient existing tests or
21
+ missing automation, its qualifying CI lane, and any human or physical-device
22
+ remainder. One test may prove several criteria; choose the lowest sufficient level.
23
+ Record this in the existing issue or findings without requiring a new ledger.
24
+ Workers deliver the tests; CI executes automated acceptance. Grade a criterion
25
+ satisfied only when the relevant assertions and candidate's results support it.
19
26
  - Choose the smallest sufficient proof for the outcome and material risks; reuse existing tests and required CI results when they prove the behavior. Do not automatically require multiple test layers, a ledger, a criteria document, a presentation campaign, or reconciliation of every ADR.
20
27
  - Existing required repository checks and adopted coverage floors remain binding unless an approved change alters them. Authentication, money, tenancy, and data-integrity protections remain binding. Read applicable ADRs and project policy for the touched work, not every ADR in the repository.
21
28
  - Consider breadth, depth, and presentation where relevant: what behavior is in scope, whether evidence actually exercises it, and whether a user can perceive and use a changed interface. Do not turn every axis or hypothetical state into a separate blocking obligation.
@@ -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.49.1
6
+ release-version: 0.50.1
7
7
  ---
8
8
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
9
  # Golden path
@@ -42,6 +42,10 @@ repo has a copy.
42
42
 
43
43
  ## Rules
44
44
 
45
+ Golden paths are the curated release-critical subset, not the full set of issue
46
+ Acceptance Criteria. Keep other automated acceptance tests in their appropriate CI
47
+ suites; an ALIVE verdict proves only the selected paths and their assertions.
48
+
45
49
  1. **A person decides which flows are golden.** Draft candidates; never promote one
46
50
  on your own judgment. A flow the user names in the request is confirmed, and so
47
51
  are paths carried over from an older smoke manifest (ask about trimming them).
@@ -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.49.1
6
+ release-version: 0.50.1
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.49.1
11
+ release-version: 0.50.1
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 goes to the dropbox, never fixed
67
- here; P3 is skipped); `fix`: only its fixBrief (P0/P1),
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
@@ -116,16 +116,34 @@ Read each procedure right before its stage; never substitute your own.
116
116
  - **The human.** Ask once, at the approval. Record every decision, correction, and scope change in
117
117
  `decisions` at once, and each standing instruction in `standingOrders`; re-read the standing orders on
118
118
  resume and before any push, enqueue, data write, or deletion. Default merge mode is `autonomous`.
119
- - **Proof.** Treat producer reports as claims until the reviewer or CI checks them. A check that exits 0 needs no
120
- further evidence. A unit owes coding acceptance only: its criteria at its `proof.level` plus the required CI
121
- on its final HEAD. Integrated release acceptance (a device or system campaign the spec or repository assigns
122
- to a release or campaign gate) runs at that gate, never per unit; the handback links its owning issue. Produce
123
- no evidence documents; the plan, findings, and reviews are the only records.
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
+ Apply the [Acceptance criteria](#acceptance-criteria) contract below. Use the plan,
123
+ findings, reviews and CI artifacts as the records; produce an additional checklist or
124
+ evidence document only when the issue or repository requires it, deriving results from actual runs.
124
125
  - **Delivery.** A dependent starts on its parent's finished code. Stack its PR on the parent's (a GitHub-native
125
126
  stack) under a live Mergify queue; chain it when the merge keeps commits; else open it once the parent merges. Live
126
127
  steps are only the read-only warehouse canary (never blocks) and the isolated, run-owned resources
127
128
  [preflight.md](references/preflight.md#never-block-on-the-human) allows.
128
129
 
130
+ ## Acceptance criteria
131
+
132
+ Treat Acceptance Criteria, other issue requirements and later corrections as the contract.
133
+ Reuse or implement automated tests at the lowest sufficient level. Workers deliver behavior
134
+ and tests, run focused local checks, and return with CI pending. CI qualifies the candidate;
135
+ the coordinator verifies results. Human or hardware criteria stay pending until their step passes.
136
+
137
+ At preflight, record coverage, missing automation, the CI lane and manual remainder in
138
+ findings. Reuse sufficient tests; one may cover several criteria. Acceptance-focused issues
139
+ are supported: automate criteria, fix in-scope defects and qualify results in CI.
140
+ Tests added or code merged alone do not satisfy acceptance.
141
+
142
+ Defer acceptance only when the issue or agreed policy assigns it to a later gate; link
143
+ its owner. An issue requesting the campaign remains incomplete until its criteria pass.
144
+ Preserve required checks and merge rules. Surface missing execution or enforcement;
145
+ change neither branch protection nor acceptance scope without authorization.
146
+
129
147
  ## Delivery progress
130
148
 
131
149
  Before briefing or continuing a unit, read [delivery-progress.md](references/delivery-progress.md).
@@ -169,7 +187,8 @@ efforts are run metadata, never a question.
169
187
  ### 2. Implement and open the PR
170
188
 
171
189
  Give each unit a branch, its prepared workspace, and an implementer with its findings entry
172
- and parents' contracts; state outcome and validation, not method. Refill
190
+ and parents' contracts; retain its [implementation owner](references/implementation.md#implementation-owner)
191
+ through review/CI fixes, separately from its active worker slot. State outcome and validation, not method. Refill
173
192
  slots at once. At a unit's first coherent commit its PR opens as a draft, so CI
174
193
  starts and the work is safe; later work goes to the same PR (in a Mergify stack
175
194
  repository, amend the one commit); review starts when its code is done
@@ -178,13 +197,13 @@ the unit's own PR branch need no approval.
178
197
 
179
198
  ### 3. Review
180
199
 
181
- Spawn one `better-review` reviewer once the unit's code is done, unless a
200
+ Spawn one fresh `better-review` reviewer once the unit's code is done, unless a
182
201
  trusted complete result for that HEAD is posted on the PR; it runs alongside
183
202
  CI. From round 2, carry a HEAD that follows a pass, else pick the tier: a
184
203
  carry or skip writes its record and spawns no reviewer ([review.md](references/review.md#tier-then-verdict)).
185
204
  Merge [GitHub reviews](references/review.md#github-reviews) into its result,
186
205
  run `review-verdict.mjs`, and follow the `verdict` it prints (exit 0; 2 only if it could not run): `pass`; `fix`, give the
187
- `fixBrief` (P0/P1 only) to a fix worker as its `action` says, then review
206
+ `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
188
207
  again; `review-again`; `handback`, defer the PR with its open findings; `wait`,
189
208
  request the awaited re-review; `decide`, answer the `decide` file
190
209
  ([expire.md](references/expire.md#decide-before-you-defer)) and rerun with `--decision`.
@@ -216,6 +235,9 @@ that same `planRevision`.
216
235
 
217
236
  ## Done
218
237
 
238
+ Check each issue's [acceptance contract](#acceptance-criteria) against qualifying results;
239
+ record later-gate obligations. A merged PR does not close pending acceptance.
240
+
219
241
  First [clean every delivered unit's environment](references/done.md#clean-before-handoff), then
220
242
  [settle blocked units](references/done.md#settle-blocked-units). Every PR is reviewed, green on its exact HEAD, and merged (`autonomous`) or
221
243
  handed back merge-ready (`supervised`). For a blocked unit, hand back it, its
@@ -7,6 +7,18 @@ the queue owner's watcher where applicable. Workers may make short status reads
7
7
  fetch failed logs for diagnosis, but must not run `gh run watch`,
8
8
  `gh pr checks --watch`, a delivery watcher, or create background monitoring.
9
9
 
10
+ Qualify the issue's Acceptance Criteria as well as required repository checks.
11
+ Verify that the mapped tests actually ran in the assigned lane against the intended
12
+ candidate and their assertions cover the claimed behavior. A skipped case, missing
13
+ acceptance job, or green unrelated check is not acceptance. Use CI results and artifacts
14
+ for any required checklist; retain manual or explicitly later-gate obligations with
15
+ their owner. Worker completion with CI pending is not issue acceptance. Queue checks
16
+ qualify the combined candidate; post-deploy checks qualify the deployed revision.
17
+ Require each result at its assigned stage: PR admission checks before enqueue,
18
+ queue acceptance before merge, and deployed acceptance after deployment or before
19
+ promotion as specified. Queue-only acceptance is pending at admission, not missing
20
+ PR CI; it cannot be required to pass before the queue candidate exists.
21
+
10
22
  1. Watch the required checks for every pushed HEAD. Pushes to the unit's own
11
23
  PR branch need no approval. Green means every required check ran and passed
12
24
  on that HEAD: a check that never reported is missing, not passed. Example: a
@@ -105,7 +117,9 @@ provider shows that PR merged.
105
117
 
106
118
  Clean that unit's workspace and resources, then finish it, in every scheduler
107
119
  mode: `next-actions.mjs` prints `cleanup-workspace` until its cleanup settles.
108
- First record the intent through the [checkpoint mechanism](task-plan.md#checkpoints) (`lifecycle.cleanup`
120
+ First [release any session retention still held](implementation.md#settle-session-retention)
121
+ for it, even while other units remain active; a conversation launched without protection has
122
+ nothing to release. Then record the intent through the [checkpoint mechanism](task-plan.md#checkpoints) (`lifecycle.cleanup`
109
123
  `{state: applying, headSha: <the unit's headSha>}`), then run:
110
124
 
111
125
  ```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
@@ -46,11 +59,16 @@ issue or automatic scheduler gate. They do not waive required validation.
46
59
  - model id, effort, and a required read-back
47
60
  - an absolute skill path when the stage invokes a leaf skill; for validating, the unit's `proof.suite` `skill` (read it first) and `local`, when set
48
61
  - the outcome and validation, with no prescribed method or evidence format
62
+ - the Acceptance Criteria mapping: existing or missing tests, qualifying CI lane,
63
+ and manual or explicitly later-gate obligations; include any issue-required checklist
49
64
  - the [immediate acceptance checkpoint](#delivery-progress), existing baseline (or none),
50
65
  and, for a continuation, the last result, remaining uncertainty and next distinguishing
51
66
  test; retain the same checkpoint/history when changing workers
52
67
  - for a fix after a failed check or case, the last `failure` block (case, step, error,
53
68
  evidence path) verbatim, so the worker starts from the cause
69
+ - for review fixes, the generated brief's `reproducers` with their original triggers,
70
+ source rounds/HEADs, command, workspace-relative cwd, expected result and retained evidence;
71
+ run them against the candidate, rather than replaying in the reviewer's old checkout
54
72
  - a concise worker-specific contract: business outcome and context, full acceptance,
55
73
  security and quality requirements, and principles relevant to the assigned work; a
56
74
  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`
@@ -24,6 +31,11 @@ cancelled, pending, or merge-ready handed-back unit that keeps its environment.
24
31
 
25
32
  ## Close the run
26
33
 
34
+ Before closing, distinguish run completion from issue acceptance. Verify the issue's
35
+ Acceptance Criteria against qualifying CI results and required manual results. Keep
36
+ an issue open when its own acceptance remains pending, even if its automation PR
37
+ merged or its human-only remainder was excluded. Link that obligation in the report.
38
+
27
39
  After the report ([SKILL.md](../SKILL.md#done)):
28
40
 
29
41
  The run is done when nothing it can do is left: every unit landed,
@@ -8,8 +8,9 @@ Workers report problems; you route them.
8
8
 
9
9
  ## Route every problem
10
10
 
11
- Ask these in order; the first yes decides. Never route by the stated P-number:
12
- labels miss in both directions.
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. A question: take its automatic answer
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. A reviewer's
30
- P2 never starts a fix round: it stays in the dropbox marked `inDiff`.
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; questions 1, 4, 5 change it:
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 next fix worker runs on the escalation model with that check as its only target. 2 cycles in a row without progress: `blocked` (`blockedReason: retry-ci`), deferred on its issue. |
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 findings entry, never the old
246
- transcript. Record a queue stall with the
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
 
@@ -125,6 +125,12 @@ The coordinator and any delegated explorer use these rules:
125
125
  5. **`layers`:** the parts changed (`backend`, `web`, `android`, `shared`,
126
126
  `migration`).
127
127
  6. **`proof`:**
128
+ Map the issue's Acceptance Criteria and other binding requirements to existing
129
+ tests, missing automation, the qualifying CI lane, and any manual remainder in
130
+ the existing notes/proof fields. Preserve criterion identifiers when supplied;
131
+ no new ledger or schema is required. For acceptance-focused issues, include
132
+ implementing the cases and connecting their execution to CI in the unit's scope.
133
+
128
134
  - `level`: the weakest the run can reach that shows the behaviors work:
129
135
  `unit`, `database`, `browser`, or `emulator`.
130
136
  - `suite` (`browser`/`emulator` only): the repository's end-to-end suite
@@ -157,9 +163,10 @@ The coordinator and any delegated explorer use these rules:
157
163
  Example: a campaign's 25 scenario groups each cover one feature issue; 20
158
164
  share "owned emulator, database, and fixture pool" (900 lines).
159
165
 
160
- `level` is coding acceptance. Integrated acceptance the spec or repository
161
- assigns to a later gate (a release device campaign, all-ABI or signed
162
- builds, a cross-feature journey) goes in `handback`, naming its gate.
166
+ `level` selects the test depth for automated acceptance. Put integrated acceptance
167
+ in `handback`, naming its gate and owner, only when the issue or agreed repository
168
+ policy assigns it to a later gate. A cross-feature or device journey is not deferred
169
+ merely because it is expensive; an issue requesting that acceptance still owes it.
163
170
  7. **`estimatedLines`: your honest estimate of changed source and test
164
171
  lines,** excluding generated files and docs, including every missing
165
172
  prerequisite. Do not pad it: the size check scales it by 1.3.