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
V2.10.S4: justfile fully-qualified recipe names and dispatcher cleanup
Status: Backlog Epic: #[github-epic-issue] Parent roadmap item: V2.10: Build System Consolidation And Qt Build Validation Labels:type/story, area/platform
Introduce fully-qualified recipe names using the {command}[-{subcommand}]-{os}- {arch}[-{compiler}] naming grid. Keep bare dispatchers as auto-routing
convenience forms. Add cross-platform test-unit-fd recipes.
Product Outcome
CI authors and contributors can call fully-qualified recipes like just test-unit-tk-linux-x86 or just build-fd-macos-arm with zero ambiguity
about the platform triple. Bare recipes like just build-fd remain for local
convenience but are pure routers that dispatch to the qualified form.
User Story
As a CI workflow author, I want to call just test-unit-tk-linux-x86 instead of
bare just test-unit-tk, so that my CI job is reproducible and does not depend
on runner-detected OS/arch.
User Story (convenience)
As a local developer, I want just build-fd to still work and auto-route to just build-fd-$(tk_os)-$(tk_arch), so that I don't need to remember my platform
triple for everyday development.
Scope
In scope: introduce fully-qualified recipe names for all build/test families: build-fd-linux-x86-gcc, build-fd-macos-arm, build-tk-linux-x86, test-unit-fd-macos-x86, test-unit-tk-windows-arm, etc. (full grid in
build-tooling-consolidation.md section 3).
in scope: keep existing bare recipes (build-fd, test-unit-fd, test-unit-tk, test-integration-tk, build-tk) as thin dispatchers that
compute {os}-{arch}[-{compiler}] via platform.sh variables and exec the
qualified recipe.
in scope: add test-unit-fd-{os}-{arch}[-{compiler}] recipes for macOS and
Windows (D3 from build-tooling-consolidation.md), treating each platform as a
spike: validate the native run-unit-test make invocation actually builds and
links.
In scope: drop Linux-only -Wl,-z,shstk CET linker flag from non-Linux test-unit-fd variants; use portable core-count lookup via platform.sh
instead of nproc.
in scope: add build-tkni recipe for Qt terminal build (cross-references S3).
in scope: add test-tkni recipe placeholder for Qt tests (future V3.19).
In scope: add quality-* and security-* recipe aliases that map from
qualified names (e.g., quality-lint-check-fd-linux-x86 → quality-lint-check-fd)
for consistency, while noting these recipes remain Linux/x86-only by design.
In scope: aggregate recipes (test-unit-all, test-integration-all, build-all, test-all) continue to call bare dispatchers.
Out of scope: CI workflow file changes (covered in S6).
Out of scope: setup-* recipes (covered in S5).
Preconditions And Assumptions
S1 (platform.sh + cleanup) has shipped, so os and arch are available
as just top-level variables.
test-unit-fd currently only has Linux support; macOS/Windows variants need
to be added as spikes per D3.
quality-* and security-* recipes are Linux/x86-only by design (D3 in
build-tooling-consolidation.md); they should not be forced into the grid.
Acceptance Criteria
Given any dispatcher recipe like build-fd, when it runs, then it
dispatches to the fully-qualified form based on platform.sh variables.
Given a fully-qualified recipe like test-unit-tk-linux-x86, when it
runs, then it executes the equivalent of the old test-unit-tk recipe.
Given test-unit-fd-macos-x86, when it runs, then it builds and runs
native Firedancer C unit-test binaries on macOS x86 (or reports the
pre-existing blst/zstd/lz4 macOS x86_64 build blocker per D3).
Given test-unit-fd-macos-arm, when it runs, then it builds and runs
native Firedancer C unit-test binaries on macOS ARM.
Given test-unit-fd-windows-x86, when it runs, then it builds and runs
native Firedancer C unit-test binaries on Windows x86.
Non-Linux test-unit-fd variants do not use the -Wl,-z,shstk CET
linker flag.
Non-Linux test-unit-fd variants use a portable core-count lookup
(e.g., nproc fallback to sysctl -n hw.ncpu on macOS, WMI on
Windows).
test-unit-all calls the bare test-unit-tk and test-unit-fd
dispatchers, which in turn call qualified recipes.
quality-* and security-* recipes remain Linux/x86-only but have
qualified aliases for consistency (e.g., quality-lint-check-fd-linux-x86 → quality-lint-check-fd).
All existing CI lanes still pass when called via their fully-qualified
names.
Conditional Acceptance
Financial capability and policy
N/A - story modifies justfile and dispatchers; no policy changes.
Audit and replay
N/A - story modifies justfile and dispatchers; no audit/replay changes.
Runtime topology and tile ownership
N/A - story modifies justfile and dispatchers; no topology changes.
Model, tool, adapter, or execution boundary
N/A - story modifies justfile and dispatchers; no model/adapter/execution changes.
CaseOps API or UI
N/A - story modifies justfile and dispatchers; no API/UI changes.
Storage role: Memory, Analytics, Ledger
N/A - story modifies justfile and dispatchers; no storage changes.
Metrics, diagnostics, and operations
N/A - story modifies justfile and dispatchers; no metrics/telemetry changes.
Security and fail-closed behavior
Given a non-Linux platform, when test-unit-fd-{os}-{arch} runs, then
it does not attempt to pass the Linux-only -Wl,-z,shstk linker flag.
Evidence Plan
Demo or command: just build-fd-macos-arm and just test-unit-tk-linux-x86
on macOS and Linux hosts.
Tests: All existing CI lanes pass with fully-qualified names.
Fixtures or samples: justfile source with qualified recipe entries.
Audit/replay evidence: N/A - build system only.
Blocked-flow evidence: test-unit-fd-macos-x86 hitting the documented blst/zstd/lz4 macOS x86_64 build blocker per D3.
Quality Gate
Bare dispatcher recipes still work for local development.
Fully-qualified recipes work on all supported platforms.
test-unit-fd cross-platform variants build on at least one platform
(may hit the known macOS x86_64 blocker).
Non-Linux test-unit-fd does not use -Wl,-z,shstk.
Documentation and roadmap status are updated.
Notes And Open Questions
D3 notes that build-fd-macos-x86_64 has a pre-existing blst/zstd/lz4
macOS x86_64 vendor-source blocker. If this blocks test-unit-fd-macos-x86
entirely, the recipe should still be added but report the blocker as a
tracked issue against FD vendor sources, not silently degrade.
zigw.sh is already updated by S1 to call platform.sh. Ensure the justfile dispatcher variables don't conflict with zigw.sh's Zig binary
path discovery logic.
V2.10.S4:
justfilefully-qualified recipe names and dispatcher cleanupStatus: Backlog
Epic: #[github-epic-issue]
Parent roadmap item: V2.10: Build System Consolidation And Qt Build Validation
Labels:
type/story,area/platformIntroduce fully-qualified recipe names using the
{command}[-{subcommand}]-{os}- {arch}[-{compiler}]naming grid. Keep bare dispatchers as auto-routingconvenience forms. Add cross-platform
test-unit-fdrecipes.Product Outcome
CI authors and contributors can call fully-qualified recipes like
just test-unit-tk-linux-x86orjust build-fd-macos-armwith zero ambiguityabout the platform triple. Bare recipes like
just build-fdremain for localconvenience but are pure routers that dispatch to the qualified form.
User Story
As a CI workflow author, I want to call
just test-unit-tk-linux-x86instead ofbare
just test-unit-tk, so that my CI job is reproducible and does not dependon runner-detected OS/arch.
User Story (convenience)
As a local developer, I want
just build-fdto still work and auto-route tojust build-fd-$(tk_os)-$(tk_arch), so that I don't need to remember my platformtriple for everyday development.
Scope
build-fd-linux-x86-gcc,build-fd-macos-arm,build-tk-linux-x86,test-unit-fd-macos-x86,test-unit-tk-windows-arm, etc. (full grid inbuild-tooling-consolidation.md section 3).
build-fd,test-unit-fd,test-unit-tk,test-integration-tk,build-tk) as thin dispatchers thatcompute
{os}-{arch}[-{compiler}]viaplatform.shvariables and exec thequalified recipe.
test-unit-fd-{os}-{arch}[-{compiler}]recipes for macOS andWindows (D3 from build-tooling-consolidation.md), treating each platform as a
spike: validate the native
run-unit-testmake invocation actually builds andlinks.
-Wl,-z,shstkCET linker flag from non-Linuxtest-unit-fdvariants; use portable core-count lookup viaplatform.shinstead of
nproc.build-tknirecipe for Qt terminal build (cross-references S3).test-tknirecipe placeholder for Qt tests (future V3.19).quality-*andsecurity-*recipe aliases that map fromqualified names (e.g.,
quality-lint-check-fd-linux-x86→quality-lint-check-fd)for consistency, while noting these recipes remain Linux/x86-only by design.
test-unit-all,test-integration-all,build-all,test-all) continue to call bare dispatchers.setup-*recipes (covered in S5).Preconditions And Assumptions
platform.sh+ cleanup) has shipped, soosandarchare availableas
justtop-level variables.test-unit-fdcurrently only has Linux support; macOS/Windows variants needto be added as spikes per D3.
quality-*andsecurity-*recipes are Linux/x86-only by design (D3 inbuild-tooling-consolidation.md); they should not be forced into the grid.
Acceptance Criteria
build-fd, when it runs, then itdispatches to the fully-qualified form based on
platform.shvariables.test-unit-tk-linux-x86, when itruns, then it executes the equivalent of the old
test-unit-tkrecipe.test-unit-fd-macos-x86, when it runs, then it builds and runsnative Firedancer C unit-test binaries on macOS x86 (or reports the
pre-existing
blst/zstd/lz4macOS x86_64 build blocker per D3).test-unit-fd-macos-arm, when it runs, then it builds and runsnative Firedancer C unit-test binaries on macOS ARM.
test-unit-fd-windows-x86, when it runs, then it builds and runsnative Firedancer C unit-test binaries on Windows x86.
test-unit-fdvariants do not use the-Wl,-z,shstkCETlinker flag.
test-unit-fdvariants use a portable core-count lookup(e.g.,
nprocfallback tosysctl -n hw.ncpuon macOS, WMI onWindows).
test-unit-allcalls the baretest-unit-tkandtest-unit-fddispatchers, which in turn call qualified recipes.
quality-*andsecurity-*recipes remain Linux/x86-only but havequalified aliases for consistency (e.g.,
quality-lint-check-fd-linux-x86→quality-lint-check-fd).names.
Conditional Acceptance
Financial capability and policy
justfileand dispatchers; no policy changes.Audit and replay
justfileand dispatchers; no audit/replay changes.Runtime topology and tile ownership
justfileand dispatchers; no topology changes.Model, tool, adapter, or execution boundary
justfileand dispatchers; no model/adapter/execution changes.CaseOps API or UI
justfileand dispatchers; no API/UI changes.Storage role: Memory, Analytics, Ledger
justfileand dispatchers; no storage changes.Metrics, diagnostics, and operations
justfileand dispatchers; no metrics/telemetry changes.Security and fail-closed behavior
test-unit-fd-{os}-{arch}runs, thenit does not attempt to pass the Linux-only
-Wl,-z,shstklinker flag.Evidence Plan
just build-fd-macos-armandjust test-unit-tk-linux-x86on macOS and Linux hosts.
justfilesource with qualified recipe entries.test-unit-fd-macos-x86hitting the documentedblst/zstd/lz4macOS x86_64 build blocker per D3.Quality Gate
test-unit-fdcross-platform variants build on at least one platform(may hit the known macOS x86_64 blocker).
test-unit-fddoes not use-Wl,-z,shstk.Notes And Open Questions
build-fd-macos-x86_64has a pre-existingblst/zstd/lz4macOS x86_64 vendor-source blocker. If this blocks
test-unit-fd-macos-x86entirely, the recipe should still be added but report the blocker as a
tracked issue against FD vendor sources, not silently degrade.
zigw.shis already updated by S1 to callplatform.sh. Ensure thejustfiledispatcher variables don't conflict withzigw.sh's Zig binarypath discovery logic.