Skip to content

feat(setup): flex dispatch matrix, assignment-first setup, and lane docs - #2

Merged
thisguymartin merged 7 commits into
mainfrom
flex/dispatch-and-docs
Sep 28, 2026
Merged

thisguymartin merged 7 commits into
mainfrom
flex/dispatch-and-docs

Conversation

@thisguymartin

@thisguymartin thisguymartin commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

Closes #4

Builds on the gateway runner merged in #1. This PR adds routing, setup, and docs.

What changed

  • Adds the DeepSeek deepseek-flash and MiniMax MiniMax-M3 flex model rows. Both route through the external runner under Claude Code and Codex. A reported model mismatch fails; a missing report is marked unverified.
  • Changes setup to assign roles first, then ask effort and probe only assigned families. This permits a DeepSeek and MiniMax-only configuration while preserving the stock model matrix.
  • Adds the lane guide, usage guide, safety notes, and fork documentation. The guides now describe the runner's actual environment isolation and model receipt behavior.

OpenCode parent support from the legacy repository is outside this PR.

Verification

  • Bun tests, strict typecheck, static invariants, and plugin validation pass.
  • The exact candidate is installed in every affected harness.
  • The changed behavior passes from each real user surface.
  • The installed version, action, and observed result appear below.

Local gate on 92dc0bc: 187 Bun tests pass; strict typecheck, manifest parsing, static invariants, and claude plugin validate plugins/pstack pass. Relative links in the changed guides resolve.

Live evidence:

  • MiniMax source-runner probe passed at 92dc0bc from the Codex terminal using Claude Code 2.1.283, an isolated config directory, and a synthetic prompt. --provider minimax --model MiniMax-M3 --effort high --mode read-only exited 0 and returned PSTACK_MINIMAX_OK. Receipt: status: complete, reportedModel: MiniMax-M3, modelVerified: true, modelEvidence: provider-report, costUsd: null. The temporary Claude config was removed. This tests the source runner; the installed-plugin and setup-flow gate remains open.

  • DeepSeek source-runner probe passed at 92dc0bc from the Codex terminal using Claude Code 2.1.283, an isolated config directory, and a synthetic prompt. --provider deepseek --model deepseek-flash --effort high --mode read-only exited 0 and returned PSTACK_DEEPSEEK_OK. Receipt: status: complete, reportedModel: deepseek-flash, modelVerified: true, modelEvidence: provider-report, costUsd: null. The temporary Claude config was removed. This tests the source runner; it does not satisfy the installed-plugin or setup-flow gate.

Installed setup tests

Tested candidate 92dc0bcbb794398c7216d626310f2e146fbfcb07, plugin version 1.4.1, on 2026-09-28 UTC. An independent byte comparison confirmed all 168 tracked plugin files match the candidate in both test loads, before merge.

User interface Exact candidate load Action Observed result
Codex CLI 0.157.1, parent gpt-6-astra Installed pstack@pstack-pr2-live from a temporary local marketplace into the Codex plugin cache Invoke $setup-pstack; assign only DeepSeek and MiniMax at high; save the sheet; run both probes, both panel lanes, and a MiniMax cross-judge of the DeepSeek candidate 5/5 external runs complete, exit 0, expected markers, matching provider-reported models; cross-judge returns PASS
Claude Code CLI 2.1.283 Session-load the exact archived plugin through --plugin-dir Invoke /pstack:setup-pstack; same two-family assignments; run both probes, both panel lanes, and each provider judging the other candidate 6/6 external runs complete, exit 0, expected markers, matching provider-reported models; both cross-judges return PASS

Both sessions used synthetic data and redirected only the model-sheet and integration destinations to temporary files. This exercised the installed setup instructions without changing the user's active model choices. All 15 role rows matched the requested assignments; Arena and Interrogate retained two-provider diversity; Why and Reflect remained inherit-parent. No unassigned family was probed. Codex mirrored the exact sheet bytes inside one bounded block. Claude added one include for its test sheet. Both preserved the existing integration content.

Independent inspection of all 11 receipts and output files confirmed the actual parent, read-only mode, high requested effort, deepseek-flash or MiniMax-M3 as appropriate, modelVerified: true, modelEvidence: provider-report, and costUsd: null. This does not claim observability of hidden applied reasoning depth or test the user's permanent configuration paths. All processes were drained and temporary gateway config directories removed.

Local evidence: /tmp/pstack-pr2-installed-evidence.json contains receipt paths and SHA-256 hashes. Complete CLI transcripts, prompts, sheets, integration snapshots, and outputs are retained in the temporary pstack-codex-setup-ck14awo7 and pstack-claude-setup-87sptmwr test directories. Credentials were supplied through process environment and excluded from evidence.

GitHub reports no registered CI checks for this fork. The local verification listed above and the installed behavioral tests passed on the exact candidate.

provider-dispatch.md gains an additive Flex model matrix section (the
stock matrix and its parser contract stay byte-identical), deepseek/
minimax columns in the route table (external runner under both parents),
the gateway preflight and receipt semantics, and the panel diversity
rule: arena runners and interrogate reviewers span at least two distinct
providers unless the operator explicitly confirms otherwise. codex-tools
notes that flex descriptors are never spawn_agent lanes.
Mirrors upstream PR ericlitman#73 (issue ericlitman#72): role assignments are chosen first,
only assigned families get effort questions and probes, and there is no
requirement to assign every matrix family. A failed model demands
explicit repair or role reassignment before saving; the fail-closed
write rules and the first-run sheet bytes are unchanged. The probe table
gains DeepSeek and MiniMax rows (key present, config dir free of OAuth
credentials, one-turn probe doubling as the base-URL confirmation), and
render-time validation enforces non-empty roles, at least two architect
runners, and the two-provider panel diversity rule. model-matrix.test.ts
is updated in the same commit because it pins the setup prose, and gains
a flex-matrix section check cross-validated against the runner's
gateway specs.
LANES.md covers lane kinds, the gateway environment reference, dated
prices including DeepSeek's off-peak window, the zero-subscription
walkthrough (parent session env-pointed at DeepSeek, MiniMax through the
runner), safety rules (unsupported-not-prohibited, never a claude.ai
login on a gateway path, per-project privacy opt-in, no silent
substitution), the optional OpenRouter and future Ollama lanes, and the
live post-merge validation checklist. CHANGES.md records the flex delta.
docs/USAGE.md walks the whole plugin: what pstack-flex is and how it
relates to thisguyskills, a mermaid map of task -> poteto-mode ->
playbooks -> lane fan-out -> receipts, fork install commands, key
handling for gateway lanes, the assignment-first /setup-pstack flow
with three worked configurations (full frontier, hybrid saver,
zero-subscription duo), copy-paste prompts for poteto-mode,
interrogate, arena, swarm, and architect with panel diagrams, a
sequence diagram of gateway lane execution including the OAuth guard,
a receipt field cheat-sheet, a cost playbook, and a troubleshooting
table keyed to receipt statuses.

docs/LANES.md gains a "Storing keys" section: macOS Keychain
load-on-demand recipe, pass/secret-tool and 1Password CLI
alternatives, the direnv plaintext caveat, the honest threat model,
and provider spend caps as the real blast-radius control.
The fork section now points newcomers at docs/USAGE.md, and the
install commands move from ericlitman/open-pstack to this repository.
The marketplace and plugin names are unchanged (pstack@open-pstack),
so only the marketplace-add commands change.
Lists the four touch points (GATEWAY_PROVIDERS, GATEWAY_SPECS, the flex
matrix row, the setup probe row) and which check fails when each is missing.
@thisguymartin
thisguymartin marked this pull request as ready for review September 28, 2026 05:09
@thisguymartin
thisguymartin changed the base branch from flex/gateway-providers to main September 28, 2026 05:09
@thisguymartin
thisguymartin marked this pull request as draft September 28, 2026 05:37
@thisguymartin
thisguymartin marked this pull request as ready for review September 28, 2026 05:42
@thisguymartin
thisguymartin merged commit 375becd into main Sep 28, 2026
@thisguymartin
thisguymartin deleted the flex/dispatch-and-docs branch September 28, 2026 05:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add DeepSeek and MiniMax gateway lanes

1 participant