pi-pstack-native 0.0.0-stage → 1.0.0
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/ACCEPTANCE.md +40 -0
- package/CHANGELOG.md +75 -0
- package/CONTRIBUTING.md +29 -0
- package/IMPLEMENTATION.md +38 -0
- package/INSTALLATION-CHECK.md +13 -0
- package/LICENSE +21 -0
- package/NOTICE.md +14 -0
- package/PARITY.json +133 -0
- package/PARITY.md +156 -0
- package/PRD.md +2131 -0
- package/README.md +103 -2
- package/README.zh-CN.md +137 -0
- package/REVIEW.md +24 -0
- package/SECURITY.md +17 -0
- package/SEMANTICS.json +2852 -0
- package/UPSTREAM.json +32 -0
- package/agents/architect.md +3 -0
- package/agents/comment-sicko.md +3 -0
- package/agents/integrator.md +6 -0
- package/agents/poteto-agent.md +3 -0
- package/agents/reviewer.md +3 -0
- package/agents/scout.md +3 -0
- package/agents/synthesizer.md +3 -0
- package/agents/verifier.md +3 -0
- package/agents/worker.md +3 -0
- package/benchmarks/cases.json +354 -0
- package/dist/agent/candidates.d.ts +13 -0
- package/dist/agent/candidates.js +50 -0
- package/dist/agent/grep-worker.mjs +46 -0
- package/dist/agent/host.d.ts +47 -0
- package/dist/agent/host.js +480 -0
- package/dist/agent/isolation.d.ts +3 -0
- package/dist/agent/isolation.js +12 -0
- package/dist/agent/outcome.d.ts +8 -0
- package/dist/agent/outcome.js +15 -0
- package/dist/agent/profiles.d.ts +5 -0
- package/dist/agent/profiles.js +128 -0
- package/dist/agent/read-only-tools.d.ts +1 -0
- package/dist/agent/read-only-tools.js +150 -0
- package/dist/agent/resources.d.ts +15 -0
- package/dist/agent/resources.js +77 -0
- package/dist/api.d.ts +18 -0
- package/dist/api.js +18 -0
- package/dist/artifacts/fingerprint.d.ts +29 -0
- package/dist/artifacts/fingerprint.js +75 -0
- package/dist/compatibility/adapter.d.ts +66 -0
- package/dist/compatibility/adapter.js +110 -0
- package/dist/compatibility/source.d.ts +2 -0
- package/dist/compatibility/source.js +38 -0
- package/dist/compatibility/tool.d.ts +2 -0
- package/dist/compatibility/tool.js +59 -0
- package/dist/context/snapshot.d.ts +37 -0
- package/dist/context/snapshot.js +12 -0
- package/dist/contracts/brief.d.ts +19 -0
- package/dist/contracts/brief.js +198 -0
- package/dist/contracts/types.d.ts +192 -0
- package/dist/contracts/types.js +1 -0
- package/dist/delivery/frontier.d.ts +61 -0
- package/dist/delivery/frontier.js +123 -0
- package/dist/delivery/git.d.ts +2 -0
- package/dist/delivery/git.js +12 -0
- package/dist/delivery/prepare.d.ts +18 -0
- package/dist/delivery/prepare.js +30 -0
- package/dist/delivery/provider.d.ts +31 -0
- package/dist/delivery/provider.js +42 -0
- package/dist/delivery/review-threads.d.ts +18 -0
- package/dist/delivery/review-threads.js +39 -0
- package/dist/delivery/stack.d.ts +32 -0
- package/dist/delivery/stack.js +91 -0
- package/dist/extension.d.ts +2 -0
- package/dist/extension.js +320 -0
- package/dist/loop/scheduler.d.ts +53 -0
- package/dist/loop/scheduler.js +334 -0
- package/dist/loop/store.d.ts +16 -0
- package/dist/loop/store.js +66 -0
- package/dist/models/router.d.ts +25 -0
- package/dist/models/router.js +183 -0
- package/dist/program/coordinator.d.ts +75 -0
- package/dist/program/coordinator.js +169 -0
- package/dist/program/dispatch.d.ts +20 -0
- package/dist/program/dispatch.js +82 -0
- package/dist/runner/cli.mjs +46 -0
- package/dist/runner/lease.d.ts +10 -0
- package/dist/runner/lease.js +24 -0
- package/dist/runner/service.d.ts +8 -0
- package/dist/runner/service.js +66 -0
- package/dist/runtime/checkout.d.ts +3 -0
- package/dist/runtime/checkout.js +20 -0
- package/dist/runtime/config.d.ts +7 -0
- package/dist/runtime/config.js +46 -0
- package/dist/runtime/errors.d.ts +2 -0
- package/dist/runtime/errors.js +10 -0
- package/dist/runtime/home.d.ts +11 -0
- package/dist/runtime/home.js +15 -0
- package/dist/runtime/lock.d.ts +12 -0
- package/dist/runtime/lock.js +123 -0
- package/dist/runtime/migrate.d.ts +9 -0
- package/dist/runtime/migrate.js +44 -0
- package/dist/runtime/ownership.d.ts +4 -0
- package/dist/runtime/ownership.js +6 -0
- package/dist/runtime/protocol.d.ts +24 -0
- package/dist/runtime/protocol.js +35 -0
- package/dist/runtime/redact.d.ts +3 -0
- package/dist/runtime/redact.js +32 -0
- package/dist/runtime/store.d.ts +6 -0
- package/dist/runtime/store.js +75 -0
- package/dist/runtime/transaction.d.ts +4 -0
- package/dist/runtime/transaction.js +44 -0
- package/dist/runtime/types.d.ts +202 -0
- package/dist/runtime/types.js +1 -0
- package/dist/runtime/upstream.d.ts +2 -0
- package/dist/runtime/upstream.js +8 -0
- package/dist/setup/command.d.ts +2 -0
- package/dist/setup/command.js +423 -0
- package/dist/statechart/backends/cfg.js +31 -0
- package/dist/statechart/backends/mermaid.js +223 -0
- package/dist/statechart/backends/plain-text.js +68 -0
- package/dist/statechart/backends/report.js +123 -0
- package/dist/statechart/frontends/config.js +258 -0
- package/dist/statechart/frontends/dot.js +68 -0
- package/dist/statechart/frontends/marks.js +102 -0
- package/dist/statechart/frontends/messages.js +53 -0
- package/dist/statechart/frontends/spec.js +89 -0
- package/dist/statechart/frontends/trace.js +24 -0
- package/dist/statechart/frontends/value.js +181 -0
- package/dist/statechart/frontends/verdict.js +38 -0
- package/dist/statechart/frontends/view.js +107 -0
- package/dist/statechart/ir.js +317 -0
- package/dist/statechart/passes/annotate.js +102 -0
- package/dist/statechart/passes/label.js +217 -0
- package/dist/statechart/passes/lift.js +89 -0
- package/dist/statechart/passes/loop-check.js +57 -0
- package/dist/statechart/passes/paths.js +50 -0
- package/dist/statechart/passes/reach.js +134 -0
- package/dist/statechart/passes/region-check.js +94 -0
- package/dist/statechart/passes/regions.js +296 -0
- package/dist/statechart/pipeline.js +63 -0
- package/dist/statechart/run.js +432 -0
- package/dist/statechart/statechart.js +149 -0
- package/dist/statechart/worker.js +40 -0
- package/dist/telemetry/metrics.d.ts +13 -0
- package/dist/telemetry/metrics.js +11 -0
- package/dist/templates/build.d.ts +35 -0
- package/dist/templates/build.js +172 -0
- package/dist/tools/agents.d.ts +3 -0
- package/dist/tools/agents.js +74 -0
- package/dist/tools/graph.d.ts +3 -0
- package/dist/tools/graph.js +35 -0
- package/dist/tools/protocol.d.ts +3 -0
- package/dist/tools/protocol.js +77 -0
- package/dist/tools/schema.d.ts +7 -0
- package/dist/tools/schema.js +6 -0
- package/dist/tools/workflow.d.ts +3 -0
- package/dist/tools/workflow.js +137 -0
- package/dist/tools/worktrees.d.ts +3 -0
- package/dist/tools/worktrees.js +35 -0
- package/dist/verification/process.mjs +9 -0
- package/dist/verification/runner.d.ts +23 -0
- package/dist/verification/runner.js +259 -0
- package/dist/workflow/artifacts.d.ts +10 -0
- package/dist/workflow/artifacts.js +102 -0
- package/dist/workflow/engine.d.ts +58 -0
- package/dist/workflow/engine.js +725 -0
- package/dist/workflow/graph.d.ts +10 -0
- package/dist/workflow/graph.js +60 -0
- package/dist/worktree/manager.d.ts +20 -0
- package/dist/worktree/manager.js +68 -0
- package/dist/worktree/snapshot.d.ts +2 -0
- package/dist/worktree/snapshot.js +43 -0
- package/docs/DEPENDENCIES.md +35 -0
- package/docs/LIVE-TEST-PLAN.zh-CN.md +161 -0
- package/docs/ML-WORKFLOWS.zh-CN.md +49 -0
- package/docs/PI-SEMANTIC-ADAPTER.md +34 -0
- package/docs/PR-41-ALIGNMENT-PLAN.zh-CN.md +30 -0
- package/docs/PR-PROTOCOL.md +48 -0
- package/docs/PUBLISHING.md +61 -0
- package/docs/README.md +30 -0
- package/docs/REFERENCE.md +357 -0
- package/docs/SEMANTIC-COMPATIBILITY.md +135 -0
- package/docs/STATECHART.md +13 -0
- package/docs/UPSTREAM-0.15.17.md +51 -0
- package/docs/VALIDATION.md +59 -0
- package/docs/WINDOWS-MODEL-TEST.zh-CN.md +27 -0
- package/docs/evidence/live-github-5deb723.json +44 -0
- package/docs/evidence/semantic-smoke-5deb723.json +49 -0
- package/docs/parity.test.mjs +84 -0
- package/docs/registry-records-0.15.32.json +2161 -0
- package/docs/registry-records-0.15.36.json +2161 -0
- package/docs/stacked-pr-body.md +23 -0
- package/docs/upstream-dispositions-0.15.36.json +2408 -0
- package/docs/upstream-inventory-0.15.36.json +15754 -0
- package/docs/upstream-provenance-0.15.17.json +62 -0
- package/docs/upstream-provenance-0.15.32.json +11 -0
- package/docs/upstream-provenance-0.15.36.json +11 -0
- package/docs/upstream-sync/IMPLEMENTATION.md +114 -0
- package/docs/upstream-sync/PORT-0.15.23.md +142 -0
- package/docs/upstream-sync/PR-PORT-0.15.23.md +28 -0
- package/docs/upstream-sync/VALIDATION.md +76 -0
- package/docs/upstream-sync/candidate-0.15.23.json +632 -0
- package/docs/upstream-sync/reports/978ca6e9c0e0_837067b75aa2-e928d281378110a3.json +2166 -0
- package/docs/upstream-sync/reports/978ca6e9c0e0_837067b75aa2-e928d281378110a3.md +440 -0
- package/docs/upstream-sync/reports/978ca6e9c0e0_837067b75aa2.json +2161 -0
- package/docs/upstream-sync/reports/978ca6e9c0e0_837067b75aa2.md +440 -0
- package/docs/upstream-sync/tasks/978ca6e9c0e0_837067b75aa2-e928d281378110a3.md +440 -0
- package/docs/upstream-sync/tasks/978ca6e9c0e0_837067b75aa2.md +440 -0
- package/docs/upstream-sync-0.15.17.json +521 -0
- package/docs/upstream-sync-0.15.32.json +106 -0
- package/docs/upstream-sync-0.15.36.json +106 -0
- package/docs/upstream-target-0.15.36.json +3456 -0
- package/docs/upstream-upgrade-0.15.32.json +12140 -0
- package/docs/upstream-upgrade-0.15.32.md +23 -0
- package/docs/upstream-upgrade-0.15.36.md +7 -0
- package/docs/validate-pr.mjs +74 -0
- package/examples/README.md +45 -0
- package/examples/strict-brief.json +14 -0
- package/examples/verification-policy.json +8 -0
- package/package.json +152 -4
- package/scripts/benchmark.mjs +39 -0
- package/scripts/build-statechart.mjs +30 -0
- package/scripts/build.mjs +11 -0
- package/scripts/check-benchmark.mjs +27 -0
- package/scripts/check-contracts.mjs +15 -0
- package/scripts/check-e2e.mjs +86 -0
- package/scripts/check-inventory.mjs +24 -0
- package/scripts/check-package.mjs +17 -0
- package/scripts/check-parity.mjs +4 -0
- package/scripts/check-plan.mjs +206 -0
- package/scripts/check-records.mjs +35 -0
- package/scripts/check-semantics.mjs +7 -0
- package/scripts/check-statechart.mjs +13 -0
- package/scripts/check-syntax.mjs +9 -0
- package/scripts/check-windows-build.mjs +12 -0
- package/scripts/e2e-live.mjs +58 -0
- package/scripts/e2e-reporter.mjs +17 -0
- package/scripts/review.mjs +26 -0
- package/scripts/semantics/core.mjs +101 -0
- package/scripts/semantics/generate.mjs +47 -0
- package/scripts/semantics/real-pi-smoke.mjs +46 -0
- package/scripts/smoke-host.mjs +10 -0
- package/scripts/smoke-install.mjs +37 -0
- package/scripts/sync-upstream.mjs +4 -0
- package/scripts/upstream/cli.mjs +140 -0
- package/scripts/upstream/core.mjs +178 -0
- package/scripts/upstream/core.test.mjs +137 -0
- package/scripts/upstream/inventory.mjs +229 -0
- package/scripts/upstream/inventory.test.mjs +417 -0
- package/scripts/upstream/notify.cjs +17 -0
- package/scripts/upstream/notify.test.mjs +12 -0
- package/scripts/upstream/parity.mjs +45 -0
- package/scripts/upstream/playbook-contract.test.mjs +80 -0
- package/scripts/upstream/playbooks.mjs +143 -0
- package/scripts/upstream/records.mjs +113 -0
- package/scripts/upstream/records.test.mjs +116 -0
- package/scripts/upstream/report.d.ts +30 -0
- package/skills/architect/SKILL.md +133 -0
- package/skills/architect/references/design-red-flags.md +57 -0
- package/skills/architect/references/rationale-template.md +35 -0
- package/skills/architect/references/runner-prompt.md +20 -0
- package/skills/arena/SKILL.md +102 -0
- package/skills/automate-me/SKILL.md +158 -0
- package/skills/benchmark-checklist/SKILL.md +89 -0
- package/skills/blast-radius/SKILL.md +100 -0
- package/skills/bro/SKILL.md +57 -0
- package/skills/correct/SKILL.md +82 -0
- package/skills/create-formal-verification-skill/SKILL.md +93 -0
- package/skills/create-verification-skill/SKILL.md +94 -0
- package/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
- package/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
- package/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
- package/skills/figure-it-out/SKILL.md +102 -0
- package/skills/how/SKILL.md +86 -0
- package/skills/how/references/explainer-prompt.md +55 -0
- package/skills/how/references/explorer-prompt.md +35 -0
- package/skills/in-your-own-words/SKILL.md +57 -0
- package/skills/interrogate/SKILL.md +85 -0
- package/skills/ketchup/SKILL.md +93 -0
- package/skills/ketchup-video/SKILL.md +79 -0
- package/skills/maintain-formal-verification-skill/SKILL.md +108 -0
- package/skills/maintain-verification-skill/SKILL.md +89 -0
- package/skills/make-bot-ui/SKILL.md +8 -0
- package/skills/ml-development/SKILL.md +38 -0
- package/skills/ml-development/playbooks/01-scope.md +14 -0
- package/skills/ml-development/playbooks/02-data.md +14 -0
- package/skills/ml-development/playbooks/03-baseline.md +14 -0
- package/skills/ml-development/playbooks/04-experiments.md +14 -0
- package/skills/ml-development/playbooks/05-evaluation.md +14 -0
- package/skills/ml-development/playbooks/06-reproducibility.md +13 -0
- package/skills/ml-development/references/experiment-matrix.md +11 -0
- package/skills/ml-development/references/run-record.md +19 -0
- package/skills/no-comments/SKILL.md +74 -0
- package/skills/poteto-help/SKILL.md +217 -0
- package/skills/poteto-help/references/prompting.md +51 -0
- package/skills/poteto-help/references/recipes.md +51 -0
- package/skills/poteto-mode/SKILL.md +214 -0
- package/skills/poteto-mode/playbooks/authoring-a-skill.md +64 -0
- package/skills/poteto-mode/playbooks/autonomous-run.md +65 -0
- package/skills/poteto-mode/playbooks/autopilot-full.md +77 -0
- package/skills/poteto-mode/playbooks/autopilot-stack.md +60 -0
- package/skills/poteto-mode/playbooks/babysit.md +75 -0
- package/skills/poteto-mode/playbooks/bug-fix.md +67 -0
- package/skills/poteto-mode/playbooks/eval.md +77 -0
- package/skills/poteto-mode/playbooks/feature.md +73 -0
- package/skills/poteto-mode/playbooks/hillclimb.md +73 -0
- package/skills/poteto-mode/playbooks/investigation.md +66 -0
- package/skills/poteto-mode/playbooks/multi-phase-plan.md +207 -0
- package/skills/poteto-mode/playbooks/opening-a-pr.md +86 -0
- package/skills/poteto-mode/playbooks/orchestrate.md +77 -0
- package/skills/poteto-mode/playbooks/pause-safely.md +62 -0
- package/skills/poteto-mode/playbooks/perf-issue.md +77 -0
- package/skills/poteto-mode/playbooks/prototype.md +66 -0
- package/skills/poteto-mode/playbooks/refactoring.md +68 -0
- package/skills/poteto-mode/playbooks/runtime-forensics.md +63 -0
- package/skills/poteto-mode/playbooks/session-pickup.md +63 -0
- package/skills/poteto-mode/playbooks/shipping.md +64 -0
- package/skills/poteto-mode/playbooks/trace-forensics.md +66 -0
- package/skills/poteto-mode/playbooks/visual-parity.md +63 -0
- package/skills/poteto-mode/playbooks/worktree-cleanup.md +64 -0
- package/skills/poteto-mode/references/bugbot-triage.md +142 -0
- package/skills/poteto-mode/references/runtime-mapping.md +10 -0
- package/skills/principle-attack-the-premise/SKILL.md +71 -0
- package/skills/principle-boundary-discipline/SKILL.md +84 -0
- package/skills/principle-build-the-lever/SKILL.md +73 -0
- package/skills/principle-encode-lessons-in-structure/SKILL.md +61 -0
- package/skills/principle-exhaust-the-design-space/SKILL.md +59 -0
- package/skills/principle-experience-first/SKILL.md +69 -0
- package/skills/principle-explain-the-number/SKILL.md +68 -0
- package/skills/principle-fix-root-causes/SKILL.md +71 -0
- package/skills/principle-foundational-thinking/SKILL.md +71 -0
- package/skills/principle-guard-the-context-window/SKILL.md +62 -0
- package/skills/principle-laziness-protocol/SKILL.md +60 -0
- package/skills/principle-make-operations-idempotent/SKILL.md +72 -0
- package/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +64 -0
- package/skills/principle-minimize-reader-load/SKILL.md +68 -0
- package/skills/principle-model-the-domain/SKILL.md +74 -0
- package/skills/principle-never-block-on-the-human/SKILL.md +65 -0
- package/skills/principle-outcome-oriented-execution/SKILL.md +71 -0
- package/skills/principle-prove-it-works/SKILL.md +72 -0
- package/skills/principle-redesign-from-first-principles/SKILL.md +66 -0
- package/skills/principle-separate-before-serializing-shared-state/SKILL.md +66 -0
- package/skills/principle-sequence-verifiable-units/SKILL.md +67 -0
- package/skills/principle-subtract-before-you-add/SKILL.md +68 -0
- package/skills/principle-test-behavior-not-implementation/SKILL.md +70 -0
- package/skills/principle-type-system-discipline/SKILL.md +63 -0
- package/skills/pstack-runtime/SKILL.md +8 -0
- package/skills/recall/SKILL.md +85 -0
- package/skills/reflect/SKILL.md +119 -0
- package/skills/reflect/references/divergent-reviewer.md +38 -0
- package/skills/reflect/references/judgment-reviewer.md +37 -0
- package/skills/reflect/references/synthesizer.md +56 -0
- package/skills/reflect/references/tooling-reviewer.md +48 -0
- package/skills/setup-pstack/SKILL.md +132 -0
- package/skills/sharpen/SKILL.md +66 -0
- package/skills/show-me-your-work/SKILL.md +132 -0
- package/skills/statechart/SKILL.md +132 -0
- package/skills/statechart/references/render.md +93 -0
- package/skills/statechart/scripts/backends/cfg.ts +33 -0
- package/skills/statechart/scripts/backends/mermaid.ts +201 -0
- package/skills/statechart/scripts/backends/plain-text.ts +72 -0
- package/skills/statechart/scripts/backends/report.ts +177 -0
- package/skills/statechart/scripts/bug-states.mjs +81 -0
- package/skills/statechart/scripts/chart-edges.mjs +68 -0
- package/skills/statechart/scripts/chart-parts.mjs +21 -0
- package/skills/statechart/scripts/chart-to-tla.mjs +205 -0
- package/skills/statechart/scripts/compare-charts.mjs +74 -0
- package/skills/statechart/scripts/frontends/config.ts +276 -0
- package/skills/statechart/scripts/frontends/dot.ts +74 -0
- package/skills/statechart/scripts/frontends/marks.ts +93 -0
- package/skills/statechart/scripts/frontends/messages.ts +52 -0
- package/skills/statechart/scripts/frontends/spec.ts +114 -0
- package/skills/statechart/scripts/frontends/trace.ts +24 -0
- package/skills/statechart/scripts/frontends/value.ts +166 -0
- package/skills/statechart/scripts/frontends/verdict.ts +40 -0
- package/skills/statechart/scripts/frontends/view.ts +119 -0
- package/skills/statechart/scripts/ir.ts +547 -0
- package/skills/statechart/scripts/lib.mjs +970 -0
- package/skills/statechart/scripts/map-view.mjs +92 -0
- package/skills/statechart/scripts/package.json +11 -0
- package/skills/statechart/scripts/passes/annotate.ts +128 -0
- package/skills/statechart/scripts/passes/label.ts +269 -0
- package/skills/statechart/scripts/passes/lift.ts +85 -0
- package/skills/statechart/scripts/passes/loop-check.ts +68 -0
- package/skills/statechart/scripts/passes/paths.ts +60 -0
- package/skills/statechart/scripts/passes/reach.ts +135 -0
- package/skills/statechart/scripts/passes/region-check.ts +97 -0
- package/skills/statechart/scripts/passes/regions.ts +295 -0
- package/skills/statechart/scripts/pipeline.ts +76 -0
- package/skills/statechart/scripts/property-loop.mjs +60 -0
- package/skills/statechart/scripts/read-check.mjs +79 -0
- package/skills/statechart/scripts/regions-chart.mjs +307 -0
- package/skills/statechart/scripts/render.mjs +531 -0
- package/skills/statechart/scripts/rule-book.mjs +84 -0
- package/skills/statechart/scripts/run.ts +481 -0
- package/skills/statechart/scripts/second-replay.mjs +122 -0
- package/skills/statechart/scripts/snapshot.mjs +74 -0
- package/skills/statechart/scripts/spec-text.mjs +126 -0
- package/skills/statechart/scripts/statechart +29 -0
- package/skills/statechart/scripts/statechart-help.mjs +350 -0
- package/skills/statechart/scripts/statechart.mjs +903 -0
- package/skills/statechart/scripts/statechart.ts +164 -0
- package/skills/statechart/scripts/test/ConfigOracle.java +63 -0
- package/skills/statechart/scripts/test/band.mmd +15 -0
- package/skills/statechart/scripts/test/chart.test.ts +1210 -0
- package/skills/statechart/scripts/test/charts/Braces.mmd +7 -0
- package/skills/statechart/scripts/test/charts/Escapes.mmd +11 -0
- package/skills/statechart/scripts/test/charts/Phases.mmd +29 -0
- package/skills/statechart/scripts/test/cli.test.ts +1314 -0
- package/skills/statechart/scripts/test/config-fuzz.test.ts +263 -0
- package/skills/statechart/scripts/test/corpus/Counter/ChartRun.out +57 -0
- package/skills/statechart/scripts/test/corpus/Counter/Counter.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/Counter/Counter.tla +10 -0
- package/skills/statechart/scripts/test/corpus/Counter/chart.mmd +9 -0
- package/skills/statechart/scripts/test/corpus/Counter/graph.dot +16 -0
- package/skills/statechart/scripts/test/corpus/Counter/report.md +7 -0
- package/skills/statechart/scripts/test/corpus/Counter/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/Counter/verdict-1.out +49 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/ChartRun.out +60 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.cfg +4 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/CounterAction.tla +22 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/chart.mmd +26 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/graph.dot +19 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/report.md +20 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/verdict-1.out +56 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/verdict-2.out +82 -0
- package/skills/statechart/scripts/test/corpus/CounterAction/verdict-3.out +57 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/ChartRun.out +59 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/CounterDeadlock.tla +11 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/chart.mmd +22 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/graph.dot +16 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/report.md +17 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-1.out +56 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterDeadlock/verdict-2.out +77 -0
- package/skills/statechart/scripts/test/corpus/CounterFan/ChartRun.out +69 -0
- package/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.cfg +2 -0
- package/skills/statechart/scripts/test/corpus/CounterFan/CounterFan.tla +11 -0
- package/skills/statechart/scripts/test/corpus/CounterFan/chart.mmd +85 -0
- package/skills/statechart/scripts/test/corpus/CounterFan/graph.dot +70 -0
- package/skills/statechart/scripts/test/corpus/CounterFan/report.md +12 -0
- package/skills/statechart/scripts/test/corpus/CounterFan/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterFan/verdict-1.out +67 -0
- package/skills/statechart/scripts/test/corpus/CounterFan/verdict-2.out +57 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/ChartRun.out +85 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.cfg +6 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/CounterGuard.tla +13 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/chart.mmd +5 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/graph.dot +10 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/report.md +31 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-1.out +64 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterGuard/verdict-2.out +77 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPast/ChartRun.out +55 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPast/CounterInitPast.tla +10 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPast/chart.mmd +12 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPast/graph.dot +6 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPast/report.md +12 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPast/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-1.out +33 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPast/verdict-2.out +54 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/ChartRun.out +54 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/CounterInitPastHolds.tla +10 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/chart.mmd +1 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/graph.dot +6 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/report.md +7 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterInitPastHolds/verdict-1.out +46 -0
- package/skills/statechart/scripts/test/corpus/CounterInstance/ChartRun.out +59 -0
- package/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.cfg +2 -0
- package/skills/statechart/scripts/test/corpus/CounterInstance/CounterInstance.tla +10 -0
- package/skills/statechart/scripts/test/corpus/CounterInstance/CounterSteps.tla +6 -0
- package/skills/statechart/scripts/test/corpus/CounterInstance/chart.mmd +17 -0
- package/skills/statechart/scripts/test/corpus/CounterInstance/graph.dot +15 -0
- package/skills/statechart/scripts/test/corpus/CounterInstance/report.md +14 -0
- package/skills/statechart/scripts/test/corpus/CounterInstance/sany.out +3 -0
- package/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterInstance/verdict-1.out +78 -0
- package/skills/statechart/scripts/test/corpus/CounterJump/ChartRun.out +59 -0
- package/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/CounterJump/CounterJump.tla +19 -0
- package/skills/statechart/scripts/test/corpus/CounterJump/chart.mmd +26 -0
- package/skills/statechart/scripts/test/corpus/CounterJump/graph.dot +22 -0
- package/skills/statechart/scripts/test/corpus/CounterJump/report.md +12 -0
- package/skills/statechart/scripts/test/corpus/CounterJump/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterJump/verdict-1.out +58 -0
- package/skills/statechart/scripts/test/corpus/CounterJump/verdict-2.out +57 -0
- package/skills/statechart/scripts/test/corpus/CounterLoop/ChartRun.out +57 -0
- package/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.cfg +2 -0
- package/skills/statechart/scripts/test/corpus/CounterLoop/CounterLoop.tla +11 -0
- package/skills/statechart/scripts/test/corpus/CounterLoop/chart.mmd +17 -0
- package/skills/statechart/scripts/test/corpus/CounterLoop/graph.dot +15 -0
- package/skills/statechart/scripts/test/corpus/CounterLoop/report.md +14 -0
- package/skills/statechart/scripts/test/corpus/CounterLoop/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterLoop/verdict-1.out +76 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/ChartRun.out +59 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/CounterOrder.tla +11 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/chart.mmd +19 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/graph.dot +10 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/report.md +15 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-1.out +56 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterOrder/verdict-2.out +67 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/ChartRun.out +62 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.cfg +6 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/CounterRules.tla +24 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/Moves.tla +5 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/chart.mmd +22 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/graph.dot +10 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/report.md +23 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/sany.out +3 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/verdict-1.out +58 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/verdict-2.out +66 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/verdict-3.out +74 -0
- package/skills/statechart/scripts/test/corpus/CounterRules/verdict-4.out +59 -0
- package/skills/statechart/scripts/test/corpus/CounterStart/ChartRun.out +58 -0
- package/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/CounterStart/CounterStart.tla +15 -0
- package/skills/statechart/scripts/test/corpus/CounterStart/chart.mmd +18 -0
- package/skills/statechart/scripts/test/corpus/CounterStart/graph.dot +13 -0
- package/skills/statechart/scripts/test/corpus/CounterStart/report.md +11 -0
- package/skills/statechart/scripts/test/corpus/CounterStart/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterStart/verdict-1.out +33 -0
- package/skills/statechart/scripts/test/corpus/CounterStart/verdict-2.out +57 -0
- package/skills/statechart/scripts/test/corpus/CounterStop/ChartRun.out +57 -0
- package/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/CounterStop/CounterStop.tla +15 -0
- package/skills/statechart/scripts/test/corpus/CounterStop/chart.mmd +7 -0
- package/skills/statechart/scripts/test/corpus/CounterStop/graph.dot +13 -0
- package/skills/statechart/scripts/test/corpus/CounterStop/report.md +6 -0
- package/skills/statechart/scripts/test/corpus/CounterStop/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterStop/verdict-1.out +49 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/ChartRun.out +61 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.cfg +4 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/CounterTie.tla +14 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/chart.mmd +30 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/graph.dot +19 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/report.md +27 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/verdict-1.out +56 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/verdict-2.out +64 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/verdict-3.out +87 -0
- package/skills/statechart/scripts/test/corpus/CounterTie/verdict-4.out +57 -0
- package/skills/statechart/scripts/test/corpus/CounterTieInGraph/ChartRun.out +60 -0
- package/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/CounterTieInGraph/CounterTieInGraph.tla +12 -0
- package/skills/statechart/scripts/test/corpus/CounterTieInGraph/chart.mmd +23 -0
- package/skills/statechart/scripts/test/corpus/CounterTieInGraph/graph.dot +19 -0
- package/skills/statechart/scripts/test/corpus/CounterTieInGraph/report.md +11 -0
- package/skills/statechart/scripts/test/corpus/CounterTieInGraph/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-1.out +56 -0
- package/skills/statechart/scripts/test/corpus/CounterTieInGraph/verdict-2.out +57 -0
- package/skills/statechart/scripts/test/corpus/CounterView/ChartRun.out +61 -0
- package/skills/statechart/scripts/test/corpus/CounterView/CounterView.cfg +4 -0
- package/skills/statechart/scripts/test/corpus/CounterView/CounterView.tla +14 -0
- package/skills/statechart/scripts/test/corpus/CounterView/chart.mmd +23 -0
- package/skills/statechart/scripts/test/corpus/CounterView/graph.dot +19 -0
- package/skills/statechart/scripts/test/corpus/CounterView/report.md +27 -0
- package/skills/statechart/scripts/test/corpus/CounterView/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/CounterView/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterView/verdict-1.out +56 -0
- package/skills/statechart/scripts/test/corpus/CounterView/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterView/verdict-2.out +64 -0
- package/skills/statechart/scripts/test/corpus/CounterView/verdict-3.exit +1 -0
- package/skills/statechart/scripts/test/corpus/CounterView/verdict-3.out +87 -0
- package/skills/statechart/scripts/test/corpus/CounterView/verdict-4.out +57 -0
- package/skills/statechart/scripts/test/corpus/CounterView/view.mjs +1 -0
- package/skills/statechart/scripts/test/corpus/DieHard/ChartRun.out +59 -0
- package/skills/statechart/scripts/test/corpus/DieHard/DieHard.cfg +4 -0
- package/skills/statechart/scripts/test/corpus/DieHard/DieHard.tla +38 -0
- package/skills/statechart/scripts/test/corpus/DieHard/chart.mmd +92 -0
- package/skills/statechart/scripts/test/corpus/DieHard/graph.dot +126 -0
- package/skills/statechart/scripts/test/corpus/DieHard/report.md +17 -0
- package/skills/statechart/scripts/test/corpus/DieHard/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/DieHard/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/DieHard/verdict-1.out +91 -0
- package/skills/statechart/scripts/test/corpus/DieHard/verdict-2.out +57 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/ChartRun.out +61 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.cfg +6 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/FirstRule.tla +11 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/chart.mmd +22 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/graph.dot +16 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/report.md +25 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/verdict-1.out +56 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/verdict-2.out +64 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.exit +1 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/verdict-3.out +64 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.exit +1 -0
- package/skills/statechart/scripts/test/corpus/FirstRule/verdict-4.out +77 -0
- package/skills/statechart/scripts/test/corpus/HiddenClock/ChartRun.out +57 -0
- package/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.cfg +4 -0
- package/skills/statechart/scripts/test/corpus/HiddenClock/HiddenClock.tla +11 -0
- package/skills/statechart/scripts/test/corpus/HiddenClock/chart.mmd +13 -0
- package/skills/statechart/scripts/test/corpus/HiddenClock/graph.dot +12 -0
- package/skills/statechart/scripts/test/corpus/HiddenClock/report.md +11 -0
- package/skills/statechart/scripts/test/corpus/HiddenClock/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/HiddenClock/verdict-1.out +72 -0
- package/skills/statechart/scripts/test/corpus/Login/ChartRun.out +57 -0
- package/skills/statechart/scripts/test/corpus/Login/Login.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/Login/Login.tla +62 -0
- package/skills/statechart/scripts/test/corpus/Login/chart.mmd +27 -0
- package/skills/statechart/scripts/test/corpus/Login/graph.dot +40 -0
- package/skills/statechart/scripts/test/corpus/Login/report.md +7 -0
- package/skills/statechart/scripts/test/corpus/Login/sany.out +1 -0
- package/skills/statechart/scripts/test/corpus/Login/verdict-1.out +47 -0
- package/skills/statechart/scripts/test/corpus/Login/view.mjs +1 -0
- package/skills/statechart/scripts/test/corpus/LoginGuarded/ChartRun.out +57 -0
- package/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.cfg +2 -0
- package/skills/statechart/scripts/test/corpus/LoginGuarded/LoginGuarded.tla +64 -0
- package/skills/statechart/scripts/test/corpus/LoginGuarded/chart.mmd +28 -0
- package/skills/statechart/scripts/test/corpus/LoginGuarded/graph.dot +37 -0
- package/skills/statechart/scripts/test/corpus/LoginGuarded/report.md +8 -0
- package/skills/statechart/scripts/test/corpus/LoginGuarded/sany.out +1 -0
- package/skills/statechart/scripts/test/corpus/LoginGuarded/verdict-1.out +47 -0
- package/skills/statechart/scripts/test/corpus/LoginGuarded/view.mjs +1 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/ChartRun.out +60 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/LoginParallel.tla +64 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/chart.mmd +44 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/graph.dot +58 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/report.md +17 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/sany.out +1 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/verdict-1.out +83 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/verdict-2.out +57 -0
- package/skills/statechart/scripts/test/corpus/LoginParallel/view.mjs +1 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/ChartRun.out +60 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/MediaPlayer.tla +103 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/chart.mmd +43 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/graph.dot +93 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/report.md +14 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/sany.out +1 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-1.out +59 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/verdict-2.out +72 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayer/view.mjs +3 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/ChartRun.out +57 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.cfg +2 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/MediaPlayerFixed.tla +100 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/chart.mmd +31 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/graph.dot +85 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/report.md +9 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/sany.out +1 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/verdict-1.out +47 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerFixed/view.mjs +3 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/ChartRun.out +59 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayer.tla +103 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/MediaPlayerProps.tla +6 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/chart.mmd +42 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/graph.dot +93 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/report.md +19 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-1.out +61 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-2.out +59 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-3.out +61 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.exit +1 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-4.out +66 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.exit +1 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-5.out +58 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/verdict-6.out +49 -0
- package/skills/statechart/scripts/test/corpus/MediaPlayerProps/view.mjs +3 -0
- package/skills/statechart/scripts/test/corpus/PickWorker/ChartRun.out +57 -0
- package/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.cfg +6 -0
- package/skills/statechart/scripts/test/corpus/PickWorker/PickWorker.tla +11 -0
- package/skills/statechart/scripts/test/corpus/PickWorker/chart.mmd +5 -0
- package/skills/statechart/scripts/test/corpus/PickWorker/graph.dot +11 -0
- package/skills/statechart/scripts/test/corpus/PickWorker/report.md +7 -0
- package/skills/statechart/scripts/test/corpus/PickWorker/sany.out +5 -0
- package/skills/statechart/scripts/test/corpus/PickWorker/verdict-1.out +70 -0
- package/skills/statechart/scripts/test/corpus/Shadow/ChartRun.out +61 -0
- package/skills/statechart/scripts/test/corpus/Shadow/Shadow.cfg +4 -0
- package/skills/statechart/scripts/test/corpus/Shadow/Shadow.tla +11 -0
- package/skills/statechart/scripts/test/corpus/Shadow/ShadowLib.tla +6 -0
- package/skills/statechart/scripts/test/corpus/Shadow/ShadowSub.tla +3 -0
- package/skills/statechart/scripts/test/corpus/Shadow/chart.mmd +9 -0
- package/skills/statechart/scripts/test/corpus/Shadow/graph.dot +16 -0
- package/skills/statechart/scripts/test/corpus/Shadow/report.md +8 -0
- package/skills/statechart/scripts/test/corpus/Shadow/sany.out +4 -0
- package/skills/statechart/scripts/test/corpus/Shadow/verdict-1.out +65 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/ChartRun.out +59 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.cfg +2 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/SpacedNames.tla +9 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/chart.mmd +23 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/graph.dot +17 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/report.md +15 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/sany.out +1 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-1.out +65 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/SpacedNames/verdict-2.out +75 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/ChartRun.out +69 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/TwoPhase.tla +75 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/chart.mmd +60 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/graph.dot +297 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/report.md +20 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/sany.out +1 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/verdict-1.out +95 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/verdict-2.out +57 -0
- package/skills/statechart/scripts/test/corpus/TwoPhase/view.mjs +1 -0
- package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/ChartRun.out +57 -0
- package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.cfg +3 -0
- package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/TwoPhaseFixed.tla +75 -0
- package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/chart.mmd +37 -0
- package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/graph.dot +223 -0
- package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/report.md +11 -0
- package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/sany.out +1 -0
- package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/verdict-1.out +47 -0
- package/skills/statechart/scripts/test/corpus/TwoPhaseFixed/view.mjs +1 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.exit +1 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/ChartRun.out +75 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.cfg +5 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/TypeGuard.tla +11 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/chart.mmd +18 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/graph.dot +14 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/report.md +29 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-1.out +64 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/TypeGuard/verdict-2.out +75 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/ChartRun.out +58 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.cfg +2 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/UserNoDeadlock.tla +8 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/chart.mmd +22 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/graph.dot +16 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/report.md +15 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/sany.out +2 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.exit +1 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-1.out +56 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.exit +1 -0
- package/skills/statechart/scripts/test/corpus/UserNoDeadlock/verdict-2.out +77 -0
- package/skills/statechart/scripts/test/corpus.test.ts +403 -0
- package/skills/statechart/scripts/test/differential.test.ts +565 -0
- package/skills/statechart/scripts/test/grid/Grid.cfg +2 -0
- package/skills/statechart/scripts/test/grid/Grid.tla +9 -0
- package/skills/statechart/scripts/test/grid/sany.out +2 -0
- package/skills/statechart/scripts/test/java.ts +63 -0
- package/skills/statechart/scripts/test/labels.ts +643 -0
- package/skills/statechart/scripts/test/messages.test.ts +212 -0
- package/skills/statechart/scripts/test/pipeline.test.ts +270 -0
- package/skills/statechart/scripts/test/plain-tlc.test.ts +255 -0
- package/skills/statechart/scripts/test/regions.mmd +62 -0
- package/skills/statechart/scripts/test/render.test.ts +81 -0
- package/skills/statechart/scripts/test/statechart.test.mjs +6854 -0
- package/skills/statechart/scripts/test/sync.mmd +19 -0
- package/skills/statechart/scripts/test/tlc-out.test.ts +90 -0
- package/skills/statechart/scripts/test/tlc.ts +158 -0
- package/skills/statechart/scripts/test/upload.mmd +16 -0
- package/skills/statechart/scripts/tlc-to-chart-args.mjs +52 -0
- package/skills/statechart/scripts/tlc-to-chart.mjs +802 -0
- package/skills/statechart/scripts/tlc-tools.mjs +69 -0
- package/skills/statechart/scripts/tsconfig.json +11 -0
- package/skills/statechart/scripts/ways-in.mjs +69 -0
- package/skills/statechart/scripts/worker.ts +35 -0
- package/skills/swarm/SKILL.md +91 -0
- package/skills/tdd/SKILL.md +92 -0
- package/skills/teach/SKILL.md +71 -0
- package/skills/technical-writing/SKILL.md +156 -0
- package/skills/typescript-best-practices/SKILL.md +81 -0
- package/skills/typescript-best-practices/references/patterns.md +328 -0
- package/skills/unslop/SKILL.md +112 -0
- package/skills/why/SKILL.md +148 -0
- package/skills/why/references/epistemics.md +71 -0
- package/skills/why/references/investigator-prompt.md +84 -0
- package/skills/why/references/source-playbook.md +17 -0
- package/skills/why/references/sources/analytics.md +5 -0
- package/skills/why/references/sources/code-archaeology.md +51 -0
- package/skills/why/references/sources/databricks.md +70 -0
- package/skills/why/references/sources/datadog.md +97 -0
- package/skills/why/references/sources/documents.md +5 -0
- package/skills/why/references/sources/errors.md +5 -0
- package/skills/why/references/sources/incident-postmortem.md +5 -0
- package/skills/why/references/sources/issues.md +5 -0
- package/skills/why/references/sources/linear.md +48 -0
- package/skills/why/references/sources/notion.md +55 -0
- package/skills/why/references/sources/observability.md +5 -0
- package/skills/why/references/sources/sentry.md +66 -0
- package/skills/why/references/sources/slack.md +17 -0
- package/skills/why/references/sources/source-control.md +5 -0
- package/skills/why/references/sources/team-chat.md +5 -0
- package/skills/why/references/synthesizer-prompt.md +129 -0
- package/src/agent/candidates.ts +60 -0
- package/src/agent/grep-worker.mjs +46 -0
- package/src/agent/host.ts +455 -0
- package/src/agent/isolation.ts +14 -0
- package/src/agent/outcome.ts +18 -0
- package/src/agent/profiles.ts +133 -0
- package/src/agent/read-only-tools.ts +129 -0
- package/src/agent/resources.ts +66 -0
- package/src/api.ts +19 -0
- package/src/artifacts/fingerprint.ts +58 -0
- package/src/compatibility/adapter.ts +94 -0
- package/src/compatibility/source.ts +30 -0
- package/src/compatibility/tool.ts +47 -0
- package/src/context/snapshot.ts +12 -0
- package/src/contracts/brief.ts +144 -0
- package/src/contracts/types.ts +57 -0
- package/src/delivery/frontier.ts +87 -0
- package/src/delivery/git.ts +9 -0
- package/src/delivery/prepare.ts +23 -0
- package/src/delivery/provider.ts +41 -0
- package/src/delivery/review-threads.ts +28 -0
- package/src/delivery/stack.ts +76 -0
- package/src/extension.ts +281 -0
- package/src/loop/scheduler.ts +334 -0
- package/src/loop/store.ts +66 -0
- package/src/models/router.ts +171 -0
- package/src/program/coordinator.ts +122 -0
- package/src/program/dispatch.ts +83 -0
- package/src/runner/cli.mjs +46 -0
- package/src/runner/lease.ts +17 -0
- package/src/runner/service.ts +37 -0
- package/src/runtime/checkout.ts +19 -0
- package/src/runtime/config.ts +49 -0
- package/src/runtime/errors.ts +12 -0
- package/src/runtime/home.ts +17 -0
- package/src/runtime/lock.ts +101 -0
- package/src/runtime/migrate.ts +29 -0
- package/src/runtime/ownership.ts +6 -0
- package/src/runtime/protocol.ts +35 -0
- package/src/runtime/redact.ts +34 -0
- package/src/runtime/store.ts +50 -0
- package/src/runtime/transaction.ts +41 -0
- package/src/runtime/types.ts +203 -0
- package/src/runtime/upstream.ts +7 -0
- package/src/setup/command.ts +331 -0
- package/src/telemetry/metrics.ts +11 -0
- package/src/templates/build.ts +172 -0
- package/src/tools/agents.ts +62 -0
- package/src/tools/graph.ts +37 -0
- package/src/tools/protocol.ts +53 -0
- package/src/tools/schema.ts +9 -0
- package/src/tools/workflow.ts +103 -0
- package/src/tools/worktrees.ts +39 -0
- package/src/verification/process.mjs +9 -0
- package/src/verification/runner.ts +148 -0
- package/src/workflow/artifacts.ts +97 -0
- package/src/workflow/engine.ts +631 -0
- package/src/workflow/graph.ts +53 -0
- package/src/worktree/manager.ts +60 -0
- package/src/worktree/snapshot.ts +35 -0
- package/test/baseline-owner.test.ts +122 -0
- package/test/benchmark.test.ts +81 -0
- package/test/cancellation.test.ts +92 -0
- package/test/candidate-port.test.ts +18 -0
- package/test/check-plan.test.ts +99 -0
- package/test/checkout.test.ts +19 -0
- package/test/delivery-stack.test.ts +106 -0
- package/test/dispatch.test.ts +171 -0
- package/test/e2e/fixture-child.mjs +33 -0
- package/test/e2e/harness.ts +282 -0
- package/test/e2e/offline.test.ts +153 -0
- package/test/e2e/parent-context.ts +66 -0
- package/test/e2e/reported-defects.test.ts +85 -0
- package/test/e2e/shipping.test.ts +204 -0
- package/test/e2e/workflow.test.ts +408 -0
- package/test/fixtures/loop-execution-lock-holder.mjs +38 -0
- package/test/fixtures/loop-lock-holder.mjs +31 -0
- package/test/fixtures/loop-scheduler-worker.mjs +95 -0
- package/test/fixtures/semantics/scenarios.json +18 -0
- package/test/fixtures/verification-crash-worker.mjs +5 -0
- package/test/graph.test.ts +23 -0
- package/test/isolation.test.ts +21 -0
- package/test/latest-upstream.test.ts +41 -0
- package/test/live/command-probe-child.mjs +22 -0
- package/test/live/command-probe-loader.mjs +8 -0
- package/test/live/command-probe-register.mjs +12 -0
- package/test/live/github-live.test.ts +107 -0
- package/test/live/guard.ts +70 -0
- package/test/lock.test.ts +76 -0
- package/test/loop-scheduler.test.ts +460 -0
- package/test/loop.test.ts +60 -0
- package/test/ml-development.test.ts +65 -0
- package/test/model-panels.test.ts +237 -0
- package/test/model-router.test.ts +124 -0
- package/test/outcome.test.ts +31 -0
- package/test/protocol.test.ts +350 -0
- package/test/read-only-tools.test.ts +86 -0
- package/test/real-sdk-integration.test.ts +183 -0
- package/test/redaction.test.ts +66 -0
- package/test/resources.test.ts +42 -0
- package/test/review-snapshot.test.ts +48 -0
- package/test/semantic-compatibility.test.ts +121 -0
- package/test/setup-command.test.ts +212 -0
- package/test/setup-rpc.test.ts +68 -0
- package/test/smoke-installed-package.mjs +119 -0
- package/test/statechart.test.ts +25 -0
- package/test/store.test.ts +35 -0
- package/test/swarm-race.test.ts +50 -0
- package/test/tool-ownership.test.ts +59 -0
- package/test/transaction.test.ts +89 -0
- package/test/verification.test.ts +295 -0
- package/test/workflow.test.ts +408 -0
- package/test/worktree.test.ts +39 -0
- package/tsconfig.build.json +12 -0
- package/tsconfig.json +17 -0
- package/vendor/upstream/0.15.17/pstack/LICENSE +21 -0
- package/vendor/upstream/0.15.17/pstack/skills/architect/SKILL.md +79 -0
- package/vendor/upstream/0.15.17/pstack/skills/architect/references/design-red-flags.md +57 -0
- package/vendor/upstream/0.15.17/pstack/skills/architect/references/rationale-template.md +35 -0
- package/vendor/upstream/0.15.17/pstack/skills/architect/references/runner-prompt.md +20 -0
- package/vendor/upstream/0.15.17/pstack/skills/arena/SKILL.md +48 -0
- package/vendor/upstream/0.15.17/pstack/skills/automate-me/SKILL.md +104 -0
- package/vendor/upstream/0.15.17/pstack/skills/benchmark-checklist/SKILL.md +39 -0
- package/vendor/upstream/0.15.17/pstack/skills/blast-radius/SKILL.md +50 -0
- package/vendor/upstream/0.15.17/pstack/skills/bro/SKILL.md +7 -0
- package/vendor/upstream/0.15.17/pstack/skills/correct/SKILL.md +32 -0
- package/vendor/upstream/0.15.17/pstack/skills/create-verification-skill/SKILL.md +44 -0
- package/vendor/upstream/0.15.17/pstack/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
- package/vendor/upstream/0.15.17/pstack/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
- package/vendor/upstream/0.15.17/pstack/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
- package/vendor/upstream/0.15.17/pstack/skills/figure-it-out/SKILL.md +52 -0
- package/vendor/upstream/0.15.17/pstack/skills/how/SKILL.md +36 -0
- package/vendor/upstream/0.15.17/pstack/skills/how/references/explainer-prompt.md +55 -0
- package/vendor/upstream/0.15.17/pstack/skills/how/references/explorer-prompt.md +52 -0
- package/vendor/upstream/0.15.17/pstack/skills/interrogate/SKILL.md +74 -0
- package/vendor/upstream/0.15.17/pstack/skills/interrogate/references/code-quality-review.md +47 -0
- package/vendor/upstream/0.15.17/pstack/skills/interrogate/references/lead-judgment.md +58 -0
- package/vendor/upstream/0.15.17/pstack/skills/interrogate/references/reviewer-prompt.md +62 -0
- package/vendor/upstream/0.15.17/pstack/skills/interrogate/references/rubric.md +77 -0
- package/vendor/upstream/0.15.17/pstack/skills/ketchup/SKILL.md +23 -0
- package/vendor/upstream/0.15.17/pstack/skills/maintain-verification-skill/SKILL.md +39 -0
- package/vendor/upstream/0.15.17/pstack/skills/make-bot-ui/SKILL.md +115 -0
- package/vendor/upstream/0.15.17/pstack/skills/no-comments/SKILL.md +24 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-help/SKILL.md +154 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-help/references/prompting.md +51 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-help/references/recipes.md +47 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/SKILL.md +147 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/authoring-a-skill.md +12 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/autonomous-run.md +13 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/autopilot-full.md +13 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/autopilot-stack.md +16 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/babysit.md +27 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/bug-fix.md +15 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/eval.md +25 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/feature.md +21 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/hillclimb.md +21 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/investigation.md +14 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/multi-phase-plan.md +155 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/opening-a-pr.md +34 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/orchestrate.md +111 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/pause-safely.md +10 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/perf-issue.md +25 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/prototype.md +14 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/refactoring.md +16 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/session-pickup.md +11 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/shipping.md +17 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/visual-parity.md +11 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/playbooks/worktree-cleanup.md +14 -0
- package/vendor/upstream/0.15.17/pstack/skills/poteto-mode/references/bugbot-triage.md +142 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-attack-the-premise/SKILL.md +23 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-boundary-discipline/SKILL.md +34 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-build-the-lever/SKILL.md +23 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-encode-lessons-in-structure/SKILL.md +28 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-exhaust-the-design-space/SKILL.md +21 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-experience-first/SKILL.md +19 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-explain-the-number/SKILL.md +17 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-fix-root-causes/SKILL.md +23 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-foundational-thinking/SKILL.md +21 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-guard-the-context-window/SKILL.md +16 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-laziness-protocol/SKILL.md +18 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-make-operations-idempotent/SKILL.md +24 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +22 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-minimize-reader-load/SKILL.md +18 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-model-the-domain/SKILL.md +24 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-never-block-on-the-human/SKILL.md +15 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-outcome-oriented-execution/SKILL.md +21 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-prove-it-works/SKILL.md +22 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-redesign-from-first-principles/SKILL.md +16 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-separate-before-serializing-shared-state/SKILL.md +16 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-sequence-verifiable-units/SKILL.md +17 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-subtract-before-you-add/SKILL.md +18 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-test-behavior-not-implementation/SKILL.md +21 -0
- package/vendor/upstream/0.15.17/pstack/skills/principle-type-system-discipline/SKILL.md +18 -0
- package/vendor/upstream/0.15.17/pstack/skills/recall/SKILL.md +35 -0
- package/vendor/upstream/0.15.17/pstack/skills/reflect/SKILL.md +67 -0
- package/vendor/upstream/0.15.17/pstack/skills/reflect/references/divergent-reviewer.md +38 -0
- package/vendor/upstream/0.15.17/pstack/skills/reflect/references/judgment-reviewer.md +37 -0
- package/vendor/upstream/0.15.17/pstack/skills/reflect/references/synthesizer.md +56 -0
- package/vendor/upstream/0.15.17/pstack/skills/reflect/references/tooling-reviewer.md +48 -0
- package/vendor/upstream/0.15.17/pstack/skills/setup-pstack/SKILL.md +74 -0
- package/vendor/upstream/0.15.17/pstack/skills/show-me-your-work/SKILL.md +82 -0
- package/vendor/upstream/0.15.17/pstack/skills/swarm/SKILL.md +46 -0
- package/vendor/upstream/0.15.17/pstack/skills/tdd/SKILL.md +42 -0
- package/vendor/upstream/0.15.17/pstack/skills/teach/SKILL.md +21 -0
- package/vendor/upstream/0.15.17/pstack/skills/technical-writing/SKILL.md +106 -0
- package/vendor/upstream/0.15.17/pstack/skills/typescript-best-practices/SKILL.md +31 -0
- package/vendor/upstream/0.15.17/pstack/skills/typescript-best-practices/references/patterns.md +324 -0
- package/vendor/upstream/0.15.17/pstack/skills/unslop/SKILL.md +62 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/SKILL.md +98 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/epistemics.md +71 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/investigator-prompt.md +84 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/source-playbook.md +17 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/code-archaeology.md +86 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/databricks.md +70 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/datadog.md +97 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/incident-postmortem.md +15 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/linear.md +48 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/notion.md +55 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/sentry.md +96 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/sources/slack.md +54 -0
- package/vendor/upstream/0.15.17/pstack/skills/why/references/synthesizer-prompt.md +129 -0
- package/vendor/upstream/0.15.32/pstack/.cursor-plugin/plugin.json +31 -0
- package/vendor/upstream/0.15.32/pstack/LICENSE +21 -0
- package/vendor/upstream/0.15.32/pstack/skills/architect/SKILL.md +79 -0
- package/vendor/upstream/0.15.32/pstack/skills/architect/references/design-red-flags.md +57 -0
- package/vendor/upstream/0.15.32/pstack/skills/architect/references/rationale-template.md +35 -0
- package/vendor/upstream/0.15.32/pstack/skills/architect/references/runner-prompt.md +20 -0
- package/vendor/upstream/0.15.32/pstack/skills/arena/SKILL.md +48 -0
- package/vendor/upstream/0.15.32/pstack/skills/automate-me/SKILL.md +104 -0
- package/vendor/upstream/0.15.32/pstack/skills/benchmark-checklist/SKILL.md +39 -0
- package/vendor/upstream/0.15.32/pstack/skills/blast-radius/SKILL.md +50 -0
- package/vendor/upstream/0.15.32/pstack/skills/bro/SKILL.md +7 -0
- package/vendor/upstream/0.15.32/pstack/skills/correct/SKILL.md +32 -0
- package/vendor/upstream/0.15.32/pstack/skills/create-formal-verification-skill/SKILL.md +43 -0
- package/vendor/upstream/0.15.32/pstack/skills/create-verification-skill/SKILL.md +44 -0
- package/vendor/upstream/0.15.32/pstack/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
- package/vendor/upstream/0.15.32/pstack/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
- package/vendor/upstream/0.15.32/pstack/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
- package/vendor/upstream/0.15.32/pstack/skills/figure-it-out/SKILL.md +52 -0
- package/vendor/upstream/0.15.32/pstack/skills/how/SKILL.md +36 -0
- package/vendor/upstream/0.15.32/pstack/skills/how/references/explainer-prompt.md +55 -0
- package/vendor/upstream/0.15.32/pstack/skills/how/references/explorer-prompt.md +35 -0
- package/vendor/upstream/0.15.32/pstack/skills/in-your-own-words/SKILL.md +7 -0
- package/vendor/upstream/0.15.32/pstack/skills/interrogate/SKILL.md +74 -0
- package/vendor/upstream/0.15.32/pstack/skills/interrogate/references/code-quality-review.md +47 -0
- package/vendor/upstream/0.15.32/pstack/skills/interrogate/references/lead-judgment.md +39 -0
- package/vendor/upstream/0.15.32/pstack/skills/interrogate/references/reviewer-prompt.md +62 -0
- package/vendor/upstream/0.15.32/pstack/skills/interrogate/references/rubric.md +77 -0
- package/vendor/upstream/0.15.32/pstack/skills/ketchup/SKILL.md +43 -0
- package/vendor/upstream/0.15.32/pstack/skills/ketchup-video/SKILL.md +23 -0
- package/vendor/upstream/0.15.32/pstack/skills/maintain-formal-verification-skill/SKILL.md +58 -0
- package/vendor/upstream/0.15.32/pstack/skills/maintain-verification-skill/SKILL.md +39 -0
- package/vendor/upstream/0.15.32/pstack/skills/make-bot-ui/SKILL.md +115 -0
- package/vendor/upstream/0.15.32/pstack/skills/no-comments/SKILL.md +24 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-help/SKILL.md +163 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-help/references/prompting.md +51 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-help/references/recipes.md +51 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/SKILL.md +149 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/authoring-a-skill.md +12 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/autonomous-run.md +13 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/autopilot-full.md +25 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/autopilot-stack.md +12 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/babysit.md +23 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/bug-fix.md +15 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/eval.md +25 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/feature.md +21 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/hillclimb.md +21 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/investigation.md +14 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/multi-phase-plan.md +155 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/opening-a-pr.md +34 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/orchestrate.md +112 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/pause-safely.md +10 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/perf-issue.md +25 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/prototype.md +14 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/refactoring.md +16 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/session-pickup.md +11 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/shipping.md +12 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/visual-parity.md +11 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/playbooks/worktree-cleanup.md +12 -0
- package/vendor/upstream/0.15.32/pstack/skills/poteto-mode/references/bugbot-triage.md +142 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-attack-the-premise/SKILL.md +21 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-boundary-discipline/SKILL.md +34 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-build-the-lever/SKILL.md +23 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-encode-lessons-in-structure/SKILL.md +11 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-exhaust-the-design-space/SKILL.md +9 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-experience-first/SKILL.md +19 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-explain-the-number/SKILL.md +17 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-fix-root-causes/SKILL.md +21 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-foundational-thinking/SKILL.md +21 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-guard-the-context-window/SKILL.md +12 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-laziness-protocol/SKILL.md +10 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-make-operations-idempotent/SKILL.md +22 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +14 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-minimize-reader-load/SKILL.md +18 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-model-the-domain/SKILL.md +24 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-never-block-on-the-human/SKILL.md +15 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-outcome-oriented-execution/SKILL.md +21 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-prove-it-works/SKILL.md +22 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-redesign-from-first-principles/SKILL.md +16 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-separate-before-serializing-shared-state/SKILL.md +16 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-sequence-verifiable-units/SKILL.md +17 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-subtract-before-you-add/SKILL.md +18 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-test-behavior-not-implementation/SKILL.md +20 -0
- package/vendor/upstream/0.15.32/pstack/skills/principle-type-system-discipline/SKILL.md +13 -0
- package/vendor/upstream/0.15.32/pstack/skills/recall/SKILL.md +35 -0
- package/vendor/upstream/0.15.32/pstack/skills/reflect/SKILL.md +69 -0
- package/vendor/upstream/0.15.32/pstack/skills/reflect/references/divergent-reviewer.md +38 -0
- package/vendor/upstream/0.15.32/pstack/skills/reflect/references/judgment-reviewer.md +37 -0
- package/vendor/upstream/0.15.32/pstack/skills/reflect/references/synthesizer.md +56 -0
- package/vendor/upstream/0.15.32/pstack/skills/reflect/references/tooling-reviewer.md +48 -0
- package/vendor/upstream/0.15.32/pstack/skills/setup-pstack/SKILL.md +78 -0
- package/vendor/upstream/0.15.32/pstack/skills/sharpen/SKILL.md +16 -0
- package/vendor/upstream/0.15.32/pstack/skills/show-me-your-work/SKILL.md +82 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/SKILL.md +36 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/bug-states.mjs +81 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/chart-edges.mjs +68 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/chart-parts.mjs +21 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/chart-to-tla.mjs +205 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/compare-charts.mjs +74 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/lib.mjs +970 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/map-view.mjs +92 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/property-loop.mjs +60 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/read-check.mjs +79 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/regions-chart.mjs +307 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/render.mjs +531 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/rule-book.mjs +84 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/second-replay.mjs +122 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/snapshot.mjs +74 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/spec-text.mjs +126 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/statechart-help.mjs +350 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/statechart.mjs +903 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/test/band.mmd +15 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/test/regions.mmd +62 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/test/statechart.test.mjs +6854 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/test/sync.mmd +19 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/test/upload.mmd +16 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/tlc-to-chart-args.mjs +52 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/tlc-to-chart.mjs +802 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/tlc-tools.mjs +69 -0
- package/vendor/upstream/0.15.32/pstack/skills/statechart/scripts/ways-in.mjs +69 -0
- package/vendor/upstream/0.15.32/pstack/skills/swarm/SKILL.md +41 -0
- package/vendor/upstream/0.15.32/pstack/skills/tdd/SKILL.md +42 -0
- package/vendor/upstream/0.15.32/pstack/skills/teach/SKILL.md +21 -0
- package/vendor/upstream/0.15.32/pstack/skills/technical-writing/SKILL.md +106 -0
- package/vendor/upstream/0.15.32/pstack/skills/typescript-best-practices/SKILL.md +31 -0
- package/vendor/upstream/0.15.32/pstack/skills/typescript-best-practices/references/patterns.md +328 -0
- package/vendor/upstream/0.15.32/pstack/skills/unslop/SKILL.md +62 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/SKILL.md +98 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/epistemics.md +71 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/investigator-prompt.md +84 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/source-playbook.md +17 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/code-archaeology.md +51 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/databricks.md +70 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/datadog.md +97 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/incident-postmortem.md +5 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/linear.md +48 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/notion.md +55 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/sentry.md +66 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/sources/slack.md +17 -0
- package/vendor/upstream/0.15.32/pstack/skills/why/references/synthesizer-prompt.md +129 -0
- package/vendor/upstream/0.15.36/pstack/.cursor-plugin/plugin.json +31 -0
- package/vendor/upstream/0.15.36/pstack/LICENSE +21 -0
- package/vendor/upstream/0.15.36/pstack/skills/architect/SKILL.md +79 -0
- package/vendor/upstream/0.15.36/pstack/skills/architect/references/design-red-flags.md +57 -0
- package/vendor/upstream/0.15.36/pstack/skills/architect/references/rationale-template.md +35 -0
- package/vendor/upstream/0.15.36/pstack/skills/architect/references/runner-prompt.md +20 -0
- package/vendor/upstream/0.15.36/pstack/skills/arena/SKILL.md +48 -0
- package/vendor/upstream/0.15.36/pstack/skills/automate-me/SKILL.md +104 -0
- package/vendor/upstream/0.15.36/pstack/skills/benchmark-checklist/SKILL.md +39 -0
- package/vendor/upstream/0.15.36/pstack/skills/blast-radius/SKILL.md +50 -0
- package/vendor/upstream/0.15.36/pstack/skills/bro/SKILL.md +7 -0
- package/vendor/upstream/0.15.36/pstack/skills/correct/SKILL.md +32 -0
- package/vendor/upstream/0.15.36/pstack/skills/create-formal-verification-skill/SKILL.md +43 -0
- package/vendor/upstream/0.15.36/pstack/skills/create-verification-skill/SKILL.md +44 -0
- package/vendor/upstream/0.15.36/pstack/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
- package/vendor/upstream/0.15.36/pstack/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
- package/vendor/upstream/0.15.36/pstack/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
- package/vendor/upstream/0.15.36/pstack/skills/figure-it-out/SKILL.md +52 -0
- package/vendor/upstream/0.15.36/pstack/skills/how/SKILL.md +36 -0
- package/vendor/upstream/0.15.36/pstack/skills/how/references/explainer-prompt.md +55 -0
- package/vendor/upstream/0.15.36/pstack/skills/how/references/explorer-prompt.md +35 -0
- package/vendor/upstream/0.15.36/pstack/skills/in-your-own-words/SKILL.md +7 -0
- package/vendor/upstream/0.15.36/pstack/skills/interrogate/SKILL.md +31 -0
- package/vendor/upstream/0.15.36/pstack/skills/ketchup/SKILL.md +43 -0
- package/vendor/upstream/0.15.36/pstack/skills/ketchup-video/SKILL.md +29 -0
- package/vendor/upstream/0.15.36/pstack/skills/maintain-formal-verification-skill/SKILL.md +58 -0
- package/vendor/upstream/0.15.36/pstack/skills/maintain-verification-skill/SKILL.md +39 -0
- package/vendor/upstream/0.15.36/pstack/skills/make-bot-ui/SKILL.md +115 -0
- package/vendor/upstream/0.15.36/pstack/skills/no-comments/SKILL.md +24 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-help/SKILL.md +163 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-help/references/prompting.md +51 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-help/references/recipes.md +51 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/SKILL.md +150 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/authoring-a-skill.md +12 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/autonomous-run.md +13 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/autopilot-full.md +25 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/autopilot-stack.md +8 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/babysit.md +23 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/bug-fix.md +15 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/eval.md +25 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/feature.md +21 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/hillclimb.md +21 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/investigation.md +14 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/multi-phase-plan.md +155 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/opening-a-pr.md +34 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/orchestrate.md +25 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/pause-safely.md +10 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/perf-issue.md +25 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/prototype.md +14 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/refactoring.md +16 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/session-pickup.md +11 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/shipping.md +12 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/visual-parity.md +11 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/playbooks/worktree-cleanup.md +12 -0
- package/vendor/upstream/0.15.36/pstack/skills/poteto-mode/references/bugbot-triage.md +142 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-attack-the-premise/SKILL.md +21 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-boundary-discipline/SKILL.md +34 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-build-the-lever/SKILL.md +23 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-encode-lessons-in-structure/SKILL.md +11 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-exhaust-the-design-space/SKILL.md +9 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-experience-first/SKILL.md +19 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-explain-the-number/SKILL.md +18 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-fix-root-causes/SKILL.md +21 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-foundational-thinking/SKILL.md +21 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-guard-the-context-window/SKILL.md +12 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-laziness-protocol/SKILL.md +10 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-make-operations-idempotent/SKILL.md +22 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +14 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-minimize-reader-load/SKILL.md +18 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-model-the-domain/SKILL.md +24 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-never-block-on-the-human/SKILL.md +15 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-outcome-oriented-execution/SKILL.md +21 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-prove-it-works/SKILL.md +22 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-redesign-from-first-principles/SKILL.md +16 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-separate-before-serializing-shared-state/SKILL.md +16 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-sequence-verifiable-units/SKILL.md +17 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-subtract-before-you-add/SKILL.md +18 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-test-behavior-not-implementation/SKILL.md +20 -0
- package/vendor/upstream/0.15.36/pstack/skills/principle-type-system-discipline/SKILL.md +13 -0
- package/vendor/upstream/0.15.36/pstack/skills/recall/SKILL.md +35 -0
- package/vendor/upstream/0.15.36/pstack/skills/reflect/SKILL.md +69 -0
- package/vendor/upstream/0.15.36/pstack/skills/reflect/references/divergent-reviewer.md +38 -0
- package/vendor/upstream/0.15.36/pstack/skills/reflect/references/judgment-reviewer.md +37 -0
- package/vendor/upstream/0.15.36/pstack/skills/reflect/references/synthesizer.md +56 -0
- package/vendor/upstream/0.15.36/pstack/skills/reflect/references/tooling-reviewer.md +48 -0
- package/vendor/upstream/0.15.36/pstack/skills/setup-pstack/SKILL.md +78 -0
- package/vendor/upstream/0.15.36/pstack/skills/sharpen/SKILL.md +16 -0
- package/vendor/upstream/0.15.36/pstack/skills/show-me-your-work/SKILL.md +82 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/SKILL.md +82 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/references/render.md +93 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/backends/cfg.ts +33 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/backends/mermaid.ts +201 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/backends/plain-text.ts +72 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/backends/report.ts +177 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/config.ts +276 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/dot.ts +74 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/marks.ts +93 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/messages.ts +52 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/spec.ts +114 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/trace.ts +24 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/value.ts +166 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/verdict.ts +40 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/frontends/view.ts +119 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/ir.ts +547 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/package.json +11 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/annotate.ts +128 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/label.ts +269 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/lift.ts +85 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/loop-check.ts +68 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/paths.ts +60 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/reach.ts +135 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/region-check.ts +97 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/passes/regions.ts +295 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/pipeline.ts +76 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/run.ts +481 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/statechart +29 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/statechart.ts +164 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/tsconfig.json +11 -0
- package/vendor/upstream/0.15.36/pstack/skills/statechart/scripts/worker.ts +35 -0
- package/vendor/upstream/0.15.36/pstack/skills/swarm/SKILL.md +41 -0
- package/vendor/upstream/0.15.36/pstack/skills/tdd/SKILL.md +42 -0
- package/vendor/upstream/0.15.36/pstack/skills/teach/SKILL.md +21 -0
- package/vendor/upstream/0.15.36/pstack/skills/technical-writing/SKILL.md +106 -0
- package/vendor/upstream/0.15.36/pstack/skills/typescript-best-practices/SKILL.md +31 -0
- package/vendor/upstream/0.15.36/pstack/skills/typescript-best-practices/references/patterns.md +328 -0
- package/vendor/upstream/0.15.36/pstack/skills/unslop/SKILL.md +62 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/SKILL.md +98 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/epistemics.md +71 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/investigator-prompt.md +84 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/source-playbook.md +17 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/code-archaeology.md +51 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/databricks.md +70 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/datadog.md +97 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/incident-postmortem.md +5 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/linear.md +48 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/notion.md +55 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/sentry.md +66 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/sources/slack.md +17 -0
- package/vendor/upstream/0.15.36/pstack/skills/why/references/synthesizer-prompt.md +129 -0
package/PRD.md
ADDED
|
@@ -0,0 +1,2131 @@
|
|
|
1
|
+
# pi-pstack-native PRD
|
|
2
|
+
|
|
3
|
+
> Package name: `2333`
|
|
4
|
+
> Project name: `pi-pstack-native`
|
|
5
|
+
> Target release: `0.3.0`
|
|
6
|
+
> Document type: Product Requirements Document / Engineering Specification
|
|
7
|
+
> Status: Draft for implementation
|
|
8
|
+
> Baseline date: 2026-10-10
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Executive summary
|
|
13
|
+
|
|
14
|
+
`pi-pstack-native` is a Pi-native implementation of the pstack workflow model.
|
|
15
|
+
|
|
16
|
+
The project does **not** attempt to emulate Cursor internals or mechanically translate every Cursor API call. Instead, it preserves the **behavioral semantics** of pstack while rebuilding the execution runtime directly on top of official Pi packages.
|
|
17
|
+
|
|
18
|
+
The target architecture removes all non-official runtime dependencies.
|
|
19
|
+
|
|
20
|
+
The only allowed runtime dependencies are packages from the official Pi namespace, primarily:
|
|
21
|
+
|
|
22
|
+
- `@earendil-works/pi-coding-agent`
|
|
23
|
+
- `@earendil-works/pi-durable`
|
|
24
|
+
- `@earendil-works/pi-ai` when direct model/runtime access is required
|
|
25
|
+
- `@earendil-works/pi-tui` when custom TUI surfaces are required
|
|
26
|
+
|
|
27
|
+
The following existing dependencies are removed from the runtime:
|
|
28
|
+
|
|
29
|
+
- `@whamp/pi-pstack`
|
|
30
|
+
- `pi-subagents`
|
|
31
|
+
- `pi-durable-subagents`
|
|
32
|
+
- `pi-agents`
|
|
33
|
+
- any third-party workflow, orchestration, graph, scheduler, or worktree runtime
|
|
34
|
+
|
|
35
|
+
The project still treats the official Cursor pstack implementation as an **upstream product specification and content source**, subject to its license and attribution requirements.
|
|
36
|
+
|
|
37
|
+
The goal is:
|
|
38
|
+
|
|
39
|
+
> Reproduce the useful semantics of pstack using native Pi primitives, with stronger durability, explicit runtime state, reproducible upstream synchronization, and no third-party runtime dependency chain.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
# 2. Product vision
|
|
44
|
+
|
|
45
|
+
## 2.1 Problem
|
|
46
|
+
|
|
47
|
+
pstack is designed around Cursor-specific features such as:
|
|
48
|
+
|
|
49
|
+
- Cursor Task/subagent execution
|
|
50
|
+
- model rule files
|
|
51
|
+
- Custom Modes
|
|
52
|
+
- Cursor session/transcript conventions
|
|
53
|
+
- cloud agents
|
|
54
|
+
- `/loop`
|
|
55
|
+
- Cursor-specific automation facilities
|
|
56
|
+
- Cursor-specific slash command behavior
|
|
57
|
+
|
|
58
|
+
Directly copying pstack into Pi therefore creates several problems:
|
|
59
|
+
|
|
60
|
+
1. Some instructions point at APIs Pi does not expose.
|
|
61
|
+
2. Some workflows silently degrade.
|
|
62
|
+
3. Third-party ports introduce additional abstractions and version drift.
|
|
63
|
+
4. Package version numbers do not clearly communicate upstream pstack compatibility.
|
|
64
|
+
5. Long-running workflows need explicit crash recovery and durable state.
|
|
65
|
+
6. Parallel agents require isolation and dependency-aware scheduling.
|
|
66
|
+
7. Upstream synchronization becomes manual and difficult to audit.
|
|
67
|
+
|
|
68
|
+
`pi-pstack-native` solves these by separating:
|
|
69
|
+
|
|
70
|
+
- **pstack semantics**
|
|
71
|
+
- **Pi-native execution**
|
|
72
|
+
- **upstream content synchronization**
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 2.2 Product statement
|
|
77
|
+
|
|
78
|
+
`pi-pstack-native` is:
|
|
79
|
+
|
|
80
|
+
> A durable, Pi-native execution environment for pstack workflows, implemented directly on official Pi APIs.
|
|
81
|
+
|
|
82
|
+
It should feel like pstack to the operator:
|
|
83
|
+
|
|
84
|
+
- `/poteto-mode`
|
|
85
|
+
- playbook routing
|
|
86
|
+
- engineering principles
|
|
87
|
+
- parallel workers
|
|
88
|
+
- review panels
|
|
89
|
+
- orchestrated execution
|
|
90
|
+
- durable unattended work
|
|
91
|
+
- model-role routing
|
|
92
|
+
- verification-first behavior
|
|
93
|
+
|
|
94
|
+
But internally it should behave like a native Pi system.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
# 3. Goals
|
|
99
|
+
|
|
100
|
+
## 3.1 Primary goals
|
|
101
|
+
|
|
102
|
+
### G1. Semantic pstack parity
|
|
103
|
+
|
|
104
|
+
Implement the behavior of upstream pstack workflows as faithfully as practical.
|
|
105
|
+
|
|
106
|
+
Parity is defined by behavior, not implementation details.
|
|
107
|
+
|
|
108
|
+
Example:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
Cursor Task(...)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
does not need to exist in Pi.
|
|
115
|
+
|
|
116
|
+
The required semantic behavior is:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
spawn one isolated worker using the selected role/model,
|
|
120
|
+
track it,
|
|
121
|
+
collect the result,
|
|
122
|
+
and use that result in the parent workflow.
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### G2. Official-Pi-only runtime
|
|
126
|
+
|
|
127
|
+
No third-party runtime dependency may be required to:
|
|
128
|
+
|
|
129
|
+
- spawn agents
|
|
130
|
+
- run graphs
|
|
131
|
+
- persist workflow state
|
|
132
|
+
- manage worktrees
|
|
133
|
+
- route models
|
|
134
|
+
- schedule loops
|
|
135
|
+
- resume interrupted work
|
|
136
|
+
- manage child-agent communication
|
|
137
|
+
|
|
138
|
+
### G3. Durable execution
|
|
139
|
+
|
|
140
|
+
A workflow must survive:
|
|
141
|
+
|
|
142
|
+
- Pi restart
|
|
143
|
+
- terminal closure
|
|
144
|
+
- process crash
|
|
145
|
+
- temporary provider errors
|
|
146
|
+
- parent session suspension
|
|
147
|
+
- machine restart, when the underlying persisted state remains available
|
|
148
|
+
|
|
149
|
+
Completed work must not be repeated unless explicitly requested.
|
|
150
|
+
|
|
151
|
+
### G4. Explicit workflow state
|
|
152
|
+
|
|
153
|
+
Every non-trivial pstack workflow should have inspectable state.
|
|
154
|
+
|
|
155
|
+
The system must know:
|
|
156
|
+
|
|
157
|
+
- what workflow is running
|
|
158
|
+
- what calls exist
|
|
159
|
+
- which calls are pending/running/completed/failed
|
|
160
|
+
- which results are dependencies
|
|
161
|
+
- which agent session owns each call
|
|
162
|
+
- which worktree belongs to each call
|
|
163
|
+
- which model was selected
|
|
164
|
+
- what remains to be done
|
|
165
|
+
|
|
166
|
+
### G5. Reproducible upstream synchronization
|
|
167
|
+
|
|
168
|
+
Every upstream pstack file must be classified as one of:
|
|
169
|
+
|
|
170
|
+
- `IDENTICAL`
|
|
171
|
+
- `ADAPTED`
|
|
172
|
+
- `PI_ONLY`
|
|
173
|
+
- `CURSOR_ONLY`
|
|
174
|
+
- `UNSUPPORTED`
|
|
175
|
+
- `PENDING_PORT`
|
|
176
|
+
|
|
177
|
+
The package must never claim full parity while files remain `PENDING_PORT`.
|
|
178
|
+
|
|
179
|
+
### G6. Maintainability
|
|
180
|
+
|
|
181
|
+
A future upstream pstack release should be synchronizable through a repeatable process:
|
|
182
|
+
|
|
183
|
+
```text
|
|
184
|
+
fetch upstream
|
|
185
|
+
→ diff against pinned upstream
|
|
186
|
+
→ classify changed files
|
|
187
|
+
→ apply safe transforms
|
|
188
|
+
→ surface semantic conflicts
|
|
189
|
+
→ run parity tests
|
|
190
|
+
→ update pin
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
# 4. Non-goals
|
|
196
|
+
|
|
197
|
+
## NG1. Exact Cursor internal behavior
|
|
198
|
+
|
|
199
|
+
The project will not reproduce Cursor implementation details when a Pi-native equivalent exists.
|
|
200
|
+
|
|
201
|
+
## NG2. Operating-system-level background daemon
|
|
202
|
+
|
|
203
|
+
`0.3.0` will not install a permanent OS daemon or launch agent.
|
|
204
|
+
|
|
205
|
+
A scheduled workflow runs while Pi is active.
|
|
206
|
+
|
|
207
|
+
If Pi is closed, the schedule is persisted and can be resumed when the relevant session/runtime starts again.
|
|
208
|
+
|
|
209
|
+
An OS-level scheduler may be considered later as an optional integration.
|
|
210
|
+
|
|
211
|
+
## NG3. Perfect byte-for-byte pstack source parity
|
|
212
|
+
|
|
213
|
+
pstack content can be adapted when Cursor-specific instructions would be incorrect on Pi.
|
|
214
|
+
|
|
215
|
+
## NG4. Reimplementing official Pi primitives
|
|
216
|
+
|
|
217
|
+
The project should not recreate model provider clients, conversation persistence primitives, core session machinery, or durable storage engines when official Pi packages already provide them.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
# 5. Target users
|
|
222
|
+
|
|
223
|
+
## 5.1 Primary user
|
|
224
|
+
|
|
225
|
+
A developer using Pi as their main coding-agent environment who wants:
|
|
226
|
+
|
|
227
|
+
- pstack-style rigor
|
|
228
|
+
- long-running autonomous work
|
|
229
|
+
- parallel agents
|
|
230
|
+
- review workflows
|
|
231
|
+
- crash recovery
|
|
232
|
+
- controllable model routing
|
|
233
|
+
|
|
234
|
+
without depending on several independent third-party extensions.
|
|
235
|
+
|
|
236
|
+
## 5.2 Secondary user
|
|
237
|
+
|
|
238
|
+
A pstack user moving from Cursor to Pi who wants familiar semantics.
|
|
239
|
+
|
|
240
|
+
## 5.3 Maintainer
|
|
241
|
+
|
|
242
|
+
A package maintainer who needs to keep Pi behavior aligned with new upstream pstack releases.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
# 6. Product principles
|
|
247
|
+
|
|
248
|
+
## P1. Semantics over syntax
|
|
249
|
+
|
|
250
|
+
Port the intended behavior, not Cursor syntax.
|
|
251
|
+
|
|
252
|
+
## P2. State must be inspectable
|
|
253
|
+
|
|
254
|
+
Anything durable must expose enough state to understand why it is running, blocked, failed, or complete.
|
|
255
|
+
|
|
256
|
+
## P3. No silent degradation
|
|
257
|
+
|
|
258
|
+
If a Cursor feature has no Pi-native equivalent, the port must either implement an explicit substitute, mark the capability unsupported, or stop with a clear error. It must not silently ignore the behavior.
|
|
259
|
+
|
|
260
|
+
## P4. Exactly-once intent, at-least-once reality
|
|
261
|
+
|
|
262
|
+
Workflow orchestration should avoid repeating completed logical steps. External side effects cannot always be exactly-once. Therefore every tool/action that can produce an external side effect must support idempotency where possible, precondition checks, durable receipts, and human confirmation when required.
|
|
263
|
+
|
|
264
|
+
## P5. Safe parallelism
|
|
265
|
+
|
|
266
|
+
Parallel execution must isolate writers by default.
|
|
267
|
+
|
|
268
|
+
## P6. User control beats autonomy
|
|
269
|
+
|
|
270
|
+
Durability and scheduling must never make a workflow impossible to stop.
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
# 7. Dependency policy
|
|
275
|
+
|
|
276
|
+
## 7.1 Allowed runtime dependencies
|
|
277
|
+
|
|
278
|
+
Required:
|
|
279
|
+
|
|
280
|
+
```json
|
|
281
|
+
{
|
|
282
|
+
"@earendil-works/pi-coding-agent": "^1.1.0",
|
|
283
|
+
"@earendil-works/pi-durable": "^1.1.0"
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Optional if implementation requires them directly:
|
|
288
|
+
|
|
289
|
+
```json
|
|
290
|
+
{
|
|
291
|
+
"@earendil-works/pi-ai": "^1.1.0",
|
|
292
|
+
"@earendil-works/pi-tui": "^1.1.0"
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Node built-ins are allowed.
|
|
297
|
+
|
|
298
|
+
## 7.2 Forbidden runtime dependencies
|
|
299
|
+
|
|
300
|
+
The runtime must not depend on:
|
|
301
|
+
|
|
302
|
+
```text
|
|
303
|
+
@whamp/pi-pstack
|
|
304
|
+
pi-subagents
|
|
305
|
+
pi-durable-subagents
|
|
306
|
+
pi-agents
|
|
307
|
+
external DAG frameworks
|
|
308
|
+
external scheduler frameworks
|
|
309
|
+
external worktree managers
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
Development-only utilities may be considered separately, but core behavior must remain self-contained.
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
# 8. High-level architecture
|
|
317
|
+
|
|
318
|
+
```text
|
|
319
|
+
┌──────────────────────────┐
|
|
320
|
+
│ pstack upstream │
|
|
321
|
+
│ cursor/plugins/pstack │
|
|
322
|
+
└─────────────┬────────────┘
|
|
323
|
+
│
|
|
324
|
+
▼
|
|
325
|
+
┌──────────────────────────┐
|
|
326
|
+
│ Upstream Sync Compiler │
|
|
327
|
+
│ classify / adapt / verify │
|
|
328
|
+
└─────────────┬────────────┘
|
|
329
|
+
│
|
|
330
|
+
▼
|
|
331
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
332
|
+
│ pi-pstack-native │
|
|
333
|
+
│ │
|
|
334
|
+
│ ┌──────────────────┐ ┌────────────────────────────────┐ │
|
|
335
|
+
│ │ pstack content │ │ Native Runtime │ │
|
|
336
|
+
│ │ skills/playbooks │ │ │ │
|
|
337
|
+
│ │ principles │ │ AgentHost │ │
|
|
338
|
+
│ │ agents │ │ WorkflowEngine │ │
|
|
339
|
+
│ └────────┬─────────┘ │ GraphScheduler │ │
|
|
340
|
+
│ │ │ WorktreeManager │ │
|
|
341
|
+
│ │ │ ModelRouter │ │
|
|
342
|
+
│ │ │ DurableStore │ │
|
|
343
|
+
│ │ │ LoopScheduler │ │
|
|
344
|
+
│ │ │ Mailbox/EventBus │ │
|
|
345
|
+
│ │ └───────────────┬────────────────┘ │
|
|
346
|
+
│ └──────────────────────────────────┘ │
|
|
347
|
+
└──────────────────────────────────────────────┬───────────────────┘
|
|
348
|
+
│
|
|
349
|
+
▼
|
|
350
|
+
┌────────────────────────────┐
|
|
351
|
+
│ Official Pi packages │
|
|
352
|
+
│ │
|
|
353
|
+
│ pi-coding-agent │
|
|
354
|
+
│ pi-durable │
|
|
355
|
+
│ pi-ai │
|
|
356
|
+
│ pi-tui │
|
|
357
|
+
└────────────────────────────┘
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
# 9. Runtime modules
|
|
363
|
+
|
|
364
|
+
## 9.1 AgentHost
|
|
365
|
+
|
|
366
|
+
`AgentHost` owns child agent lifecycle.
|
|
367
|
+
|
|
368
|
+
Responsibilities:
|
|
369
|
+
|
|
370
|
+
- create agent sessions
|
|
371
|
+
- assign role/profile
|
|
372
|
+
- assign model
|
|
373
|
+
- assign tools
|
|
374
|
+
- assign cwd/worktree
|
|
375
|
+
- persist agent identity
|
|
376
|
+
- resume existing agent session
|
|
377
|
+
- stop/cancel agent
|
|
378
|
+
- collect final result
|
|
379
|
+
- stream state changes into workflow state
|
|
380
|
+
|
|
381
|
+
Conceptual interface:
|
|
382
|
+
|
|
383
|
+
```ts
|
|
384
|
+
interface AgentHost {
|
|
385
|
+
spawn(spec: AgentSpawnSpec): Promise<AgentHandle>;
|
|
386
|
+
resume(agentId: string): Promise<AgentHandle>;
|
|
387
|
+
send(agentId: string, message: string): Promise<void>;
|
|
388
|
+
stop(agentId: string, reason?: string): Promise<void>;
|
|
389
|
+
status(agentId: string): Promise<AgentStatus>;
|
|
390
|
+
}
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
## 9.2 Agent profiles
|
|
394
|
+
|
|
395
|
+
Built-in initial profiles:
|
|
396
|
+
|
|
397
|
+
```text
|
|
398
|
+
worker
|
|
399
|
+
reviewer
|
|
400
|
+
scout
|
|
401
|
+
architect
|
|
402
|
+
verifier
|
|
403
|
+
integrator
|
|
404
|
+
synthesizer
|
|
405
|
+
poteto-agent
|
|
406
|
+
comment-sicko
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
Profile definition:
|
|
410
|
+
|
|
411
|
+
```ts
|
|
412
|
+
interface AgentProfile {
|
|
413
|
+
name: string;
|
|
414
|
+
description: string;
|
|
415
|
+
tools: string[];
|
|
416
|
+
writable: boolean;
|
|
417
|
+
defaultIsolation: "shared" | "worktree" | "readonly";
|
|
418
|
+
defaultRole: string;
|
|
419
|
+
systemPrompt?: string;
|
|
420
|
+
}
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
## 9.3 ModelRouter
|
|
424
|
+
|
|
425
|
+
Model routing replaces Cursor pstack model rules.
|
|
426
|
+
|
|
427
|
+
Config location:
|
|
428
|
+
|
|
429
|
+
```text
|
|
430
|
+
~/.pi/agent/pstack-native/models.json
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
Example:
|
|
434
|
+
|
|
435
|
+
```json
|
|
436
|
+
{
|
|
437
|
+
"version": 1,
|
|
438
|
+
"thinkingLevel": "inherit-parent",
|
|
439
|
+
"roles": {
|
|
440
|
+
"worker": "inherit-parent",
|
|
441
|
+
"reviewer": "inherit-parent",
|
|
442
|
+
"architect": "inherit-parent",
|
|
443
|
+
"verifier": "inherit-parent"
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
Supported selectors:
|
|
449
|
+
|
|
450
|
+
```text
|
|
451
|
+
inherit-parent
|
|
452
|
+
auto
|
|
453
|
+
provider/model selector
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
Requirements:
|
|
457
|
+
|
|
458
|
+
- validate configured models against Pi's available model registry
|
|
459
|
+
- preserve parent model when `inherit-parent`
|
|
460
|
+
- provide fallback behavior only when explicitly defined
|
|
461
|
+
- record actual selected model in workflow state
|
|
462
|
+
|
|
463
|
+
Commands:
|
|
464
|
+
|
|
465
|
+
```text
|
|
466
|
+
/setup-pstack
|
|
467
|
+
/pstack-models
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
---
|
|
471
|
+
|
|
472
|
+
# 10. Durable state model
|
|
473
|
+
|
|
474
|
+
## 10.1 Storage
|
|
475
|
+
|
|
476
|
+
Default runtime state root:
|
|
477
|
+
|
|
478
|
+
```text
|
|
479
|
+
~/.pi/agent/pstack-native/
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
Suggested layout:
|
|
483
|
+
|
|
484
|
+
```text
|
|
485
|
+
~/.pi/agent/pstack-native/
|
|
486
|
+
├── config.json
|
|
487
|
+
├── models.json
|
|
488
|
+
├── workflows/
|
|
489
|
+
│ ├── wf_<id>.json
|
|
490
|
+
│ └── ...
|
|
491
|
+
├── agents/
|
|
492
|
+
│ ├── ag_<id>.json
|
|
493
|
+
│ └── ...
|
|
494
|
+
├── journals/
|
|
495
|
+
│ ├── wf_<id>.jsonl
|
|
496
|
+
│ └── ...
|
|
497
|
+
├── loops/
|
|
498
|
+
│ └── loops.json
|
|
499
|
+
├── locks/
|
|
500
|
+
├── receipts/
|
|
501
|
+
└── runtime/
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
Where practical, persistence should use official `pi-durable` storage primitives rather than bespoke storage code.
|
|
505
|
+
|
|
506
|
+
## 10.2 Workflow entity
|
|
507
|
+
|
|
508
|
+
```ts
|
|
509
|
+
interface WorkflowRecord {
|
|
510
|
+
id: string;
|
|
511
|
+
name?: string;
|
|
512
|
+
|
|
513
|
+
type:
|
|
514
|
+
| "single"
|
|
515
|
+
| "parallel"
|
|
516
|
+
| "chain"
|
|
517
|
+
| "graph"
|
|
518
|
+
| "swarm"
|
|
519
|
+
| "arena"
|
|
520
|
+
| "orchestrate"
|
|
521
|
+
| "review"
|
|
522
|
+
| "loop";
|
|
523
|
+
|
|
524
|
+
state:
|
|
525
|
+
| "created"
|
|
526
|
+
| "running"
|
|
527
|
+
| "blocked"
|
|
528
|
+
| "paused"
|
|
529
|
+
| "completed"
|
|
530
|
+
| "failed"
|
|
531
|
+
| "cancelled";
|
|
532
|
+
|
|
533
|
+
createdAt: string;
|
|
534
|
+
updatedAt: string;
|
|
535
|
+
parentSessionId?: string;
|
|
536
|
+
calls: Record<string, WorkflowCall>;
|
|
537
|
+
edges: WorkflowEdge[];
|
|
538
|
+
result?: unknown;
|
|
539
|
+
error?: DurableError;
|
|
540
|
+
|
|
541
|
+
upstreamContext?: {
|
|
542
|
+
pstackVersion: string;
|
|
543
|
+
playbook?: string;
|
|
544
|
+
skill?: string;
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
## 10.3 Workflow call
|
|
550
|
+
|
|
551
|
+
```ts
|
|
552
|
+
interface WorkflowCall {
|
|
553
|
+
key: string;
|
|
554
|
+
agentId?: string;
|
|
555
|
+
profile: string;
|
|
556
|
+
task: string;
|
|
557
|
+
|
|
558
|
+
state:
|
|
559
|
+
| "pending"
|
|
560
|
+
| "ready"
|
|
561
|
+
| "running"
|
|
562
|
+
| "waiting"
|
|
563
|
+
| "completed"
|
|
564
|
+
| "failed"
|
|
565
|
+
| "cancelled"
|
|
566
|
+
| "skipped";
|
|
567
|
+
|
|
568
|
+
attempt: number;
|
|
569
|
+
dependsOn: string[];
|
|
570
|
+
model?: string;
|
|
571
|
+
cwd?: string;
|
|
572
|
+
worktree?: string;
|
|
573
|
+
startedAt?: string;
|
|
574
|
+
finishedAt?: string;
|
|
575
|
+
result?: unknown;
|
|
576
|
+
error?: DurableError;
|
|
577
|
+
}
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
---
|
|
581
|
+
|
|
582
|
+
# 11. WorkflowEngine
|
|
583
|
+
|
|
584
|
+
`WorkflowEngine` executes workflow graphs.
|
|
585
|
+
|
|
586
|
+
Core operations:
|
|
587
|
+
|
|
588
|
+
```ts
|
|
589
|
+
workflow.run();
|
|
590
|
+
workflow.pause();
|
|
591
|
+
workflow.resume();
|
|
592
|
+
workflow.cancel();
|
|
593
|
+
workflow.status();
|
|
594
|
+
workflow.retry();
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
## 11.1 Supported graph patterns
|
|
598
|
+
|
|
599
|
+
### Single
|
|
600
|
+
|
|
601
|
+
```text
|
|
602
|
+
A
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
### Parallel fan-out
|
|
606
|
+
|
|
607
|
+
```text
|
|
608
|
+
A
|
|
609
|
+
B
|
|
610
|
+
C
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
### Chain
|
|
614
|
+
|
|
615
|
+
```text
|
|
616
|
+
A → B → C
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
### Fan-out / merge
|
|
620
|
+
|
|
621
|
+
```text
|
|
622
|
+
A ─┐
|
|
623
|
+
B ─┼→ D
|
|
624
|
+
C ─┘
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
### Diamond
|
|
628
|
+
|
|
629
|
+
```text
|
|
630
|
+
B
|
|
631
|
+
↗ ↘
|
|
632
|
+
A D
|
|
633
|
+
↘ ↗
|
|
634
|
+
C
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
### Worker/verifier pair
|
|
638
|
+
|
|
639
|
+
```text
|
|
640
|
+
worker → verifier
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
### Refillable worker pool
|
|
644
|
+
|
|
645
|
+
```text
|
|
646
|
+
queue
|
|
647
|
+
│
|
|
648
|
+
├→ W1 → V1
|
|
649
|
+
├→ W2 → V2
|
|
650
|
+
├→ W3 → V3
|
|
651
|
+
└→ next job as capacity becomes available
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
## 11.2 Graph rules
|
|
655
|
+
|
|
656
|
+
The graph engine must:
|
|
657
|
+
|
|
658
|
+
- reject cycles
|
|
659
|
+
- reject duplicate call keys
|
|
660
|
+
- start a call only when all dependencies succeed
|
|
661
|
+
- support dependency failure policies
|
|
662
|
+
- persist transition before irreversible work when possible
|
|
663
|
+
- restore the graph after process restart
|
|
664
|
+
- not rerun completed nodes automatically
|
|
665
|
+
- expose deterministic status
|
|
666
|
+
|
|
667
|
+
---
|
|
668
|
+
|
|
669
|
+
# 12. Agent lifecycle
|
|
670
|
+
|
|
671
|
+
## 12.1 Spawn
|
|
672
|
+
|
|
673
|
+
```text
|
|
674
|
+
resolve profile
|
|
675
|
+
→ resolve model
|
|
676
|
+
→ resolve isolation
|
|
677
|
+
→ create workspace
|
|
678
|
+
→ create durable agent record
|
|
679
|
+
→ create AgentSession
|
|
680
|
+
→ execute
|
|
681
|
+
→ checkpoint progress
|
|
682
|
+
→ finalize result
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
## 12.2 Resume
|
|
686
|
+
|
|
687
|
+
When recovering:
|
|
688
|
+
|
|
689
|
+
```text
|
|
690
|
+
load agent record
|
|
691
|
+
→ locate persisted session
|
|
692
|
+
→ inspect workflow state
|
|
693
|
+
→ resume only unfinished call
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
## 12.3 Cancellation
|
|
697
|
+
|
|
698
|
+
Cancellation must:
|
|
699
|
+
|
|
700
|
+
1. mark the workflow/call as cancellation-requested
|
|
701
|
+
2. attempt to stop the active session
|
|
702
|
+
3. record final cancellation state
|
|
703
|
+
4. preserve worktree unless cleanup policy says otherwise
|
|
704
|
+
|
|
705
|
+
---
|
|
706
|
+
|
|
707
|
+
# 13. WorktreeManager
|
|
708
|
+
|
|
709
|
+
## 13.1 Purpose
|
|
710
|
+
|
|
711
|
+
Independent parallel write-capable agents must not modify the same checkout by default. A single writer may use the target checkout; writable chains continue in one lane; multi-writer convergence requires an explicit integrator.
|
|
712
|
+
|
|
713
|
+
## 13.2 Modes
|
|
714
|
+
|
|
715
|
+
```text
|
|
716
|
+
shared
|
|
717
|
+
readonly
|
|
718
|
+
worktree
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
Default policies:
|
|
722
|
+
|
|
723
|
+
| Profile | Default |
|
|
724
|
+
|---|---|
|
|
725
|
+
| worker | shared for a single lane; workflow isolates independent parallel roots |
|
|
726
|
+
| architect | shared for a single lane; workflow isolates independent parallel roots |
|
|
727
|
+
| verifier | readonly on the directly dependent artifact |
|
|
728
|
+
| reviewer | readonly on the directly dependent artifact |
|
|
729
|
+
| scout | readonly |
|
|
730
|
+
| integrator | shared target checkout; explicit multi-writer convergence owner |
|
|
731
|
+
| synthesizer | readonly |
|
|
732
|
+
| comment-sicko | readonly |
|
|
733
|
+
|
|
734
|
+
## 13.3 Worktree record
|
|
735
|
+
|
|
736
|
+
```ts
|
|
737
|
+
interface WorktreeRecord {
|
|
738
|
+
id: string;
|
|
739
|
+
path: string;
|
|
740
|
+
branch: string;
|
|
741
|
+
baseRef: string;
|
|
742
|
+
ownerAgentId: string;
|
|
743
|
+
createdAt: string;
|
|
744
|
+
}
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
## 13.4 Safety requirements
|
|
748
|
+
|
|
749
|
+
The runtime must not:
|
|
750
|
+
|
|
751
|
+
- delete a worktree with uncommitted user work without confirmation
|
|
752
|
+
- force-delete unknown worktrees
|
|
753
|
+
- overwrite an existing branch
|
|
754
|
+
- assume `main` is the default branch
|
|
755
|
+
|
|
756
|
+
---
|
|
757
|
+
|
|
758
|
+
# 14. Mailbox and agent communication
|
|
759
|
+
|
|
760
|
+
Support:
|
|
761
|
+
|
|
762
|
+
```text
|
|
763
|
+
parent → child steer
|
|
764
|
+
parent → child follow-up
|
|
765
|
+
child → parent question
|
|
766
|
+
child → parent result
|
|
767
|
+
parent → child stop
|
|
768
|
+
```
|
|
769
|
+
|
|
770
|
+
Conceptual API:
|
|
771
|
+
|
|
772
|
+
```ts
|
|
773
|
+
agent.send(agentId, message);
|
|
774
|
+
agent.answer(questionId, answer);
|
|
775
|
+
agent.stop(agentId);
|
|
776
|
+
```
|
|
777
|
+
|
|
778
|
+
Messages must be durably recorded where they affect workflow behavior.
|
|
779
|
+
|
|
780
|
+
---
|
|
781
|
+
|
|
782
|
+
# 15. Native tools exposed to the model
|
|
783
|
+
|
|
784
|
+
## `pstack_agents`
|
|
785
|
+
|
|
786
|
+
Actions:
|
|
787
|
+
|
|
788
|
+
```text
|
|
789
|
+
spawn
|
|
790
|
+
send
|
|
791
|
+
stop
|
|
792
|
+
status
|
|
793
|
+
list
|
|
794
|
+
```
|
|
795
|
+
|
|
796
|
+
## `pstack_workflow`
|
|
797
|
+
|
|
798
|
+
Actions:
|
|
799
|
+
|
|
800
|
+
```text
|
|
801
|
+
run
|
|
802
|
+
status
|
|
803
|
+
pause
|
|
804
|
+
resume
|
|
805
|
+
cancel
|
|
806
|
+
retry
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
## `pstack_graph`
|
|
810
|
+
|
|
811
|
+
Convenience API for graph execution.
|
|
812
|
+
|
|
813
|
+
Supported specs:
|
|
814
|
+
|
|
815
|
+
```text
|
|
816
|
+
parallel
|
|
817
|
+
chain
|
|
818
|
+
graph
|
|
819
|
+
worker-verifier
|
|
820
|
+
```
|
|
821
|
+
|
|
822
|
+
Tool policy: the model should prefer pstack-native tools over shelling out to Pi subprocesses.
|
|
823
|
+
|
|
824
|
+
---
|
|
825
|
+
|
|
826
|
+
# 16. Poteto Mode
|
|
827
|
+
|
|
828
|
+
## 16.1 Command
|
|
829
|
+
|
|
830
|
+
```text
|
|
831
|
+
/poteto-mode
|
|
832
|
+
/poteto-mode <task>
|
|
833
|
+
/poteto-mode off
|
|
834
|
+
```
|
|
835
|
+
|
|
836
|
+
Behavior:
|
|
837
|
+
|
|
838
|
+
- sticky within the Pi session
|
|
839
|
+
- stored in session custom entries
|
|
840
|
+
- restored when resuming the same session
|
|
841
|
+
- injects only a lightweight system prompt
|
|
842
|
+
- loads full skills only when required
|
|
843
|
+
|
|
844
|
+
## 16.2 Routing
|
|
845
|
+
|
|
846
|
+
Poteto Mode must:
|
|
847
|
+
|
|
848
|
+
1. classify request
|
|
849
|
+
2. choose a playbook
|
|
850
|
+
3. materialize playbook steps
|
|
851
|
+
4. mark skipped steps explicitly
|
|
852
|
+
5. invoke other skills when required
|
|
853
|
+
6. use native agent/workflow tools for delegation
|
|
854
|
+
7. cite applicable principles in the final response when the upstream playbook requires it
|
|
855
|
+
|
|
856
|
+
---
|
|
857
|
+
|
|
858
|
+
# 17. pstack playbook compatibility
|
|
859
|
+
|
|
860
|
+
Target categories:
|
|
861
|
+
|
|
862
|
+
- bug fix
|
|
863
|
+
- feature
|
|
864
|
+
- refactor
|
|
865
|
+
- performance
|
|
866
|
+
- hillclimb
|
|
867
|
+
- investigation
|
|
868
|
+
- architecture
|
|
869
|
+
- review
|
|
870
|
+
- opening a PR
|
|
871
|
+
- babysit
|
|
872
|
+
- shipping
|
|
873
|
+
- session pickup
|
|
874
|
+
- pause safely
|
|
875
|
+
- multi-phase plan
|
|
876
|
+
- autonomous run
|
|
877
|
+
- autopilot
|
|
878
|
+
- orchestrate
|
|
879
|
+
- eval
|
|
880
|
+
- skill authoring
|
|
881
|
+
- verification workflows
|
|
882
|
+
|
|
883
|
+
Each playbook receives a parity record.
|
|
884
|
+
|
|
885
|
+
Example:
|
|
886
|
+
|
|
887
|
+
```yaml
|
|
888
|
+
name: orchestrate
|
|
889
|
+
status: ADAPTED
|
|
890
|
+
upstream_version: 0.15.15
|
|
891
|
+
runtime:
|
|
892
|
+
cursor: Task + cloud agents
|
|
893
|
+
pi: pstack_workflow + worktree isolation
|
|
894
|
+
tests:
|
|
895
|
+
- parallel workers refill on completion
|
|
896
|
+
- verifier depends on worker result
|
|
897
|
+
- completed unit never reruns after resume
|
|
898
|
+
```
|
|
899
|
+
|
|
900
|
+
---
|
|
901
|
+
|
|
902
|
+
# 18. Scheduler and `/pstack-loop`
|
|
903
|
+
|
|
904
|
+
## 18.1 Commands
|
|
905
|
+
|
|
906
|
+
```text
|
|
907
|
+
/pstack-loop 20m <task>
|
|
908
|
+
/pstack-loop 1h <task>
|
|
909
|
+
/pstack-loop 1d <task>
|
|
910
|
+
|
|
911
|
+
/pstack-loop list
|
|
912
|
+
/pstack-loop status <id>
|
|
913
|
+
/pstack-loop run <id>
|
|
914
|
+
/pstack-loop pause <id>
|
|
915
|
+
/pstack-loop resume <id>
|
|
916
|
+
/pstack-loop stop <id>
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
## 18.2 Semantics
|
|
920
|
+
|
|
921
|
+
While Pi is active:
|
|
922
|
+
|
|
923
|
+
```text
|
|
924
|
+
timer
|
|
925
|
+
→ trigger durable workflow
|
|
926
|
+
→ record result
|
|
927
|
+
→ calculate next run
|
|
928
|
+
```
|
|
929
|
+
|
|
930
|
+
When Pi is closed:
|
|
931
|
+
|
|
932
|
+
- no claim is made that work continues
|
|
933
|
+
- next run time remains persisted
|
|
934
|
+
|
|
935
|
+
When Pi resumes:
|
|
936
|
+
|
|
937
|
+
- if one or more runs were missed, execute at most one catch-up run
|
|
938
|
+
- do not replay every missed interval
|
|
939
|
+
- compute next run from current time unless the schedule explicitly requires wall-clock anchoring
|
|
940
|
+
|
|
941
|
+
## 18.3 Scheduler state
|
|
942
|
+
|
|
943
|
+
```ts
|
|
944
|
+
interface LoopRecord {
|
|
945
|
+
id: string;
|
|
946
|
+
sessionId: string;
|
|
947
|
+
intervalMs: number;
|
|
948
|
+
task: string;
|
|
949
|
+
enabled: boolean;
|
|
950
|
+
runningWorkflowId?: string;
|
|
951
|
+
createdAt: string;
|
|
952
|
+
lastRunAt?: string;
|
|
953
|
+
nextRunAt: string;
|
|
954
|
+
missedPolicy: "run-once" | "skip";
|
|
955
|
+
}
|
|
956
|
+
```
|
|
957
|
+
|
|
958
|
+
Default:
|
|
959
|
+
|
|
960
|
+
```text
|
|
961
|
+
missedPolicy = run-once
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
---
|
|
965
|
+
|
|
966
|
+
# 19. `/setup-pstack`
|
|
967
|
+
|
|
968
|
+
The setup experience must be native to Pi.
|
|
969
|
+
|
|
970
|
+
It should configure:
|
|
971
|
+
|
|
972
|
+
- default execution budget
|
|
973
|
+
- worker model
|
|
974
|
+
- reviewer model
|
|
975
|
+
- architect model
|
|
976
|
+
- verifier model
|
|
977
|
+
- synthesizer model
|
|
978
|
+
- optional panel models
|
|
979
|
+
- default concurrency
|
|
980
|
+
- default isolation mode
|
|
981
|
+
|
|
982
|
+
Example output:
|
|
983
|
+
|
|
984
|
+
```json
|
|
985
|
+
{
|
|
986
|
+
"version": 1,
|
|
987
|
+
"budget": "high",
|
|
988
|
+
"concurrency": 4,
|
|
989
|
+
"roles": {
|
|
990
|
+
"worker": "inherit-parent",
|
|
991
|
+
"reviewer": "inherit-parent",
|
|
992
|
+
"architect": "inherit-parent",
|
|
993
|
+
"verifier": "inherit-parent",
|
|
994
|
+
"synthesizer": "inherit-parent"
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
```
|
|
998
|
+
|
|
999
|
+
---
|
|
1000
|
+
|
|
1001
|
+
# 20. Runtime commands
|
|
1002
|
+
|
|
1003
|
+
Required commands:
|
|
1004
|
+
|
|
1005
|
+
```text
|
|
1006
|
+
/poteto-mode
|
|
1007
|
+
/setup-pstack
|
|
1008
|
+
/pstack status
|
|
1009
|
+
/pstack on
|
|
1010
|
+
/pstack off
|
|
1011
|
+
/pstack-runtime
|
|
1012
|
+
/pstack-upstream
|
|
1013
|
+
/pstack-parity
|
|
1014
|
+
/pstack-agents
|
|
1015
|
+
/pstack-workflows
|
|
1016
|
+
/pstack-loop
|
|
1017
|
+
```
|
|
1018
|
+
|
|
1019
|
+
---
|
|
1020
|
+
|
|
1021
|
+
# 21. `/pstack-runtime`
|
|
1022
|
+
|
|
1023
|
+
Example:
|
|
1024
|
+
|
|
1025
|
+
```text
|
|
1026
|
+
pi-pstack-native 0.3.0
|
|
1027
|
+
|
|
1028
|
+
Package
|
|
1029
|
+
npm name: 2333
|
|
1030
|
+
project: pi-pstack-native
|
|
1031
|
+
|
|
1032
|
+
Upstream
|
|
1033
|
+
pstack: 0.15.15
|
|
1034
|
+
commit: <sha>
|
|
1035
|
+
|
|
1036
|
+
Runtime
|
|
1037
|
+
Pi Coding Agent: 1.1.x
|
|
1038
|
+
Pi Durable: 1.1.x
|
|
1039
|
+
|
|
1040
|
+
Dependencies
|
|
1041
|
+
third-party runtime dependencies: none
|
|
1042
|
+
|
|
1043
|
+
Agent runtime
|
|
1044
|
+
native AgentSession
|
|
1045
|
+
|
|
1046
|
+
Workflow engine
|
|
1047
|
+
native durable DAG
|
|
1048
|
+
|
|
1049
|
+
Scheduler
|
|
1050
|
+
native session scheduler
|
|
1051
|
+
|
|
1052
|
+
Worktree isolation
|
|
1053
|
+
native git worktrees
|
|
1054
|
+
```
|
|
1055
|
+
|
|
1056
|
+
---
|
|
1057
|
+
|
|
1058
|
+
# 22. Upstream sync compiler
|
|
1059
|
+
|
|
1060
|
+
## 22.1 Inputs
|
|
1061
|
+
|
|
1062
|
+
```text
|
|
1063
|
+
cursor/plugins
|
|
1064
|
+
path: pstack/
|
|
1065
|
+
pinned commit: <sha>
|
|
1066
|
+
pinned version: <version>
|
|
1067
|
+
```
|
|
1068
|
+
|
|
1069
|
+
## 22.2 File classes
|
|
1070
|
+
|
|
1071
|
+
Every upstream file must map to exactly one class.
|
|
1072
|
+
|
|
1073
|
+
### `IDENTICAL`
|
|
1074
|
+
|
|
1075
|
+
Copied byte-for-byte.
|
|
1076
|
+
|
|
1077
|
+
### `ADAPTED`
|
|
1078
|
+
|
|
1079
|
+
Semantic content retained, runtime-specific parts translated.
|
|
1080
|
+
|
|
1081
|
+
### `PI_ONLY`
|
|
1082
|
+
|
|
1083
|
+
Exists only in `pi-pstack-native`.
|
|
1084
|
+
|
|
1085
|
+
### `CURSOR_ONLY`
|
|
1086
|
+
|
|
1087
|
+
Cannot or should not exist in Pi.
|
|
1088
|
+
|
|
1089
|
+
### `UNSUPPORTED`
|
|
1090
|
+
|
|
1091
|
+
Known upstream capability with no implementation. Must include reason.
|
|
1092
|
+
|
|
1093
|
+
### `PENDING_PORT`
|
|
1094
|
+
|
|
1095
|
+
Changed upstream content that has not yet been reviewed.
|
|
1096
|
+
|
|
1097
|
+
A release cannot claim full parity while this count is nonzero.
|
|
1098
|
+
|
|
1099
|
+
## 22.3 Sync process
|
|
1100
|
+
|
|
1101
|
+
```text
|
|
1102
|
+
fetch pinned upstream
|
|
1103
|
+
↓
|
|
1104
|
+
fetch new upstream
|
|
1105
|
+
↓
|
|
1106
|
+
calculate changed paths
|
|
1107
|
+
↓
|
|
1108
|
+
classify each path
|
|
1109
|
+
↓
|
|
1110
|
+
safe automatic transforms
|
|
1111
|
+
↓
|
|
1112
|
+
semantic conflict detection
|
|
1113
|
+
↓
|
|
1114
|
+
manual adaptation where required
|
|
1115
|
+
↓
|
|
1116
|
+
run parity suite
|
|
1117
|
+
↓
|
|
1118
|
+
update UPSTREAM.json
|
|
1119
|
+
↓
|
|
1120
|
+
generate PARITY.md
|
|
1121
|
+
```
|
|
1122
|
+
|
|
1123
|
+
---
|
|
1124
|
+
|
|
1125
|
+
# 23. Upstream metadata
|
|
1126
|
+
|
|
1127
|
+
`UPSTREAM.json`:
|
|
1128
|
+
|
|
1129
|
+
```json
|
|
1130
|
+
{
|
|
1131
|
+
"source": "cursor/plugins",
|
|
1132
|
+
"path": "pstack",
|
|
1133
|
+
"version": "0.15.15",
|
|
1134
|
+
"commit": "<sha>",
|
|
1135
|
+
"syncedAt": "2026-10-10T00:00:00Z"
|
|
1136
|
+
}
|
|
1137
|
+
```
|
|
1138
|
+
|
|
1139
|
+
The npm package version is independent.
|
|
1140
|
+
|
|
1141
|
+
Example:
|
|
1142
|
+
|
|
1143
|
+
```text
|
|
1144
|
+
2333@0.3.0
|
|
1145
|
+
upstream pstack 0.15.15
|
|
1146
|
+
```
|
|
1147
|
+
|
|
1148
|
+
---
|
|
1149
|
+
|
|
1150
|
+
# 24. Parity manifest
|
|
1151
|
+
|
|
1152
|
+
`PARITY.json` should be machine-readable.
|
|
1153
|
+
|
|
1154
|
+
Example:
|
|
1155
|
+
|
|
1156
|
+
```json
|
|
1157
|
+
{
|
|
1158
|
+
"upstream": "0.15.15",
|
|
1159
|
+
"skills": {
|
|
1160
|
+
"poteto-mode": "ADAPTED",
|
|
1161
|
+
"correct": "IDENTICAL",
|
|
1162
|
+
"poteto-help": "ADAPTED"
|
|
1163
|
+
},
|
|
1164
|
+
"playbooks": {
|
|
1165
|
+
"orchestrate": "ADAPTED"
|
|
1166
|
+
},
|
|
1167
|
+
"cursorOnly": [
|
|
1168
|
+
"make-bot-ui"
|
|
1169
|
+
],
|
|
1170
|
+
"pending": []
|
|
1171
|
+
}
|
|
1172
|
+
```
|
|
1173
|
+
|
|
1174
|
+
Generate human-readable `PARITY.md` from it.
|
|
1175
|
+
|
|
1176
|
+
---
|
|
1177
|
+
|
|
1178
|
+
# 25. pstack semantic mapping
|
|
1179
|
+
|
|
1180
|
+
| Cursor pstack concept | Pi-native implementation |
|
|
1181
|
+
|---|---|
|
|
1182
|
+
| Task subagent | AgentHost + AgentSession |
|
|
1183
|
+
| parallel Tasks | WorkflowEngine parallel graph |
|
|
1184
|
+
| cloud agent | worktree-isolated AgentSession |
|
|
1185
|
+
| model role rule | ModelRouter config |
|
|
1186
|
+
| Custom Mode | sticky Poteto Mode |
|
|
1187
|
+
| agent transcript | Pi session + durable agent record |
|
|
1188
|
+
| Task result | durable WorkflowCall result |
|
|
1189
|
+
| fresh subagent | new AgentSession |
|
|
1190
|
+
| swarm | fan-out workflow |
|
|
1191
|
+
| arena | parallel candidates + judge |
|
|
1192
|
+
| interrogate | reviewer panel |
|
|
1193
|
+
| orchestrate | durable refillable graph |
|
|
1194
|
+
| autopilot | durable workflow state machine |
|
|
1195
|
+
| `/loop` | pstack native scheduler |
|
|
1196
|
+
| crash recovery | persistent Pi child sessions + pstack-native atomic workflow journal |
|
|
1197
|
+
|
|
1198
|
+
---
|
|
1199
|
+
|
|
1200
|
+
# 26. Swarm
|
|
1201
|
+
|
|
1202
|
+
Required behavior:
|
|
1203
|
+
|
|
1204
|
+
```text
|
|
1205
|
+
input slices
|
|
1206
|
+
→ parallel workers
|
|
1207
|
+
→ collect all results
|
|
1208
|
+
→ synthesizer
|
|
1209
|
+
```
|
|
1210
|
+
|
|
1211
|
+
Properties:
|
|
1212
|
+
|
|
1213
|
+
- bounded concurrency
|
|
1214
|
+
- isolated write workers
|
|
1215
|
+
- no duplicate slice execution after resume
|
|
1216
|
+
- failed slices visible individually
|
|
1217
|
+
- optional fail-fast or best-effort policy
|
|
1218
|
+
|
|
1219
|
+
---
|
|
1220
|
+
|
|
1221
|
+
# 27. Arena
|
|
1222
|
+
|
|
1223
|
+
Required behavior:
|
|
1224
|
+
|
|
1225
|
+
```text
|
|
1226
|
+
same brief
|
|
1227
|
+
→ candidate A
|
|
1228
|
+
→ candidate B
|
|
1229
|
+
→ candidate C
|
|
1230
|
+
→ judge
|
|
1231
|
+
→ merged/final result
|
|
1232
|
+
```
|
|
1233
|
+
|
|
1234
|
+
Judge must not share mutable write state with candidates.
|
|
1235
|
+
|
|
1236
|
+
---
|
|
1237
|
+
|
|
1238
|
+
# 28. Interrogate / review panels
|
|
1239
|
+
|
|
1240
|
+
Panel execution:
|
|
1241
|
+
|
|
1242
|
+
```text
|
|
1243
|
+
diff/spec
|
|
1244
|
+
├→ reviewer model A
|
|
1245
|
+
├→ reviewer model B
|
|
1246
|
+
└→ reviewer model C
|
|
1247
|
+
↓
|
|
1248
|
+
synthesizer
|
|
1249
|
+
```
|
|
1250
|
+
|
|
1251
|
+
Requirements:
|
|
1252
|
+
|
|
1253
|
+
- reviewer sessions read-only by default
|
|
1254
|
+
- preserve model identity with each finding
|
|
1255
|
+
- synthesizer must not erase disagreement
|
|
1256
|
+
- support one or multiple configured reviewers
|
|
1257
|
+
|
|
1258
|
+
---
|
|
1259
|
+
|
|
1260
|
+
# 29. Orchestrate
|
|
1261
|
+
|
|
1262
|
+
This is the most important parity workflow.
|
|
1263
|
+
|
|
1264
|
+
## 29.1 Required behavior
|
|
1265
|
+
|
|
1266
|
+
- break program into units
|
|
1267
|
+
- run up to configured concurrency
|
|
1268
|
+
- pair completed units with verification
|
|
1269
|
+
- refill capacity as calls finish
|
|
1270
|
+
- persist program state
|
|
1271
|
+
- survive restart
|
|
1272
|
+
- never rerun completed units without explicit reset
|
|
1273
|
+
- keep evidence associated with each unit
|
|
1274
|
+
|
|
1275
|
+
## 29.2 State machine
|
|
1276
|
+
|
|
1277
|
+
```text
|
|
1278
|
+
planned
|
|
1279
|
+
↓
|
|
1280
|
+
worker-ready
|
|
1281
|
+
↓
|
|
1282
|
+
worker-running
|
|
1283
|
+
↓
|
|
1284
|
+
worker-complete
|
|
1285
|
+
↓
|
|
1286
|
+
verifier-ready
|
|
1287
|
+
↓
|
|
1288
|
+
verifier-running
|
|
1289
|
+
↓
|
|
1290
|
+
verified / rejected
|
|
1291
|
+
```
|
|
1292
|
+
|
|
1293
|
+
Rejected work can produce:
|
|
1294
|
+
|
|
1295
|
+
```text
|
|
1296
|
+
retry
|
|
1297
|
+
rework
|
|
1298
|
+
blocked
|
|
1299
|
+
human-required
|
|
1300
|
+
```
|
|
1301
|
+
|
|
1302
|
+
---
|
|
1303
|
+
|
|
1304
|
+
# 30. Autopilot
|
|
1305
|
+
|
|
1306
|
+
Autopilot is implemented as a durable state machine, not a long prompt.
|
|
1307
|
+
|
|
1308
|
+
Example states:
|
|
1309
|
+
|
|
1310
|
+
```text
|
|
1311
|
+
inspect
|
|
1312
|
+
plan
|
|
1313
|
+
execute
|
|
1314
|
+
verify
|
|
1315
|
+
review
|
|
1316
|
+
fix
|
|
1317
|
+
reverify
|
|
1318
|
+
prepare-pr
|
|
1319
|
+
wait-ci
|
|
1320
|
+
respond-review
|
|
1321
|
+
complete
|
|
1322
|
+
```
|
|
1323
|
+
|
|
1324
|
+
Every transition must be persisted.
|
|
1325
|
+
|
|
1326
|
+
---
|
|
1327
|
+
|
|
1328
|
+
# 31. External side effects
|
|
1329
|
+
|
|
1330
|
+
Durability cannot guarantee that an external action did not happen before a crash.
|
|
1331
|
+
|
|
1332
|
+
Examples:
|
|
1333
|
+
|
|
1334
|
+
- pushing git commits
|
|
1335
|
+
- posting PR comments
|
|
1336
|
+
- merging
|
|
1337
|
+
- creating an issue
|
|
1338
|
+
- calling a remote API
|
|
1339
|
+
|
|
1340
|
+
Therefore, before retrying an external side effect, the runtime must attempt to determine whether the effect already occurred.
|
|
1341
|
+
|
|
1342
|
+
Each effect should store a receipt:
|
|
1343
|
+
|
|
1344
|
+
```ts
|
|
1345
|
+
interface EffectReceipt {
|
|
1346
|
+
id: string;
|
|
1347
|
+
kind: string;
|
|
1348
|
+
requestFingerprint: string;
|
|
1349
|
+
attemptedAt: string;
|
|
1350
|
+
confirmedAt?: string;
|
|
1351
|
+
externalId?: string;
|
|
1352
|
+
result?: unknown;
|
|
1353
|
+
}
|
|
1354
|
+
```
|
|
1355
|
+
|
|
1356
|
+
---
|
|
1357
|
+
|
|
1358
|
+
# 32. Safety
|
|
1359
|
+
|
|
1360
|
+
## 32.1 Destructive operations
|
|
1361
|
+
|
|
1362
|
+
Require confirmation for:
|
|
1363
|
+
|
|
1364
|
+
- force push
|
|
1365
|
+
- deleting unmerged branches
|
|
1366
|
+
- deleting worktrees with unknown changes
|
|
1367
|
+
- merging when workflow does not already contain user approval
|
|
1368
|
+
- destructive filesystem operations outside owned workspaces
|
|
1369
|
+
|
|
1370
|
+
## 32.2 Tool boundaries
|
|
1371
|
+
|
|
1372
|
+
Reviewer profiles should not have write tools.
|
|
1373
|
+
|
|
1374
|
+
## 32.3 Workspace ownership
|
|
1375
|
+
|
|
1376
|
+
Every runtime-created directory must have an ownership marker.
|
|
1377
|
+
|
|
1378
|
+
Never clean up unknown directories.
|
|
1379
|
+
|
|
1380
|
+
---
|
|
1381
|
+
|
|
1382
|
+
# 33. Observability
|
|
1383
|
+
|
|
1384
|
+
## 33.1 `/pstack-workflows`
|
|
1385
|
+
|
|
1386
|
+
Example:
|
|
1387
|
+
|
|
1388
|
+
```text
|
|
1389
|
+
wf_123 orchestrate running
|
|
1390
|
+
|
|
1391
|
+
worker-api completed
|
|
1392
|
+
worker-ui running
|
|
1393
|
+
worker-tests completed
|
|
1394
|
+
verify-api completed
|
|
1395
|
+
verify-tests ready
|
|
1396
|
+
merge-review blocked
|
|
1397
|
+
|
|
1398
|
+
2 active / 6 total
|
|
1399
|
+
```
|
|
1400
|
+
|
|
1401
|
+
## 33.2 `/pstack-agents`
|
|
1402
|
+
|
|
1403
|
+
Example:
|
|
1404
|
+
|
|
1405
|
+
```text
|
|
1406
|
+
ag_1 worker opus-xhigh completed
|
|
1407
|
+
ag_2 worker grok-fast running
|
|
1408
|
+
ag_3 reviewer opus-xhigh waiting
|
|
1409
|
+
```
|
|
1410
|
+
|
|
1411
|
+
## 33.3 TUI
|
|
1412
|
+
|
|
1413
|
+
Optional later stage:
|
|
1414
|
+
|
|
1415
|
+
- status footer
|
|
1416
|
+
- workflow panel
|
|
1417
|
+
- agent panel
|
|
1418
|
+
|
|
1419
|
+
`0.3.0` does not require a sophisticated TUI if commands provide full observability.
|
|
1420
|
+
|
|
1421
|
+
---
|
|
1422
|
+
|
|
1423
|
+
# 34. Error model
|
|
1424
|
+
|
|
1425
|
+
All durable errors should contain:
|
|
1426
|
+
|
|
1427
|
+
```ts
|
|
1428
|
+
interface DurableError {
|
|
1429
|
+
code: string;
|
|
1430
|
+
message: string;
|
|
1431
|
+
retryable: boolean;
|
|
1432
|
+
cause?: string;
|
|
1433
|
+
occurredAt: string;
|
|
1434
|
+
}
|
|
1435
|
+
```
|
|
1436
|
+
|
|
1437
|
+
Categories:
|
|
1438
|
+
|
|
1439
|
+
```text
|
|
1440
|
+
MODEL_UNAVAILABLE
|
|
1441
|
+
PROVIDER_ERROR
|
|
1442
|
+
SESSION_ERROR
|
|
1443
|
+
WORKTREE_ERROR
|
|
1444
|
+
TOOL_ERROR
|
|
1445
|
+
DEPENDENCY_FAILED
|
|
1446
|
+
CANCELLED
|
|
1447
|
+
TIMEOUT
|
|
1448
|
+
INVALID_GRAPH
|
|
1449
|
+
STATE_CORRUPTION
|
|
1450
|
+
UPSTREAM_PARITY_ERROR
|
|
1451
|
+
```
|
|
1452
|
+
|
|
1453
|
+
---
|
|
1454
|
+
|
|
1455
|
+
# 35. Retry policy
|
|
1456
|
+
|
|
1457
|
+
Default automatic retry:
|
|
1458
|
+
|
|
1459
|
+
- transient model/provider failure: yes, bounded
|
|
1460
|
+
- invalid task/schema: no
|
|
1461
|
+
- failed verification: no automatic retry unless playbook says rework
|
|
1462
|
+
- external side effect uncertainty: inspect first
|
|
1463
|
+
- worktree conflict: no silent force
|
|
1464
|
+
|
|
1465
|
+
---
|
|
1466
|
+
|
|
1467
|
+
# 36. Concurrency
|
|
1468
|
+
|
|
1469
|
+
Default global concurrency:
|
|
1470
|
+
|
|
1471
|
+
```text
|
|
1472
|
+
4
|
|
1473
|
+
```
|
|
1474
|
+
|
|
1475
|
+
Configurable.
|
|
1476
|
+
|
|
1477
|
+
The runtime must distinguish:
|
|
1478
|
+
|
|
1479
|
+
- active model calls
|
|
1480
|
+
- active write worktrees
|
|
1481
|
+
- workflow queue length
|
|
1482
|
+
|
|
1483
|
+
Concurrency limits must apply across a workflow, not separately to every branch.
|
|
1484
|
+
|
|
1485
|
+
---
|
|
1486
|
+
|
|
1487
|
+
# 37. Resource budgets
|
|
1488
|
+
|
|
1489
|
+
Future-compatible structure:
|
|
1490
|
+
|
|
1491
|
+
```ts
|
|
1492
|
+
interface WorkflowBudget {
|
|
1493
|
+
maxCalls?: number;
|
|
1494
|
+
maxTokens?: number;
|
|
1495
|
+
maxCostUsd?: number;
|
|
1496
|
+
maxWallTimeMs?: number;
|
|
1497
|
+
}
|
|
1498
|
+
```
|
|
1499
|
+
|
|
1500
|
+
`0.3.0` should at minimum support:
|
|
1501
|
+
|
|
1502
|
+
```text
|
|
1503
|
+
maxCalls
|
|
1504
|
+
maxConcurrency
|
|
1505
|
+
```
|
|
1506
|
+
|
|
1507
|
+
Token/cost integration may follow if official Pi runtime exposes reliable usage information at the required boundary.
|
|
1508
|
+
|
|
1509
|
+
---
|
|
1510
|
+
|
|
1511
|
+
# 38. Session ownership
|
|
1512
|
+
|
|
1513
|
+
A workflow belongs to its origin Pi session but can survive the current agent turn.
|
|
1514
|
+
|
|
1515
|
+
Rules:
|
|
1516
|
+
|
|
1517
|
+
- resuming the originating Pi session surfaces pending workflow state
|
|
1518
|
+
- an explicit workflow ID can be resumed where supported
|
|
1519
|
+
- multiple parents must not concurrently own the same writable workflow
|
|
1520
|
+
- use durable locks to prevent split-brain execution
|
|
1521
|
+
|
|
1522
|
+
---
|
|
1523
|
+
|
|
1524
|
+
# 39. Locking
|
|
1525
|
+
|
|
1526
|
+
Required locks:
|
|
1527
|
+
|
|
1528
|
+
```text
|
|
1529
|
+
workflow execution lock
|
|
1530
|
+
agent execution lock
|
|
1531
|
+
worktree mutation lock
|
|
1532
|
+
scheduler loop lock
|
|
1533
|
+
```
|
|
1534
|
+
|
|
1535
|
+
Lock acquisition must be bounded and observable.
|
|
1536
|
+
|
|
1537
|
+
---
|
|
1538
|
+
|
|
1539
|
+
# 40. Configuration
|
|
1540
|
+
|
|
1541
|
+
Global config:
|
|
1542
|
+
|
|
1543
|
+
```text
|
|
1544
|
+
~/.pi/agent/pstack-native/config.json
|
|
1545
|
+
```
|
|
1546
|
+
|
|
1547
|
+
Example:
|
|
1548
|
+
|
|
1549
|
+
```json
|
|
1550
|
+
{
|
|
1551
|
+
"version": 1,
|
|
1552
|
+
"skillsEnabled": true,
|
|
1553
|
+
"defaultConcurrency": 4,
|
|
1554
|
+
"loopMissedPolicy": "run-once"
|
|
1555
|
+
}
|
|
1556
|
+
```
|
|
1557
|
+
|
|
1558
|
+
---
|
|
1559
|
+
|
|
1560
|
+
# 41. Package layout
|
|
1561
|
+
|
|
1562
|
+
```text
|
|
1563
|
+
pi-pstack-native/
|
|
1564
|
+
├── package.json
|
|
1565
|
+
├── README.md
|
|
1566
|
+
├── LICENSE
|
|
1567
|
+
├── NOTICE.md
|
|
1568
|
+
├── PRD.md
|
|
1569
|
+
├── UPSTREAM.json
|
|
1570
|
+
├── PARITY.json
|
|
1571
|
+
├── PARITY.md
|
|
1572
|
+
│
|
|
1573
|
+
├── src/
|
|
1574
|
+
│ ├── extension.ts
|
|
1575
|
+
│ │
|
|
1576
|
+
│ ├── agent/
|
|
1577
|
+
│ │ ├── host.ts
|
|
1578
|
+
│ │ ├── profiles.ts
|
|
1579
|
+
│ │ ├── session.ts
|
|
1580
|
+
│ │ └── mailbox.ts
|
|
1581
|
+
│ │
|
|
1582
|
+
│ ├── workflow/
|
|
1583
|
+
│ │ ├── engine.ts
|
|
1584
|
+
│ │ ├── graph.ts
|
|
1585
|
+
│ │ ├── scheduler.ts
|
|
1586
|
+
│ │ ├── state.ts
|
|
1587
|
+
│ │ └── recovery.ts
|
|
1588
|
+
│ │
|
|
1589
|
+
│ ├── durable/
|
|
1590
|
+
│ │ ├── store.ts
|
|
1591
|
+
│ │ ├── locks.ts
|
|
1592
|
+
│ │ ├── journal.ts
|
|
1593
|
+
│ │ └── receipts.ts
|
|
1594
|
+
│ │
|
|
1595
|
+
│ ├── worktree/
|
|
1596
|
+
│ │ ├── manager.ts
|
|
1597
|
+
│ │ └── git.ts
|
|
1598
|
+
│ │
|
|
1599
|
+
│ ├── models/
|
|
1600
|
+
│ │ ├── router.ts
|
|
1601
|
+
│ │ └── config.ts
|
|
1602
|
+
│ │
|
|
1603
|
+
│ ├── loop/
|
|
1604
|
+
│ │ ├── store.ts
|
|
1605
|
+
│ │ └── runner.ts
|
|
1606
|
+
│ │
|
|
1607
|
+
│ ├── commands/
|
|
1608
|
+
│ │ ├── poteto-mode.ts
|
|
1609
|
+
│ │ ├── setup-pstack.ts
|
|
1610
|
+
│ │ ├── pstack-runtime.ts
|
|
1611
|
+
│ │ ├── pstack-upstream.ts
|
|
1612
|
+
│ │ ├── pstack-workflows.ts
|
|
1613
|
+
│ │ └── pstack-loop.ts
|
|
1614
|
+
│ │
|
|
1615
|
+
│ └── tools/
|
|
1616
|
+
│ ├── agents.ts
|
|
1617
|
+
│ ├── workflow.ts
|
|
1618
|
+
│ └── graph.ts
|
|
1619
|
+
│
|
|
1620
|
+
├── agents/
|
|
1621
|
+
│ ├── worker.md
|
|
1622
|
+
│ ├── reviewer.md
|
|
1623
|
+
│ ├── verifier.md
|
|
1624
|
+
│ ├── architect.md
|
|
1625
|
+
│ ├── poteto-agent.md
|
|
1626
|
+
│ └── comment-sicko.md
|
|
1627
|
+
│
|
|
1628
|
+
├── skills/
|
|
1629
|
+
│ └── ...
|
|
1630
|
+
│
|
|
1631
|
+
├── scripts/
|
|
1632
|
+
│ ├── sync-upstream.mjs
|
|
1633
|
+
│ ├── classify-upstream.mjs
|
|
1634
|
+
│ ├── generate-parity.mjs
|
|
1635
|
+
│ └── verify-parity.mjs
|
|
1636
|
+
│
|
|
1637
|
+
└── test/
|
|
1638
|
+
├── agent/
|
|
1639
|
+
├── workflow/
|
|
1640
|
+
├── durable/
|
|
1641
|
+
├── worktree/
|
|
1642
|
+
├── loop/
|
|
1643
|
+
├── parity/
|
|
1644
|
+
└── integration/
|
|
1645
|
+
```
|
|
1646
|
+
|
|
1647
|
+
---
|
|
1648
|
+
|
|
1649
|
+
# 42. Package manifest
|
|
1650
|
+
|
|
1651
|
+
Target:
|
|
1652
|
+
|
|
1653
|
+
```json
|
|
1654
|
+
{
|
|
1655
|
+
"name": "2333",
|
|
1656
|
+
"version": "0.3.0",
|
|
1657
|
+
"type": "module",
|
|
1658
|
+
"engines": {
|
|
1659
|
+
"node": ">=22.19.0"
|
|
1660
|
+
},
|
|
1661
|
+
"dependencies": {
|
|
1662
|
+
"@earendil-works/pi-coding-agent": "^1.1.0",
|
|
1663
|
+
"@earendil-works/pi-durable": "^1.1.0"
|
|
1664
|
+
},
|
|
1665
|
+
"pi": {
|
|
1666
|
+
"extensions": [
|
|
1667
|
+
"./src/extension.ts"
|
|
1668
|
+
],
|
|
1669
|
+
"skills": [
|
|
1670
|
+
"./skills"
|
|
1671
|
+
]
|
|
1672
|
+
}
|
|
1673
|
+
}
|
|
1674
|
+
```
|
|
1675
|
+
|
|
1676
|
+
If direct imports are needed, `@earendil-works/pi-ai` and `@earendil-works/pi-tui` must be explicitly declared rather than relying on transitive dependencies.
|
|
1677
|
+
|
|
1678
|
+
---
|
|
1679
|
+
|
|
1680
|
+
# 43. Migration from 0.2.0
|
|
1681
|
+
|
|
1682
|
+
`0.2.0` used external runtime packages.
|
|
1683
|
+
|
|
1684
|
+
`0.3.0` removes them.
|
|
1685
|
+
|
|
1686
|
+
Migration rules:
|
|
1687
|
+
|
|
1688
|
+
1. Existing pstack model config should be imported when possible.
|
|
1689
|
+
2. Existing `/pstack-loop` entries should be migrated to the new loop schema.
|
|
1690
|
+
3. Running third-party workflows cannot be transparently resumed.
|
|
1691
|
+
4. Migration must clearly state that in-flight 0.2 workflows are not portable.
|
|
1692
|
+
5. Existing user source worktrees must not be deleted.
|
|
1693
|
+
|
|
1694
|
+
---
|
|
1695
|
+
|
|
1696
|
+
# 44. Compatibility with existing Whamp configuration
|
|
1697
|
+
|
|
1698
|
+
Read-only migration support may detect:
|
|
1699
|
+
|
|
1700
|
+
```text
|
|
1701
|
+
~/.pi/agent/pstack/models.json
|
|
1702
|
+
```
|
|
1703
|
+
|
|
1704
|
+
and offer to import it.
|
|
1705
|
+
|
|
1706
|
+
The runtime must not keep Whamp as a dependency.
|
|
1707
|
+
|
|
1708
|
+
---
|
|
1709
|
+
|
|
1710
|
+
# 45. Licensing and attribution
|
|
1711
|
+
|
|
1712
|
+
Requirements:
|
|
1713
|
+
|
|
1714
|
+
- preserve upstream pstack MIT license obligations
|
|
1715
|
+
- retain Lauren Tan attribution for copied/substantially derived pstack content
|
|
1716
|
+
- clearly distinguish new `pi-pstack-native` code from upstream content
|
|
1717
|
+
- include `NOTICE.md`
|
|
1718
|
+
- include upstream repository and pinned revision
|
|
1719
|
+
|
|
1720
|
+
---
|
|
1721
|
+
|
|
1722
|
+
# 46. Testing strategy
|
|
1723
|
+
|
|
1724
|
+
## 46.1 Unit tests
|
|
1725
|
+
|
|
1726
|
+
Agent runtime:
|
|
1727
|
+
|
|
1728
|
+
- role resolution
|
|
1729
|
+
- model resolution
|
|
1730
|
+
- tool restriction
|
|
1731
|
+
- agent record serialization
|
|
1732
|
+
|
|
1733
|
+
Workflow:
|
|
1734
|
+
|
|
1735
|
+
- cycle rejection
|
|
1736
|
+
- dependency execution
|
|
1737
|
+
- fan-out
|
|
1738
|
+
- merge
|
|
1739
|
+
- retry
|
|
1740
|
+
- cancellation
|
|
1741
|
+
|
|
1742
|
+
Scheduler:
|
|
1743
|
+
|
|
1744
|
+
- interval parsing
|
|
1745
|
+
- next-run calculation
|
|
1746
|
+
- catch-up policy
|
|
1747
|
+
- pause/resume
|
|
1748
|
+
|
|
1749
|
+
Worktrees:
|
|
1750
|
+
|
|
1751
|
+
- create
|
|
1752
|
+
- branch collision
|
|
1753
|
+
- dirty cleanup protection
|
|
1754
|
+
|
|
1755
|
+
## 46.2 Durable recovery tests
|
|
1756
|
+
|
|
1757
|
+
Test:
|
|
1758
|
+
|
|
1759
|
+
```text
|
|
1760
|
+
start workflow
|
|
1761
|
+
complete A
|
|
1762
|
+
start B
|
|
1763
|
+
simulate process death
|
|
1764
|
+
reload state
|
|
1765
|
+
assert A not rerun
|
|
1766
|
+
assert B resumes/retries according to state
|
|
1767
|
+
assert C remains blocked until dependencies complete
|
|
1768
|
+
```
|
|
1769
|
+
|
|
1770
|
+
## 46.3 Crash boundary tests
|
|
1771
|
+
|
|
1772
|
+
Simulate failure:
|
|
1773
|
+
|
|
1774
|
+
- before agent spawn
|
|
1775
|
+
- after agent spawn before state update
|
|
1776
|
+
- after completion before result acknowledgement
|
|
1777
|
+
- before external side effect
|
|
1778
|
+
- after external side effect but before receipt commit
|
|
1779
|
+
|
|
1780
|
+
## 46.4 Integration tests
|
|
1781
|
+
|
|
1782
|
+
Use real Pi session SDK with deterministic/mock model where possible.
|
|
1783
|
+
|
|
1784
|
+
Validate:
|
|
1785
|
+
|
|
1786
|
+
- child session creation
|
|
1787
|
+
- child tool boundaries
|
|
1788
|
+
- result propagation
|
|
1789
|
+
- parent wake-up
|
|
1790
|
+
- resume
|
|
1791
|
+
|
|
1792
|
+
## 46.5 Parity tests
|
|
1793
|
+
|
|
1794
|
+
For each adapted upstream skill/playbook:
|
|
1795
|
+
|
|
1796
|
+
- assert required semantics exist
|
|
1797
|
+
- assert Cursor-only terminology does not instruct impossible actions
|
|
1798
|
+
- assert native runtime mappings are present
|
|
1799
|
+
|
|
1800
|
+
---
|
|
1801
|
+
|
|
1802
|
+
# 47. Acceptance criteria for 0.3.0
|
|
1803
|
+
|
|
1804
|
+
`0.3.0` is complete when all of the following are true.
|
|
1805
|
+
|
|
1806
|
+
## Runtime
|
|
1807
|
+
|
|
1808
|
+
- [ ] No runtime dependency outside official `@earendil-works/*`
|
|
1809
|
+
- [ ] Native child-agent spawn works
|
|
1810
|
+
- [ ] Native agent status works
|
|
1811
|
+
- [ ] Native send/stop works
|
|
1812
|
+
- [ ] Agent roles enforce tool permissions
|
|
1813
|
+
|
|
1814
|
+
## Workflow
|
|
1815
|
+
|
|
1816
|
+
- [ ] Parallel graph works
|
|
1817
|
+
- [ ] Chain works
|
|
1818
|
+
- [ ] Fan-out/merge works
|
|
1819
|
+
- [ ] Worker/verifier graph works
|
|
1820
|
+
- [ ] Workflow state persists
|
|
1821
|
+
- [ ] Completed graph nodes do not rerun after restart
|
|
1822
|
+
|
|
1823
|
+
## Isolation
|
|
1824
|
+
|
|
1825
|
+
- [x] Independent parallel writers use worktrees; single-writer work lands in the target checkout; multi-writer delivery requires an integrator
|
|
1826
|
+
- [ ] Read-only agents cannot write
|
|
1827
|
+
- [ ] Worktree cleanup is safe
|
|
1828
|
+
|
|
1829
|
+
## Scheduler
|
|
1830
|
+
|
|
1831
|
+
- [ ] `/pstack-loop` persists
|
|
1832
|
+
- [ ] Catch-up policy works
|
|
1833
|
+
- [ ] Loop can be listed/paused/resumed/stopped
|
|
1834
|
+
|
|
1835
|
+
## pstack UX
|
|
1836
|
+
|
|
1837
|
+
- [ ] `/poteto-mode`
|
|
1838
|
+
- [ ] `/setup-pstack`
|
|
1839
|
+
- [ ] `/pstack-runtime`
|
|
1840
|
+
- [ ] `/pstack-upstream`
|
|
1841
|
+
- [ ] `/pstack-parity`
|
|
1842
|
+
|
|
1843
|
+
## Upstream
|
|
1844
|
+
|
|
1845
|
+
- [ ] Every upstream file classified
|
|
1846
|
+
- [ ] No unknown changed files
|
|
1847
|
+
- [ ] `PENDING_PORT = 0` for features claimed as supported
|
|
1848
|
+
- [ ] package displays exact upstream pstack version and commit
|
|
1849
|
+
|
|
1850
|
+
---
|
|
1851
|
+
|
|
1852
|
+
# 48. Full semantic parity criteria
|
|
1853
|
+
|
|
1854
|
+
The project may claim:
|
|
1855
|
+
|
|
1856
|
+
```text
|
|
1857
|
+
Full semantic parity with pstack <version>
|
|
1858
|
+
```
|
|
1859
|
+
|
|
1860
|
+
only if:
|
|
1861
|
+
|
|
1862
|
+
1. every upstream skill is classified,
|
|
1863
|
+
2. every playbook is classified,
|
|
1864
|
+
3. every supported workflow has parity tests,
|
|
1865
|
+
4. every Cursor-only behavior has an explicit Pi equivalent or explicit unsupported classification,
|
|
1866
|
+
5. there are no `PENDING_PORT` entries,
|
|
1867
|
+
6. no known critical behavior silently degrades.
|
|
1868
|
+
|
|
1869
|
+
---
|
|
1870
|
+
|
|
1871
|
+
# 49. Release phases
|
|
1872
|
+
|
|
1873
|
+
## Phase 1 — Native runtime foundation
|
|
1874
|
+
|
|
1875
|
+
Deliver:
|
|
1876
|
+
|
|
1877
|
+
- AgentHost
|
|
1878
|
+
- ModelRouter
|
|
1879
|
+
- role profiles
|
|
1880
|
+
- durable records
|
|
1881
|
+
- basic tools
|
|
1882
|
+
|
|
1883
|
+
## Phase 2 — Workflow engine
|
|
1884
|
+
|
|
1885
|
+
Deliver:
|
|
1886
|
+
|
|
1887
|
+
- graph model
|
|
1888
|
+
- parallel/chain/merge
|
|
1889
|
+
- recovery
|
|
1890
|
+
- cancellation
|
|
1891
|
+
- status
|
|
1892
|
+
|
|
1893
|
+
## Phase 3 — Isolation and verification
|
|
1894
|
+
|
|
1895
|
+
Deliver:
|
|
1896
|
+
|
|
1897
|
+
- WorktreeManager
|
|
1898
|
+
- reviewer permissions
|
|
1899
|
+
- verifier workflow
|
|
1900
|
+
|
|
1901
|
+
## Phase 4 — Scheduler
|
|
1902
|
+
|
|
1903
|
+
Deliver:
|
|
1904
|
+
|
|
1905
|
+
- `/pstack-loop`
|
|
1906
|
+
- persisted schedules
|
|
1907
|
+
- resume semantics
|
|
1908
|
+
|
|
1909
|
+
## Phase 5 — pstack skill migration
|
|
1910
|
+
|
|
1911
|
+
Move from existing bridge content to:
|
|
1912
|
+
|
|
1913
|
+
```text
|
|
1914
|
+
upstream content
|
|
1915
|
+
+
|
|
1916
|
+
native runtime adaptation
|
|
1917
|
+
```
|
|
1918
|
+
|
|
1919
|
+
without Whamp runtime dependency.
|
|
1920
|
+
|
|
1921
|
+
## Phase 6 — 0.15.15 parity pass
|
|
1922
|
+
|
|
1923
|
+
Audit every upstream pstack path at the pinned version.
|
|
1924
|
+
|
|
1925
|
+
Generate final `PARITY.md`.
|
|
1926
|
+
|
|
1927
|
+
## Phase 7 — hardening
|
|
1928
|
+
|
|
1929
|
+
- crash tests
|
|
1930
|
+
- provider failures
|
|
1931
|
+
- worktree conflicts
|
|
1932
|
+
- state corruption
|
|
1933
|
+
- concurrency stress
|
|
1934
|
+
- migration tests
|
|
1935
|
+
|
|
1936
|
+
---
|
|
1937
|
+
|
|
1938
|
+
# 50. Future roadmap
|
|
1939
|
+
|
|
1940
|
+
Possible later features:
|
|
1941
|
+
|
|
1942
|
+
- OS-level scheduler integration
|
|
1943
|
+
- richer TUI workflow graph
|
|
1944
|
+
- cross-session workflow takeover
|
|
1945
|
+
- remote durable storage
|
|
1946
|
+
- remote workers
|
|
1947
|
+
- workflow export/import
|
|
1948
|
+
- cost budgets
|
|
1949
|
+
- replay debugger
|
|
1950
|
+
- workflow timeline viewer
|
|
1951
|
+
- automatic upstream parity pull requests
|
|
1952
|
+
|
|
1953
|
+
---
|
|
1954
|
+
|
|
1955
|
+
# 51. Open engineering questions
|
|
1956
|
+
|
|
1957
|
+
## Q1. Durable session persistence boundary
|
|
1958
|
+
|
|
1959
|
+
Determine the cleanest supported combination of Pi `AgentSession`, `SessionManager`, and Pi Durable records for child-session restoration.
|
|
1960
|
+
|
|
1961
|
+
## Q2. Parent wake-up
|
|
1962
|
+
|
|
1963
|
+
Determine whether completed child workflows should trigger a Pi custom message, wait until next user turn, or use a configurable behavior.
|
|
1964
|
+
|
|
1965
|
+
Default recommendation:
|
|
1966
|
+
|
|
1967
|
+
```text
|
|
1968
|
+
wake parent on workflow completion or blocking human question
|
|
1969
|
+
```
|
|
1970
|
+
|
|
1971
|
+
## Q3. Agent continuation
|
|
1972
|
+
|
|
1973
|
+
Determine whether follow-up instructions should reuse the same child session by default.
|
|
1974
|
+
|
|
1975
|
+
Recommendation:
|
|
1976
|
+
|
|
1977
|
+
```text
|
|
1978
|
+
same logical call → reuse session
|
|
1979
|
+
fresh worker step → new session
|
|
1980
|
+
```
|
|
1981
|
+
|
|
1982
|
+
## Q4. Git integration
|
|
1983
|
+
|
|
1984
|
+
Decide whether initial 0.3.0 needs branch creation automatically or only worktree isolation.
|
|
1985
|
+
|
|
1986
|
+
Recommendation: implement both together because writable worktrees need a clear branch owner.
|
|
1987
|
+
|
|
1988
|
+
## Q5. Scheduler ownership
|
|
1989
|
+
|
|
1990
|
+
Loops should remain attached to the creating Pi session initially.
|
|
1991
|
+
|
|
1992
|
+
Cross-session/global loops can come later.
|
|
1993
|
+
|
|
1994
|
+
---
|
|
1995
|
+
|
|
1996
|
+
# 52. Definition of done
|
|
1997
|
+
|
|
1998
|
+
The project is considered successfully redesigned when the following statement is true:
|
|
1999
|
+
|
|
2000
|
+
> `2333` can execute pstack-style multi-agent workflows, resume them after interruption, isolate concurrent writers, route models by role, run scheduled pstack checks, and report exact upstream compatibility while depending only on official Pi runtime packages.
|
|
2001
|
+
|
|
2002
|
+
The implementation should no longer require a user to understand or install:
|
|
2003
|
+
|
|
2004
|
+
```text
|
|
2005
|
+
Whamp pstack
|
|
2006
|
+
pi-subagents
|
|
2007
|
+
pi-durable-subagents
|
|
2008
|
+
pi-agents
|
|
2009
|
+
```
|
|
2010
|
+
|
|
2011
|
+
The user installs one package:
|
|
2012
|
+
|
|
2013
|
+
```bash
|
|
2014
|
+
pi install npm:2333
|
|
2015
|
+
```
|
|
2016
|
+
|
|
2017
|
+
and receives one coherent Pi-native pstack runtime.
|
|
2018
|
+
|
|
2019
|
+
---
|
|
2020
|
+
|
|
2021
|
+
# 53. Recommended release identity
|
|
2022
|
+
|
|
2023
|
+
Package:
|
|
2024
|
+
|
|
2025
|
+
```text
|
|
2026
|
+
2333
|
|
2027
|
+
```
|
|
2028
|
+
|
|
2029
|
+
Project:
|
|
2030
|
+
|
|
2031
|
+
```text
|
|
2032
|
+
pi-pstack-native
|
|
2033
|
+
```
|
|
2034
|
+
|
|
2035
|
+
Release:
|
|
2036
|
+
|
|
2037
|
+
```text
|
|
2038
|
+
0.3.0
|
|
2039
|
+
```
|
|
2040
|
+
|
|
2041
|
+
Positioning:
|
|
2042
|
+
|
|
2043
|
+
> pstack semantics, rebuilt natively for Pi.
|
|
2044
|
+
|
|
2045
|
+
Upstream display:
|
|
2046
|
+
|
|
2047
|
+
```text
|
|
2048
|
+
pi-pstack-native 0.3.0
|
|
2049
|
+
upstream pstack 0.15.15
|
|
2050
|
+
Pi-native runtime
|
|
2051
|
+
third-party runtime dependencies: none
|
|
2052
|
+
```
|
|
2053
|
+
|
|
2054
|
+
---
|
|
2055
|
+
|
|
2056
|
+
# 54. Final architectural decision
|
|
2057
|
+
|
|
2058
|
+
The project should proceed with the following rule:
|
|
2059
|
+
|
|
2060
|
+
> Official Pi packages provide the platform. `pi-pstack-native` owns everything pstack-specific above that platform.
|
|
2061
|
+
|
|
2062
|
+
That includes:
|
|
2063
|
+
|
|
2064
|
+
```text
|
|
2065
|
+
agent lifecycle
|
|
2066
|
+
agent profiles
|
|
2067
|
+
workflow graphs
|
|
2068
|
+
orchestration
|
|
2069
|
+
durability policy
|
|
2070
|
+
recovery
|
|
2071
|
+
model roles
|
|
2072
|
+
worktree isolation
|
|
2073
|
+
scheduler
|
|
2074
|
+
Poteto runtime
|
|
2075
|
+
upstream compatibility
|
|
2076
|
+
parity verification
|
|
2077
|
+
```
|
|
2078
|
+
|
|
2079
|
+
This gives the project a stable boundary:
|
|
2080
|
+
|
|
2081
|
+
```text
|
|
2082
|
+
pstack semantics
|
|
2083
|
+
↓
|
|
2084
|
+
pi-pstack-native
|
|
2085
|
+
↓
|
|
2086
|
+
official Pi APIs
|
|
2087
|
+
```
|
|
2088
|
+
|
|
2089
|
+
instead of a stack of independently versioned third-party runtimes.
|
|
2090
|
+
|
|
2091
|
+
---
|
|
2092
|
+
|
|
2093
|
+
## Implementation decision for 0.3.0
|
|
2094
|
+
|
|
2095
|
+
During implementation, the official Pi APIs exposed two separate conversation runtimes: `@earendil-works/pi-coding-agent` `AgentSession` (which already owns Pi auth, model registry, extensions, tools, skills, and session files) and the lower-level `@earendil-works/pi-durable` Harness (which expects its own model/provider registry and conversation host).
|
|
2096
|
+
|
|
2097
|
+
`0.3.0` therefore does **not** open a second Durable Harness inside the extension. Child agents use official persistent Pi `AgentSession` + `SessionManager`, while pstack-specific workflow state uses an atomic native journal under `~/.pi/agent/pstack-native/`. This avoids duplicating model/auth/tool state and avoids split ownership of one child conversation. The workflow storage boundary is isolated behind `src/runtime/store.ts`, so a future official bridge between Coding Agent sessions and Pi Durable can replace it without changing pstack workflow semantics.
|
|
2098
|
+
|
|
2099
|
+
This is an intentional implementation refinement of the earlier dependency sketch: the release still has no non-official runtime dependencies, but it does not claim that its workflow journal is `@earendil-works/pi-durable` storage.
|
|
2100
|
+
|
|
2101
|
+
|
|
2102
|
+
---
|
|
2103
|
+
|
|
2104
|
+
# 55. 0.3.0 implementation status (authoritative)
|
|
2105
|
+
|
|
2106
|
+
This section records the final implementation choices and overrides stale planning examples above where they differ.
|
|
2107
|
+
|
|
2108
|
+
## Implemented
|
|
2109
|
+
|
|
2110
|
+
- Native child sessions use official Pi `createAgentSession()` + persistent `SessionManager`.
|
|
2111
|
+
- Workflow DAG state uses pstack-native atomic JSON records plus append-only journals. Completed calls do not rerun after process recovery; interrupted child sessions reopen and resume.
|
|
2112
|
+
- Process/file locks verify owner PIDs. A fresh lock from a dead process is recovered immediately; a live owner is never stolen.
|
|
2113
|
+
- One simple writer may edit the target checkout. Independent parallel root writers use separate worktrees. Writable chains continue in the predecessor workspace.
|
|
2114
|
+
- A workflow with several writable artifacts must converge through profile `integrator` before combined verification. Reviewer/verifier nodes with several writer dependencies are rejected until an integrator exists.
|
|
2115
|
+
- Standalone background writable child starts default to worktree isolation.
|
|
2116
|
+
- Reviewer is read-only. Verifier has read/search/bash but no edit/write. Pi-native `grep`, `find`, and `ls` are path-confined read-only tools because Pi 1.1's default built-ins are `read`, `bash`, `edit`, and `write`.
|
|
2117
|
+
- `/setup-pstack` configures role models plus one global child reasoning level. Unsupported explicit reasoning levels fail closed for the resolved model.
|
|
2118
|
+
- `/pstack-loop` persists schedules, uses a cross-process update lock, runs only while Pi is active, and catches up at most one missed run on session resume.
|
|
2119
|
+
- The semantic port contains all 51 upstream top-level skill names and all 23 Poteto playbooks at pstack 0.15.15; `make-bot-ui` is explicit Cursor-only.
|
|
2120
|
+
|
|
2121
|
+
## Dependency refinement
|
|
2122
|
+
|
|
2123
|
+
The original architecture allowed direct use of `@earendil-works/pi-durable`. The shipped 0.3.0 extension does not instantiate a second Durable Harness. Pi Coding Agent already owns model/auth/tool/session lifecycle for `AgentSession`; opening an independent Harness would split conversation ownership. The orchestration storage boundary is therefore implemented locally and remains replaceable if Pi later exposes an official Coding-Agent/Durable bridge. Runtime dependencies remain official-Pi-only: the host supplies `@earendil-works/pi-coding-agent`; there are no third-party runtime packages.
|
|
2124
|
+
|
|
2125
|
+
## Parity claim boundary
|
|
2126
|
+
|
|
2127
|
+
`full semantic parity` in this release means the **listed top-level skill/playbook semantics**, not a byte-for-byte mirror of every upstream file. Auxiliary upstream references, scripts, assets, docs, and automations are not individually claimed as vendored or file-level audited. `PARITY.json` marks `fileLevelAudit` as `not-claimed` so this cannot be mistaken for a 128-file source mirror.
|
|
2128
|
+
|
|
2129
|
+
## Validation status
|
|
2130
|
+
|
|
2131
|
+
The package test suite exercises graph validation, concurrency, recovery, lock recovery, writer/worktree placement, explicit integration, verifier placement, loop locking, model/reasoning routing, path confinement, atomic stores, and dirty-worktree cleanup. A real model/provider child-agent smoke test still requires a consumer Pi installation with Node 22.19+ and configured provider credentials and is therefore recorded as residual risk in `REVIEW.md`.
|