AgentXchain v2.154.1
v2.154.1 is the BUG-62 auto-reconcile visibility patch. It keeps the
v2.154.0 operator-commit reconcile surface, then fixes the auto-refusal path
so continuous sessions write schema-valid blocked state and agentxchain status shows the exact refusal class plus recovery command.
Bug Fixes
-
BUG-62 auto-refusal blocked-state schema: continuous
auto_safe_onlyrefusal now writesblocked_at,turn_id: null,recovery.typed_reason,owner, andturn_retained. Status can load and render the run instead of falling back toPhase: unknown/Run: unknown. -
BUG-62 status recovery contract:
agentxchain statusandagentxchain status --jsonnow surfaceoperator_commit_reconcile_refused, the concreteerror_class, and the recovery actionagentxchain reconcile-state --accept-operator-headfor unsafe automatic reconciliation. -
BUG-62 refusal-class documentation: docs and decisions now use the real refusal classes from the reconciler:
governance_state_modified,critical_artifact_deleted, andhistory_rewrite. -
BUG-54 operator docs correction: local CLI startup-watchdog docs now state the actual proof contract: first stdout or staged
turn-result.jsonclears startup, while stderr-only output is diagnostic evidence and does not prove the governed turn started.
Operator Notes
For continuous sessions that should accept only safe fast-forward operator commits before dispatch:
{
"run_loop": {
"continuous": {
"reconcile_operator_commits": "auto_safe_only"
}
}
}
If the automatic path refuses a commit, inspect:
agentxchain status
agentxchain status --json
Then either remove the unsafe commit or explicitly accept the operator head:
agentxchain reconcile-state --accept-operator-head
Decisions
DEC-BUG62-AUTO-SAFE-ONLY-RECONCILE-001DEC-BUG54-STDERR-IS-NOT-STARTUP-PROOF-002
Evidence
- node --test cli/test/beta-tester-scenarios/ cli/test/claim-reality-preflight.test.js -> 241 tests / 71 suites / 0 failures / 5 skipped
- node --test --test-timeout=60000 test/continuous-run.test.js test/lights-out-operation-guide-content.test.js test/beta-tester-scenarios/bug-62-operator-commit-reconcile.test.js -> 50 tests / 12 suites / 0 failures / 0 skipped
Tester Re-Run Contract
Run the shipped package, not the source tree:
For BUG-62 closure, reproduce the tester drift scenario: make a safe manual
product-file commit on top of an agent checkpoint, run a continuous session
with reconcile_operator_commits: "auto_safe_only", and quote the
state_reconciled_operator_commits event emitted before the next dispatch.
Then make an unsafe operator commit that edits .agentxchain/state.json or
deletes .planning/acceptance-matrix.md. Quote agentxchain status,
agentxchain status --json, operator_commit_reconcile_refused, the
error_class, and the recovery action.
BUG-62 remains open until that shipped-package quote-back lands. BUG-52, BUG-54, BUG-59, BUG-53, and BUG-61 remain open under their existing shipped package closure contracts.
For still-open BUG-61 closure proof, reproduce a ghost-turn class failure in a
continuous run only after confirming auto-retry is actually enabled. The
project must either satisfy the strict full-auto detector
(approval_policy.phase_transitions.default === "auto_approve" and
approval_policy.run_completion.action === "auto_approve" with continuous mode
enabled), or explicitly set run_loop.continuous.auto_retry_on_ghost.enabled: true, or run with agentxchain run --continuous --auto-retry-on-ghost.
Without one of those, auto-retry is disabled by design per
DEC-BUG61-FULL-AUTO-DETECTOR-STRICT-V1-001; quote-back from that posture
should show the manual reissue-turn --reason ghost recovery, not
auto_retried_ghost. Valid closure evidence must quote auto_retried_ghost
followed by a successful subsequent turn, or ghost_retry_exhausted with its
diagnostic bundle when the budget is exhausted.
For still-open BUG-52 closure proof, quote phase_entered after unblock.
Older paths may still show trigger: "reconciled_before_dispatch"; standing
gate paths should also show cleanup evidence when stale same-phase state
existed.
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.
For still-open BUG-54 closure proof, 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.
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.