AgentXchain v2.154.0
v2.154.0 is the BUG-62 operator-commit reconcile release. It closes the
recovery loop where a human workaround commit on top of an agent checkpoint
created Git HEAD has moved since checkpoint drift and blocked subsequent
governed work until the operator manually edited state.
Current BUG-52 quote-back target: BUG-62 closure can proceed on
[email protected]. But BUG-52 third-variant quote-back must use[email protected]or later —v2.154.0(and the originally suggested2.152.0) still loop on the realistic PMneeds_humanhandoff whereproposed_next_role: "human"andphase_transition_request: null. The canonical BUG-52 runbook is.planning/BUG_52_TESTER_QUOTEBACK_RUNBOOK.md.
The release ships both layers of the fix: a manual command for audited
operator recovery, and a continuous-mode auto_safe_only policy that can
accept safe fast-forward operator commits before dispatch while still refusing
governed-state edits and history rewrites.
Bug Fixes
-
BUG-62 manual reconcile command:
agentxchain reconcile-state --accept-operator-headaccepts safe fast-forward operator commits as the new governed baseline. It updatesaccepted_integration_ref, refreshessession.json.baseline_ref, recordsoperator_commit_reconciliation, and emitsstate_reconciled_operator_commits. -
BUG-62 safety checks: the reconciler refuses:
- history rewrites where the prior governed baseline is not an ancestor of
HEAD - commits that modify
.agentxchain/ - deletion of critical governed evidence such as
.planning/acceptance-matrix.md
- history rewrites where the prior governed baseline is not an ancestor of
-
BUG-62 continuous auto-safe-only policy:
run_loop.continuous.reconcile_operator_commitsaccepts"manual","auto_safe_only", or"disabled". Theruncommand also accepts--reconcile-operator-commits <mode>. Full-auto approval-policy posture promotes the default toauto_safe_only; explicit config and CLI flags win. -
BUG-62 refusal audit trail: unsafe auto-reconcile pauses the session, writes
blocked_on: "operator_commit_reconcile_refused"with actionable recovery detail, and emitsoperator_commit_reconcile_refused. Safe auto-reconcile reuses the samestate_reconciled_operator_commitsevent as the manual command.
Operator Notes
When status reports checkpoint drift caused by safe operator commits, run:
agentxchain reconcile-state --accept-operator-head
For continuous sessions that should accept only safe fast-forward operator commits before dispatch:
{
"run_loop": {
"continuous": {
"reconcile_operator_commits": "auto_safe_only"
}
}
}
or:
agentxchain run --continuous --reconcile-operator-commits auto_safe_only
Use "manual" to require an explicit operator command, or "disabled" to
preserve drift exactly as-is for external debugging.
Decisions
DEC-BUG62-MANUAL-OPERATOR-HEAD-RECONCILE-001DEC-BUG62-AUTO-SAFE-ONLY-RECONCILE-001
Evidence
- node --test cli/test/beta-tester-scenarios/ cli/test/claim-reality-preflight.test.js -> 233 tests / 69 suites / 0 failures / 5 skipped
- node --test test/continuous-run.test.js test/run-events.test.js test/beta-tester-scenarios/bug-62-operator-commit-reconcile.test.js -> 53 tests / 11 suites / 0 failures / 0 skipped
Tester Re-Run Contract
Run the shipped package, not the source tree:
BUG-62 manual operator-commit reconcile
Create a safe product-file commit on top of the last governed checkpoint, then run:
agentxchain status --json
agentxchain reconcile-state --accept-operator-head
agentxchain status --json
Quote the before/after accepted_integration_ref,
operator_commit_reconciliation, and the state_reconciled_operator_commits
event. The after state should no longer report Git HEAD has moved since checkpoint drift.
BUG-62 safety refusals
Repeat the manual command with an operator commit that modifies
.agentxchain/state.json; quote the refusal with
error_class: "governance_state_modified". Also test a history rewrite where
the previous baseline is no longer an ancestor of HEAD; quote
error_class: "history_rewrite".
BUG-62 continuous auto-safe-only reconcile
Configure:
{
"run_loop": {
"continuous": {
"reconcile_operator_commits": "auto_safe_only"
}
}
}
Then start or continue a continuous session after a safe product-file operator
commit. Quote the state_reconciled_operator_commits event emitted before the
next dispatch. For an unsafe .agentxchain/state.json commit, quote
operator_commit_reconcile_refused, blocked_on: "operator_commit_reconcile_refused", and the recovery detail.
Existing open closure contracts
BUG-52 third-variant closure requires tester-quoted shipped-package output on
[email protected] or later, following
.planning/BUG_52_TESTER_QUOTEBACK_RUNBOOK.md. Earlier releases (including
2.152.0 and 2.154.0–2.154.5) still loop on the realistic PM handoff
shape. BUG-54 still requires adapter-path watchdog evidence. BUG-59 still
requires tester quote-back for routine auto-approval ledger rows and
credentialed hard-stop counter-evidence. Use [email protected] or later and
.planning/BUG_59_54_TESTER_QUOTEBACK_RUNBOOK.md for both BUG-54 and BUG-59 so
the evidence run does not hit the BUG-52 loop window. BUG-53 still requires a
real multi-run chain trace. BUG-61 still requires shipped-package quote-back
for ghost auto-retry and exhaustion diagnostics. v2.154.0 does not alter
those closure contracts.
BUG-52 standing-gate unblock
For the standing-gate unblock path, pin to [email protected] or later and
follow .planning/BUG_52_TESTER_QUOTEBACK_RUNBOOK.md. Quote phase_entered
after unblock; older BUG-52 paths may still show
trigger: "reconciled_before_dispatch". The current standing-gate path should
also show cleanup evidence through phase_cleanup when stale same-phase state
existed.
BUG-53 continuous sessions
For still-open BUG-53 closure proof, run the shipped package in continuous
mode and quote session_continuation events across chained runs. A bounded
idle run should end as idle_exit, not as a paused gate.
BUG-54 startup watchdog
For still-open BUG-54 closure proof, use [email protected] or later and
follow .planning/BUG_59_54_TESTER_QUOTEBACK_RUNBOOK.md. Quote adapter
diagnostics from real local_cli dispatches, including startup_latency_ms,
elapsed_since_spawn_ms, and the configured
runtimes.<id>.startup_watchdog_ms. The closure evidence must come from the
adapter path, not from a standalone spawn harness.
BUG-55 checkpoint completeness
For still-open BUG-55 regression proof, run accept-turn followed by
checkpoint-turn on a turn that declares both product files and verification
outputs. Include verification.produced_files with at least one artifact or
ignored output, prove there are no undeclared_verification_outputs, and quote
git status --short after checkpointing. Clean tree means BUG-55 is fixed for your reproduction.
The key operator chain is accept-turn followed by checkpoint-turn against
the same accepted turn.