Skip to content

v0.32.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 15:30
· 132 commits to main since this release
b361547

What's Changed

  • docs: the maku.ogenki.io group move runbook; the gate refuses the old group and metric names by @Smana in #289
  • docs(migration): rollback resume order and pod wait; GHCR cleanup drops the old names by @Smana in #290
  • fix(migrategroup): dry run predicts a copy the server would prune or reject by @Smana in #291
  • feat(factory): a maintainer's approval merges an agent pull request by @Smana in #292
  • feat(factory): the scoper's end in the harness, inline Acceptance, the reviewer brief by @Smana in #294
  • feat(harness): the judge round waits on pending checks and quotes the failing log; run cost by role by @Smana in #296
  • feat(factory): shadow before the blockers, factory/drill, and the breaker's recovery by @Smana in #293
  • feat(factory): the decision record, the human-path metrics, and the tally's replay by @Smana in #295

Full Changelog: v0.31.0...v0.32.0

Upgrading

Deploy order. crossplane-configuration v0.9.30 (the AgentRun XRD lets a reviewer carry its brief, crossplane-configuration#70) and its maku-harness digest bump must reach the cluster before this factory. Without them the reviewer runs on the pull request alone and posts one room note, and the harness changes below do not reach runs.

New switches, off by default. A factory upgraded without a config change behaves as v0.31.0, except where noted.

Key Effect when set
merge.approveToMerge: true A maintainer's APPROVED review of an agents pull request's current head arms the merger, outside the caps, recorded as a human merge (factory/approved-merge, outcome approved_merged). Approvals, the next UTC day and a lifted pause return a handed-off task to the gate.
merge.breaker.recoverAfter: N (0 ≤ N < window) A tripped class resumes once its N newest merges are clean, mature and newer than its newest bad merge.

Changes without a switch.

  • Shadow decisions are no longer stopped by class_paused or auto_merge_cap. They still read both, and the record says paused= and capped=.
  • A maintainer's factory/drill on a merged pull request, set before factory/revert, makes its revert a drill the breaker does not count.
  • Every merge decision carries a replayable agent-factory-decision record.
  • The scoper ends in the harness: nudged at scoper.nudgeAt, stopped at maxToolCalls, outcome budget_calls. An inline Acceptance: paragraph counts.
  • A pending-only not_yet waits for the checks within StuckAfter, with progress notes.

Metrics.

  • New: maku_factory_class_paused{repository,class} and maku_factory_handoff_to_merge_seconds{class,reason,how}.
  • New labels: merge_decisions_total gains repository, human_wait_seconds_total gains reason,class, and run_cost_usd gains role. A dashboard that sums these series is unaffected; one that matches the old label set exactly is not.
  • pr_outcomes_total{outcome="reverted"} includes drill reverts.

CRDs. The Task CRD gains optional fields (approvedBy, mergedHow: approved, drill, handedOffAt, handedOffReason). Apply the chart's CRDs. Tasks already in AwaitingHuman have no handedOffAt, so their merge records no hand-off-to-merge observation.