Skip to content

Add make preflight as the one definition of "safe to commit" - #51

Merged
nonrational merged 4 commits into
mainfrom
preflight-gate
Aug 25, 2026
Merged

Add make preflight as the one definition of "safe to commit"#51
nonrational merged 4 commits into
mainfrom
preflight-gate

Conversation

@nonreagent

Copy link
Copy Markdown
Collaborator

Resolves #40

Problem

The list of things to run before committing exists only inside the CI workflow, and it's already incomplete: check-symlinks is defined in the Makefile but was never actually run by CI.

Motivation

The Makefile's check-* targets and ci.yml's step list are two separate definitions of "checked" that already drifted once, and are about to drift again — an open PR adds a fifth check-* target and, without this change, would need a second hand-edit to ci.yml to avoid landing orphaned from CI the same way check-symlinks did.

Proposed Solution

Added make preflight (test plus every check-* target) as the single definition, and reduced ci.yml to environment setup + make preflight + the temp-$HOME deploy apply/audit smoke step (kept separate since it exercises the deploy mechanism against real state rather than checking committed content). A new check-* target is now picked up by both without touching the workflow.

Folding check-symlinks in surfaced a real gap: home/bin.Darwin/code and subl were committed symlinks pointing straight into /Applications/*.app, which can only resolve on the one machine that had those exact apps installed — never true on a CI runner. Replaced both with small scripts that check for the app and exec it. Both target paths are still the canonical ones per VS Code's and Sublime Text's own docs; the fix is capturing them as scripts rather than as a symlink baked into git, matching every other entry in that directory (already plain scripts, not symlinks).

Also updated CLAUDE.md's Commands section to document make preflight and note the deploy-smoke-test scoping.

Feedback

The code/subl conversion is bundled in here rather than split into its own PR — it was a necessary enabler for check-symlinks to safely join preflight/CI, not scope creep, but worth a second opinion on whether that call was right. I could only verify check-editorconfig and the macOS leg of CI by inspection (no editorconfig-checker or Mac available in this sandbox) — worth a close look on the macOS runner once CI runs.

nonreagent and others added 2 commits August 25, 2026 00:34
home/bin.Darwin/code and subl were tracked symlinks pointing directly
into /Applications/*.app -- a snapshot of an `ln -s` that can only ever
be valid on the one machine that had the app installed at commit time,
and dangles as a broken symlink everywhere else (including any CI
runner). Every other entry in home/bin.Darwin is a plain executable
script; these two were the only symlinks in the directory.

Both target paths are still the canonical ones per each vendor's own
docs -- the fix is capturing them as scripts that check for the app
and exec it, rather than as a symlink baked into git.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
test and the check-* targets were duplicated between the Makefile and
ci.yml by hand, and had already drifted: check-symlinks was defined
but never run by CI at all. preflight runs test plus every check-*
target in one place, and ci.yml now just calls it -- a new check-*
target is covered by both without a second edit to the workflow.

check-symlinks can only join preflight/CI now that the prior commit
removed the two /Applications-pointing symlinks it was tripping on.

Resolves #40
@nonreagent
nonreagent requested a review from nonrational August 25, 2026 00:35
@nonrational
nonrational merged commit 1256377 into main Aug 25, 2026
2 checks passed
@nonrational
nonrational deleted the preflight-gate branch August 25, 2026 14:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

One preflight command, so CI and the developer share a definition of "checked" [find-inspiration:preflight-gate]

2 participants