@magnusekdahl/parallix 1.5.317 → 1.5.435
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/NOTICES +3 -3
- package/README.md +9 -6
- package/build/asset-manifest.json +50 -6
- package/build/decision/tokenizer-data.gz +0 -0
- package/build/manifest.sha256 +34 -15
- package/build/migrations/0018-adhoc-mission-counter.sql +1 -1
- package/build/migrations/0034-checkpoint-repair.sql +2 -0
- package/build/migrations/0034-mission-description.sql +4 -0
- package/build/migrations/0035-review-round-baseline.sql +3 -0
- package/build/migrations/0036-integration-repair-assessment.sql +2 -0
- package/build/migrations/0037-checkpoint-evidence-history.sql +39 -0
- package/build/migrations/0038-success-criterion-identity.sql +30 -0
- package/build/migrations/0039-review-decided-revision.sql +2 -0
- package/build/migrations/0039-workflow-operations.sql +12 -0
- package/build/migrations/0040-goal-check-carried-from.sql +2 -0
- package/build/migrations/0041-admission-resources.sql +8 -0
- package/build/package.json +1 -1
- package/build/prompts/act-on-review-core.md +4 -4
- package/build/prompts/act-on-review.md +1 -1
- package/build/prompts/draft-core.md +19 -7
- package/build/prompts/execute-core.md +9 -8
- package/build/prompts/review-core.md +3 -3
- package/build/px.mjs +1012 -1101
- package/build/px.mjs.map +4 -4
- package/build/sbom.json +6 -6
- package/build/web/assets/index-BLNC0e_y.css +1 -0
- package/build/web/assets/index-CAQBs60C.js +9 -0
- package/build/web/fonts/FONTS.txt +42 -0
- package/build/web/fonts/OFL-Barlow-Condensed.txt +95 -0
- package/build/web/fonts/OFL-JetBrains-Mono.txt +93 -0
- package/build/web/fonts/barlow-condensed-latin-400.woff2 +0 -0
- package/build/web/fonts/barlow-condensed-latin-700.woff2 +0 -0
- package/build/web/fonts/jetbrains-mono-latin-400.woff2 +0 -0
- package/build/web/fonts/jetbrains-mono-latin-500.woff2 +0 -0
- package/build/web/fonts/jetbrains-mono-latin-700.woff2 +0 -0
- package/build/web/index.html +2 -2
- package/build/web/manifest.json +48 -8
- package/package.json +7 -3
- package/build/web/assets/index-BaiqKjqn.js +0 -9
- package/build/web/assets/index-Be2y914M.css +0 -1
package/NOTICES
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
THIRD-PARTY NOTICES for @magnusekdahl/parallix 1.5.
|
|
1
|
+
THIRD-PARTY NOTICES for @magnusekdahl/parallix 1.5.435
|
|
2
2
|
|
|
3
3
|
@magnusekdahl/parallix itself is licensed under AGPL-3.0-or-later; see LICENSE.
|
|
4
4
|
|
|
@@ -80,7 +80,7 @@ safe-regex2@5.1.1 — MIT — https://github.com/fastify/safe-regex2
|
|
|
80
80
|
safe-stable-stringify@2.5.0 — MIT — https://github.com/BridgeAR/safe-stable-stringify#readme
|
|
81
81
|
scheduler@0.27.0 — MIT — https://react.dev/
|
|
82
82
|
secure-json-parse@4.1.0 — BSD-3-Clause — https://github.com/fastify/secure-json-parse#readme
|
|
83
|
-
semver@7.
|
|
83
|
+
semver@7.8.5 — ISC — git+https://github.com/npm/node-semver.git
|
|
84
84
|
set-cookie-parser@2.7.2 — MIT — https://github.com/nfriedly/set-cookie-parser
|
|
85
85
|
signal-exit@3.0.7 — ISC — https://github.com/tapjs/signal-exit
|
|
86
86
|
slice-ansi@8.0.0 — MIT — chalk/slice-ansi
|
|
@@ -1360,7 +1360,7 @@ Redistribution and use in source and binary forms, with or without modification,
|
|
|
1360
1360
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
1361
1361
|
|
|
1362
1362
|
------------------------------------------------------------------------------
|
|
1363
|
-
semver@7.
|
|
1363
|
+
semver@7.8.5 (ISC)
|
|
1364
1364
|
------------------------------------------------------------------------------
|
|
1365
1365
|
|
|
1366
1366
|
The ISC License
|
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ Observed one-maintainer dogfooding throughput. The [methodology and evidence](do
|
|
|
47
47
|
- **Resume a long mission deterministically**. The execution agent records completed checkpoints with evidence and a concrete next action, and commits them locally, so a later session or a different agent can resume from the recorded progress.
|
|
48
48
|
- **Force a second, preferentially-different coding agent review before merge**. Review is a separate step whose reviewer selection excludes the implementer to prefer a different agent family, and a self-approval is code-blocked at the provider. It falls back to the same family when no other agent is runnable, so this forces a second review *attempt* — it only guarantees a different reviewer when one is available.
|
|
49
49
|
- **Publish work to a Forgejo reviewer surface without making Forgejo your branch authority**. When the review provider is enabled, Parallix syncs the local baseline to a dedicated `review` remote running locally and opens or updates the PR there; if Forgejo is disabled, the branch/worktree flow still runs without it.
|
|
50
|
-
- **Use a repo-local Graphify knowledge graph for smaller codebase context pulls**. In repositories where the operator has already installed the Graphify skill, the workflow keeps `graphify-out/` isolated per worktree and
|
|
50
|
+
- **Use a repo-local Graphify knowledge graph for smaller codebase context pulls**. In repositories where the operator has already installed the Graphify skill, the workflow keeps `graphify-out/` isolated per worktree and updates an existing graph after squash integration on the receiving base worktree, while the installed agent guidance steers codebase questions toward `graphify query` / `path` / `explain` before full reports or raw grep. That reduces token-usage.
|
|
51
51
|
- **Keep your existing verification gate instead of agent self-reporting**. The gate is a configured shell command with a no-op default: declare your existing `make` / `npm` / script command in `workflow.config.json` and it runs verbatim; declare nothing and verification is a documented no-op pass, not an invented gate.
|
|
52
52
|
- **Confine supported agent processes with Bubblewrap on Linux**. When Bubblewrap is available, Parallix mounts the host filesystem read-only and selectively grants write access required by the current mission. Implementation gets its mission worktree and required Git state writable; review keeps the worktree read-only. If Bubblewrap is unavailable, Parallix falls back to the agent's own native sandbox where the family exposes one (e.g. Codex `--sandbox`, Qwen `-s`), otherwise it blocks the mutating launch until the operator explicitly consents to run unsandboxed — no silent fallback.
|
|
53
53
|
- **Evaluate which agent family actually pays off across every repo one runtime drives**. A single operator-owned measurement database (`<PARALLIX_HOME>/parallix.db`) accumulates per-agent usage telemetry across repositories.
|
|
@@ -73,7 +73,7 @@ backlog → draft → active → review → approved → done
|
|
|
73
73
|
|
|
74
74
|
In practice: a human drafts a mission, Parallix creates the branch and worktree, an agent runs and writes checkpoints, a configured verification gate runs, a second agent reviews the diff, and only then is the work integrated back to your primary branch by squash-merge. Each mission lands as one squash commit whose subject is the recorded mission title and whose body records the mission's task reference, so the primary branch history names what was delivered at a glance. Review uses a different agent family when one is available; when none is runnable, it falls back to the same family as a second review attempt. An operator can opt into a no-output deadline for silent reviewers with `WORKFLOW_REVIEW_AGENT_NO_OUTPUT_MAX_MS`, after which the next eligible reviewer is tried. Blocking review findings loop back to `active` on the same branch and PR.
|
|
75
75
|
|
|
76
|
-
The mission enters `review` before each review round and `integration` when approval succeeds. Review gate repairs return it to `active` before repair work and back to `review` after verification. Commit and rebase repairs needed to finish integration stay in `integration`. Integration gate failures return the mission to `active
|
|
76
|
+
The mission enters `review` before each review round and `integration` when approval succeeds. Review gate repairs return it to `active` before repair work and back to `review` after verification. Commit and rebase repairs needed to finish integration stay in `integration`. Integration gate failures return the mission to `active`. A fresh round either reviews the repair or mechanically restores prior approval when the mission patch is unchanged and the failed gate has recorded green validation. Both paths stop for human integration. The mission reaches `done` only after integration and cleanup succeed. A failed lifecycle write stops dependent work and is reported as a failure. Once activation commits, a failed agent run leaves the mission and its Backlog mirror active for retry. Agents use the launching CLI for their workflow commands so an older global installation cannot bypass these boundaries.
|
|
77
77
|
|
|
78
78
|
## Defence in depth
|
|
79
79
|
|
|
@@ -84,7 +84,7 @@ Running several agents in parallel is only worth doing if you can trust what com
|
|
|
84
84
|
3. **Your existing checks at lifecycle transitions.** Connect your test pyramid by assigning existing test commands to the stages where you want them to run. For example, run fast unit tests and static analysis before a mission moves from `active` to `review`, and reserve expensive integration and end-to-end suites for the final merge. Parallix runs the selected commands and blocks progress when they fail. The [lifecycle check configuration](docs/config.md#lifecycle-gates) shows how to connect those commands to each stage.
|
|
85
85
|
4. **Defences tailored to the mission.** Parallix instructs the drafting agent to investigate the codebase and mission, define concrete success criteria, and select suitable verification commands. For bug fixes, it calls for a failing reproduction test before implementation. The mission's declared checks run before it moves from `active` to `review`, turning the plan into checks on the delivery.
|
|
86
86
|
5. **Evidence for review.** Before a mission moves from `active` to `review`, Parallix checks that the final checkpoint connects success criteria to concrete references, such as tests or runnable repository commands. Missing mission or checkpoint documents block that transition. Reviewers get a stated goal and supporting evidence to examine; generic claims such as “verified” are insufficient.
|
|
87
|
-
6. **Separate review.** A second agent reviews the delivery, using a different agent family when one is available. The pull request author cannot formally approve their own work. On any review round, Jev can judge the prior findings,
|
|
87
|
+
6. **Separate review.** A second agent reviews the delivery, using a different agent family when one is available. The pull request author cannot formally approve their own work. On any review round, Jev can judge the prior findings, whether an integration repair weakened the check its recorded green gate re-ran or, on a first review, the mission success criteria from revision-pinned evidence, then clear them or return them to the implementer. This runs by default when Jev and its review identity are available; uncertain evidence and broader changes go to the general reviewer. Operators can [opt out](docs/config.md#review-classification).
|
|
88
88
|
7. **Automatic, focused repair.** When checks detect a repairable delivery failure, Parallix sends the agent back with a tight prompt containing the specific failure, captured output, and the repair required. It reruns the failing check to confirm the fix. Retries are bounded, and unresolved failures are surfaced to the operator.
|
|
89
89
|
8. **Validate the final tree before merge.** When you choose to integrate an approved mission, Parallix runs the checks you assigned to integration against the exact tree about to land. This is where the broader tests from your pyramid check that the change works with the rest of the system. A failing check stops the merge.
|
|
90
90
|
9. **Operator decision.** Nothing merges itself. A human reads the diff and decides whether to integrate at all.
|
|
@@ -168,8 +168,8 @@ Both are optional integrations, and each one is wired independently of the other
|
|
|
168
168
|
## Use cases
|
|
169
169
|
|
|
170
170
|
The durable capability guide and confidence boundaries are in [`docs/use-cases.md`](docs/use-cases.md).
|
|
171
|
-
For automatic interactive mission terminals and bounded retained
|
|
172
|
-
see [agent-run history](docs/agent-run-history.md).
|
|
171
|
+
For automatic interactive mission terminals and bounded retained mission history
|
|
172
|
+
(also shown on the `px web` board), see [agent-run history](docs/agent-run-history.md).
|
|
173
173
|
|
|
174
174
|
## What Parallix is not
|
|
175
175
|
|
|
@@ -220,7 +220,10 @@ The test suite is the verification gate this repo declares in `workflow.config.j
|
|
|
220
220
|
|
|
221
221
|
Four Node floors are distinct here: the shipped runtime floor is `>=22.23.1` (`package.json` `engines.node`, also the bundle target); the ordinary development and unit-test floor is Node `24.15.0` or newer, which the unit-test module mock helper needs; the coverage-tooling floor is Node `26.7` or newer for `--test-coverage-include-all`; and GitHub CI selects Node `26` for the coverage run and Node `24` for the release path. The local verifier accepts any Node `20` or newer so `node --test` runs, but coverage still needs the `26.7` floor. Contributions follow the same mission lifecycle the tool itself runs: branch, worktree, checkpoints, a second review, and a passing gate before integration. To exercise the packaged artifact the way a user receives it: `npm pack && npm install -g ./magnusekdahl-parallix-*.tgz`.
|
|
222
222
|
|
|
223
|
-
If you are developing Parallix itself from a checkout,
|
|
223
|
+
If you are developing Parallix itself from a checkout, install dependencies with
|
|
224
|
+
the pinned pnpm (`pnpm install --frozen-lockfile`; `package.json` `packageManager`
|
|
225
|
+
names the version, and `pnpm-lock.yaml` is the only lockfile). Packaging and
|
|
226
|
+
publication still use npm. Then use the built runtime
|
|
224
227
|
after `npm run build`, or run the TypeScript entry directly with the development
|
|
225
228
|
script:
|
|
226
229
|
|
|
@@ -11,15 +11,15 @@
|
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
"key": "prompts/act-on-review-core.md",
|
|
14
|
-
"sha256": "
|
|
14
|
+
"sha256": "e0f14f5d559391eccebd1a85da0c709c90ff74f04a5cb8809303f0d372a3bc86"
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
"key": "prompts/act-on-review.md",
|
|
18
|
-
"sha256": "
|
|
18
|
+
"sha256": "c3e7caaaaa110fd7da1b055a593d8f56a66cb8bb7bb70ccdb3f43250fba7e9d2"
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"key": "prompts/draft-core.md",
|
|
22
|
-
"sha256": "
|
|
22
|
+
"sha256": "352006d7edd95c47dd405d98b7ec1103b1705e9232e153e89637ddb4bf389655"
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"key": "prompts/draft.md",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"key": "prompts/execute-core.md",
|
|
30
|
-
"sha256": "
|
|
30
|
+
"sha256": "de5ad6f1eef4b856e912865667cb738fc0716b707dd62068ef176f89f0bf3032"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"key": "prompts/execute.md",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"key": "prompts/review-core.md",
|
|
38
|
-
"sha256": "
|
|
38
|
+
"sha256": "f0c58cd3d9853de4e2715f85d6e43a99c2820e84b86bc0f8f1c54d82618c457b"
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"key": "prompts/review.md",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
121
|
"key": "migrations/0018-adhoc-mission-counter.sql",
|
|
122
|
-
"sha256": "
|
|
122
|
+
"sha256": "f73067a9a12a99ea5193b9d477eb23f069c2fb88c7227f4c5b88d84498f651a0"
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
"key": "migrations/0019-custom-agent-leases.sql",
|
|
@@ -180,6 +180,50 @@
|
|
|
180
180
|
{
|
|
181
181
|
"key": "migrations/0033-goal-check-repaired-gates.sql",
|
|
182
182
|
"sha256": "e6303934e715b0bf7ac1078abb7f2bd6e488a4b1e299d69c7612cc4ba2d1a578"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"key": "migrations/0034-checkpoint-repair.sql",
|
|
186
|
+
"sha256": "c899f9b25fe86e454b99d9db28feb89573fc7d0b40b0b50328a619a92d90e556"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"key": "migrations/0034-mission-description.sql",
|
|
190
|
+
"sha256": "16ccaf2fe41cd1e578bfbedd0675c854d3ce9daa3ac51f205d6766250775cf13"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"key": "migrations/0035-review-round-baseline.sql",
|
|
194
|
+
"sha256": "7a8f2aacf87ff92fc9c3270ed719a433fcd6dff2496347f66d5180fadf6e7d28"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"key": "migrations/0036-integration-repair-assessment.sql",
|
|
198
|
+
"sha256": "f723967c48b0c9be7a018730167467901a9de22516bad7ac13679254003d19d8"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"key": "migrations/0037-checkpoint-evidence-history.sql",
|
|
202
|
+
"sha256": "7b0bf1d87073edea601e68dd14d4e323f3fc3be740adadb7a8b7bbae55947e4c"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"key": "migrations/0038-success-criterion-identity.sql",
|
|
206
|
+
"sha256": "d59c6e91e82e9cdd93fb2735209a396cfd9d68c73dbee18b55b4db68b00d44f1"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"key": "migrations/0039-review-decided-revision.sql",
|
|
210
|
+
"sha256": "5cb00acc4e4924adcc082d750871db65d2e4f2075e8e81b61fe9663ff3786b12"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"key": "migrations/0039-workflow-operations.sql",
|
|
214
|
+
"sha256": "899d9d535e079ef2bd04cc1a52b24ab8fdb82195f1d6257218f0dc4827c20562"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"key": "migrations/0040-goal-check-carried-from.sql",
|
|
218
|
+
"sha256": "f600df1684fe3a7e8423090759a6578378e44a306a6498457e69eb72c858d902"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"key": "migrations/0041-admission-resources.sql",
|
|
222
|
+
"sha256": "eb04fe7a9e4c295f3b751c65b915580e897d22d4f771dd75e531295c92973ed0"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"key": "decision/tokenizer-data.gz",
|
|
226
|
+
"sha256": "c83abf9a2ab7966fbeec566cacb00c1aa48f6ac0ca66054fa7999d000c020012"
|
|
183
227
|
}
|
|
184
228
|
]
|
|
185
229
|
}
|
|
Binary file
|
package/build/manifest.sha256
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
1ecb336caae5bbb1a2ad1a61b467ea1ca058d1b7ad2f5b200aa8d00d76dae1c0 asset-manifest.json
|
|
2
2
|
ec3ec505e42adc8cddc17651d7a1a85b6359a433e1e62f3c6c22a4896150187f config/agents.json
|
|
3
3
|
6a4ec47387d1240e32967dc8e4ce54a15d69df2676b7a96ff72baafe996fef7d config/state-map.json
|
|
4
|
+
c83abf9a2ab7966fbeec566cacb00c1aa48f6ac0ca66054fa7999d000c020012 decision/tokenizer-data.gz
|
|
4
5
|
30a76fa3839753ddbfe312428dd1b7285ac1b8d0bd678fc79c79018ec6154f69 migrations/0001-initial-schema.sql
|
|
5
6
|
a8a0febfb4e448a11a5a16b2227d5cc1959bf4594aadd6fd65ea764283020edd migrations/0002-import-history.sql
|
|
6
7
|
d4080e33cb1a77e504188dbdafa0765ddf3391d99e1d81a76ab3a5ce3b9b40f2 migrations/0003-board-lane-events.sql
|
|
@@ -19,7 +20,7 @@ b3b9c80e6372eeb3b2bf3b12813dc6fbc4c5d20f601a5abbb6ac0a7605467eb7 migrations/001
|
|
|
19
20
|
a08063b188a91e901d462f73f4f154c98d85068324cef45eb144250e5000051a migrations/0015-current-work-latest-per-mission.sql
|
|
20
21
|
0acd31e661e720b563b92b3f75f99218dd99011b787ee8aad76b9a3bc1e363c4 migrations/0016-review-drop-retry-counters.sql
|
|
21
22
|
f46823014782c22a9e40b486958770d2b5f7e7180fc9fe6be961a791cca97b50 migrations/0017-retire-mission-import-provenance.sql
|
|
22
|
-
|
|
23
|
+
f73067a9a12a99ea5193b9d477eb23f069c2fb88c7227f4c5b88d84498f651a0 migrations/0018-adhoc-mission-counter.sql
|
|
23
24
|
07559cd5363f01a309d028673e6dcb9e222a848fae79c57d2fee9001589da19d migrations/0019-custom-agent-leases.sql
|
|
24
25
|
39f48ffde5a766f82b4c59725a6bf49750496e6f2efa92b983b2c4756a3cf314 migrations/0020-mission-execution-context.sql
|
|
25
26
|
6e8112f6674086f47403172e3a5f3506d1e1ed6defb0e05b2bd00dea66f84858 migrations/0021-mission-brief-and-declared-gates.sql
|
|
@@ -35,20 +36,38 @@ b4091b8c3d770f8ac5072745a234de10d6e02cc3c4f0e6497888629041b54e7e migrations/002
|
|
|
35
36
|
d0ab23bc2a56e89e4521bf70fc907d6f2bacae3aa21e055ebe8481e79ac5e637 migrations/0031-goal-check-recorded-round.sql
|
|
36
37
|
ce4a14e002907e5f4d20cf902140dd220b18dcf5128960d771491aabcb26f85f migrations/0032-goal-check-repaired-gate.sql
|
|
37
38
|
e6303934e715b0bf7ac1078abb7f2bd6e488a4b1e299d69c7612cc4ba2d1a578 migrations/0033-goal-check-repaired-gates.sql
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
c899f9b25fe86e454b99d9db28feb89573fc7d0b40b0b50328a619a92d90e556 migrations/0034-checkpoint-repair.sql
|
|
40
|
+
16ccaf2fe41cd1e578bfbedd0675c854d3ce9daa3ac51f205d6766250775cf13 migrations/0034-mission-description.sql
|
|
41
|
+
7a8f2aacf87ff92fc9c3270ed719a433fcd6dff2496347f66d5180fadf6e7d28 migrations/0035-review-round-baseline.sql
|
|
42
|
+
f723967c48b0c9be7a018730167467901a9de22516bad7ac13679254003d19d8 migrations/0036-integration-repair-assessment.sql
|
|
43
|
+
7b0bf1d87073edea601e68dd14d4e323f3fc3be740adadb7a8b7bbae55947e4c migrations/0037-checkpoint-evidence-history.sql
|
|
44
|
+
d59c6e91e82e9cdd93fb2735209a396cfd9d68c73dbee18b55b4db68b00d44f1 migrations/0038-success-criterion-identity.sql
|
|
45
|
+
5cb00acc4e4924adcc082d750871db65d2e4f2075e8e81b61fe9663ff3786b12 migrations/0039-review-decided-revision.sql
|
|
46
|
+
899d9d535e079ef2bd04cc1a52b24ab8fdb82195f1d6257218f0dc4827c20562 migrations/0039-workflow-operations.sql
|
|
47
|
+
f600df1684fe3a7e8423090759a6578378e44a306a6498457e69eb72c858d902 migrations/0040-goal-check-carried-from.sql
|
|
48
|
+
eb04fe7a9e4c295f3b751c65b915580e897d22d4f771dd75e531295c92973ed0 migrations/0041-admission-resources.sql
|
|
49
|
+
bd32d667fba73d794e00286be74b5eecfbb77344c063315a6616b7bbec34e1d9 package.json
|
|
50
|
+
e0f14f5d559391eccebd1a85da0c709c90ff74f04a5cb8809303f0d372a3bc86 prompts/act-on-review-core.md
|
|
51
|
+
c3e7caaaaa110fd7da1b055a593d8f56a66cb8bb7bb70ccdb3f43250fba7e9d2 prompts/act-on-review.md
|
|
52
|
+
352006d7edd95c47dd405d98b7ec1103b1705e9232e153e89637ddb4bf389655 prompts/draft-core.md
|
|
42
53
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 prompts/draft.md
|
|
43
|
-
|
|
54
|
+
de5ad6f1eef4b856e912865667cb738fc0716b707dd62068ef176f89f0bf3032 prompts/execute-core.md
|
|
44
55
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 prompts/execute.md
|
|
45
|
-
|
|
56
|
+
f0c58cd3d9853de4e2715f85d6e43a99c2820e84b86bc0f8f1c54d82618c457b prompts/review-core.md
|
|
46
57
|
06431c3f965935db27b254164d3bfa66aa7cc2a5602031f181dcc5e32f3e5739 prompts/review.md
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
58
|
+
c7d68565de8344420db3d9de00fb8ad60b8d2eef7c106bf97fb53331b9e116a9 px.mjs
|
|
59
|
+
3482eb0f8970bcf7d2fc8ce25c339a0d445c6bfc20ff1c7911ba536da154b31b px.mjs.map
|
|
60
|
+
4623dc4e25709cd345e2706c28aa1d0037e977e85bd798b8537fcfcaed82edfc sbom.json
|
|
50
61
|
64ceff9f8a45d1769c8e70b0545a554065ffd285aa33b862447cb2ac70d28093 templates/mission-scaffold.md
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
62
|
+
35a828a2a248c396af77c4b3090d2cb1ec37858128a591df62398457f909618d web/assets/index-BLNC0e_y.css
|
|
63
|
+
c3e2a89f1cc14245e7882ccc7542355aea5f5e13f95880a9106883ffd776a1f4 web/assets/index-CAQBs60C.js
|
|
64
|
+
844d5ef0608e16d8234ded7a0dd60eedeb2fe404ed62932df8ff26f03bbf6279 web/fonts/FONTS.txt
|
|
65
|
+
ad3a6fb70cbc6264692395e7ed71de8bc8919f63e7fd194c6a5eb047d0f248ea web/fonts/OFL-Barlow-Condensed.txt
|
|
66
|
+
a76abf002c49097d146e86740a3105a5d00450b1592e820a1109a8c5680cd697 web/fonts/OFL-JetBrains-Mono.txt
|
|
67
|
+
7fff1bb22e5773f0d1a55d3093068b6dac4539e8bb3ac23fb9f0a729df2c7bb4 web/fonts/barlow-condensed-latin-400.woff2
|
|
68
|
+
3787a5a419171630e6890cfa47c4da067474d005cd0ff8dc11ec090fdc3ee2b8 web/fonts/barlow-condensed-latin-700.woff2
|
|
69
|
+
14425ba9c695763c1547f48a206b7aa60350a33ae23de09f0407877f3fcd89eb web/fonts/jetbrains-mono-latin-400.woff2
|
|
70
|
+
cb182feeed4d798ff6961d3c79f7026279448fca0676438aaecb21f3fc39553a web/fonts/jetbrains-mono-latin-500.woff2
|
|
71
|
+
d0d4e818808f2a0ba39b2b09d1989366f63494e295f003c7ef436697378507e8 web/fonts/jetbrains-mono-latin-700.woff2
|
|
72
|
+
477dd8d0d23781c6d9ec57fd8c39750e854e15e91af0bcab145edd34d0e3e6eb web/index.html
|
|
73
|
+
3d9ecd6169e35f7545953dfe22bb587fc93997ebffe694033ecc024d6a1ab8c8 web/manifest.json
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
-- Backlog-backed missions keep their identity in a Backlog task file. Adhoc
|
|
5
5
|
-- missions have no such file in an adhoc-only repository, so their identity is
|
|
6
6
|
-- minted here instead: a monotonic counter owned per repository, allocated
|
|
7
|
-
-- atomically, so `
|
|
7
|
+
-- atomically, so `px-<NNNN>` can never collide with, or be confused
|
|
8
8
|
-- for, Backlog.md task numbering. No content hash in the identity: slug,
|
|
9
9
|
-- mission id, branch, and worktree suffix all derive from this counter.
|
|
10
10
|
--
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
-- TASK-2693: a mission captured on the board may carry a description with no
|
|
2
|
+
-- reason attached. A brief needs both goal and why, so the description lives on
|
|
3
|
+
-- the mission until a refining agent records the brief with `px goal set`.
|
|
4
|
+
ALTER TABLE missions ADD COLUMN description TEXT;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
-- Preserve existing evidence verbatim. Recording metadata was never stored;
|
|
2
|
+
-- row-level recorded_round is known, but no checkpoint-level round is inferred.
|
|
3
|
+
ALTER TABLE mission_checkpoints ADD COLUMN recording_json TEXT;
|
|
4
|
+
CREATE TABLE mission_checkpoint_versions (
|
|
5
|
+
mission_id TEXT NOT NULL REFERENCES missions(id) ON DELETE CASCADE,
|
|
6
|
+
version INTEGER NOT NULL CHECK (version >= 1),
|
|
7
|
+
name TEXT NOT NULL,
|
|
8
|
+
checkpoint_json TEXT NOT NULL,
|
|
9
|
+
recorded_at TEXT,
|
|
10
|
+
recorded_round INTEGER,
|
|
11
|
+
mission_revision INTEGER,
|
|
12
|
+
PRIMARY KEY (mission_id, version)
|
|
13
|
+
);
|
|
14
|
+
INSERT INTO mission_checkpoint_versions
|
|
15
|
+
SELECT c.mission_id, ROW_NUMBER() OVER (PARTITION BY c.mission_id ORDER BY c.position), c.name,
|
|
16
|
+
json_patch(json_object('missionId', c.checkpoint_mission_id, 'name', c.name,
|
|
17
|
+
'rawFilename', c.raw_filename, 'firstLine', c.first_line,
|
|
18
|
+
'nextActionText', c.next_action_text, 'repair', json(c.repair_json)),
|
|
19
|
+
json_object('goalCheck', json(COALESCE((
|
|
20
|
+
SELECT json_group_array(json(row_json)) FROM (
|
|
21
|
+
SELECT json_patch(json_object('criterion', g.criterion, 'evidence', g.evidence,
|
|
22
|
+
'recordedRound', g.recorded_round, 'repairedGate', g.repaired_gate,
|
|
23
|
+
'repairedGates', json(g.repaired_gates)), '{}') AS row_json
|
|
24
|
+
FROM mission_checkpoint_goal_checks g
|
|
25
|
+
WHERE g.mission_id = c.mission_id AND g.checkpoint_position = c.position
|
|
26
|
+
ORDER BY g.position
|
|
27
|
+
)
|
|
28
|
+
), '[]')))), NULL, NULL, NULL
|
|
29
|
+
FROM mission_checkpoints c;
|
|
30
|
+
|
|
31
|
+
-- Null means the boundary predates capture; never reconstruct it from today's evidence.
|
|
32
|
+
CREATE TABLE mission_review_checkpoint_states (
|
|
33
|
+
mission_id TEXT NOT NULL REFERENCES missions(id) ON DELETE CASCADE,
|
|
34
|
+
round_number INTEGER NOT NULL CHECK (round_number >= 1),
|
|
35
|
+
state_json TEXT,
|
|
36
|
+
PRIMARY KEY (mission_id, round_number)
|
|
37
|
+
);
|
|
38
|
+
INSERT INTO mission_review_checkpoint_states (mission_id, round_number, state_json)
|
|
39
|
+
SELECT mission_id, round_number, NULL FROM mission_review_rounds;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
-- Existing criteria acquire mission-scoped IDs. Only exact current text matches
|
|
2
|
+
-- can identify legacy evidence; never infer an identity from position or wording.
|
|
3
|
+
ALTER TABLE missions ADD COLUMN next_success_criterion_id INTEGER NOT NULL DEFAULT 1;
|
|
4
|
+
ALTER TABLE mission_success_criteria ADD COLUMN criterion_id TEXT;
|
|
5
|
+
UPDATE mission_success_criteria SET criterion_id = 'sc-' || (position + 1)
|
|
6
|
+
WHERE criterion_id IS NULL;
|
|
7
|
+
UPDATE missions SET next_success_criterion_id = COALESCE((
|
|
8
|
+
SELECT MAX(position) + 2 FROM mission_success_criteria WHERE mission_id = missions.id
|
|
9
|
+
), 1)
|
|
10
|
+
WHERE EXISTS (SELECT 1 FROM mission_success_criteria WHERE mission_id = missions.id);
|
|
11
|
+
ALTER TABLE mission_checkpoint_goal_checks ADD COLUMN criterion_id TEXT;
|
|
12
|
+
UPDATE mission_checkpoint_goal_checks AS g SET criterion_id = (
|
|
13
|
+
SELECT c.criterion_id FROM mission_success_criteria c
|
|
14
|
+
WHERE c.mission_id = g.mission_id AND c.criterion = g.criterion
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
-- Retained versions may predate this forward migration. Preserve all evidence
|
|
18
|
+
-- and metadata while annotating only exact matches, including explicit nulls.
|
|
19
|
+
UPDATE mission_checkpoint_versions AS v SET checkpoint_json = json_set(checkpoint_json, '$.goalCheck', json(COALESCE((
|
|
20
|
+
SELECT json_group_array(json(identified)) FROM (
|
|
21
|
+
SELECT json_set(g.value, '$.criterionId', (
|
|
22
|
+
SELECT c.criterion_id FROM mission_success_criteria c
|
|
23
|
+
WHERE c.mission_id = v.mission_id AND c.criterion = json_extract(g.value, '$.criterion')
|
|
24
|
+
)) AS identified FROM json_each(v.checkpoint_json, '$.goalCheck') g ORDER BY CAST(g.key AS INTEGER)
|
|
25
|
+
)
|
|
26
|
+
), '[]')));
|
|
27
|
+
-- Earlier boundaries have no reliable round-time criteria contract. Do not
|
|
28
|
+
-- substitute today's criteria into a historical snapshot.
|
|
29
|
+
UPDATE mission_review_checkpoint_states SET state_json = json_set(state_json, '$.successCriteria', NULL, '$.uncoveredCriterionIds', NULL)
|
|
30
|
+
WHERE state_json IS NOT NULL;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
CREATE TABLE workflow_operations (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
repository_id TEXT NOT NULL,
|
|
4
|
+
mission_id TEXT NOT NULL,
|
|
5
|
+
request_key TEXT NOT NULL,
|
|
6
|
+
generation INTEGER NOT NULL,
|
|
7
|
+
phase TEXT NOT NULL,
|
|
8
|
+
record_json TEXT NOT NULL,
|
|
9
|
+
UNIQUE(repository_id, mission_id, request_key)
|
|
10
|
+
);
|
|
11
|
+
CREATE UNIQUE INDEX workflow_exclusive_mission ON workflow_operations(repository_id, mission_id)
|
|
12
|
+
WHERE phase IN ('accepted', 'preparing', 'waiting', 'running', 'checking', 'stopping');
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
-- Separate verification exclusion from agent admission capacity.
|
|
2
|
+
ALTER TABLE custom_agent_leases ADD COLUMN resource TEXT NOT NULL DEFAULT 'agents';
|
|
3
|
+
CREATE TABLE IF NOT EXISTS admission_process_groups (
|
|
4
|
+
lease_id TEXT NOT NULL REFERENCES custom_agent_leases(lease_id) ON DELETE CASCADE,
|
|
5
|
+
pid INTEGER NOT NULL,
|
|
6
|
+
start_id TEXT NOT NULL,
|
|
7
|
+
PRIMARY KEY (lease_id, pid)
|
|
8
|
+
);
|
package/build/package.json
CHANGED
|
@@ -9,15 +9,15 @@ Latest reviewer outcome was: {{review_outcome}}
|
|
|
9
9
|
Entrypoint: {{act_on_review_entrypoint}}
|
|
10
10
|
|
|
11
11
|
Minimum loop contract:
|
|
12
|
-
- Before acting on findings,
|
|
12
|
+
- Before acting on findings, {{actOnReviewContextAction}} the locked mission goal and scope; committed checkpoint or gate evidence when present; current review round and disposition; unresolved findings and implementer resolutions; and the exact revision under review. This applies even when the mission declares no gates.
|
|
13
13
|
- Load the Mission context with `px status {{slug}}` and read `AGENTS.md` before acting. That command reports the recorded brief, declared gates, the latest recorded checkpoint evidence, the reviewed revision, the outstanding findings, and your prior resolutions.
|
|
14
14
|
- Get the current round, phase, and disposition from `px status {{slug}}`, which reports them on its `Review:` line. `px status` is the authority for review-loop state; take it from there and nowhere else.
|
|
15
15
|
- Read the review outcome and findings from `px status {{slug}}`; its review history is projected from the operator database.
|
|
16
16
|
- For each finding: fix it, or push back with a clear reason why it does not hold. There is no third option. "Tracked as a follow-up" is not a resolution — if the finding is right, deliver it.
|
|
17
17
|
- If a finding is a rebasing artifact caused by branch stale-ness rather than this mission's diff, push back with the rationale: `Not a mission change - will be resolved by parallix rebase.`
|
|
18
18
|
- Record corrected checkpoint evidence with `px checkpoint record` if needed, run the relevant gate, and commit before handoff. A repair records only the bounced checkpoint's affected criteria: prior checkpoints' valid rows are retained, and handoff measures coverage across every recorded checkpoint by criterion identity, so a repair row for one criterion never counts as evidence for another. Rows are stamped with the review round they were recorded in, and a repair must record at least one fresh row in the current round (each criterion a finding names needs its own), because rows kept from earlier rounds are stale as fix evidence.
|
|
19
|
-
- After committing fixes, submit every finding with `px resolve --slug {{slug}} --actor {{implementer}} --
|
|
19
|
+
- After committing fixes, submit every finding with `px resolve --slug {{slug}} --actor {{implementer}} --finding <finding-id> --fixed "<evidence>" [--finding <finding-id> --disputed "<rationale>"] ...`. This persists the resolution and publishes through the established workflow; do not post to Forgejo directly.
|
|
20
20
|
- `--disputed` records a pushback. Resolve every outstanding finding; the command rejects partial resolutions rather than inventing answers. Review feedback, missing context, and conflicting stale records are repair work, not a block: re-query `px status {{slug}}` and the current PR decisions, then act on the latest decision.
|
|
21
|
-
- Use `px resolve --slug {{slug}} --actor {{implementer}} --
|
|
21
|
+
- Use `px resolve --slug {{slug}} --actor {{implementer}} --blocked "<reason>"` only for a genuine external dependency that prevents any resolution and names the required human action. Never use it to avoid investigating or delivering requested changes.
|
|
22
22
|
|
|
23
|
-
Safety: if the review outcome is not approved and you cannot read it, do not guess and do not push back on findings you have not seen. Record `px resolve --slug {{slug}} --actor {{implementer}} --
|
|
23
|
+
Safety: if the review outcome is not approved and you cannot read it, do not guess and do not push back on findings you have not seen. Record `px resolve --slug {{slug}} --actor {{implementer}} --blocked "<reason>"` instead, naming what you could not read. Silence is not a resolution.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Graphify-first: before acting on findings, check if `graphify-out/graph.json` exists. If it does, use `graphify query` and `graphify path` to understand affected code areas before making changes.
|
|
1
|
+
Graphify-first: before acting on findings, check if `graphify-out/graph.json` exists. If it does, use `graphify query` and `graphify path` to understand affected code areas before making changes. Parallix updates existing Graphify graphs after successful squash integration on the receiving base worktree; review, edits and checkpoints do not trigger updates.
|
|
@@ -18,9 +18,19 @@ Forbidden actions:
|
|
|
18
18
|
|
|
19
19
|
Mission state authority: `px status {{slug}}` is the authority for recorded Mission facts.
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Prefer one foreground px mission author invocation to record the complete contract atomically, then read it back once with px status {{slug}}. Run px mission --help for the typed flags. The slug is inferred from this worktree. Each write resolves its own current version automatically; --expected-version is optional when you want to pin an earlier read. Validation or a version conflict rejects the whole batch without partial writes.
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
For example, a small greeting fix can use plain criterion text:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
px mission author --goal 'Fix the greeting' --why 'The greeting contains a typo' --scope 'Correct hello.sh greeting text' --out-of-scope 'Other behavior' --criterion 'hello.sh prints Hello, World! and exits successfully' --checkpoint CP-1 --checkpoint-text 'Correct the greeting and verify public execution' --gate './scripts/verify-local.sh all' --predicted Small --classification ai_sdlc
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Supply every required part: goal and why, scope, at least one success criterion, an ordered checkpoint plan, exact runnable verification gates, a predicted NEL bucket, and classification. Repeat list flags within the same invocation; the lists replace recorded lists. Out-of-scope entries are optional; record them whenever review should check a deliberate boundary. Checkpoint descriptions are at most 512 characters. Gates contain only runnable commands, without prose, comments or expected outcomes. Expected outcomes belong in criteria.
|
|
30
|
+
|
|
31
|
+
Use plain text in criteria and evidence values, without literal backticks or embedded double quotes. Quote shell arguments with single quotes as in the example. Execution can cite a repository-relative path such as hello.sh or test/unit/example.test.ts as its evidence reference; formatting characters are unnecessary.
|
|
32
|
+
|
|
33
|
+
The required parts and their existing single-concept commands are listed below. The batch above records the same parts together; reproduction and dependencies use their own commands.
|
|
24
34
|
|
|
25
35
|
| Part | Command | Required |
|
|
26
36
|
|---|---|---|
|
|
@@ -34,13 +44,13 @@ The contract, and what the harness requires before this draft can finish:
|
|
|
34
44
|
| Reproduction test | `px repro set --test <path>` | required for a `bug` mission only |
|
|
35
45
|
| Dependencies | `px depends add --on <slug>`, one call each | optional; nothing enforces it |
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
Existing single-concept commands remain available for focused edits. Record a reproduction test with px repro set --test <path> for a bug mission; add optional dependencies with px depends add --on <slug>. Neither changes lifecycle state. Run any command with --help for exact flags.
|
|
38
48
|
|
|
39
|
-
|
|
49
|
+
Wait for each foreground write to finish; never end your turn while a `px` command is still running: when your turn ends, anything still running is killed and was not recorded.
|
|
40
50
|
|
|
41
51
|
A write against a stale version is rejected with an explicit conflict and changes nothing; re-read the version with `px status {{slug}}` and retry.
|
|
42
52
|
|
|
43
|
-
Before you finish, read the contract back with `px status {{slug}}` and check every required part
|
|
53
|
+
Before you finish, read the contract back with `px status {{slug}}` and check every required part above. Anything it does not report was not recorded.
|
|
44
54
|
|
|
45
55
|
Plan the checkpoints; do not record their evidence. `px checkpoint record` is for execution: evidence is what the work produces, and there is nothing to cite yet.
|
|
46
56
|
|
|
@@ -48,18 +58,20 @@ Drafting requirements:
|
|
|
48
58
|
- every part you record is concrete and specific to this mission; no placeholders or "TBD"
|
|
49
59
|
- plan checkpoints as coherent, independently verifiable slices of the work; together they must cover every success criterion
|
|
50
60
|
- each success criterion must be specific and checkable: execution records one Goal Check row of evidence per criterion
|
|
61
|
+
- Before locking, check that all criteria and scope constraints can hold together. Challenge absolute guarantees with boundary cases; finite budgets must include all mandatory content, metadata and request overhead. Resolve contradictions during drafting.
|
|
51
62
|
- {{classificationInstructions}}
|
|
52
63
|
- preserve `{{taskPath}}`: update content as needed but do not delete, rename, or move the file
|
|
53
64
|
- do not edit the backlog `assignee` field; the workflow records ownership itself
|
|
54
65
|
- predict the size of the change as a net engineering lines (NEL) bucket — Small (0–80), Medium (81–235) or Large (235+)
|
|
66
|
+
- Plan a brief check where the implementer exercises the changed behavior through the running application’s public interface and records the observed result, using existing tools without adding E2E tests unless explicitly asked for in the intent.
|
|
55
67
|
|
|
56
68
|
Bug-labeled missions (regression-test-first / "lock the bug"):
|
|
57
69
|
- this section applies only when the backlog task at `{{taskPath}}` carries a `bug` label (in addition to its `ai_sdlc` or `user_value` classification). If there is no `bug` label, ignore this section entirely.
|
|
58
|
-
- make the **first planned checkpoint** (
|
|
70
|
+
- make the **first planned checkpoint** (--checkpoint CP-1 in the batch) the authoring of a failing reproduction test that locks the bug before any fix is written. Describe in that checkpoint: the test file location (under `test/`), the reproduction scenario, and the assertion that fails at the mission's parent commit (red) and will pass once the fix lands (green).
|
|
59
71
|
- record the reproduction test's path with `px repro set --test <path>` (for example, `px repro set --test test/task-1354-repro.test.ts`); the table above makes it required for a bug mission. `px status {{slug}}` reports it back for the reviewer to check against the diff.
|
|
60
72
|
- do not author the fix during draft — the reproduction test and its recorded path are the only bug-specific drafting outputs.
|
|
61
73
|
|
|
62
|
-
Graphify-first: before drafting, check if `graphify-out/graph.json` exists. If it does, run `graphify query "{{slug}} mission scope and dependencies"` to understand the codebase context before filling in the mission contract.
|
|
74
|
+
Graphify-first: before drafting, check if `graphify-out/graph.json` exists. If it does, run `graphify query "{{slug}} mission scope and dependencies"` to understand the codebase context before filling in the mission contract. Parallix updates existing Graphify graphs after successful squash integration on the receiving base worktree; review, edits and checkpoints do not trigger updates.
|
|
63
75
|
|
|
64
76
|
Finishing:
|
|
65
77
|
- verify the draft with `{{verifyCmd}}` before stopping
|
|
@@ -12,12 +12,12 @@ Mission context is application-owned. Load it with:
|
|
|
12
12
|
|
|
13
13
|
Execution supports evidence and completion writes:
|
|
14
14
|
|
|
15
|
-
- `px mission mark-complete --slug {{slug}} --criterion <index
|
|
15
|
+
- `px mission mark-complete --slug {{slug}} --criterion <index>` — mark a verified success criterion complete using its one-based index. The write resolves its own current version; the status Version is diagnostic.
|
|
16
16
|
- `px checkpoint record --name <CP-N> --criterion <text> --evidence <text> --next <text>` — `--criterion` and `--evidence` repeat and pair up in order.
|
|
17
17
|
|
|
18
18
|
You do not change the mission here. The goal, scope, out-of-scope, success criteria, checkpoint plan and gates were settled at draft and are what your work is judged against; if you believe one of them is wrong, say so in your response and stop rather than editing it to match what you built.
|
|
19
19
|
|
|
20
|
-
The slug is inferred from this worktree, so you do not pass it.
|
|
20
|
+
The slug is inferred from this worktree, so you do not pass it. Writes resolve their own current version, so you do not pass `--expected-version`; pass it only to pin a version. A competing write still fails with an explicit conflict and changes nothing. Run the command with `--help` for its exact flags.
|
|
21
21
|
|
|
22
22
|
Harness preflight already confirmed:
|
|
23
23
|
- branch/worktree shape
|
|
@@ -27,7 +27,7 @@ Execution requirements:
|
|
|
27
27
|
- execute checkpoint-by-checkpoint per the checkpoint plan reported by `px status {{slug}}`, starting with the first planned checkpoint that has no recorded evidence. That is also where you resume after a relaunch.
|
|
28
28
|
- after each completed checkpoint, record its evidence with `px checkpoint record --name <its planned CP-N>`, one `--criterion`/`--evidence` pair per Goal Check row, and a non-generic `--next`. Use the exact text of the success criterion a row evidences as its `--criterion` so a reviewer can map rows to criteria. Handoff checks every recorded checkpoint, not just the final one: every criterion must be marked complete, and the recorded checkpoints taken together must carry a row naming each completed criterion, each citing a verifiable reference; handoff matches each row to the success criterion its `criterion` text names and refuses when the recorded checkpoints leave any completed criterion without a matching row. A repair checkpoint that carries only its affected criteria is not a shortfall while earlier evidence covers the others. That is the durable write; read it back with `px status {{slug}}`. Do not write a checkpoint document.
|
|
29
29
|
- never create, edit, or commit files under the mission dir or anywhere under `missions/`: it is a retired legacy location, the tree must contain no files there, and handoff fails if it does. Measurements, timings, and populations belong inline in `px checkpoint record --evidence` text, citing runnable commands and test paths.
|
|
30
|
-
- Immediately after recording a checkpoint's evidence,
|
|
30
|
+
- Immediately after recording a checkpoint's evidence, {{checkpointContextAction}} only the mission goal, scope, success criteria and checkpoint plan with `px status {{slug}}`, then continue.
|
|
31
31
|
- Completing a checkpoint is **non-terminal**: after recording its evidence, immediately continue to the next planned checkpoint without recorded evidence. Do not send a final response or exit merely because one checkpoint is complete; break large checkpoints into safe slices and keep progressing.
|
|
32
32
|
- You may terminate this execution only when exactly one of these conditions applies: (a) every success criterion is marked complete, every planned checkpoint has recorded evidence, the final one covers every success criterion, and every mission-declared gate passes, (b) a mission stop rule applies, or (c) a genuine external dependency blocks progress. Checkpoint size, uncertainty, or needing further investigation are not terminal conditions.
|
|
33
33
|
- Keep Goal Check evidence durable: prefer stable file references and commands that can be rerun against the committed tree. Do not claim that `git diff HEAD` proves a committed change—its expected output is empty after committing. If historical diff evidence is needed, state the exact non-HEAD baseline or describe the observed change without implying that an empty post-commit diff will reproduce it.
|
|
@@ -37,15 +37,16 @@ Execution requirements:
|
|
|
37
37
|
2. an exact test name in quotes, as written in `test(...)` or `it(...)` in a `.test`, `.spec` or `.cases` module under `test/`
|
|
38
38
|
3. a backticked command: `npm`, `npx`, `node`, `git` or `px`, a `./` script that exists, or a shell reader such as `grep` or `cat` with an existing file argument
|
|
39
39
|
4. an ADR reference such as `ADR 0012` whose file exists in `docs/adr/`
|
|
40
|
-
Raw
|
|
40
|
+
Raw stat/ls output and prose claims are context only. Prefer a repository-relative path reference and plain evidence text with no literal backticks or embedded double quotes. Example: px checkpoint record --name CP-2 --criterion '<exact success criterion text>' --evidence 'test/unit/example.test.ts passes under npm test -- test/unit/example.test.ts' --next 'CP-3: update the operator guidance'
|
|
41
41
|
- run targeted checks needed to develop and validate the change; handoff owns the authoritative execution of mission-declared Gates, so do not rerun a complete declared gate solely as lifecycle ritual (run one when diagnosing a concrete issue)
|
|
42
|
-
- Immediately after **each successful mission-declared Gate**,
|
|
42
|
+
- Immediately after **each successful mission-declared Gate**, {{gateContextAction}} only the locked mission goal and scope plus committed checkpoint or successful-gate evidence that is present, re-reading them with `px status {{slug}}` rather than from repository files. Retain a failed gate's failure diagnostic while repairing it.
|
|
43
43
|
- preserve `{{taskPath}}`: update mission-relevant content as needed but do not delete, rename, or move the file
|
|
44
|
-
- do not change the Backlog task's status, assignee, labels, or lifecycle metadata, and do not run `px active`, `px review`, `px integrate`, `px assign` or `px unassign`; Parallix performs lifecycle transitions and review decisions itself. `px status {{slug}}` and `px history` are the supported reads in this phase, and `px checkpoint record` and `px mission mark-complete` are the supported writes.
|
|
44
|
+
- do not change the Backlog task's status, assignee, labels, or lifecycle metadata, and do not run `px active`, `px review`, `px integrate`, `px assign` or `px unassign`; Parallix performs lifecycle transitions and review decisions itself. `px status {{slug}}`, `px checkpoint check --json` and `px history` are the supported reads in this phase, and `px checkpoint record` and `px mission mark-complete` are the supported writes.
|
|
45
45
|
- earlier agent runs of this Mission (before a relaunch, a fallback family or a fresh context) are retained: `px history search <pattern>` and `px history show <ref>` return bounded slices with `run:` references and coverage notes. Cite those references instead of pasting transcripts into your context.
|
|
46
|
-
- After verifying a success criterion, record completion with `px mission mark-complete --slug {{slug}} --criterion <index
|
|
46
|
+
- After verifying a success criterion, record completion with `px mission mark-complete --slug {{slug}} --criterion <index>`, using its one-based index. The write resolves its own current version; the status Version is diagnostic. Reload status after each write. Use `--all` only when every criterion is verified. Recording checkpoint evidence does not mark criteria complete.
|
|
47
|
+
- Before declaring completion, run `px checkpoint check --slug {{slug}} --json`. Inspect `ready`, `version`, `findings`, `primaryStopReason` and `nextCommands`; a successful read is not evidence readiness. A recorded unresolved human-only contract blocker is the primary stop reason even when evidence is incomplete: stop for the operator, without fabricated evidence or repeated evidence-only repair. Do not use `record --force` or treat prose as resolution; only an explicit operator decision can clear the recorded blocker.
|
|
47
48
|
- do not hand off to review until every success criterion is marked complete, or with uncommitted implementation work, or before the final checkpoint's evidence is recorded
|
|
48
49
|
|
|
49
|
-
Graphify-first: before executing, check if `graphify-out/graph.json` exists. If it does, use `graphify query "<question>"` for codebase questions, `graphify path "<A>" "<B>"` for relationships, and `graphify explain "<concept>"` for focused concepts. Read `graphify-out/GRAPH_REPORT.md` only for broad architecture review.
|
|
50
|
+
Graphify-first: before executing, check if `graphify-out/graph.json` exists. If it does, use `graphify query "<question>"` for codebase questions, `graphify path "<A>" "<B>"` for relationships, and `graphify explain "<concept>"` for focused concepts. Read `graphify-out/GRAPH_REPORT.md` only for broad architecture review. Parallix updates existing Graphify graphs after successful squash integration on the receiving base worktree; review, edits and checkpoints do not trigger updates. If `graphify-out/wiki/index.md` exists, use it for broad navigation.
|
|
50
51
|
|
|
51
52
|
{{checkpoint_context}}
|
|
@@ -20,7 +20,7 @@ Review history is not optional context:
|
|
|
20
20
|
- Treat a `PUSHBACK_ALL` in the history as a response awaiting your decision, not as an approval and not as a fresh set of findings.
|
|
21
21
|
|
|
22
22
|
Minimum loop contract:
|
|
23
|
-
- When `{{attempt}}` is 2 or later, before beginning this review round
|
|
23
|
+
- When `{{attempt}}` is 2 or later, before beginning this review round {{reviewContextAction}} the locked mission goal and scope; committed checkpoint or gate evidence when present; current round and disposition; unresolved findings and implementer resolutions; and the exact post-rebase revision and review baseline shown by `git diff {{reviewBaseline}}..HEAD`. This compaction is independent of the mission's declared gates.
|
|
24
24
|
- Load the Mission context with `px status {{slug}}` and read `AGENTS.md` before reviewing.
|
|
25
25
|
- The block below reports which controls the workflow has already executed for this mission and which it has not, derived from machine records rather than from anyone's prose. Do not re-run a listed command whose recorded status is `passed`; cite the recorded result from this block instead. Re-running is permitted only when the block reports no recorded gate result, reports a `failed` status, reports a control as not yet run, or the command you need is not listed here.
|
|
26
26
|
{{completedControls}}
|
|
@@ -49,8 +49,8 @@ Check:
|
|
|
49
49
|
- maintainability issues that materially affect future work
|
|
50
50
|
|
|
51
51
|
- Decision submission is mandatory: your final chat response does **not** submit a review. Before stopping, run exactly one of:
|
|
52
|
-
- `px verdict approve --slug {{slug}} --actor {{reviewer}} --
|
|
53
|
-
- `px verdict request-changes --slug {{slug}} --actor {{reviewer}} --
|
|
52
|
+
- `px verdict approve --slug {{slug}} --actor {{reviewer}} --comment "<review summary>"`
|
|
53
|
+
- `px verdict request-changes --slug {{slug}} --actor {{reviewer}} --finding <finding-id> --summary "<issue>" [--location "<path>"] ... --comment "<review summary>"`
|
|
54
54
|
- Every request-change finding needs a distinct stable `F<number>` id and non-empty summary. `px verdict` persists the decision and publishes through the established workflow; do not post to Forgejo directly.
|
|
55
55
|
- When a finding concerns specific success criteria, name them in its summary as `Success criterion N` (or `criteria N, M`, 1-based as `px status` lists them). Checkpoint recording and handoff read these references to require fresh fix evidence for exactly those criteria in the repair round.
|
|
56
56
|
- Do not edit repo files; do not switch into implementer behavior.
|