FN-6461: block incomplete no-commits no-op finalization
Add a shared no-op finalize guard so no-commits tasks with mostly incomplete steps return to todo instead of silently completing.
- Add core step-evidence evaluation for no-commits no-op finalization.
- Apply the guard across AI empty merge, early empty-own-diff, legacy no-op classifier, direct no-op, and self-healing finalize lanes.
- Emit run-audit/log evidence and preserve progress when demoting blocked tasks.
- Cover guard behavior with core, merger, AI merge, real-git, and self-healing tests.
- Document the finalize integrity invariant and add a patch changeset.
Files changed:
.changeset/fn-6461-no-commits-finalize-guard.md | 5 +
docs/architecture.md | 2 +
.../__tests__/no-commits-finalize-guard.test.ts | 58 +++++++
packages/core/src/index.ts | 2 +
packages/core/src/no-commits-finalize-guard.ts | 42 +++++
packages/engine/src/__tests__/merger-ai.test.ts | 59 +++++++
.../merger-finalize-unproven.real-git.test.ts | 176 +++++++++++++++++++++
packages/engine/src/__tests__/self-healing.test.ts | 125 +++++++++++++++
packages/engine/src/merger-ai.ts | 45 ++++++
packages/engine/src/merger.ts | 130 +++++++++++++++
packages/engine/src/run-audit.ts | 6 +
packages/engine/src/self-healing.ts | 41 ++++-
12 files changed, 689 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6461
Fusion-Task-Lineage: 36647768-42da-414a-9304-d8e0ed61b99c