Files
redsen-lean-harness/AGENTS.md
T
mozempkandCopilot 383129f571 feat: scaffold redsen-lean-harness v0.1.0
Recovered from crashed session (Node OOM). Repo contains full P0-P6
scaffold: plugin.json/marketplace.json, AGENTS.md, ADRs 0001-0006,
lh CLI (init/index/graph/lane/run/memory/host/report/doctor), 10
.github/agents, 12 CLI skills, instructions, context7 mcp.json, and
unit/e2e test suite.

Fixed: run.mjs read --in-tokens/--out-tokens but tests and CLI docs
use --input-tokens/--output-tokens, so telemetry totals were always 0.
Now accepts both forms.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-09 22:44:15 +02:00

3.6 KiB

redsen-lean-harness

An imperative, token-lean, self-documenting agent harness. It runs unchanged in GitHub Copilot CLI and VS Code Copilot.

Division of labour

Layer Owns Where
Markdown Behaviour — agents, skills, instructions .github/
Node CLI (lh) Determinism — index, gates, worktree lanes, telemetry, memory src/
Host Execution — subagents, fleet, tools Copilot CLI / VS Code

We never reimplement an agent runtime. If the host can do it, the host does it.

Pipeline

design  → gated Q&A, nothing inferred        → .agents/specs/<slug>/decisions.md
plan    → spec + acceptance criteria + DAG   → spec.md, plan.dag.json
build   → worktree lanes, Ralph loop         → builder ⇄ verifier
integrate → sequential merge + full verify   → integrator
document  → runs throughout                  → scribe

The conductor re-plans at every checkpoint: lanes may be spawned, killed, or re-scoped based on results. Failures are isolated, retried within bounds, then planned around.

Agents

Agent Tier Invokable Responsibility
conductor strong yes Entry point. Owns the pipeline and the dynamic DAG.
interrogator strong yes Design-phase Q&A with recommended answers.
scout cheap no Read-only recon, fanned out N-wide.
architect strong yes Spec, acceptance criteria, architecture doc, ADRs.
splitter mid no Decomposes spec into lanes with file-scope globs.
builder mid no Implements one lane inside its worktree.
verifier cheap no Runs verify commands + structural gate.
reviewer strong yes Acceptance-criteria and scope gate.
integrator strong no Sequential merge, conflict resolution, full verify.
scribe cheap no Journal, ADRs, living spec, conventions.

Skills

init design plan build verify integrate onboard memory index telemetry fast-track doctor

lh commands

Command Purpose
lh init First-run wizard, writes .agents/harness.config.json.
lh index Token-budgeted tree-sitter repo map.
lh graph Structural gate: duplicates, orphans, unresolved calls. Exit 1 on violation.
lh lane git worktree lane lifecycle + file-scope leases.
lh run NDJSON telemetry + live board.
lh memory Memory shard CRUD, compaction, secret scanning.
lh host Detect host capabilities, print orchestration strategy.
lh report Markdown telemetry report.
lh doctor Environment checks.

Per-repo footprint

.agents/
  harness.config.json
  architecture.md          # living, ADR log inside      [committed]
  conventions.md           # living                      [committed]
  memory/INDEX.md          # the ONLY always-loaded file [committed]
  memory/{seed,failures,corrections,insights,conventions,quirks}.md
  specs/<slug>/{questionnaire,decisions,spec}.md, plan.dag.json
  runs/<id>/{board.md,events.ndjson,journal.md}
  .cache/                  # repomap, symbols, wasm      [gitignored]

Token-leanness

  1. Only memory/INDEX.md is always loaded; shards pull on demand.
  2. lh index --budget caps repo-map size.
  3. Cheap-tier subagents absorb exploration cost; only summaries return.
  4. lh graph and lh report emit briefs, never dumps.
  5. Skill bodies stay short; procedures live in templates/.

Context7

Mandatory for external library work. Key is read from CONTEXT7_API_KEY environment variable only — the harness never writes secrets to disk.