@magnusekdahl/parallix 1.5.254 → 1.5.289
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 +15 -6
- package/build/asset-manifest.json +8 -4
- package/build/manifest.sha256 +14 -13
- package/build/migrations/0030-review-classification.sql +12 -0
- package/build/package.json +1 -1
- package/build/prompts/act-on-review.md +1 -1
- package/build/prompts/draft-core.md +1 -1
- package/build/prompts/execute-core.md +3 -2
- package/build/px.mjs +706 -651
- package/build/px.mjs.map +4 -4
- package/build/sbom.json +7 -7
- package/build/templates/mission-scaffold.md +1 -1
- package/build/web/assets/index-HfrsWWLp.css +1 -0
- package/build/web/assets/index-Q1kufqqY.js +9 -0
- package/build/web/index.html +2 -2
- package/build/web/manifest.json +9 -9
- package/package.json +33 -28
- package/build/web/assets/index-BmXLD5QW.js +0 -9
- package/build/web/assets/index-DYY4ROtr.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.289
|
|
2
2
|
|
|
3
3
|
@magnusekdahl/parallix itself is licensed under AGPL-3.0-or-later; see LICENSE.
|
|
4
4
|
|
|
@@ -69,7 +69,7 @@ pino-std-serializers@7.1.0 — MIT — https://github.com/pinojs/pino-std-serial
|
|
|
69
69
|
process-warning@4.0.1 — MIT — https://github.com/fastify/fastify-warning#readme
|
|
70
70
|
process-warning@5.1.0 — MIT — https://github.com/fastify/fastify-warning#readme
|
|
71
71
|
quick-format-unescaped@4.0.4 — MIT — https://github.com/davidmarkclements/quick-format#readme
|
|
72
|
-
react@19.
|
|
72
|
+
react@19.3.0 — MIT — https://react.dev/
|
|
73
73
|
react-reconciler@0.33.0 — MIT — https://react.dev/
|
|
74
74
|
restore-cursor@4.0.0 — MIT — sindresorhus/restore-cursor
|
|
75
75
|
ret@0.5.0 — MIT — git://github.com/fent/ret.js.git
|
|
@@ -1051,7 +1051,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
1051
1051
|
SOFTWARE.
|
|
1052
1052
|
|
|
1053
1053
|
------------------------------------------------------------------------------
|
|
1054
|
-
react@19.
|
|
1054
|
+
react@19.3.0 (MIT)
|
|
1055
1055
|
react-reconciler@0.33.0 (MIT)
|
|
1056
1056
|
scheduler@0.27.0 (MIT)
|
|
1057
1057
|
------------------------------------------------------------------------------
|
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Parallix
|
|
2
2
|
|
|
3
|
-
**Parallix is
|
|
3
|
+
**Parallix is a local-first workflow and trust layer for AI coding agents: it runs each piece of work as an isolated mission in its own Git worktree, sends the result to a separate code review that prefers a different agent family when one is available, runs repository-owned verification where you configure a gate, confines agents with Linux Bubblewrap when available (falling back to an agent's native sandbox, or blocking until explicit consent when neither exists), and leaves the squash merge to a human.**
|
|
4
|
+
|
|
5
|
+
It works with Codex CLI, Claude Code, Qwen Code, and Mistral Vibe, and runs OpenCode or Pi through its configurable custom runner, so drafting, implementation, and review can use different agent families, including locally hosted AI.
|
|
4
6
|
|
|
5
7
|
Coding agents become much more useful when you can run several pieces of work at once. But simply starting more agents quickly creates a new bottleneck: they compete for the same working tree, lose context across long runs, hit provider limits, and produce more changes than one engineer can safely supervise and integrate.
|
|
6
8
|
|
|
7
9
|
Parallix is the delivery layer around those agents. It gives every piece of work an isolated mission, lets multiple missions progress concurrently, preserves execution across sessions, separates implementation from review, runs repository-owned verification, and leaves the final integration decision with the human operator. Parallel Git isolation is how that trust ladder can operate across concurrent missions instead of one shared checkout.
|
|
8
10
|
|
|
9
|
-
Parallix is deliberately not tied to one agent vendor or model family. The same mission workflow can use different agent families for drafting, implementation, and review, including commercially hosted agents, locally hosted AI, and custom runtimes.
|
|
10
|
-
|
|
11
11
|
## Install
|
|
12
12
|
|
|
13
13
|
For Bash, install Parallix and load its bundled worktree-switching integration
|
|
@@ -35,9 +35,9 @@ The main reason to use coding agents is leverage: while one agent is working, an
|
|
|
35
35
|
|
|
36
36
|
Parallix is a mission-based development workflow that addresses each of these directly so parallel agents can translate into actual delivery throughput. The mechanics live in tested code rather than in prompts. It is not another agent or model — it is the operator-owned layer around the agents you already use.
|
|
37
37
|
|
|
38
|
-

|
|
39
39
|
|
|
40
|
-
Observed one-maintainer dogfooding throughput. The [methodology](docs/metrics/velocity/README.md)
|
|
40
|
+
Observed one-maintainer dogfooding throughput. The [methodology and evidence](docs/metrics/velocity/README.md) define the mission population, historical reference, and limitations.
|
|
41
41
|
|
|
42
42
|
## What it does
|
|
43
43
|
|
|
@@ -52,6 +52,13 @@ Observed one-maintainer dogfooding throughput. The [methodology](docs/metrics/ve
|
|
|
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.
|
|
54
54
|
|
|
55
|
+
## Supported coding agents
|
|
56
|
+
|
|
57
|
+
- **Built-in families:** Codex CLI (`codex`), Claude Code (`claude`), Qwen Code (`qwen`), and Mistral Vibe (`vibe`). Install and sign in to each agent CLI you want Parallix to use.
|
|
58
|
+
- **Custom runner:** OpenCode (`opencode`) or Pi (`pi`) run as the `custom` family. Select one with `adapters.agents.runners.custom` in `workflow.config.json`; OpenCode is the default. Pi needs the optional `@earendil-works/pi-coding-agent` package.
|
|
59
|
+
|
|
60
|
+
Which families may draft, implement, and review is set per step in `config/agents.json`; Parallix chooses among the eligible families that are installed and not blocked by a usage limit. Mistral Vibe runs do not resume an earlier session; an interrupted Vibe run starts fresh from the recorded checkpoints. See the [agent configuration](docs/config.md#agents) for model and runner options.
|
|
61
|
+
|
|
55
62
|
## The core workflow
|
|
56
63
|
|
|
57
64
|
A mission moves through a fixed lifecycle, one branch and one worktree at a time:
|
|
@@ -77,7 +84,7 @@ Running several agents in parallel is only worth doing if you can trust what com
|
|
|
77
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.
|
|
78
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.
|
|
79
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.
|
|
80
|
-
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.
|
|
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. For eligible repeat findings, Jev can classify the repair from revision-pinned evidence and clear the finding set or return it 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#repeat-review-classification).
|
|
81
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.
|
|
82
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.
|
|
83
90
|
9. **Operator decision.** Nothing merges itself. A human reads the diff and decides whether to integrate at all.
|
|
@@ -161,6 +168,8 @@ Both are optional integrations, and each one is wired independently of the other
|
|
|
161
168
|
## Use cases
|
|
162
169
|
|
|
163
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 agent-run output,
|
|
172
|
+
see [agent-run history](docs/agent-run-history.md).
|
|
164
173
|
|
|
165
174
|
## What Parallix is not
|
|
166
175
|
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
"key": "prompts/act-on-review.md",
|
|
18
|
-
"sha256": "
|
|
18
|
+
"sha256": "412facaee4a56f6436317d6b228ff57cb0605aca88ca143056ab50895ef62eee"
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"key": "prompts/draft-core.md",
|
|
22
|
-
"sha256": "
|
|
22
|
+
"sha256": "794bc41c7ce01d3f5ec06aa4ae37c75dfc54079c1ca62062f231c45d91d9637b"
|
|
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": "e571826c71ad14cf0156ef7fc99bf273fa6af2752c01e627238f3c6b5bdb63e1"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"key": "prompts/execute.md",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"key": "templates/mission-scaffold.md",
|
|
46
|
-
"sha256": "
|
|
46
|
+
"sha256": "64ceff9f8a45d1769c8e70b0545a554065ffd285aa33b862447cb2ac70d28093"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"key": "migrations/0001-initial-schema.sql",
|
|
@@ -164,6 +164,10 @@
|
|
|
164
164
|
{
|
|
165
165
|
"key": "migrations/0029-mission-success-criterion-completion.sql",
|
|
166
166
|
"sha256": "b4091b8c3d770f8ac5072745a234de10d6e02cc3c4f0e6497888629041b54e7e"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"key": "migrations/0030-review-classification.sql",
|
|
170
|
+
"sha256": "746f8bf0b0edb91367dd426fc926264e803c7d17ede8689ad2a8457757002a7c"
|
|
167
171
|
}
|
|
168
172
|
]
|
|
169
173
|
}
|
package/build/manifest.sha256
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
08e99fe1707dd9d807cfc906dbc2ea87887085bf1231b9775ab8e5865ae4eb01 asset-manifest.json
|
|
2
2
|
c380d909ddf757f9bbe5136d79652a19396ae69068d144e2b6031ed4b7fb4b78 config/agents.json
|
|
3
3
|
6a4ec47387d1240e32967dc8e4ce54a15d69df2676b7a96ff72baafe996fef7d config/state-map.json
|
|
4
4
|
30a76fa3839753ddbfe312428dd1b7285ac1b8d0bd678fc79c79018ec6154f69 migrations/0001-initial-schema.sql
|
|
@@ -31,20 +31,21 @@ a0c669ba6c6883bb498c59eb8a8a1688dc445de56520a22d7c0302b4a2fbf8b0 migrations/002
|
|
|
31
31
|
785f9c292ebb9ba9c72acfad03eff6c45387f44459604bd07ba17a676c605775 migrations/0027-review-decision-supersessions.sql
|
|
32
32
|
0196b4d563b829467680704349e591085597cb59e34052df0d72b4b78892f51a migrations/0028-review-revocation-cause.sql
|
|
33
33
|
b4091b8c3d770f8ac5072745a234de10d6e02cc3c4f0e6497888629041b54e7e migrations/0029-mission-success-criterion-completion.sql
|
|
34
|
-
|
|
34
|
+
746f8bf0b0edb91367dd426fc926264e803c7d17ede8689ad2a8457757002a7c migrations/0030-review-classification.sql
|
|
35
|
+
5db10eda2b526f83090baf0f02ca31d7dfff1d22823f71bbeab0fa5f1101b599 package.json
|
|
35
36
|
677c3ead4d810656bd0993ee8a1db2170b42bd94505d52620c0dcdc4e9f5ca4f prompts/act-on-review-core.md
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
412facaee4a56f6436317d6b228ff57cb0605aca88ca143056ab50895ef62eee prompts/act-on-review.md
|
|
38
|
+
794bc41c7ce01d3f5ec06aa4ae37c75dfc54079c1ca62062f231c45d91d9637b prompts/draft-core.md
|
|
38
39
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 prompts/draft.md
|
|
39
|
-
|
|
40
|
+
e571826c71ad14cf0156ef7fc99bf273fa6af2752c01e627238f3c6b5bdb63e1 prompts/execute-core.md
|
|
40
41
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 prompts/execute.md
|
|
41
42
|
e6c0aa4683fac33f41b79fb27407cd3c9de384239d2b1067e2b30acb5e7fecb0 prompts/review-core.md
|
|
42
43
|
06431c3f965935db27b254164d3bfa66aa7cc2a5602031f181dcc5e32f3e5739 prompts/review.md
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
103733eb66f5596c3be417ce2f48fa2dd0c7a6f98199a017090288b0fd0058b8 px.mjs
|
|
45
|
+
420c601237630102601f28a9243148af35569cbe3e2df24be82c2d2c4ea06806 px.mjs.map
|
|
46
|
+
e4f4497b62b0a329d019ce3633734461eba55e5a4be67640352f892187e9d65b sbom.json
|
|
47
|
+
64ceff9f8a45d1769c8e70b0545a554065ffd285aa33b862447cb2ac70d28093 templates/mission-scaffold.md
|
|
48
|
+
3cd549801655754fd23632c7cda05fbc3bf3a7108965ad8ed7cd99244e292b71 web/assets/index-HfrsWWLp.css
|
|
49
|
+
105c3e33c65a58dbf7d79cb030c4f4a3aeedecaac14e9e5515303bbcd88ce0f8 web/assets/index-Q1kufqqY.js
|
|
50
|
+
67cce8af16fb67e1e84174298ad61ec960281fbe84a5d6292146211e9b66c75b web/index.html
|
|
51
|
+
214574cd1f7e48e8f8729079f7cb9f47c6555ace31f34cd13a9e87d2071779ba web/manifest.json
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
-- Classifier provenance belongs to Review; bounded measurements own no attempt lifecycle.
|
|
2
|
+
ALTER TABLE mission_review_rounds ADD COLUMN classifier_source TEXT;
|
|
3
|
+
CREATE TABLE review_classifier_measurements (
|
|
4
|
+
decision_id TEXT PRIMARY KEY NOT NULL,
|
|
5
|
+
repository_id TEXT NOT NULL,
|
|
6
|
+
samples TEXT NOT NULL CHECK(length(samples) <= 131072)
|
|
7
|
+
);
|
|
8
|
+
CREATE INDEX review_classifier_measurements_repository ON review_classifier_measurements(repository_id);
|
|
9
|
+
CREATE TABLE review_classifier_observations (
|
|
10
|
+
decision_id TEXT PRIMARY KEY NOT NULL,
|
|
11
|
+
payload TEXT NOT NULL CHECK(length(payload) <= 16384)
|
|
12
|
+
);
|
package/build/package.json
CHANGED
|
@@ -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. Do not refresh Graphify after ordinary edits: the next autonomous-review boundary refreshes the final verified tree immediately before reviewer launch.
|
|
@@ -59,7 +59,7 @@ Bug-labeled missions (regression-test-first / "lock the bug"):
|
|
|
59
59
|
- 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
60
|
- do not author the fix during draft — the reproduction test and its recorded path are the only bug-specific drafting outputs.
|
|
61
61
|
|
|
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.
|
|
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. Do not refresh Graphify after drafting; freshness is maintained at the autonomous-review boundary on the final verified tree.
|
|
63
63
|
|
|
64
64
|
Finishing:
|
|
65
65
|
- verify the draft with `{{verifyCmd}}` before stopping
|
|
@@ -43,10 +43,11 @@ Execution requirements:
|
|
|
43
43
|
- 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)
|
|
44
44
|
- Immediately after **each successful mission-declared Gate**, compact your working context before starting the next gate, checkpoint work, or handoff work. Reload 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. Do not compact for a failed gate: retain its failure diagnostic while repairing it.
|
|
45
45
|
- preserve `{{taskPath}}`: update mission-relevant content as needed but do not delete, rename, or move the file
|
|
46
|
-
- 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}}`
|
|
46
|
+
- 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.
|
|
47
|
+
- 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.
|
|
47
48
|
- After verifying a success criterion, record completion with `px mission mark-complete --slug {{slug}} --criterion <index> --expected-version <n>`, using its one-based index and the current Version from `px status {{slug}}`. Reload status after each write. Use `--all` only when every criterion is verified. Recording checkpoint evidence does not mark criteria complete.
|
|
48
49
|
- 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
|
|
49
50
|
|
|
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.
|
|
51
|
+
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. Graph freshness is handled at the autonomous-review boundary, after its final verification and immediately before reviewer launch; do not refresh after ordinary edits. If `graphify-out/wiki/index.md` exists, use it for broad navigation.
|
|
51
52
|
|
|
52
53
|
{{checkpoint_context}}
|