Choose the effects variant as the harness v2 design: rename
harness-v2-effects.md to harness-v2.md with the decision rationale, delete
the rejected generator variant (preserved at 01eeafd1).
Fold in everything decided since the split:
- run/turn/step nomenclature and XxxRecord suffixes for op-log records
- restore rework decisions: TaggedError/matchError result surface, section
18 ExecutionContext telemetry contract (with in-effect usage example),
step_attempt.resultEntryId with stable structural ids, hook-durability
wording, Models-level deferred API, typed record plumbing
- context-overflow/length handling per the superseding PR-7540 review:
isRecoverableLength against the intended output cap, discard-don't-append,
one recovery per conversational input, decline/nothing-to-compact
terminal, Responses incomplete_details mapping, neutral truncation
wording, crash-site table and test shapes
- UsageRecord cost ledger: union-shaped record (request/tool/hook/
adjustment causes), cost durability independent of result durability,
immutable entry usage snapshots with read-time effective cost,
lane.recordUsage(), harness-global usage event carrying session totals,
stats as ledger sum via maintained projection, fork/v3-import rules
- prompt normalization, deferred-fulfillment nuance, overflow guard
reduction, ledger and overflow test coverage