Skip to content

v0.65.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 11:33
· 15 commits to main since this release
919b44c

[0.65.0] - 2026-10-17

Overhaul phase 2, first batch: Maker drives the pipeline, every choice is a card, and execute's REVIEW
marks it finished. First release published since 0.62.0 (0.63.0 and 0.64.0 were never tagged).

Added

  • hm review_effect: measure what the one review catches and misses (SPEC-review-effect-measurement).
    wrapup_land records one review row per landed task into <base>/.claude/observability/review_effect.jsonl,
    parsed from the REVIEW ## Findings table. This is best-effort, and a ledger fault never changes the land.
    The verbs are:

    • escape-candidates / escape: attribute post-merge fixes to the task that shipped the defect. Run them
      from /hm:metrics Step 1.4.
    • seed / score: a seeded-defect recall audit.
    • report: raw k/n [lo, hi] with exact Clopper-Pearson intervals.

    The execute Step 6 registry entry now carries this measure_cmd (remeasure_on: model_release).
    docs/reference/review-effect.md holds the audit procedure and the pre-registered decision rule.

  • Maker advances the pipeline itself (SPEC-maker-advance). After a full-pipeline Start or Resume,
    Maker's new Advance rule enters /hm:execute after spec and /hm:wrapup after execute, same slug, in the
    same session. It stops and reports when a person is owed: an unanswered ask, a SPEC that is not
    approved, a failing hm check, an unresolved finding, or queued asks. It never pushes. There is no
    marker and no hook. The spec and execute hand-off lines say so, and an exempt SPEC can now land locally
    with no human touch (IRR-001).

  • Every user choice in an hm render goes through the question tool (SPEC-choice-cards). A choice an hm
    command or Maker asks is a closed-option card (AskUserQuestion / request_user_input), recommendation
    first except for approvals and equal options; without the tool, the same options as a numbered list, and
    the stage waits. Thirteen prose-only choice sites were converted, stale Cursor AskQuestion mentions are
    gone, and /hm:spec exempts only at auto_full (IRR-001).

Fixed

  • Rendered texts no longer describe retired machinery (SPEC-retired-text). Agent, skill, command, hook
    and Maker texts that still named autoloop, autopilot or the executor now say what runs in 0.64.0; Maker's
    autopilot grant and step are gone (IRR-001).

  • The bench test's decoy proxy no longer breaks CI (SPEC-bench-decoy-proxy). test_bench_light_lane
    set a dead HTTPS_PROXY that the runner's own uv run --with probe used to reach pypi, so every CI run
    on main failed quality-gate; the decoy is now HTTP_PROXY, which https traffic ignores.

  • A Resume after an interrupted execute no longer skips the fixes (SPEC-review-after-fixes). execute now
    writes work-docs/REVIEW-<slug>-<date>.md only after its fix loop, listing every round's findings with
    their final dispositions. A REVIEW on disk therefore means execute finished, and the digest's
    next_stage: wrapup is true only then. An execute re-entered after Bind (no REVIEW, every testable AC
    pending_test: false, at least one testable AC) runs Steps 0-2, reruns Bind's gate and goes to Step 4 instead of
    redoing RED on implemented code.

  • The world-model digest no longer names retired stages (SPEC-maker-advance AC-006, IRR-002). Any REVIEW
    now means next_stage: wrapup; review and verify were retired in 0.64.0.

Boundary tests (advisory)

Layer 1 of PLAN-test-fidelity-gap. Pure parser checks; advisory only.

Status: ✅ PASS

============================= test session starts ==============================
platform linux -- Python 3.12.15, pytest-9.0.3, pluggy-1.6.0
rootdir: /home/runner/work/harness-maker/harness-maker
configfile: pyproject.toml
plugins: asyncio-1.3.0, anyio-4.14.2, respx-0.23.1, hypothesis-6.155.7, xdist-3.8.0
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 38 items

tests/integration/test_boundary_bench_resume.py s                        [  2%]
tests/integration/test_boundary_codex_toml.py ............               [ 34%]
tests/integration/test_boundary_harness_yaml.py ........                 [ 55%]
tests/integration/test_boundary_hooks_json.py ....                       [ 65%]
tests/integration/test_boundary_meta.py ......                           [ 81%]
tests/integration/test_boundary_settings_json.py .......                 [100%]

======================== 37 passed, 1 skipped in 3.71s =========================