v0.18.0 — install runward from where you already work
Turning the lead into distribution. A July 2026 channel benchmark confirmed the "install channel + deterministic gate" pattern is not proprietary to Claude Code — it's replicated across at least four harnesses, plus the canonical CI channel. So runward now publishes a family of distributable packagings (ADR-0028), each honestly tiered by how hard its gate can block. Same one line everywhere: runward check --strict.
- GitHub Action — the hard governance gate.
action.ymlat the repo root:uses: stranxik/runward@<sha>as a required status check blocks the merge on a gap. Open, no secrets, aligned 1:1 with governance. - Claude Code plugin + marketplace.
/plugin marketplace add stranxik/runward→/plugin install runward-gate@runward. - Siblings for every hard-Stop harness (
packaging/): Gemini CLI (AfterAgent), OpenAI Codex (Stop), GitHub Copilot / VS Code Agent hooks (Claude-compatible) — the same one line at turn end. - Soft-gate packagings, labelled soft. Cursor and a Kiro Power bundle a per-tool hook, documented as per-tool, not end-of-turn, because those harnesses' end-of-turn hooks can't hard-block. No operator misled.
- MCP descriptor — discovery only.
packaging/mcp/server.json, with a README that hammers it: an MCP tool is model-controlled — findable, never obeyed. Read-only surfaces at most. Calling runward-as-MCP a gate would be the exact "soft judge dressed as hard" the product rejects. - One honest map:
docs/distribution.mdtiers every channel — hard-at-merge (CI), hard-at-turn-end (client hooks), soft-per-tool (Cursor/Kiro), discovery-only (MCP).
Invariants preserved: the operator installs (runward auto-wires nothing); never a runtime (each packaging is a thin shell around the exit-code port); vendor-neutral (a family published together, no agent privileged — the canonical surface stays AGENTS.md + .agents/skills). Publishing to the marketplaces is the maintainer's outward-facing gesture, like the npm publish.