Repository navigation
Conversation
Deicyde
left a comment
There was a problem hiding this comment.
Reviewed exact head 9db73321681d8662d7bba3766c3e471ee9976c9b.
I found five issues that should be addressed before merging:
-
The supported unpinned creation path cannot later install CI.
project newwithout provenance omits every.github/*file and therefore the.githubdirectory. A subsequentproject repair --autoform-source ... --autoform-ref ...rejects the missing parent instead of creating the canonical parent chain. This leaves no documented repair transition once provenance becomes available. -
Workflow reconstruction does not validate the helper the workflow executes.
_scope_workflow_filestreats only the two YAML files as a provenance-compatible set. Replacing.github/autoform_audit.pywith arbitrary bytes, deleting both YAML files, and repairing with the original pin succeeds and preserves the bogus helper; both newly generated workflows then execute it. Validate the helper together with the workflow files before adding any missing member of that bundle. -
Recovery paths can be false after a parent or root rename. Publication through the retained directory descriptor can put the file in a detached tree, but the error reports only the logical in-project path in
writtenand tells the user to inspect it. That path is absent, the actual artifact is unreported, and a retry can create a second copy. Recovery output needs to identify a reachable artifact, or publication must stop while the ancestry is still name-bound. -
Atomic no-replace support is preflighted only by libc symbol presence. On a filesystem that rejects
RENAME_NOREPLACE, repair creates and fsyncs a temporary, receivesEINVAL/ENOTSUP, then rewritesproject-repair-safety-unavailableasproject-repair-recovery-requiredand poisons retries with retained debris. The same early check also rejects a complete no-op repair. Probe the bound target filesystem after planning, or preserve the capability error and safely handle the known-unpublished temporary. -
Retrying does not repair a reported durability failure. I injected a failure at the parent-directory
fsync; the first call reportedproject-repair-durability-failedwithmkdocs.ymlwritten. The same repair then returned success with an empty plan and performed zero directory fsyncs. A retry must synchronize the preserved published entry before claiming success.
Validation: 247 focused project/CLI tests passed. The worktree remained clean.
|
Restacking against final #26 confirms the earlier review blockers and adds three More importantly, the current recovery claim cannot be made honest by adding Recommended rewrite boundary: retain the pure planner and descriptor-bound |
Repair compared lakefile.toml and lean-toolchain with hashes taken from the inspection report. The cut-down inspector in PR 14 no longer reports hashes, so repair observes both files through its retained root descriptor before inspection and re-checks them afterwards.
a11ccd8 to
3b85315
Compare
Summary
autoform project repairfor existing compatible Lean projectsDepends on #26. The reviewable changes are commits
9db7332and3b85315; earlier commits belong to the dependency stack.Status on 2026-10-02: this branch predates the current stack. It is 98 commits behind #26 and still carries the first version of #14's inspector.
3b85315makes repair hashlakefile.tomlandlean-toolchainitself, before inspection, instead of reading hashes from the inspection report, which #14 no longer provides. Porting onto the current #26 is still to do:_scaffold_plannow takes a template snapshot, the release catalog is flat, and the inspection report renamedleanandlake.path.Validation
3b85315)make lintmake check-examplegit diff --check