build: macOS release builds DEFERRED — and the macOS cfg paths are compiled by nothing in CI #59
Labels
No labels
code-review
correctness
dos
performance
security
severity/high
severity/low
severity/medium
tech-debt
Kind/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
h-dv/code-index#59
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decision record + tracking issue for the deliberate deferral of macOS release builds, and for the coverage hole that deferral leaves behind.
Decision: macOS builds are deferred
x86_64-apple-darwinandaarch64-apple-darwinare not built and not published. This is intentional, not a build failure. Every release from v0.8.4 through v0.9.0 has shipped four artifacts:The matrix entries in
.forgejo/workflows/release.ymlwere already commented out (not merelycontinue-on-error) because a matrix entry whoseruns-onlabel has no registered runner does not fail — it queues forever and hangs the whole run.continue-on-errortolerates failures, never never-scheduled jobs. That distinction is why commenting out is the correct mechanism here.The README/packaging steps still carry
macos-x86_64/macos-aarch64casearms. Those are deliberately kept pre-wired so re-enabling is a pure uncomment.The part that is NOT just cosmetic
There is a
windows-checkCI job that cross-compiles--target x86_64-pc-windows-gnuto keep Windows-only code honest. There is no macOS equivalent. So these paths are compiled by nothing, anywhere in CI:crates/indexer/src/watcher.rs—#[cfg(any(target_os = "windows", target_os = "macos"))]single recursive watch (FSEvents native subtree subscription), and theIN_Q_OVERFLOW/FSEvents overflow handlingcrates/daemon/src/lifecycle.rs—#[cfg(target_os = "macos")]stale-PID detection, and the Linux/macOSflockEWOULDBLOCKpathcrates/indexer/tests/watcher.rs/periodic_reconcile.rs— assertions gated oncfg!(target_os = "macos")that consequently never executeThese can bit-rot silently: a refactor that breaks the macOS arm produces a green CI run. Given the project's standing parity requirement (all languages × 3 OSes × 2 arches), this is the actual debt — not the missing binaries.
Why a cheap check-only gate does not work
cargo check --target aarch64-apple-darwinfrom the Linux container is not sufficient.cargo checkstill runs build scripts, and the seventree-sitter-*grammar crates each compile C viaccinbuild.rs. That needs a darwin C toolchain (osxcross + the Apple SDK), not justrustup target add. So the options are:macos, with Xcode CLT) → uncomment the two matrix entries; real builds and real tests.ci-base→ enables amacos-checkcompile gate, and possibly full cross-builds. Note the Apple SDK has redistribution constraints; this needs a licensing look before baking it into a shared image.Acceptance
.sha256publish, and add amacos-checkjob alongsidewindows-checkStatus
release.ymlheader comments and the release-notes footer are being corrected to state the deferral plainly (they previously described macOS as an attempted "best-effort" target, contradicting the disabled matrix entries).