Skip to content

Architecture v2: branch-based pipelines, five phases, multilane#181

Merged
luisherranz merged 66 commits into
trunkfrom
architecture-v2
Jul 9, 2026
Merged

Architecture v2: branch-based pipelines, five phases, multilane#181
luisherranz merged 66 commits into
trunkfrom
architecture-v2

Conversation

@luisherranz

@luisherranz luisherranz commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Closes #177.

What this is

The full architecture v2 rewrite of the Radical Pipelines skill, written as if the previous architecture never existed (new pipelines only — no migration paths). Every decision was locked in the planning session and recorded in architecture-plan.md (first commit of this branch); GLOSSARY.md is the new canonical vocabulary.

The model in one paragraph

A pipeline is a chain of run branches (<branch-base>[_v<N>][_rev-<N>-<desc>], v1/base implicit); there is no pipeline-level branch — the latest run branch is the tip that merges. Lane branches carry multilane spec/design work (never merged, read by consolidators, kept as the permanent record). Forks branch at cut commits — no copying; inherited history carries the work itself. Diff bases are derived (merge-base + the start commit in pipeline.md), never captured. Worktrees are raw git worktree, created only by the orchestrator, which never changes directory; every agent gets Worktree path + Branch anchors and verifies before writing/committing. Phases are Intent → Spec → Design doc → Build → Document: the plans folded into Build/Document as inner gates, spec/design run as N consolidated lanes (N=1 = today's flow, degenerate case), and phases are self-sizing — depth follows the research record, gated by reviewers.

How it was built (one commit per work package)

  1. Plan doc → 2. Glossary → 3. Pkg 1 core model (SKILL.md, pipeline-versioning.md, both workflows) → 4.–9. Pkgs 2–7 in parallel with disjoint file ownership (operations · conventions/passing/monitoring/guardrails · spec phase · design phase · build phase · document phase) → 10. integration fixes for the cross-package seams → 11. Pkg 8 README, .rp.md (now drift-free: exact convention names, artifacts-in-repo, npm test guardrail), changeset → 12. coherence pass: three adversarial review lenses over the merged whole, 51 findings triaged, 21 fixes applied (incl. one triple-confirmed blocker in the reviewers' diff-base derivation).

Issues resolved by this rewrite

Closes #176, closes #175, closes #173, closes #172, closes #160, closes #153, closes #104, closes #87, closes #76.

The branch also removes Pi as a supported agentic coding tool entirely, resolving the Pi unbundling issues by full removal: closes #140, closes #141, closes #142, closes #143.

Review pointers

🤖 Generated with Claude Code

https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P

luisherranz and others added 12 commits July 7, 2026 15:11
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P
…rkflows) (assisted)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P
…uardrails (assisted)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P
…ode (assisted)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P
Fork-from-revision ruling (fork branch carries the cut run's segment), start
ref recorded in pipeline.md (derivable diff bases for stacked/forked
pipelines), reuse-aware run start, lane permanence scoped to completed
phases, build-plan evidence duty, glossary updates from all packages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P
…angeset (assisted)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P
Three adversarial review lenses over the merged corpus; 21 triaged fixes:
derived diff bases via branch enumeration + start commit in pipeline.md,
research records in predicates, close-out on every run stop, assisted
close-out obligations, self-contained monitor prompt, researcher routing,
batch/resume alignment, dedup trims, skeleton and naming alignment.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P
luisherranz and others added 28 commits July 8, 2026 13:28
…peline family folder (assisted)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015VTbxshTyUybeddxCYfyWp
Drop Pi support entirely instead of unbundling it: the repository is now
a Claude Code plugin and a standalone agent skill only.

- Delete the Pi convention file and remove the Pi row from the setup table.
- Strip the Pi manifest from the root package.json: the `pi` block, the
  `pi-teams`, `@pi-agents/loop`, and `@sinclair/typebox` dependencies, the
  Pi peer dependencies, and the `pi-package` keyword; rewrite the
  description. Regenerate package-lock.json.
- Remove the Pi install, Pi usage, and dependency-bundling sections from
  the README, the Pi package mention in CONTRIBUTING.md, and the Pi copy,
  install card, and `.pi/agents/` note from the website.
- Add a changeset recording the removal.

Closes #140
Closes #141
Closes #142
Closes #143

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bjc8BhZ26hJLMR9yfWtKDS
Search for related/duplicate issues before creating a new issue
Surface open dependencies before starting a pipeline
…entions (assisted)

Setup writes no extra text — like orchestrator instructions — into .rp.md
unless the owner asks. The Claude Code canonical block and this repo's
.rp.md drop instructions the workflow files already state.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bjc8BhZ26hJLMR9yfWtKDS
…ns (assisted)

The Team spawning and Health monitoring conventions kept only their
tool-specific values. The orchestrator instructions they held move into the
workflow and health-monitoring references where unique, or drop where those
files already state them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bjc8BhZ26hJLMR9yfWtKDS
Setup writes only defined conventions into .rp.md
Analysts verify a rule's premise before it sways a decision
Always confirm the revision intent before starting a revision run
Reviewers reject unverified hedges on load-bearing claims
Each lane now writes its artifacts in a lane-<K> subfolder of the phase
folder, passed to lane agents as the new Phase folder convention, so the
full lane record — artifacts, research, and review history — lands on
the run branch and is visible in the merged result. Isolated lanes keep
their branches and worktrees and are merged back and deleted on
approval; divergent lanes run sequentially in the run branch's worktree
with no lane branches. Consolidators read the lane folders from disk
instead of git show, and the design-doc-analyst carries the divergent
duty in its profile, driven by the new Lane mode convention.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P
Writers cannot check out other refs, so they fix gate failures or report
a blocker; reviewers hold the reproduce-on-diff-base bar for classifying
a failure as ambient.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bjc8BhZ26hJLMR9yfWtKDS
…ion (assisted)

A subagent cannot place itself: its own cd never persists between
commands, and a session-wide worktree switch retargets every running
agent. The orchestrator now seats each agent — cd into the worktree,
spawn, cd back under Claude Code — with the mechanism defined by the
now-required per-tool Team spawning convention. Agent profiles drop the
"move there" instruction and keep the verify-and-stop anchor rule.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015VTbxshTyUybeddxCYfyWp
Gate failures require base-ref proof to be classified as ambient
…ping (assisted)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bjc8BhZ26hJLMR9yfWtKDS
Bound rejection loops with an iteration budget
…ts (assisted)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bjc8BhZ26hJLMR9yfWtKDS
Relay gate results and prior-phase evidence to agents verbatim
Seating plus the standing boundary — all writes and commits land inside
the assigned worktree — is what prevents wandering into the main
checkout; the active check is now once, before the first write, instead
of before every write and commit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015VTbxshTyUybeddxCYfyWp
The per-phase summary format lived in reference/summary-format.md, which
the orchestrator resolved and passed into each reviewer's launch prompt.
The build-reviewer and document-reviewer are the only agents that author
summaries — and the only ones with the whole-phase view — so the format
now lives at its point of use in each profile. The orchestrator no
longer couriers it, and the standalone reference file is deleted.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Full-repo consistency review: drop the dangling pipeline.md step, align
the glossary with the lane-scoped folder model, replace /loop-list and
/loop-kill with the CronList/CronDelete tools, generalize the blocker
payload to the approved artifact that must change, update the website to
the five-phase model, and remove Pi leftovers and stale working documents.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N5uKXZg1pBVWgk1882WF9P
@luisherranz luisherranz merged commit 3a7af38 into trunk Jul 9, 2026
1 check passed
@github-actions github-actions Bot mentioned this pull request Jul 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment