Repository navigation
v0.32.0
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_pausedorauto_merge_cap. They still read both, and the record sayspaused=andcapped=. - A maintainer's
factory/drillon a merged pull request, set beforefactory/revert, makes its revert a drill the breaker does not count. - Every merge decision carries a replayable
agent-factory-decisionrecord. - The scoper ends in the harness: nudged at
scoper.nudgeAt, stopped atmaxToolCalls, outcomebudget_calls. An inlineAcceptance:paragraph counts. - A pending-only
not_yetwaits for the checks within StuckAfter, with progress notes.
Metrics.
- New:
maku_factory_class_paused{repository,class}andmaku_factory_handoff_to_merge_seconds{class,reason,how}. - New labels:
merge_decisions_totalgainsrepository,human_wait_seconds_totalgainsreason,class, andrun_cost_usdgainsrole. 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.