You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking parent #249; epic #243. This is one vertical delivery slice. Do not close or bypass the parent tracker from this child.
Goal
Apply only a reviewed semantic preview after exact validation binding, path/version/hash rechecks, deterministic commit, final verification, and proven rollback.
Only opcore edit apply of an exact serialized A plan may apply Python semantic edits; one-shot rename --apply remains refused. Recompute planHash/planId, repo/context/input/baseline/preimage fingerprints, and reject any tamper or drift before staging.
Extend normalization/apply only to a safe single regular-file RenameFile returned by semantic rename. Reject Create/Delete/folders, overwrite/ignore flags, malformed order, unsupported metadata, destination/source/case/cycle collisions, and unreviewed operations.
Before/after validation and immediately precommit, canonicalize and lstat-walk source/destination/ancestors; refuse symlink, hardlink, special/generated/private/ignored/cache/read-only/unwritable/out-of-root/case/identity/inode swaps. Support verified UTF-8/BOM/line endings/final newline and measured mode/uid/gid only; refuse unsupported encoding/metadata rather than overclaim.
Snapshot reviewed content/metadata, stage all writes, recheck precommit identities, commit deterministically, reread final checksums/metadata against afterStateHash, and clean temps. Validation/stage refusal reports not_started/unchanged. Commit/postverify failure restores reverse order and verifies every path/metadata/directory; incomplete restore is rollback_failed with uncertain paths.
Guarantee all-or-nothing only for handled in-process failures with verified rollback; make no crash/power-loss durability or ASP host apply claim.
Packed preview then apply reports validation/tool/snapshot/final/rollback evidence; stale/tampered/failure cases are nonzero applied:false with no ambient fallback.
Observable outcomes
Clean success carries positive execution/provenance evidence; zero diagnostics alone is never proof.
Findings and every unavailable/invalid/timeout/crash/resource/stale/unsupported state are machine-readable and fail or degrade exactly as the capability contract says.
No implicit fallback, partial result, or skipped execution is reported as a pass.
Target source, configuration, lockfiles, environments, and caches remain unchanged except where this issue explicitly owns a validation-gated atomic edit; every temporary resource/process is cleaned.
Non-goals
module/package moves
ASP apply authority
tool install/checker selection
power-loss journal
arbitrary binary encodings
readiness claims
Verification
Run focused behavior first, then the configured repository proof only after the acceptance matrix works:
Attach exact real-tool/artifact versions, argv/config/cwd/source, normalized result examples, before/after cleanliness evidence, and packed-install proof where the slice changes public package behavior.
Execution rule
Implement only after a just-in-time review against current dev. Keep exactly one implementation run active. PR base is dev; require green checks, clean scoped diff, merged PR, closed child, parent checklist update, focused reproductions, and opcore-ci proof before starting the next child. Do not claim Python readiness/parity, ASP authority, old-tool replacement, security/SAST, all-stack support, automatic fixes, or a blended score.
Parent
Tracking parent #249; epic #243. This is one vertical delivery slice. Do not close or bypass the parent tracker from this child.
Goal
Apply only a reviewed semantic preview after exact validation binding, path/version/hash rechecks, deterministic commit, final verification, and proven rollback.
Dependency contract
Required behavior
opcore edit applyof an exact serialized A plan may apply Python semantic edits; one-shot rename --apply remains refused. Recompute planHash/planId, repo/context/input/baseline/preimage fingerprints, and reject any tamper or drift before staging.Acceptance criteria
Observable outcomes
Non-goals
Verification
Run focused behavior first, then the configured repository proof only after the acceptance matrix works:
npm run buildnode --test tests/edit-python-rename-preview.test.mjs tests/edit-python-rename-apply.test.mjs tests/edit-atomic-writer.test.mjs tests/edit-atomic-writer-mixed.test.mjs tests/edit-validation.test.mjs tests/validation-overlays.test.mjs tests/validation-runner.test.mjs tests/contracts.test.mjs tests/installed-bins.test.mjsnpm run lintnpm run pack:checkbash ./scripts/ci/run-local-ci-equivalent.shExecution rule
Implement only after a just-in-time review against current
dev. Keep exactly one implementation run active. PR base isdev; require green checks, clean scoped diff, merged PR, closed child, parent checklist update, focused reproductions, andopcore-ciproof before starting the next child. Do not claim Python readiness/parity, ASP authority, old-tool replacement, security/SAST, all-stack support, automatic fixes, or a blended score.