| name | reposix-agent-flow |
| description | Spawn the reposix dark-factory regression test — a fresh subprocess agent given only `reposix init` and a goal must complete clone+grep+edit+commit+push using pure git/POSIX, including the conflict-rebase and blob-limit recovery cycles. The StrongDM/dark-factory regression harness for the v0.9.0 architecture. Invoked from CI release-gate and from local dev (/reposix-agent-flow). |
| argument-hint | [sim|github|confluence|jira] |
| allowed-tools | ["Bash","Read"] |
reposix-agent-flow — dark-factory regression
This skill is the StrongDM / dark-factory regression harness for the v0.9.0
architecture pivot (FUSE → git-native partial clone). It encodes the central
thesis from architecture-pivot-summary.md §4 "Agent UX: pure git, zero in-context learning": a fresh subprocess agent — no reposix CLI awareness, no
in-context system-prompt instructions about reposix, no MCP tool schemas — must
be able to bootstrap a working tree with a single reposix init invocation and
then complete its task using only standard git and POSIX tools.
When to use
- CI release gate — wired into
.github/workflows/ci.yml as the
dark-factory job (sim) and integration-contract-{confluence,github,jira}-v09
jobs (real backends). Phase 36's deletion of the FUSE crate is only safe if
this regression keeps passing.
- Local dev —
/reposix-agent-flow (or the Skill tool from a coordinating
agent) before any change touching crates/reposix-remote/,
crates/reposix-cache/, or crates/reposix-cli/src/init.rs.
- Pre-tag verification —
python3 quality/runners/run.py --cadence pre-pr
(D-CONV-1, 2026-07-04: scripts/green-gauntlet.sh shim deleted, superseded
by the quality-pre-pr CI job) runs the sim variant; the real-backend
variants run via the gated cargo tests.
What it asserts
The architecture's "pure git, zero in-context learning" claim is the contract.
Concretely:
reposix init <backend>::<project> <path> produces a real partial-clone
working tree: extensions.partialClone=origin, remote.origin.promisor=true,
remote.origin.partialclonefilter=blob:none, .git/ is a real git directory.
- Conflict path teaches the agent. When
git push rejects because the
backend drifted, the helper's stderr names git pull --rebase as the
recovery move — verbatim. An agent that reads stderr and follows the
instruction recovers without prompt engineering.
- Blob-limit path teaches the agent. When
command=fetch would
materialize more blobs than REPOSIX_BLOB_LIMIT, the helper refuses with a
stderr error that names git sparse-checkout as the recovery move.
These are byte-identical regression tests — the teaching strings are the
contract, not implementation details.
Invocation
bash quality/gates/agent-ux/dark-factory.sh sim
bash quality/gates/agent-ux/dark-factory.sh github
bash quality/gates/agent-ux/dark-factory.sh confluence
bash quality/gates/agent-ux/dark-factory.sh jira
When this skill is invoked from the Skill tool with no argument, default to
sim — it's the only variant that runs without external credentials and is
the canonical regression target per project CLAUDE.md OP-1.
Canonical test targets (real-backend variants)
Per project CLAUDE.md OP-6 and docs/reference/testing-targets.md:
- Confluence space "TokenWorld" (
reuben-john.atlassian.net) — owner-
sanctioned scratchpad. "Go crazy, it's safe."
- GitHub repo
reubenjohn/reposix issues — ours; safe to create/close
issues during tests. Cleanup is automatic via gh issue close.
- JIRA project
TEST — default key, overridable via JIRA_TEST_PROJECT
or REPOSIX_JIRA_PROJECT.
The simulator (reposix-sim) is always the default and is the only variant
that runs in autonomous mode without explicit credentials.
How to interpret failures
If dark-factory.sh sim fails:
reposix init exit non-zero — crates/reposix-cli/src/init.rs
regression. Check extensions.partialClone config writes.
extensions.partialClone != origin — git config not applied.
BLOB_LIMIT teaching string regressed — someone changed the error
message in crates/reposix-remote/src/stateless_connect.rs. The literal
string git sparse-checkout is the contract; any rewrite must preserve it.
conflict-rebase teaching string regressed — someone changed the
message in crates/reposix-remote/src/main.rs. The literal git pull --rebase must remain.
References
architecture-pivot-summary.md §4 "Agent UX: pure git, zero in-context learning" — the central design claim this skill regression-tests.
quality/gates/agent-ux/dark-factory.sh — the underlying script.
crates/reposix-cli/tests/agent_flow.rs — the cargo test variant
(regression-protects the teaching strings via file-content asserts).
crates/reposix-cli/tests/agent_flow_real.rs — real-backend gated tests.
docs/reference/testing-targets.md — env-var setup, cleanup procedure,
owner permission statement.
.github/workflows/ci.yml — dark-factory job + three
integration-contract-*-v09 jobs that wire this skill into CI.