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
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { spawnSync } from 'node:child_process';
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
|
+
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, symlinkSync, writeFileSync } from 'node:fs';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
6
|
+
import { dirname, join, resolve } from 'node:path';
|
|
7
|
+
import { test } from 'node:test';
|
|
8
|
+
import { checkInventory } from '../check-inventory.mjs';
|
|
9
|
+
import { digest, readJSON } from './core.mjs';
|
|
10
|
+
import { buildInventory, readSnapshot, validateInventory, validateSnapshot } from './inventory.mjs';
|
|
11
|
+
|
|
12
|
+
const root = resolve('.');
|
|
13
|
+
const snapshotPath = 'docs/upstream-target-0.15.36.json';
|
|
14
|
+
const inventoryPath = 'docs/upstream-inventory-0.15.36.json';
|
|
15
|
+
const dispositionsPath = 'docs/upstream-dispositions-0.15.36.json';
|
|
16
|
+
const serialize = value => JSON.stringify(value,null,2)+'\n';
|
|
17
|
+
function snapshotFor(paths) {
|
|
18
|
+
const blobs = paths.sort((a,b)=>a.localeCompare(b,'en')).map((path,index)=>({path,blob:String(index+1).repeat(40),mode:'100644',size:10+index}));
|
|
19
|
+
return {schemaVersion:1,repository:'cursor/plugins',path:'pstack',treeTruncated:false,commit:'a'.repeat(40),version:'0.15.36',blobs,pstackBlobCount:blobs.length,blobDigest:digest(blobs)};
|
|
20
|
+
}
|
|
21
|
+
function fixture(t) {
|
|
22
|
+
const localRoot = mkdtempSync(join(tmpdir(),'upstream-inventory-'));
|
|
23
|
+
t.after(()=>rmSync(localRoot,{recursive:true,force:true}));
|
|
24
|
+
const put = (path,text) => {mkdirSync(dirname(join(localRoot,path)),{recursive:true});writeFileSync(join(localRoot,path),text);};
|
|
25
|
+
put('agents/reviewer.md','review');
|
|
26
|
+
put('skills/adapted/SKILL.md','Read dataset.md.');
|
|
27
|
+
put('skills/adapted/references/local.txt','Only here: helper.mjs');
|
|
28
|
+
const snapshot = snapshotFor(['agents/reviewer.md','skills/adapted/SKILL.md','skills/missing/SKILL.md','skills/missing/references/dataset.md']);
|
|
29
|
+
const parity = {upstreamCommit:'b'.repeat(40),upstream:'0.15.17',skills:{adapted:'ADAPTED'},playbooks:{}};
|
|
30
|
+
const review = (target = snapshot,byPath = Object.fromEntries(target.blobs
|
|
31
|
+
.filter(({path})=>!(/^(?:agents\/[^/]+\.md|skills\/[^/]+\/SKILL\.md|skills\/poteto-mode\/playbooks\/[^/]+\.md|(?:\.cursor-plugin\/)?plugin\.json)$/.test(path)))
|
|
32
|
+
.map(({path})=>[path,{kind:'source-only',reason:'Reviewed fixture auxiliary source.'}]))) => {
|
|
33
|
+
const table = {schemaVersion:1,target:{commit:target.commit,snapshotDigest:target.blobDigest},reviewedAt:'2026-10-27',byPath};
|
|
34
|
+
put(dispositionsPath,serialize(table));
|
|
35
|
+
return table;
|
|
36
|
+
};
|
|
37
|
+
review();
|
|
38
|
+
return {snapshot,parity,localRoot,put,review};
|
|
39
|
+
}
|
|
40
|
+
function inputsFor(f,snapshot,parity = f.parity) {
|
|
41
|
+
f.review(snapshot);
|
|
42
|
+
return {...f,snapshot,parity};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
test('fixture inventory separates port, closure, contracts and evidence',t=>{
|
|
46
|
+
const f = fixture(t), inventory = buildInventory(f);
|
|
47
|
+
assert.equal(validateSnapshot(f.snapshot),f.snapshot);
|
|
48
|
+
assert.equal(validateInventory(inventory,f),inventory);
|
|
49
|
+
assert.deepEqual(inventory.target,{commit:'a'.repeat(40),version:'0.15.36',snapshot:snapshotPath,snapshotDigest:f.snapshot.blobDigest});
|
|
50
|
+
assert.deepEqual(inventory.reviewedBaseline,{commit:'b'.repeat(40),version:'0.15.17',registry:'PARITY.json'});
|
|
51
|
+
assert.deepEqual(inventory.counts,{files:4,skills:2,playbooks:0,agents:1,manifest:0,references:1,scripts:0,automations:0,docs:0,assets:0,other:0,nestedSkills:0});
|
|
52
|
+
assert.deepEqual(inventory.dispositionSummary,{local:2,sourceOnly:1,unsupported:0,pending:1});
|
|
53
|
+
assert.deepEqual(inventory.openWork,{pendingSkills:['missing'],pendingPlaybooks:[],pendingNestedSkills:[],referencedFiles:[]});
|
|
54
|
+
assert.deepEqual(inventory.entries.map(e=>e.port),[
|
|
55
|
+
{kind:'local',path:'agents/reviewer.md',reason:'agent-role-file'},
|
|
56
|
+
{kind:'local',path:'skills/adapted/SKILL.md',reason:'parity-adapted',parity:'ADAPTED'},
|
|
57
|
+
{kind:'source-only',reason:'Reviewed fixture auxiliary source.'},
|
|
58
|
+
{kind:'pending',reason:'not-in-reviewed-registry'},
|
|
59
|
+
]);
|
|
60
|
+
assert.deepEqual(inventory.entries[2].closure,{referencedByLocalSkill:true});
|
|
61
|
+
assert.deepEqual(inventory.entries[2].source,{path:'skills/missing/references/dataset.md',blob:'3'.repeat(40),mode:'100644',size:12,category:'reference'});
|
|
62
|
+
for(const entry of inventory.entries) {
|
|
63
|
+
assert.deepEqual(entry.requirements,{status:'not_recorded'});
|
|
64
|
+
assert.deepEqual(entry.contracts,{status:'not_run',ids:[]});
|
|
65
|
+
assert.deepEqual(entry.evidence,{status:'not_run',refs:[]});
|
|
66
|
+
}
|
|
67
|
+
assert.equal(serialize(inventory),serialize(buildInventory(f)));
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test('category order and count buckets follow the path rules',t=>{
|
|
71
|
+
const f = fixture(t);
|
|
72
|
+
for(const [path,category,bucket] of [
|
|
73
|
+
['.cursor-plugin/plugin.json','manifest','manifest'],
|
|
74
|
+
['plugin.json','manifest','manifest'],
|
|
75
|
+
['skills/example/SKILL.md','skill','skills'],
|
|
76
|
+
['skills/poteto-mode/playbooks/example.md','playbook','playbooks'],
|
|
77
|
+
['skills/poteto-mode/scripts/references/fixture.md','playbook-script','scripts'],
|
|
78
|
+
['agents/example.md','agent','agents'],
|
|
79
|
+
['automations/benny/skills/example/SKILL.md','automation','automations'],
|
|
80
|
+
['automations/benny/references/fixture.md','automation','automations'],
|
|
81
|
+
['automations/benny/scripts/fixture.mjs','automation','automations'],
|
|
82
|
+
['skills/example/references/scripts/fixture.svg','reference','references'],
|
|
83
|
+
['skills/example/scripts/fixture.md','script','scripts'],
|
|
84
|
+
['scripts/fixture.mjs','script','scripts'],
|
|
85
|
+
['assets/image.jpeg','asset','assets'],
|
|
86
|
+
['docs/example.md','docs','docs'],
|
|
87
|
+
['LICENSE','other','other'],
|
|
88
|
+
]) {
|
|
89
|
+
const inventory = buildInventory(inputsFor(f,snapshotFor([path])));
|
|
90
|
+
assert.equal(inventory.entries[0].source.category,category,path);
|
|
91
|
+
assert.equal(inventory.counts[bucket],1,path);
|
|
92
|
+
}
|
|
93
|
+
const inventory = buildInventory(inputsFor(f,snapshotFor(['scripts/helper.mjs'])));
|
|
94
|
+
assert.equal(inventory.entries[0].closure.referencedByLocalSkill,true);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
test('registry statuses and absent agents have explicit dispositions',t=>{
|
|
98
|
+
const f = fixture(t);
|
|
99
|
+
for(const category of ['skill','playbook']) {
|
|
100
|
+
const path = category === 'skill' ? 'skills/example/SKILL.md':'skills/poteto-mode/playbooks/example.md';
|
|
101
|
+
f.put(path,'example');
|
|
102
|
+
for(const [status,port] of [
|
|
103
|
+
['ADAPTED',{kind:'local',path,reason:'parity-adapted',parity:'ADAPTED'}],
|
|
104
|
+
['CURSOR_ONLY',{kind:'unsupported',reason:'cursor-only'}],
|
|
105
|
+
['PENDING_PORT',{kind:'pending',reason:'parity-pending'}],
|
|
106
|
+
['FUTURE_STATUS',{kind:'pending',reason:'parity-pending'}],
|
|
107
|
+
[undefined,{kind:'pending',reason:'not-in-reviewed-registry'}],
|
|
108
|
+
]) {
|
|
109
|
+
const parity = {...f.parity,[category === 'skill' ? 'skills':'playbooks']:status ? {example:status}:{}};
|
|
110
|
+
const inputs = inputsFor(f,snapshotFor([path]),parity), inventory = buildInventory(inputs);
|
|
111
|
+
assert.deepEqual(inventory.entries[0].port,port);
|
|
112
|
+
assert.equal(validateInventory(inventory,inputs),inventory);
|
|
113
|
+
assert.deepEqual(inventory.openWork[category === 'skill' ? 'pendingSkills':'pendingPlaybooks'],port.kind === 'pending' ? ['example']:[]);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
assert.deepEqual(buildInventory(inputsFor(f,snapshotFor(['agents/absent.md']))).entries[0].port,{kind:'pending',reason:'agent-role-not-ported'});
|
|
117
|
+
assert.deepEqual(buildInventory(inputsFor(f,snapshotFor(['plugin.json']))).entries[0].port,{kind:'source-only',reason:'upstream-manifest-not-vendored'});
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
test('real recorded snapshot has a complete non-overlapping category partition',()=>{
|
|
121
|
+
const snapshot = readSnapshot(root), parity = readJSON(join(root,'PARITY.json'));
|
|
122
|
+
const inputs = {snapshot,parity,localRoot:root}, inventory = buildInventory(inputs);
|
|
123
|
+
assert.equal(validateInventory(inventory,inputs),inventory);
|
|
124
|
+
assert.deepEqual(inventory.counts,{files:573,skills:58,playbooks:23,agents:2,manifest:2,references:30,scripts:424,automations:12,docs:13,assets:7,other:2,nestedSkills:3});
|
|
125
|
+
const {files,nestedSkills,...partition} = inventory.counts;
|
|
126
|
+
assert.equal(Object.values(partition).reduce((total,count)=>total+count,0),573);
|
|
127
|
+
assert.equal(files,573);
|
|
128
|
+
assert.equal(nestedSkills,3);
|
|
129
|
+
assert.deepEqual(inventory.openWork.pendingNestedSkills,[]);
|
|
130
|
+
assert.deepEqual(inventory.openWork.pendingPlaybooks,[]);
|
|
131
|
+
assert.deepEqual(inventory.openWork.referencedFiles,[]);
|
|
132
|
+
assert.equal(inventory.entries.filter(e=>e.source.category === 'automation').length,12);
|
|
133
|
+
const ported = ['create-formal-verification-skill','in-your-own-words','ketchup-video','maintain-formal-verification-skill','sharpen'];
|
|
134
|
+
for(const name of ported) {
|
|
135
|
+
assert.equal(parity.skills[name],'ADAPTED');
|
|
136
|
+
assert.deepEqual(inventory.entries.find(e=>e.source.path === `skills/${name}/SKILL.md`).port,{kind:'local',path:`skills/${name}/SKILL.md`,reason:'parity-adapted',parity:'ADAPTED'});
|
|
137
|
+
}
|
|
138
|
+
assert.deepEqual(inventory.openWork.pendingSkills,[]);
|
|
139
|
+
const statechart = inventory.entries.find(e=>e.source.path === 'skills/statechart/SKILL.md');
|
|
140
|
+
assert.equal(statechart.port.kind,'local');
|
|
141
|
+
assert.equal(statechart.port.path,'skills/statechart/SKILL.md');
|
|
142
|
+
const checker = inventory.entries.find(e=>e.source.path === 'skills/poteto-mode/scripts/check-plan.mjs');
|
|
143
|
+
assert.equal(checker.port.kind,'local');
|
|
144
|
+
assert.equal(checker.port.path,'scripts/check-plan.mjs');
|
|
145
|
+
const manifest = inventory.entries.find(e=>e.source.path === '.cursor-plugin/plugin.json');
|
|
146
|
+
assert.equal(manifest.port.kind,'local');
|
|
147
|
+
assert.equal(manifest.port.path,'vendor/upstream/0.15.36/pstack/.cursor-plugin/plugin.json');
|
|
148
|
+
assert.deepEqual(inventory.entries.find(e=>e.source.path === 'skills/make-bot-ui/SKILL.md').port,{kind:'unsupported',reason:'cursor-only'});
|
|
149
|
+
for(const entry of inventory.entries.filter(e=>e.port.kind === 'local')) assert.ok(existsSync(join(root,entry.port.path)),entry.source.path);
|
|
150
|
+
assert.deepEqual(inventory.dispositionSummary,{local:519,sourceOnly:41,unsupported:13,pending:0});
|
|
151
|
+
const reviewed = readJSON(join(root,dispositionsPath));
|
|
152
|
+
assert.equal(Object.keys(reviewed.byPath).length,490);
|
|
153
|
+
assert.deepEqual(Object.keys(reviewed.byPath).sort(),inventory.entries
|
|
154
|
+
.filter(e=>!['skill','playbook','agent','manifest'].includes(e.source.category) || ['skills/statechart/SKILL.md','.cursor-plugin/plugin.json'].includes(e.source.path))
|
|
155
|
+
.map(e=>e.source.path).sort());
|
|
156
|
+
for(const entry of inventory.entries) {
|
|
157
|
+
assert.notEqual(entry.port.reason,'file-disposition-not-reviewed',entry.source.path);
|
|
158
|
+
assert.deepEqual(entry.contracts,{status:'not_run',ids:[]});
|
|
159
|
+
assert.deepEqual(entry.evidence,{status:'not_run',refs:[]});
|
|
160
|
+
}
|
|
161
|
+
assert.equal(serialize(inventory),serialize(buildInventory(inputs)));
|
|
162
|
+
assert.equal(readFileSync(join(root,inventoryPath),'utf8'),serialize(inventory));
|
|
163
|
+
assert.deepEqual(checkInventory(root),inventory);
|
|
164
|
+
assert.equal(inventory.reviewedBaseline.commit,readJSON(join(root,'UPSTREAM.json')).commit);
|
|
165
|
+
assert.equal(inventory.reviewedBaseline.version,readJSON(join(root,'UPSTREAM.json')).version);
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
test('reviewed overrides take priority without changing closure or evidence',t=>{
|
|
169
|
+
const f = fixture(t);
|
|
170
|
+
const paths = {
|
|
171
|
+
'agents/reviewer.md':{kind:'source-only',reason:'Reviewed role retained as source.'},
|
|
172
|
+
'skills/missing/references/dataset.md':{kind:'local',path:'skills/adapted/references/local.txt',reason:'Reviewed dataset supplied by the local fixture file.'},
|
|
173
|
+
};
|
|
174
|
+
f.review(f.snapshot,paths);
|
|
175
|
+
const inventory = buildInventory(f);
|
|
176
|
+
assert.deepEqual(inventory.entries[0].port,{kind:'source-only',reason:'Reviewed role retained as source.'});
|
|
177
|
+
assert.deepEqual(inventory.entries[2].port,{kind:'local',path:'skills/adapted/references/local.txt',reason:'Reviewed dataset supplied by the local fixture file.'});
|
|
178
|
+
assert.deepEqual(inventory.entries[2].closure,{referencedByLocalSkill:true});
|
|
179
|
+
assert.deepEqual(inventory.dispositionSummary,{local:2,sourceOnly:1,unsupported:0,pending:1});
|
|
180
|
+
assert.equal(validateInventory(inventory,f),inventory);
|
|
181
|
+
inventory.entries[2].port.reason = 'Unreviewed replacement.';
|
|
182
|
+
assert.throws(()=>validateInventory(inventory,f),/^Error: INVENTORY_Reviewed disposition mismatch/);
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
const overrideRejections = [
|
|
186
|
+
['schema version',r=>r.schemaVersion=2,'Invalid override schema'],
|
|
187
|
+
['unknown root field',r=>r.unknown=true,'Invalid override schema'],
|
|
188
|
+
['unknown target field',r=>r.target.path='elsewhere','Override target mismatch'],
|
|
189
|
+
['target commit',r=>r.target.commit='c'.repeat(40),'Override target mismatch'],
|
|
190
|
+
['target digest',r=>r.target.snapshotDigest='0'.repeat(64),'Override target mismatch'],
|
|
191
|
+
['missing target',r=>delete r.target,'Invalid override schema'],
|
|
192
|
+
['empty review date',r=>r.reviewedAt='','Invalid override review date'],
|
|
193
|
+
['non-object byPath',r=>r.byPath=[],'Invalid override byPath'],
|
|
194
|
+
['null byPath',r=>r.byPath=null,'Invalid override byPath'],
|
|
195
|
+
['nonexistent snapshot path',r=>r.byPath['docs/absent.md']={kind:'source-only',reason:'Unknown source.'},'Unknown override snapshot path'],
|
|
196
|
+
['unsafe snapshot path',r=>r.byPath['../escape']={kind:'source-only',reason:'Unsafe source.'},''],
|
|
197
|
+
['unknown kind',r=>r.byPath['skills/missing/references/dataset.md'].kind='unknown','Unknown override kind'],
|
|
198
|
+
['pending kind',r=>r.byPath['skills/missing/references/dataset.md'].kind='pending','Unknown override kind'],
|
|
199
|
+
['missing kind',r=>delete r.byPath['skills/missing/references/dataset.md'].kind,'Unknown override kind'],
|
|
200
|
+
['null entry',r=>r.byPath['skills/missing/references/dataset.md']=null,'Unknown override kind'],
|
|
201
|
+
['missing reason',r=>delete r.byPath['skills/missing/references/dataset.md'].reason,'Invalid override fields'],
|
|
202
|
+
['empty reason',r=>r.byPath['skills/missing/references/dataset.md'].reason='','Override requires a reason'],
|
|
203
|
+
['blank reason',r=>r.byPath['skills/missing/references/dataset.md'].reason=' \t','Override requires a reason'],
|
|
204
|
+
['non-string reason',r=>r.byPath['skills/missing/references/dataset.md'].reason=1,'Override requires a reason'],
|
|
205
|
+
['unknown entry field',r=>r.byPath['skills/missing/references/dataset.md'].unknown=true,'Invalid override fields'],
|
|
206
|
+
['source-only with local path',r=>r.byPath['skills/missing/references/dataset.md'].path='agents/reviewer.md','Invalid override fields'],
|
|
207
|
+
['missing pending coverage',r=>delete r.byPath['skills/missing/references/dataset.md'],'Missing reviewed disposition'],
|
|
208
|
+
['nonexistent local file',r=>r.byPath['skills/missing/references/dataset.md']={kind:'local',path:'absent.md',reason:'Reviewed local mapping.'},''],
|
|
209
|
+
['local directory',r=>r.byPath['skills/missing/references/dataset.md']={kind:'local',path:'skills/adapted',reason:'Reviewed local mapping.'},'Local path must be a file'],
|
|
210
|
+
['unsafe local path',r=>r.byPath['skills/missing/references/dataset.md']={kind:'local',path:'../escape',reason:'Reviewed local mapping.'},''],
|
|
211
|
+
['registry-lacking local skill',r=>r.byPath['skills/missing/SKILL.md']={kind:'local',path:'skills/adapted/SKILL.md',reason:'Reviewed local mapping.'},'Local skill or playbook is not registry-adapted'],
|
|
212
|
+
['adapted skill downgrade to source-only',r=>r.byPath['skills/adapted/SKILL.md']={kind:'source-only',reason:'Reviewed downgrade.'},'Override cannot downgrade'],
|
|
213
|
+
['adapted skill downgrade to unsupported',r=>r.byPath['skills/adapted/SKILL.md']={kind:'unsupported',reason:'Reviewed downgrade.'},'Override cannot downgrade'],
|
|
214
|
+
];
|
|
215
|
+
for(const [name,mutate,message] of overrideRejections) test(`reviewed overrides reject ${name}`,t=>{
|
|
216
|
+
const f = fixture(t), inventory = buildInventory(f), reviewed = readJSON(join(f.localRoot,dispositionsPath));
|
|
217
|
+
mutate(reviewed);
|
|
218
|
+
f.put(dispositionsPath,serialize(reviewed));
|
|
219
|
+
for(const run of [()=>buildInventory(f),()=>validateInventory(inventory,f)]) assert.throws(run,new RegExp(`^Error: INVENTORY_${message}`));
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
test('reviewed local skills and playbooks must be adapted and cannot be downgraded',t=>{
|
|
223
|
+
const f = fixture(t);
|
|
224
|
+
for(const [path,bucket] of [['skills/example/SKILL.md','skills'],['skills/poteto-mode/playbooks/example.md','playbooks']]) {
|
|
225
|
+
f.put(path,'Reviewed entrypoint.');
|
|
226
|
+
const snapshot = snapshotFor([path]);
|
|
227
|
+
for(const status of [undefined,'PENDING_PORT','CURSOR_ONLY']) {
|
|
228
|
+
const inputs = {...f,snapshot,parity:{...f.parity,[bucket]:status ? {example:status}:{}}};
|
|
229
|
+
f.review(snapshot,{[path]:{kind:'local',path,reason:'Reviewed entrypoint.'}});
|
|
230
|
+
assert.throws(()=>buildInventory(inputs),/^Error: INVENTORY_Local skill or playbook is not registry-adapted/);
|
|
231
|
+
}
|
|
232
|
+
const inputs = {...f,snapshot,parity:{...f.parity,[bucket]:{example:'ADAPTED'}}};
|
|
233
|
+
f.review(snapshot,{[path]:{kind:'local',path,reason:'Reviewed adapted entrypoint.'}});
|
|
234
|
+
const inventory = buildInventory(inputs);
|
|
235
|
+
assert.deepEqual(inventory.entries[0].port,{kind:'local',path,reason:'Reviewed adapted entrypoint.'});
|
|
236
|
+
assert.equal(validateInventory(inventory,inputs),inventory);
|
|
237
|
+
for(const kind of ['source-only','unsupported']) {
|
|
238
|
+
f.review(snapshot,{[path]:{kind,reason:'Reviewed downgrade.'}});
|
|
239
|
+
assert.throws(()=>buildInventory(inputs),/^Error: INVENTORY_Override cannot downgrade/);
|
|
240
|
+
assert.throws(()=>validateInventory(inventory,inputs),/^Error: INVENTORY_Override cannot downgrade/);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
test('reviewed overrides reject missing files, malformed JSON and duplicate keys',t=>{
|
|
246
|
+
const f = fixture(t), inventory = buildInventory(f), reviewed = readFileSync(join(f.localRoot,dispositionsPath),'utf8');
|
|
247
|
+
const reject = pattern => {
|
|
248
|
+
assert.throws(()=>buildInventory(f),pattern);
|
|
249
|
+
assert.throws(()=>validateInventory(inventory,f),pattern);
|
|
250
|
+
};
|
|
251
|
+
rmSync(join(f.localRoot,dispositionsPath));
|
|
252
|
+
reject(/^Error: INVENTORY_ENOENT/);
|
|
253
|
+
for(const text of ['{', 'null', '[]']) {
|
|
254
|
+
f.put(dispositionsPath,text);
|
|
255
|
+
reject(/^Error: INVENTORY_/);
|
|
256
|
+
}
|
|
257
|
+
const path = 'skills/missing/references/dataset.md', port = {kind:'source-only',reason:'Duplicate source.'};
|
|
258
|
+
const duplicates = [
|
|
259
|
+
reviewed.replace('"schemaVersion": 1','"schemaVersion": 1, "schemaVersion": 1'),
|
|
260
|
+
reviewed.replace('"byPath": {','"byPath": {'+JSON.stringify(path)+':'+JSON.stringify(port)+','),
|
|
261
|
+
reviewed.replace('"byPath": {','"byPath": {"skills/missing/references/data\\u0073et.md":'+JSON.stringify(port)+','),
|
|
262
|
+
reviewed.replace('"kind": "source-only"','"kind": "source-only", "kind": "unsupported"'),
|
|
263
|
+
];
|
|
264
|
+
for(const text of duplicates) {
|
|
265
|
+
JSON.parse(text);
|
|
266
|
+
f.put(dispositionsPath,text);
|
|
267
|
+
reject(/^Error: INVENTORY_Duplicate override key/);
|
|
268
|
+
}
|
|
269
|
+
const table = JSON.parse(reviewed);
|
|
270
|
+
table.byPath[path].reason = 'Read a JSON example with {"kind":"local","kind":"local"} and [commas, braces].';
|
|
271
|
+
f.put(dispositionsPath,serialize(table));
|
|
272
|
+
assert.equal(buildInventory(f).entries[2].port.reason,table.byPath[path].reason);
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
test('pinned auxiliary copies still require an explicit reviewed disposition',t=>{
|
|
276
|
+
const f = fixture(t), path = 'skills/adapted/references/dataset.md', bytes = Buffer.from('Pinned reference.');
|
|
277
|
+
const snapshot = snapshotFor([path]);
|
|
278
|
+
snapshot.blobs[0].blob = createHash('sha1').update(`blob ${bytes.length}\0`).update(bytes).digest('hex');
|
|
279
|
+
snapshot.blobs[0].size = bytes.length;
|
|
280
|
+
snapshot.blobDigest = digest(snapshot.blobs);
|
|
281
|
+
f.put(path,bytes);
|
|
282
|
+
f.put(`vendor/upstream/${f.parity.upstream}/pstack/${path}`,bytes);
|
|
283
|
+
f.review(snapshot,{[path]:{kind:'local',path,reason:'Reviewed identical reference.'}});
|
|
284
|
+
const inputs = {...f,snapshot}, inventory = buildInventory(inputs);
|
|
285
|
+
assert.deepEqual(inventory.entries[0].port,{kind:'local',path,reason:'Reviewed identical reference.'});
|
|
286
|
+
f.review(snapshot,{});
|
|
287
|
+
assert.throws(()=>buildInventory(inputs),/^Error: INVENTORY_Missing reviewed disposition/);
|
|
288
|
+
assert.throws(()=>validateInventory(inventory,inputs),/^Error: INVENTORY_Missing reviewed disposition/);
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
test('reviewed local mappings reject symlinks outside localRoot',t=>{
|
|
292
|
+
const f = fixture(t);
|
|
293
|
+
symlinkSync(join(root,'UPSTREAM.json'),join(f.localRoot,'agents/escape.md'));
|
|
294
|
+
f.review(f.snapshot,{'skills/missing/references/dataset.md':{kind:'local',path:'agents/escape.md',reason:'Reviewed escaped file.'}});
|
|
295
|
+
assert.throws(()=>buildInventory(f),/^Error: INVENTORY_Local path must be a file under localRoot/);
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
const snapshotRejections = [
|
|
299
|
+
['missing blob',s=>s.blobs.pop()],
|
|
300
|
+
['duplicate path',s=>{s.blobs[1].path=s.blobs[0].path;s.blobDigest=digest(s.blobs);}],
|
|
301
|
+
['unsorted paths',s=>{s.blobs.reverse();s.blobDigest=digest(s.blobs);}],
|
|
302
|
+
['tampered blobDigest',s=>s.blobDigest='0'.repeat(64)],
|
|
303
|
+
['unsafe path',s=>{s.blobs[0].path='../escape';s.blobDigest=digest(s.blobs);}],
|
|
304
|
+
['schema version',s=>s.schemaVersion=2],
|
|
305
|
+
['repository',s=>s.repository='wrong/repo'],
|
|
306
|
+
['source path',s=>s.path='elsewhere'],
|
|
307
|
+
['truncated tree',s=>s.treeTruncated=true],
|
|
308
|
+
['commit',s=>s.commit='not-a-sha'],
|
|
309
|
+
['version',s=>s.version='bad version'],
|
|
310
|
+
['blobs not array',s=>s.blobs={}],
|
|
311
|
+
['blob SHA',s=>{s.blobs[0].blob='invalid';s.blobDigest=digest(s.blobs);}],
|
|
312
|
+
['blob mode',s=>{s.blobs[0].mode='120000';s.blobDigest=digest(s.blobs);}],
|
|
313
|
+
['negative size',s=>{s.blobs[0].size=-1;s.blobDigest=digest(s.blobs);}],
|
|
314
|
+
['fractional size',s=>{s.blobs[0].size=1.5;s.blobDigest=digest(s.blobs);}],
|
|
315
|
+
['unsafe integer size',s=>{s.blobs[0].size=Number.MAX_SAFE_INTEGER+1;s.blobDigest=digest(s.blobs);}],
|
|
316
|
+
];
|
|
317
|
+
for(const [name,mutate] of snapshotRejections) test(`snapshot rejects ${name}`,t=>{
|
|
318
|
+
const f = fixture(t), snapshot = structuredClone(f.snapshot);
|
|
319
|
+
mutate(snapshot);
|
|
320
|
+
assert.throws(()=>validateSnapshot(snapshot),/^Error: SNAPSHOT_/);
|
|
321
|
+
});
|
|
322
|
+
test('snapshot rejects null and preserves the recorded locale path order',t=>{
|
|
323
|
+
assert.throws(()=>validateSnapshot(null),/^Error: SNAPSHOT_/);
|
|
324
|
+
const f = fixture(t), snapshot = snapshotFor(['skills/example/references/data.md','skills/example/SKILL.md']);
|
|
325
|
+
assert.equal(validateSnapshot(snapshot),snapshot);
|
|
326
|
+
f.put(snapshotPath,serialize(snapshot));
|
|
327
|
+
assert.deepEqual(readSnapshot(f.localRoot),snapshot);
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
const inventoryRejections = [
|
|
331
|
+
['missing blob',i=>i.entries.pop()],
|
|
332
|
+
['duplicate path',i=>i.entries[1].source.path=i.entries[0].source.path],
|
|
333
|
+
['tampered blob SHA',i=>i.entries[0].source.blob='f'.repeat(40)],
|
|
334
|
+
['tampered mode',i=>i.entries[0].source.mode='100755'],
|
|
335
|
+
['tampered size',i=>i.entries[0].source.size++],
|
|
336
|
+
['schema version',i=>i.schemaVersion=2],
|
|
337
|
+
['target commit',i=>i.target.commit='f'.repeat(40)],
|
|
338
|
+
['target version',i=>i.target.version='0.0.0'],
|
|
339
|
+
['target digest',i=>i.target.snapshotDigest='0'.repeat(64)],
|
|
340
|
+
['baseline',i=>i.reviewedBaseline.commit='f'.repeat(40)],
|
|
341
|
+
['category',i=>i.entries[0].source.category='docs'],
|
|
342
|
+
['counts',i=>i.counts.files++],
|
|
343
|
+
['disposition summary',i=>i.dispositionSummary.local++],
|
|
344
|
+
['open work',i=>i.openWork.pendingSkills=[]],
|
|
345
|
+
['unknown disposition',i=>i.entries[0].port.kind='unknown'],
|
|
346
|
+
['nonexistent local path',i=>i.entries[0].port.path='agents/nonexistent.md'],
|
|
347
|
+
['registry-lacking skill claimed local',i=>i.entries[3].port={kind:'local',path:'skills/adapted/SKILL.md'},'Local skill or playbook is not registry-adapted'],
|
|
348
|
+
['pending without reason',i=>delete i.entries[3].port.reason,'Disposition requires a reason'],
|
|
349
|
+
['pending with blank reason',i=>i.entries[3].port.reason=' ','Disposition requires a reason'],
|
|
350
|
+
['unsupported without reason',i=>i.entries[3].port={kind:'unsupported'},'Disposition requires a reason'],
|
|
351
|
+
['passed evidence without contracts',i=>i.entries[0].evidence={status:'passed',refs:['docs/evidence.json']}],
|
|
352
|
+
['passed evidence without references',i=>{i.entries[0].contracts.ids=['contract-1'];i.entries[0].evidence.status='passed';}],
|
|
353
|
+
['not-run evidence with references',i=>i.entries[0].evidence.refs=['docs/evidence.json']],
|
|
354
|
+
['unknown evidence status',i=>i.entries[0].evidence.status='unknown'],
|
|
355
|
+
['missing dependency closure',i=>delete i.entries[2].closure,'Invalid dependency closure'],
|
|
356
|
+
['requirements recorded as passed',i=>i.entries[0].requirements={status:'passed'},'Invalid requirements'],
|
|
357
|
+
['unsafe entry path',i=>i.entries[0].source.path='../escape'],
|
|
358
|
+
['unsafe local path',i=>i.entries[0].port.path='../escape'],
|
|
359
|
+
];
|
|
360
|
+
for(const [name,mutate,message = ''] of inventoryRejections) test(`inventory rejects ${name}`,t=>{
|
|
361
|
+
const f = fixture(t), inventory = buildInventory(f);
|
|
362
|
+
mutate(inventory);
|
|
363
|
+
assert.throws(()=>validateInventory(inventory,f),new RegExp(`^Error: INVENTORY_${message}`));
|
|
364
|
+
});
|
|
365
|
+
test('inventory rejects unadapted local skills, null input and escaped symlinks',t=>{
|
|
366
|
+
const f = fixture(t), inventory = buildInventory(f);
|
|
367
|
+
for(const status of ['CURSOR_ONLY','PENDING_PORT','FUTURE_STATUS']) {
|
|
368
|
+
f.parity.skills.adapted = status;
|
|
369
|
+
assert.throws(()=>validateInventory(inventory,f),/^Error: INVENTORY_/);
|
|
370
|
+
}
|
|
371
|
+
f.parity.skills.adapted = 'ADAPTED';
|
|
372
|
+
assert.throws(()=>validateInventory(null,f),/^Error: INVENTORY_/);
|
|
373
|
+
symlinkSync(join(root,'UPSTREAM.json'),join(f.localRoot,'agents/escape.md'));
|
|
374
|
+
inventory.entries[0].port.path = 'agents/escape.md';
|
|
375
|
+
assert.throws(()=>validateInventory(inventory,f),/^Error: INVENTORY_/);
|
|
376
|
+
});
|
|
377
|
+
test('inventory accepts evidence states and passed evidence with contracts and references',t=>{
|
|
378
|
+
const f = fixture(t), inventory = buildInventory(f);
|
|
379
|
+
for(const status of ['not_run','blocked','failed','stale']) {
|
|
380
|
+
inventory.entries[0].evidence.status = status;
|
|
381
|
+
assert.equal(validateInventory(inventory,f),inventory);
|
|
382
|
+
}
|
|
383
|
+
inventory.entries[0].contracts = {status:'passed',ids:['contract-1']};
|
|
384
|
+
inventory.entries[0].evidence = {status:'passed',refs:['docs/evidence.json']};
|
|
385
|
+
assert.equal(validateInventory(inventory,f),inventory);
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
test('CLI writes deterministically, check modes detect drift and never rewrite it',t=>{
|
|
389
|
+
const f = fixture(t);
|
|
390
|
+
f.put(snapshotPath,serialize(f.snapshot));
|
|
391
|
+
f.put('PARITY.json',serialize(f.parity));
|
|
392
|
+
const cli = (...args) => spawnSync(process.execPath,[join(root,'scripts/upstream/cli.mjs'),'inventory',...args],{cwd:f.localRoot,encoding:'utf8'});
|
|
393
|
+
const runner = () => spawnSync(process.execPath,[join(root,'scripts/check-inventory.mjs')],{cwd:f.localRoot,encoding:'utf8'});
|
|
394
|
+
const written = cli();
|
|
395
|
+
assert.equal(written.status,0,written.stderr);
|
|
396
|
+
assert.deepEqual(JSON.parse(written.stdout),{status:'written',files:4,pending:1});
|
|
397
|
+
const original = readFileSync(join(f.localRoot,inventoryPath),'utf8');
|
|
398
|
+
assert.equal(cli().status,0);
|
|
399
|
+
assert.equal(readFileSync(join(f.localRoot,inventoryPath),'utf8'),original);
|
|
400
|
+
for(const result of [cli('--check'),runner()]) {
|
|
401
|
+
assert.equal(result.status,0,result.stderr);
|
|
402
|
+
assert.deepEqual(JSON.parse(result.stdout),{status:'in-sync',files:4});
|
|
403
|
+
}
|
|
404
|
+
f.put(inventoryPath,original+'\n');
|
|
405
|
+
for(const result of [cli('--check'),runner()]) {
|
|
406
|
+
assert.notEqual(result.status,0);
|
|
407
|
+
assert.match(result.stderr,/INVENTORY_Drift/);
|
|
408
|
+
}
|
|
409
|
+
assert.equal(readFileSync(join(f.localRoot,inventoryPath),'utf8'),original+'\n');
|
|
410
|
+
f.put(inventoryPath,original);
|
|
411
|
+
f.put('skills/adapted/SKILL.md','Reference removed.');
|
|
412
|
+
assert.throws(()=>checkInventory(f.localRoot),/INVENTORY_Drift/);
|
|
413
|
+
const invalid = JSON.parse(original);
|
|
414
|
+
invalid.entries.pop();
|
|
415
|
+
f.put(inventoryPath,serialize(invalid));
|
|
416
|
+
assert.match(runner().stderr,/INVENTORY_Entry count mismatch/);
|
|
417
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Runs only in a separate trusted Actions job with issues:write. No upstream code executes.
|
|
2
|
+
module.exports = async function notify({ github, owner, repo, report }) {
|
|
3
|
+
if(report.schemaVersion !== 1 || !/^[a-f0-9]{12}_[a-f0-9]{12}$/.test(report.syncId) || !/^[a-f0-9]{40}$/.test(report.candidate?.sha) || !/^[a-f0-9]{40}$/.test(report.baseline?.sha) || !['changes_detected','blocked','no_change'].includes(report.status)) throw new Error('Invalid notification report');
|
|
4
|
+
if(report.status === 'no_change') return {status:'no_change'};
|
|
5
|
+
const marker = `<!-- pstack-upstream-sync:${report.syncId} -->`;
|
|
6
|
+
const title = `Upstream pstack sync ${report.syncId}`;
|
|
7
|
+
// Do not render arbitrary upstream text, paths or prompts under a privileged token.
|
|
8
|
+
const body = `${marker}\nPinned baseline: ${report.baseline.sha}\nPinned candidate: ${report.candidate.sha}\nStatus: ${report.status}\nChanged files: ${report.changes.length}\n\nDownload the read-only scan artifact from Actions for evidence and pending migration tasks. Detection is not porting, review or integration. All verification gates: not_run. Maintainer semantic review required. No baseline advancement, automatic merge or publish.`;
|
|
9
|
+
const issues = await github.paginate(github.rest.issues.listForRepo,{owner,repo,state:'all',per_page:100});
|
|
10
|
+
const existing = issues.find(i=>!i.pull_request && i.body?.includes(marker));
|
|
11
|
+
if(existing) {
|
|
12
|
+
if(existing.body !== body) await github.rest.issues.update({owner,repo,issue_number:existing.number,body});
|
|
13
|
+
return {status:'updated',number:existing.number};
|
|
14
|
+
}
|
|
15
|
+
const result = await github.rest.issues.create({owner,repo,title,body});
|
|
16
|
+
return {status:'created',number:result.data.number};
|
|
17
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { test } from 'node:test';
|
|
3
|
+
import notify from './notify.cjs';
|
|
4
|
+
test('AC-08 deduplicate all-state Issues, no change writes nothing, API failure surfaces',async()=>{
|
|
5
|
+
const issues=[],calls=[];
|
|
6
|
+
const github={paginate:async()=>issues,rest:{issues:{listForRepo(){},create:async args=>{calls.push(args);const data={number:1,...args};issues.push(data);return {data};},update:async args=>{calls.push(args);}}}};
|
|
7
|
+
const report={schemaVersion:1,syncId:`${'a'.repeat(12)}_${'b'.repeat(12)}`,baseline:{sha:'a'.repeat(40)},candidate:{sha:'b'.repeat(40)},status:'changes_detected',changes:[{}]};
|
|
8
|
+
const args={github,owner:'test',repo:'test',report};
|
|
9
|
+
assert.equal((await notify(args)).status,'created');assert.equal((await notify(args)).status,'updated');assert.equal(calls.length,1);
|
|
10
|
+
report.status='no_change';assert.equal((await notify(args)).status,'no_change');assert.equal(calls.length,1);
|
|
11
|
+
report.status='changes_detected';github.paginate=async()=>{throw new Error('rate limited');};await assert.rejects(notify(args),/rate limited/);
|
|
12
|
+
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { readJSON, safePath, shaPattern, validateReport } from './core.mjs';
|
|
4
|
+
export function checkParity(root) {
|
|
5
|
+
const parity = readJSON(join(root,'PARITY.json')), upstream = readJSON(join(root,'UPSTREAM.json'));
|
|
6
|
+
if(parity.upstream !== upstream.version || parity.upstreamCommit !== upstream.commit || !shaPattern.test(upstream.commit)) throw new Error('Upstream metadata mismatch');
|
|
7
|
+
const skills = Object.keys(parity.skills ?? {}).sort(), playbooks = Object.keys(parity.playbooks ?? {}).sort();
|
|
8
|
+
const pendingTarget = {skills: [], playbooks: []};
|
|
9
|
+
const evidence = readJSON(join(root,safePath(parity.coverage?.countEvidence)));
|
|
10
|
+
let baselineSkills = [], baselinePlaybooks = [];
|
|
11
|
+
if(evidence.schemaVersion === 1) {
|
|
12
|
+
validateReport(evidence);
|
|
13
|
+
if(evidence.candidate.sha !== upstream.commit || evidence.candidate.version !== upstream.version) throw new Error('Count evidence baseline mismatch');
|
|
14
|
+
baselineSkills = evidence.candidate.names.skills; baselinePlaybooks = evidence.candidate.names.playbooks;
|
|
15
|
+
} else {
|
|
16
|
+
// Retained historical evidence is explicitly tied to the pinned provenance.
|
|
17
|
+
const provenance = readJSON(join(root,safePath(upstream.verification)));
|
|
18
|
+
if(evidence.expected?.commit !== upstream.commit || evidence.discovered?.version !== upstream.version || provenance.commit !== upstream.commit || provenance.version !== upstream.version || provenance.treeTruncated !== false || !provenance.manifestBlob || provenance.verifiedPstackBlobs !== evidence.discovered.fileCount) throw new Error('Historical evidence mismatch');
|
|
19
|
+
if(Object.values(evidence.names ?? {}).some(v => !Array.isArray(v) || v.length)) throw new Error('Historical evidence contains name drift');
|
|
20
|
+
}
|
|
21
|
+
const skillCount = evidence.schemaVersion === 1 ? evidence.candidate.names.skills.length : evidence.discovered.skillCount;
|
|
22
|
+
const playbookCount = evidence.schemaVersion === 1 ? evidence.candidate.names.playbooks.length : evidence.discovered.playbookCount;
|
|
23
|
+
if(playbooks.length !== playbookCount || skills.length < skillCount || parity.coverage.topLevelSkills !== skillCount || parity.coverage.potetoPlaybooks !== playbookCount) throw new Error('Coverage counts mismatch');
|
|
24
|
+
const target = readJSON(join(root, safePath(parity.coverage.targetInventory)));
|
|
25
|
+
if(!shaPattern.test(target.commit ?? '') || target.treeTruncated !== false || !Array.isArray(target.blobs)) throw new Error('Invalid target inventory');
|
|
26
|
+
const targetSkills = target.blobs.filter(blob => /^skills\/[^/]+\/SKILL\.md$/.test(blob.path)).map(blob => blob.path.split('/')[1]).sort();
|
|
27
|
+
const targetPlaybooks = target.blobs.filter(blob => /^skills\/poteto-mode\/playbooks\/[^/]+\.md$/.test(blob.path)).map(blob => blob.path.split('/').at(-1).slice(0, -3)).sort();
|
|
28
|
+
if(parity.coverage.targetSkills !== targetSkills.length || parity.coverage.targetPlaybooks !== targetPlaybooks.length) throw new Error('Target counts mismatch');
|
|
29
|
+
if(!baselineSkills.every(name => skills.includes(name)) || !baselinePlaybooks.every(name => playbooks.includes(name))) throw new Error('Coverage names mismatch');
|
|
30
|
+
for(const name of [...skills, ...playbooks]) if(!targetSkills.includes(name) && !targetPlaybooks.includes(name)) throw new Error(`Registry name outside the pinned target: ${name}`);
|
|
31
|
+
const pendingSkills = targetSkills.filter(name => !skills.includes(name)), pendingPlaybooks = targetPlaybooks.filter(name => !playbooks.includes(name));
|
|
32
|
+
if(JSON.stringify(parity.coverage.pendingTargetSkills ?? []) !== JSON.stringify(pendingSkills) || JSON.stringify(parity.coverage.pendingTargetPlaybooks ?? []) !== JSON.stringify(pendingPlaybooks)) throw new Error('Pending target set mismatch');
|
|
33
|
+
for(const name of [...pendingSkills, ...pendingPlaybooks]) if(!parity.coverage.pendingTargetReasons?.[name]) throw new Error(`Pending target needs a reason: ${name}`);
|
|
34
|
+
for(const name of skills) if(!existsSync(join(root,`skills/${safePath(name)}/SKILL.md`))) throw new Error('Missing skill');
|
|
35
|
+
for(const name of playbooks) if(!existsSync(join(root,`skills/poteto-mode/playbooks/${safePath(name)}.md`))) throw new Error('Missing playbook');
|
|
36
|
+
for(const [name,status] of [...Object.entries(parity.skills),...Object.entries(parity.playbooks)]) {
|
|
37
|
+
if(!['ADAPTED','CURSOR_ONLY','PENDING_PORT'].includes(status)) throw new Error(`Invalid parity status: ${name}`);
|
|
38
|
+
if(status === 'PENDING_PORT') throw new Error(`Pending port: ${name}`);
|
|
39
|
+
if(status === 'CURSOR_ONLY' && !parity.cursorOnly.includes(name)) throw new Error('Cursor-only item must be explicit');
|
|
40
|
+
}
|
|
41
|
+
if(parity.pending?.length || parity.skills['make-bot-ui'] !== 'CURSOR_ONLY' || !parity.cursorOnly.includes('make-bot-ui')) throw new Error('Pending/unsupported scope mismatch');
|
|
42
|
+
if(parity.coverage.fileLevelAudit !== 'not-claimed' || parity.coverage.behavioralAudit !== 'not-claimed' || !parity.coverage.auxiliaryFiles) throw new Error('Parity claim must avoid unsupported equivalence');
|
|
43
|
+
if(!existsSync(join(root,'skills/pstack-runtime/SKILL.md'))) throw new Error('Missing Pi-only runtime');
|
|
44
|
+
return {skills:skills.length,playbooks:playbooks.length,pendingTarget:{skills:pendingSkills,playbooks:pendingPlaybooks}};
|
|
45
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { cpSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join, resolve } from 'node:path';
|
|
5
|
+
import { test } from 'node:test';
|
|
6
|
+
import { readJSON } from './core.mjs';
|
|
7
|
+
import { buildContracts, contractPath, readContracts, validateContracts } from './playbooks.mjs';
|
|
8
|
+
|
|
9
|
+
const root = resolve('.');
|
|
10
|
+
const serialize = (value) => `${JSON.stringify(value, null, 2)}\n`;
|
|
11
|
+
|
|
12
|
+
test('every registry playbook has one contract with ordered steps and real roles', () => {
|
|
13
|
+
const document = readContracts(root);
|
|
14
|
+
const parity = readJSON(join(root, 'PARITY.json'));
|
|
15
|
+
assert.deepEqual(document.contracts.map((contract) => contract.name).sort(), Object.keys(parity.playbooks).sort());
|
|
16
|
+
assert.equal(document.contracts.length, 23);
|
|
17
|
+
for (const contract of document.contracts) {
|
|
18
|
+
assert.ok(contract.requiredSteps.length >= 1, `${contract.name} keeps its numbered steps`);
|
|
19
|
+
assert.deepEqual(contract.requiredSteps.map((step) => step.order), contract.requiredSteps.map((_, index) => index + 1));
|
|
20
|
+
assert.ok(contract.observe.length > 0 && contract.mustReject.length > 0, `${contract.name} states what to observe and what to refuse`);
|
|
21
|
+
assert.equal(contract.parentOnly, contract.roles.length === 0);
|
|
22
|
+
assert.equal(contract.evidence.status, 'not_run', `${contract.name} claims no evidence`);
|
|
23
|
+
assert.deepEqual(contract.evidence.refs, []);
|
|
24
|
+
for (const step of contract.requiredSteps) assert.ok(step.text.length > 10, `${contract.name} step ${step.order} carries text`);
|
|
25
|
+
}
|
|
26
|
+
assert.equal(document.contracts.find((contract) => contract.name === 'bug-fix').roles.includes('architect'), true);
|
|
27
|
+
assert.equal(document.contracts.find((contract) => contract.name === 'worktree-cleanup').parentOnly, true);
|
|
28
|
+
assert.equal(document.contracts.every((contract) => contract.manualOnly), true, 'poteto-mode is a manual-entry skill, so its playbooks are too');
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test('the committed contract file matches a fresh build', () => {
|
|
32
|
+
const committed = readFileSync(join(root, contractPath), 'utf8');
|
|
33
|
+
assert.equal(committed, serialize(buildContracts({ root })));
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test('contracts follow the playbook text, not a parallel copy', () => {
|
|
37
|
+
const document = readContracts(root);
|
|
38
|
+
const bugFix = document.contracts.find((contract) => contract.name === 'bug-fix');
|
|
39
|
+
assert.deepEqual(bugFix.roles, ['architect']);
|
|
40
|
+
assert.deepEqual(bugFix.tools, ['bash', 'edit', 'find', 'grep', 'ls', 'pstack_agents', 'pstack_graph', 'pstack_workflow', 'pstack_worktrees', 'read', 'write']);
|
|
41
|
+
assert.match(bugFix.requiredSteps[0].text, /Reproduce it yourself/);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
const rejections = [
|
|
45
|
+
['unknown evidence state', (document) => { document.contracts[0].evidence.status = 'unknown'; }, /CONTRACT_EVIDENCE_STATE/],
|
|
46
|
+
['passed evidence without references', (document) => { document.contracts[0].evidence = { status: 'passed', refs: [] }; }, /CONTRACT_EVIDENCE_UNSUPPORTED/],
|
|
47
|
+
['not-run evidence carrying references', (document) => { document.contracts[0].evidence.refs = ['docs/log.txt']; }, /CONTRACT_EVIDENCE_STALE_REF/],
|
|
48
|
+
['unknown role', (document) => { document.contracts[0].roles = ['ghost']; }, /CONTRACT_ROLES_MISMATCH/],
|
|
49
|
+
['missing step', (document) => { document.contracts[0].requiredSteps.pop(); }, /CONTRACT_STEPS_MISMATCH/],
|
|
50
|
+
['blank step text', (document) => { document.contracts[0].requiredSteps[0].text = ' '; }, /CONTRACT_STEP_EMPTY/],
|
|
51
|
+
['duplicate contract', (document) => { document.contracts.push(structuredClone(document.contracts[0])); }, /CONTRACT_COUNT_MISMATCH/],
|
|
52
|
+
['missing contract', (document) => { document.contracts.pop(); }, /CONTRACT_COUNT_MISMATCH/],
|
|
53
|
+
['empty observe', (document) => { document.contracts[0].observe = []; }, /CONTRACT_OBSERVE_EMPTY/],
|
|
54
|
+
['empty refusal', (document) => { document.contracts[0].mustReject = []; }, /CONTRACT_REJECT_EMPTY/],
|
|
55
|
+
['wrong manual-only flag', (document) => { document.contracts[0].manualOnly = false; }, /CONTRACT_MANUAL_ONLY_MISMATCH/],
|
|
56
|
+
['parent-only lie', (document) => { document.contracts.find((contract) => contract.name === 'bug-fix').parentOnly = true; }, /CONTRACT_PARENT_ONLY_MISMATCH/],
|
|
57
|
+
['wrong schema', (document) => { document.schemaVersion = 2; }, /CONTRACT_SCHEMA_VERSION/],
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
for (const [name, mutate, pattern] of rejections) {
|
|
61
|
+
test(`contracts reject ${name}`, () => {
|
|
62
|
+
const document = readContracts(root);
|
|
63
|
+
const changed = structuredClone(document);
|
|
64
|
+
mutate(changed);
|
|
65
|
+
assert.throws(() => validateContracts(changed, { root }), pattern);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
test('a new playbook file without a contract is refused', () => {
|
|
70
|
+
const box = mkdtempSync(join(tmpdir(), 'playbook-contract-'));
|
|
71
|
+
try {
|
|
72
|
+
cpSync(join(root, 'skills/poteto-mode/playbooks'), join(box, 'skills/poteto-mode/playbooks'), { recursive: true });
|
|
73
|
+
cpSync(join(root, 'skills/poteto-mode/SKILL.md'), join(box, 'skills/poteto-mode/SKILL.md'));
|
|
74
|
+
writeFileSync(join(box, 'skills/poteto-mode/playbooks/uncontracted.md'), '# Uncontracted\n\n## Steps\n\n1. Do nothing.\n');
|
|
75
|
+
assert.throws(() => buildContracts({ root: box }), /PLAYBOOK_CONTRACT_MISSING: uncontracted/);
|
|
76
|
+
mkdirSync(join(box, 'skills/poteto-mode'), { recursive: true });
|
|
77
|
+
} finally {
|
|
78
|
+
rmSync(box, { recursive: true, force: true });
|
|
79
|
+
}
|
|
80
|
+
});
|