docs/harness-engineering-roadmap.md
Based on Harness Engineering: Leveraging Codex in an Agent-First World (OpenAI, Feb 2026)
Last updated: 2026-03-14
Current readiness: ~25%
| # | Pillar | Status | Score |
|---|---|---|---|
| 1 | Repo knowledge as system of record | Good | 7/10 |
| 2 | Enforced architecture | Good | 6/10 |
| 3 | Application legibility (agent observability) | Weak | 2/10 |
| 4 | Agent-to-agent review loops | None | 0/10 |
| 5 | Self-healing / garbage collection | None | 0/10 |
| 6 | Full feature loops | None | 0/10 |
| 7 | Doc linters / gardening | Partial | 4/10 |
Principle: AGENTS.md is a table of contents, not the encyclopedia. Progressive disclosure. Anything outside the repo does not exist.
AGENTS.md at repo root (table of contents, progressive disclosure)ARCHITECTURE.md at repo root (system reference with source-file refs, ownership rule)docs/architecture.mdx renamed to "Design Philosophy" (why decisions were made)docs/Docs_To_Review/ARCHITECTURE.md deprecated with bannerdocs/design-docs/ directory with index.mddocs/exec-plans/active/ and docs/exec-plans/completed/docs/product-specs/ with index.md.claude/memory/ entries into repo-visible docs (conventions that apply to all contributors, not just Claude)docs/generated/ for auto-generated reference docs (e.g., db-schema, cache-key inventory)Principle: Documentation alone cannot maintain coherence. Custom linters enforce dependency direction, naming, file size, structured logging. Lint errors include remediation instructions for agents.
noUncheckedIndexedAccess, noUnusedLocals, noUnusedParameters)tsc --noEmit in CI and pre-push hookbuf breaking)biome.json, npm run lint, CI workflow lint-code.yml, ~120 files auto-fixedscripts/lint-boundaries.mjs, npm run lint:boundaries, CI enforced. Fixed 12 violations (moved types to proper layers). 3 pragmatic exceptions with boundary-ignore comments.claude/memory/ conventions as lint rules:
fetch.bind(globalThis) (use deferred lambda)cachedFetchJson() in new RPC handlersseed-meta:<key> write in seed scriptsUser-Agent header in server-side fetchPrinciple: Agents must be able to launch the app, navigate UI, capture screenshots, inspect DOM, and query logs/metrics/traces.
api/health.js with per-key freshness monitoringapi/seed-health.js for seed loop monitoringgrep on Railway logs is a start)Principle: Agent reviews its own work locally. Additional agents review. Feedback loops run until reviews pass. Humans sometimes review PRs.
Principle: Background agents scan for violations and open refactoring PRs. Technical debt becomes incremental maintenance instead of large refactors.
AGENTS.md (key patterns, critical conventions)docs/exec-plans/tech-debt-tracker.mdPrinciple: Given a prompt, agent can validate repo state, reproduce bug, record video, implement fix, validate fix, open PR, address feedback, merge.
ghnpm run test:dataPrinciple: Dedicated linters validate documentation freshness, cross-links, structure. Background agent runs doc gardening tasks.
markdownlint-cli2 in CI and pre-pushARCHITECTURE.md ("update in same PR")Phase 1 (P0) — Foundation ← START HERE
├── Add Biome/ESLint linter
├── Add tests to CI
└── Architectural boundary rules
Phase 2 (P1) — Agent Observability
├── Expand Playwright harness
├── Structured logging
└── Encode memory conventions as lint rules
Phase 3 (P2) — Review Loops
├── Automated PR review agent
└── Golden patterns doc
Phase 4 (P3) — Self-Healing
├── Convention violation scanner
├── Doc freshness linter
└── Tech debt tracker
Phase 5 (P4) — Full Autonomy
├── Bug reproduction harness
├── Self-merge pipeline
└── Progressive disclosure doc tree
| Date | Change | Pillar |
|---|---|---|
| 2026-03-14 | Created AGENTS.md (table of contents) | 1 |
| 2026-03-14 | Created ARCHITECTURE.md (system reference, Codex-approved) | 1 |
| 2026-03-14 | Renamed docs/architecture.mdx to "Design Philosophy", added cross-references | 1 |
| 2026-03-14 | Deprecated legacy docs/Docs_To_Review/ARCHITECTURE.md | 1 |
| 2026-03-14 | Added Biome 2.4.7 linter: biome.json, npm run lint, CI workflow, ~120 files auto-fixed | 2 |
| 2026-03-14 | Fixed all 9 failing test files (1005 tests, 0 failures), added CI workflow test.yml | 2 |
| 2026-03-14 | Architectural boundary lint: lint-boundaries.mjs, fixed 12 violations, 3 pragmatic exceptions, CI enforced | 2 |