References: Architecture · Agent Work Loop · Loop Engineering · Host Adapter Matrix · Discussion #76
Better Harness is the evidence and control plane for improving Coding Agent workflows. It is not another Coding Agent runtime.
| Better Harness owns | The host Coding Agent owns |
|---|---|
| Harness component identity, revision, activation, and rollback provenance | Model execution and native tool calls |
| Provider-neutral evidence, Task Episodes, experience traces, and outcome-link contracts | Provider permissions, user interaction, subagents, worktrees, and hooks |
| Candidate review, durable Harness Issues, eval suites, comparisons, guardrails, and intervention decisions | Provider-specific execution of an explicitly approved bounded plan |
| Durable loop state, approval, budget, stop, resume, and audit contracts | Native installation, authentication, and runtime lifecycle |
The product should evolve through one thin, auditable evidence chain:
TaskEpisode + delivery/outcome links
-> PatternCandidate
-> human/AI review
-> HarnessIssue
-> bounded Harness intervention
-> held-out and later comparable outcome
-> retain / narrow / revise / revert / reopen
This ordering is deliberate. Better Harness must establish facts before mining patterns, review patterns before making them durable, and prove a bounded intervention before adding autonomous or scheduled runtime behavior.
| Concept | Lifetime | Meaning |
|---|---|---|
TaskEpisode |
One task goal | What happened for one goal, target, action, and result. |
PatternCandidate |
One discovery window | A reviewed hypothesis supported by multiple Episodes; it is not yet a durable problem or a Skill. |
Finding |
One Harness report | A report-local, evidence-backed consequence; it does not own longitudinal state. |
HarnessIssue |
Across runs and windows | A durable identity for a recurring problem or opportunity, with Open, Watch, Resolved, Dismissed, and Reopened state. |
InterventionLedgerEntry |
One controlled experiment | The changed component, frozen baseline, comparison plan, guardrails, stop/revert condition, and later result. |
A HarnessCheckpointV1 remains outside this chain. It is a Git-neutral state
anchor for a completed Harness artifact run, not a source-code checkpoint,
transcript store, native-session resume token, Issue identity, or mutation
authorization.
These sources are design inputs, not product requirements. Better Harness adopts only the parts that fit its evidence, privacy, authority, and cross-platform contracts.
| Better Harness concern | Core references | What to study | Design that can be reused |
|---|---|---|---|
| 1. Bind Sessions to code changes | Entire; Git AI | How Entire separates Sessions, Checkpoints, and Commits; how Git AI uses agent hooks and Git Notes for line-level agent, model, prompt, and Session attribution. | Build a deterministic TaskEpisode -> Diff -> Commit relationship. Prefer typed Hook, checkpoint metadata, commit trailer, or Git Note evidence; never infer the relationship from timestamp proximity or LLM similarity alone. |
| 2. Discover Skills across multiple Sessions | SpecStory/Lore | Lore separates latent/theme skills from correlation skills and retains evidence Sessions, prevalence, cross-vendor coverage, outcome lift, confidence, and human Keep/Dismiss review. | Separate repeated procedures from latent working practices. Every candidate retains source Episodes, counterexamples, coverage, confidence, and missing evidence. Review before generating or installing a Skill. |
| 3. Extract Workflows from noisy traces | TraceCompiler | A hard dependency exists only when a later argument contains a value uniquely attributable to an earlier tool output. Ambiguous edges remain suspected; bindings are constants, user inputs, previous outputs, transforms, or residual LLM decisions. |
Do not mine only Tool A -> Tool B -> Tool C. Extract both an Action Skeleton and parameter dataflow. Compile only stable, auditable dependencies; leave underdetermined choices to the agent. |
| 4. Turn recurring patterns into durable Issues | LangSmith Engine | How related traces become an Issue with linked traces, diagnosis, priority, proposed fix, evaluation cases, and reopen behavior. | Keep PatternCandidate, report-local Finding, and longitudinal HarnessIssue separate. Issue state changes require deterministic evidence. |
| 5. Explain why agent work is difficult | DX Agent Experience | Per-Session Requirements, Steering, and Scope assessments with qualitative explanations. | Use these as semantic facets for goal clarity, correction quality, and scope drift. They supplement but never replace tests, Diffs, Commits, or user acceptance. |
| 6. Connect Sessions to engineering outcomes | Faros Harness Engineering; Git AI | Session-to-PR linkage as the basis for cost per merged PR, first-pass success, Agent PR survival, churn, and defect escape; explicit attribution shows whether agent-produced code survives review and production use. | Use an outcome ladder: Session completed -> validation passed -> Commit -> PR -> CI -> Merge -> later survival or Revert. Start with Commit, then add optional delivery adapters. |
| 7. Merge Session experience into a Skill draft | Trace2Skill | Independent trajectory-local lesson extraction followed by hierarchical aggregation, deduplication, and conflict resolution. | Use single-trajectory analysis -> cross-trajectory aggregation -> conflict resolution -> Skill Draft. Never generate SKILL.md directly from one successful Session. |
| 8. Prove that a Skill or Harness change works | SkillOpt; Agentic Harness Engineering; Rethinking Harness Evolution | Bounded edits accepted after held-out improvement; component, experience, and decision observability; matched feedback/inference budgets and simple search baselines that expose overfitting or gains caused only by extra search. | Maintain Discovery, Held-out, and Later Comparable sets. Change one Harness component per experiment. Compare Current vs Candidate and, where relevant, No Skill plus budget-matched retry or sampling baselines. |
| 9. Enforce safety boundaries for generated Skills | Agent Skills in the Wild | Prompt injection, data exfiltration, privilege escalation, and supply-chain risks, with higher risk for Skills that bundle executable scripts. | Generated Skills enter Draft/Experimental only. Require secret scanning, prompt-injection review, script static analysis, tool-permission declarations, and external side-effect declarations before explicitly authorized activation. |
| Priority | References | Direct value to Better Harness |
|---|---|---|
| P0 | Entire + Git AI | Define the factual relationship among Session, checkpoint evidence, Diff, and Commit without conflating Better Harness run checkpoints with Git checkpoints. |
| P0 | SpecStory/Lore | Define multi-Session Skill candidates, confidence signals, provenance, counterexamples, and human promotion. |
| P0 | TraceCompiler | Define how to extract an executable Workflow from Tool Call traces without copying accidental call order. |
| P0 | LangSmith Engine | Define how a temporary recurring pattern becomes a durable, diagnosable, resolvable, and reopenable Issue. |
| P0 | SkillOpt + AHE + Rethinking Harness Evolution | Define how to test whether a Harness change improves outcomes without overfitting or unfair search-budget comparisons. |
The primary references map to the delivery sequence:
Entire / Git AI
-> Session and code-change facts
SpecStory / Lore
-> multi-Session PatternCandidate
TraceCompiler
-> Action Skeleton and Workflow extraction
LangSmith Engine
-> durable HarnessIssue lifecycle
SkillOpt / AHE / Rethinking Harness Evolution
-> evaluate, retain, narrow, revise, or revert
DX, Faros, Trace2Skill, and Skill Security extend the loop with agent-experience facets, engineering outcomes, cross-trajectory asset drafting, and activation governance.
Binary checkboxes hide the difference between a proven first slice and a complete product capability. Use these statuses instead:
| Status | Meaning |
|---|---|
| Implemented | The current acceptance boundary has an owner, contract, tests, documentation, and required native evidence. |
| Partial | A bounded, validated slice exists, but the broader capability or provider coverage remains incomplete. |
| Proposed | The capability is planned but lacks accepted implementation evidence. |
| Deferred | The capability is intentionally outside the next coherent slices. |
Status describes repository evidence at the planning baseline below. It is not inferred from a branch name, discussion, local uncommitted work, or a related prototype.
flowchart LR
P0["P0 · Facts<br/>LC-03 Experience and outcome provenance"]
P1["P1 · Candidates<br/>LC-05 Learning candidate mining"]
P2["P2 · Durable issues<br/>LC-13 HarnessIssue lifecycle"]
P3["P3 · Controlled intervention<br/>LC-02 Component Graph<br/>LC-04 Eval Lab<br/>LC-07 Intervention Engine"]
P4["P4 · Outcome scale<br/>LC-08 Routing Evaluation<br/>LC-09 Long-horizon Benchmarks<br/>LC-11 Harness Diff"]
P5["P5 · Portable ecosystem<br/>LC-12 Loop Packs"]
SAFE["Authority and runtime rail<br/>LC-01 Readiness Gate<br/>LC-06 Durable Runtime<br/>LC-10 Budget Policy"]
HA["Host enablement rail<br/>HA-01..HA-04"]
P0 --> P1 --> P2 --> P3 --> P4 --> P5
SAFE -.-> P0
SAFE -.-> P3
SAFE -.-> P4
HA -.-> P0
HA -.-> P3
HA -.-> P4
The graph shows delivery order rather than every code dependency. Read-only
facts, candidates, and Issues can advance before a mutating runtime exists. No
state-changing or scheduled path may bypass LC-01; LC-07 still requires an
exact component revision from LC-02, evaluation from LC-04, and the
applicable approval/runtime boundary from LC-06.
Existing LC-* and HA-* IDs remain stable because specs already reference
them. LC-13 is the only new ID and owns the missing durable-Issue boundary.
| Status | Phase | ID | Capability | Acceptance or next boundary |
|---|---|---|---|---|
| Proposed | P0 | LC-03 | Define a cross-host Experience Trace and Session-to-Outcome provenance contract. | A reader-safe trace preserves provider gaps, multi-session Task Episode lineage, approvals, interruptions, component refs, and structured stops. Commit links distinguish explicit evidence from bounded heuristic candidates. Optional content-free OTLP export remains secondary. |
| Partial | P1 | LC-05 | Mine learning candidates from ordinary normalized Task Episodes. | The implemented native recurring-correction review remains the first slice. Next, add procedure and latent-practice candidate families with counterexamples, coverage, confidence, stable signatures, and abstention; Action Skeleton dependencies require attributable parameter flow. |
| Proposed | P2 | LC-13 | Add a durable Harness Issue lifecycle. | HarnessIssueV1 keeps a stable signature, scope, first/last seen, recurrence, linked candidates/Episodes/Findings/outcomes, diagnosis, owner, priority, and Open/Watch/Resolved/Dismissed/Reopened state. Reopen requires a later eligible matching Episode. |
| Partial | P3 | LC-02 | Complete the versioned Harness Component Graph. | The implemented Qoder project snapshot is the first read-only slice. Generalization must preserve provider/scope identity, revisions, activation evidence, typed relationships, bounded diffs, and non-authorizing rollback references. |
| Proposed | P3 | LC-04 | Add a trajectory-native Harness Eval Lab. | Objective validators run before trajectory review. Discovery, held-out, and later-comparable sets, pairwise comparison, component ablation, judge disagreement, safety, cost, and simple budget-matched baselines remain separate. |
| Proposed | P3 | LC-07 | Turn the Intervention Ledger into an experiment engine. | Freeze a prediction, exact component revision, baseline, primary metric, guardrails, and stop/revert condition before apply. Record all attempts and decide retain, narrow, revise-and-retest, revert, retire, or needs-more-evidence. |
| Proposed | P3 | LC-01 | Add a fail-closed Loop Runtime Readiness Gate. | Versioned readiness distinguishes read-only observation, plan-only, human-approved apply, scheduled read-only, and scheduled bounded apply. Blocked, partial, unavailable, or failed required capabilities prevent the applicable run. |
| Proposed | P3 | LC-06 | Add a Durable Loop Runtime only after the read-only Issue loop is proven. | validate, plan, run, status, resume, stop, and verify use separate plan/apply artifacts, append-only state, idempotent effects, isolation, approval, checkpoints, budgets, and fail-closed provider delegation. |
| Proposed | P4 | LC-08 | Evaluate context, Skill, Memory, Rule, MCP, Workflow, and tool routing. | Distinguish applicability, discovery, loading, invocation, application, and decision impact; report recall, precision, efficiency, false triggers, scope, staleness, and context cost without allowing evaluation to authorize mutation. |
| Proposed | P4 | LC-09 | Add long-horizon, multi-session software-evolution benchmarks. | Scenarios span milestones, interruptions, compaction, handoff, PR/CI/review feedback, and later transfer while separating milestone progress from final success. |
| Proposed | P4 | LC-10 | Add budget-aware Loop policies. | Exact, provider-estimated, effort-proxy, and unavailable accounting stay distinct. Retry, no-progress, escalation, override, exhaustion, and stop decisions remain structured and auditable. |
| Proposed | P4 | LC-11 | Produce Harness Diff as a PR and CI artifact. | Two frozen component snapshots yield a privacy-safe semantic diff covering activation, scope, permission, validation, evaluation, privacy, runtime, compatibility, eval delta, and rollback. CI blocks only on explicit repository policy. |
| Deferred | P5 | LC-12 | Explore portable Loop Packs and a community registry. | A signed, reviewable pack declares compatibility, permissions, state, privacy, evals, provenance, activation, migration, uninstall, and rollback. Discovery or installation never authorizes execution. |
Do not begin with a scheduler, open-ended autonomous runtime, hosted telemetry, or automatic Skill installation. Prove the architecture with one bounded local loop:
- Link one Task Episode to one local Commit with explicit or clearly labelled heuristic evidence. Timestamp proximity alone is insufficient.
- Mine one existing
recurring-correctioncandidate from at least two eligible Episodes and retain the accepted evidence, hard negatives, abstentions, coverage, and confidence. - Promote one reviewed candidate to one durable
HarnessIssue; do not turn a report Finding into longitudinal state. - Freeze the exact revision of one project-owned Rule or Skill and record one explicitly authorized intervention in the existing ledger.
- Evaluate objective behavior and trajectory quality on held-out evidence, then keep effectiveness pending until a later comparable Episode exists.
- Retain, narrow, revise, revert, resolve, watch, or reopen from typed evidence.
This slice is complete when every transition can be reproduced from typed refs, the changed component has a resolvable pre-state, and the later Issue/result state follows deterministically from the accepted evidence. Native-session resume, scheduled apply, PR creation, and remote state are not prerequisites.
This roadmap is based on Discussion #76 and repository evidence at
main@81440ba. Local uncommitted work and external prototypes are not counted
as implemented product capability.
| Surface | Available foundation | Remaining boundary |
|---|---|---|
| Task evidence | Task Episodes, workspace-bounded evidence, and explicit Present, Wired, Exercised, Outcome-supported, Missing, and Unobserved states |
No accepted cross-host Experience Trace that binds Task Episodes to code-change and outcome provenance. |
| Component provenance | Implemented Qoder project HarnessComponentSnapshotV1 with bounded diff and non-authorizing rollback refs (LC-02) |
Provider generalization, richer typed relationships, and observed activation remain incomplete. |
| Candidate mining | Implemented evidence-bound native recurring-correction review and report integration (LC-05) |
Procedure/dataflow and latent-practice candidates, cross-window signatures, and broader outcome association remain missing. |
| Longitudinal state | Intervention Ledger entries model baselines, metrics, comparison windows, guardrails, and stop/revert conditions | No durable HarnessIssue owner connects candidates, Findings, interventions, recurrence, and reopen behavior. |
| Run continuity | Draft HarnessCheckpointV1 design defines Git-neutral artifact-run state anchors |
It is not implemented and must not become Git history, transcript, native-session resume, Issue state, or mutation authority. |
| Delivery outcomes | Local validation and delivery evidence can be reviewed inside Task Episodes | No accepted Session-to-Commit fact contract or optional PR, CI, Merge, Revert, and survival adapters. |
| Runtime and safety | Fail-closed review/privacy boundaries, provider-aware plan binding, loop guidance, and component/intervention contracts exist | No unified readiness gate, experiment executor, side-effect journal, or canonical plan / run / resume / stop / verify protocol. |
The Host Adapter Matrix remains the canonical source for current per-host capability and smoke-test claims. This roadmap does not duplicate or upgrade those claims.
Adapter work continues in parallel, but another scanner or host does not advance the evolution loop unless it strengthens a required evidence, authority, execution, or outcome boundary.
| Status | Phase | ID | Capability | Acceptance or next boundary |
|---|---|---|---|---|
| Proposed | P0 | HA-01 | Add explicit full-session, inventory-only, and unsupported capability profiles. |
A configured-only provider can complete inventory without Session evidence and cannot emit cleanup or mutation candidates. |
| Implemented | P0 | HA-02 | Keep checkup planning provider-aware and fail closed. | Source refs and provider-home paths bind to one explicit provider; no plan routes through another host's executor or configuration root. |
| Proposed | P0/P3 | HA-03 | Close provider-specific evidence-depth gaps. | Model, usage, hook, lifecycle, mutation, and outcome fields remain unavailable until a stable native source and drift fixtures exist. |
| Proposed | P4 | HA-04 | Add Host x OS native smoke coverage. | Every claimed host/OS combination separately proves install or discovery, inventory, evidence collection, analysis, output validation, upgrade or reinstall, and privacy boundaries. |
- Configured presence never proves observed use.
- Temporal proximity never proves Session-to-code or Session-to-outcome linkage.
- Same-window repair verification never proves later effectiveness.
- Unknown, unavailable, partial, or invalid evidence never becomes a clean result.
- A
PatternCandidatenever becomes a Skill or durable Issue without review. - A report
Findingnever silently becomes longitudinal state. - Every mutation has a frozen pre-state, explicit authority, isolated execution, objective validation, and a resolvable rollback or compensation boundary.
- Every loop declares a trigger, stable input, state policy, observability, evaluation, budget, stop condition, and human gate where required.
- Scores summarize evidence; they do not create findings, prove causality, or authorize mutation.
- Cross-provider normalization preserves provider provenance and unavailable fields instead of inventing parity.
- Raw private transcripts, secrets, absolute home paths, and unauthorized Memory content never enter public artifacts.
- Objective acceptance, trajectory quality, safety, cost, and evaluator confidence remain separate result dimensions.
A roadmap capability is complete only when:
- its canonical owner, versioned contract, CLI or public API, fixtures, tests, documentation, and reader projection agree;
- machine modes keep stdout parser-safe and return non-zero or a documented non-success envelope for invalid scope, runtime failure, and blocked policy;
- Windows, macOS, and Linux path and process behavior is automated where the capability claims cross-platform support;
- native host evidence is reported separately from source, unit, fixture, package, browser, and CI evidence;
- unsupported behavior fails before reading private data or changing files;
- every state-changing path separates plan from apply, requires the applicable readiness level and approval, journals side effects, verifies the result, and proves rollback or compensation;
- later effectiveness requires a valid held-out and later-comparable boundary and never follows from same-window completion alone.
The roadmap epic is complete when Better Harness can detect one repeated, evidence-supported Harness problem, bind it to exact Task Episode and component revisions, promote it through a reviewed durable Issue, execute a bounded human-approved intervention, evaluate it objectively and at trajectory level, retain or revert it, and reopen or report later comparable-task transfer without overstating unavailable evidence.
- Do not build another general-purpose Coding Agent runtime.
- Do not build a raw transcript lake or merge cross-provider transcripts by default.
- Do not infer Session-to-code linkage only from time or prose similarity.
- Do not generate
SKILL.mddirectly from one successful Session. - Do not automatically install or activate generated Harness assets.
- Do not force all hosts to expose identical events or capabilities.
- Do not create synthetic session, hook, model, token, cost, activation, or transfer evidence.
- Do not let an evaluator, score, package discovery, checkpoint, or Issue state authorize mutation.
- Do not enable scheduled bounded apply before readiness, isolation, approval, idempotency, stop, and rollback contracts pass.
- Do not launch a public registry before the Loop Pack schema and threat model have been validated with local read-only prototypes.
| Decision | Default until resolved |
|---|---|
| Should Better Harness write explicit Session-to-Commit links? | Keep the first capability read-only. Allow an explicit writer only through a reviewed host integration; heuristic links remain candidates. |
| Where should durable Harness Issues live? | Use provider-neutral user state outside the worktree under a dedicated Issue owner; do not widen the checkpoint store. |
| Should procedure and latent-practice candidates share a schema? | Share only common provenance and review fields; keep evidence requirements type-specific until fixtures prove a stable union. |
| What is the minimum candidate-promotion gate? | Require at least two eligible Episodes plus reviewed counterexample/coverage evidence; cross-Session or cross-provider requirements remain policy decisions. |
| Which outcome adapter follows Commit first? | Decide after the local Commit link contract is stable; unavailable external outcomes remain Unobserved. |
| Can generated assets be installed experimentally? | Default to Draft-only. Any Experimental install path requires explicit authority, security review, permissions, side-effect declarations, and uninstall/rollback evidence. |
| Can a Task Episode span Sessions? | Only with an explicit task identity or reviewed continuation; temporal proximity is insufficient. |
| Should any provider support automatic apply? | Keep read-only or human-reviewed until LC-01, LC-06, and a provider-native mutation contract are accepted. |
| When can an intervention be called effective? | Only after frozen held-out and later-comparable evidence passes the primary metric and guardrails; same-window success is never enough. |