How we work on archi (the fasrc/archi fork). Two layers: environment/git
conventions you must know first, then the two spec-driven development loops.
-
Two remotes, but
originis the working trunk.origin=fasrc/archi(our fork — the de-facto trunk: it holds the Ralph harness and all daily work, and is 100+ commits ahead of upstream).upstream=archi-physics/archi(the original; we only sync from it occasionally, we do NOT PR to it day-to-day). All PRs targetfasrc/archi:dev(origin/dev);mainis release-only. -
Always branch from
origin/dev. Start every change withgit fetch origin && git checkout -b <branch> origin/dev. Push toorigin(git push origin <branch>), then open the PR withgh pr create --repo fasrc/archi --base dev. -
Commit message rules. Short, lowercase summaries (e.g.
fix bug,add provider support). Never addCo-Authored-Bylines. -
Never bypass the pre-commit gate with
--no-verify. The local conda envarchi(Python 3.11) has the full gate toolchain (langchain, llama-index, spacy, torch-cpu, pytest, diff-cover), so the gate runs locally. Gate requires ≥80% diff coverage on changed lines. -
Gitignored host-only files — do not touch in PRs:
deploy/fasrc-dev/config.yaml,deploy/fasrc-dev/agents/*.md,deploy/scripts/host.env, and anything under theconfig/checkout. Secrets live in/home/austin/.secrets/archi-secrets.env. -
Deployment reality. The container runs a non-editable install (
pip install .), importing fromsite-packages/src, not the repo tree.docker cpinto a running container is invisible — only a redeploy bakes code changes. (Caveat: pytest from the repo cwd shadows site-packages, so tests can pass while the installed app is stale.)
-
Explore —
/opsx:exploreto think through the problem before committing to a design. -
Propose —
/opsx:proposeto create the change (proposal, design, specs, tasks). Validate withopenspec validate <change> --strict. -
Branch + PR for review — cut a branch for the proposal, push, open a PR. GitHub Copilot auto-reviews on open; add an
@codex reviewPR comment to trigger the second automated reviewer. -
Receive reviews — handle feedback with the
superpowers:receiving-code-reviewdiscipline: verify each finding against the codebase before implementing, give reasoned technical pushback over performative agreement (no "you're absolutely right"). -
Reply inline — post a threaded reply in each review thread (not a top-level comment), referencing the fix commit. Then commit any fixes.
-
Merge — once review comments are resolved and CI is green.
-
Branch before applying — always cut a fresh branch before starting implementation.
-
Apply test-first —
/opsx:apply <change>to work the tasks, each one viasuperpowers:test-driven-development: write a failing test (RED) → watch it fail for the right reason → minimum code to pass (GREEN) → refactor. Never write implementation before a failing test. Mark tasks done as you go. -
Verify adversarially — for non-trivial changes, before opening the PR: run parallel review subagents tasked to refute correctness, plus the full test suite. Scale the effort to the change's risk; skip for trivial edits.
-
Branch + PR — push, open the PR. Copilot auto-reviews; add
@codex review. Exception: do NOT request@codex reviewon mechanical "chore: archive" PRs — nothing substantive to review. -
Receive reviews + reply inline — same as steps 10–11.
-
Merge — when comments resolved and CI green.
-
Release steps (project-specific) — version bumps, image rebuilds, etc., per the project's own conventions, before/with the change.
-
Archive —
/opsx:archive <change>moves it to the archive and syncs the canonical specs. Commit, open the archive PR (no@codex review), merge.
-
Track work in Asana at session end via the
archi-track-work-asanaskill — project p-Search-Engine-LLM, written for a skip-level manager, quantified, assigned to me. -
Defer work as AI work-orders via
archi-followup-issue— file a self-contained GitHub issue a future Claude can execute cold (objective, exact paths/SHAs, constraints, commands, machine-checkable acceptance criteria). -
Dev-deploy verification uses
archi-dev-deploy-verify; LLM failover (vLLM ⇄ Anthropic standby) usesarchi-dev-llm-failoverwhen dev chat 500s.