Skip to content

Self-host Phase 2: deterministic fan-out smoke test against a fixture target #64

Description

@robercano-ghbot

Spun off from #11 (closed — Phase 1 shipped in #23/#40/#42). This is the remaining piece: validate the fan-out scaffolding end-to-end on a fixture, not on itself (no regress), and without live agents (deterministic, CI-safe — option (a)+(b) from the #11 plan).

Scope

  • examples/fixture-target/ — a tiny consumer-shaped repo: gates.json (one fixture-core module over src/), trivial JS source + node test, README.
  • .claude/self/smoke-fanout.sh — a stub implementer run: stage the fixture into a temp git repo (with the real gate.sh copied in, consumer-layout), create an isolated worktree + branch, apply a canned diff (the "recorded implementer"), assert the module boundary is respected, run the fixture's build/lint/test gates through the real gate.sh, merge the branch, assert the change landed on main. Also a failure path: a broken canned diff must make the gate fail non-zero (verifies gate.sh propagates failures to the loop).
  • Wire into .claude/self/gates.json test so it runs in the existing self / test CI job on every PR. Keep test_affected static-only (Stop-hook fast path).

Non-goals

Verified feasible under the strict sandbox: git init/worktree/commit/merge all work in $TMPDIR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestmodule:harnessOrchestrator machinery under .claude

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions