Skip to content

V2.10.S4: justfile fully-qualified recipe names and dispatcher cleanup #62

Description

@deeprnd

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-x86quality-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-x86quality-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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/platformTile topology, shared-memory flow, supervisor processes, crash-only isolationtype/storySingle implementable deliverable that can be independently verified

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions