GloriousFlywheel Builder Runtime Sprint Priorities 2026-04-16

GloriousFlywheel Builder Runtime Sprint Priorities 2026-04-16

Snapshot date: 2026-04-16

Purpose

Turn the newly clarified builder/runtime truths into a near-term sprint focus instead of leaving them scattered across longer research notes.

This note is intentionally biased toward:

  • runtime truth before broader publication storytelling
  • dogfood and downstream builder reliability before broader FlakeHub ambition
  • explicit ownership for heavy-Nix rollout instead of hand-waving about autoscaling

Current Truth

These four statements are now the active baseline:

  • FlakeHub is still publication/discovery later
  • Nix bootstrap is still workflow-owned
  • ARC still scales runner count horizontally
  • memory-heavy Rust/Nix jobs should go to tinyland-nix-heavy, not expect tinyland-nix to resize on demand

Near-Term Sprint Priorities

P0: Source Repo Default-Branch Proof Path

Owner surfaces:

  • #210
  • #214

Why now:

  • the source repo still relies on branch-gated test-arc-runners.yml for its clearest self-hosted proof
  • until main visibly proves tinyland-docker, tinyland-nix, and tinyland-nix-heavy, downstream status will keep depending on canaries more than on source-of-truth dogfood

Sprint target:

  • add one explicit default-branch platform-proof workflow
  • reuse existing local contract primitives:
    • ./.github/actions/docker-job
    • ./.github/actions/nix-job
    • ./.github/actions/setup-flywheel
  • keep docs, release, image, and FlakeHub publication paths visibly hosted where that remains the honest boundary

Exit signal:

  • main has one ordinary proof workflow for:
    • tinyland-docker
    • tinyland-nix
    • tinyland-nix-heavy
  • no one has to cite feat/arc-runners to explain source-repo self-dogfood

P0: Heavy Nix Lane On honey

Owner surface:

  • #214

Why now:

  • the repo now defines tinyland-nix-heavy in additive ARC policy
  • until that lane is actually rolled out on honey, the platform answer is still partly theoretical

Sprint target:

  • apply the updated arc-runners stack on honey
  • verify the tinyland-nix-heavy scale set exists and registers cleanly
  • run at least one heavy Rust/Nix canary against that lane
  • capture whether envelope alone is enough or whether placement policy is also required

Current execution read after live apply and runtime audit:

  • live honey ARC surface already includes: linux-xr-docker, personal-docker, personal-nix, tinyland-dind, tinyland-docker, tinyland-nix, and tinyland-nix-heavy
  • repo-owned heavy-Nix canary is now live:
    • tinyland-nix-heavy
    • 8 CPU limit
    • 16Gi memory limit
    • nodeSelector["kubernetes.io/hostname"] = "sting"
    • toleration for dedicated.tinyland.dev/compute-expansion:NoSchedule
  • repo-owned baseline runtime drift is now corrected:
    • live tinyland-nix now uses ATTIC_SERVER = http://attic.nix-cache.svc.cluster.local
    • live tinyland-docker now uses BAZEL_REMOTE_CACHE = grpc://bazel-cache.nix-cache.svc.cluster.local:9092
  • live cluster usage does not indicate a broad RAM shortage:
    • honey is at roughly 40% memory usage
    • sting is at roughly 6% memory usage
  • sting currently carries dedicated.tinyland.dev/compute-expansion:NoSchedule, so it is not part of the default ARC scheduling surface unless a lane is designed for it
  • the local operator path now includes:
    • dev-policy.tfvars
    • dev.tfvars
    • dev-extra-runner-sets.tfvars
  • the additive heavy lane is now explicitly modeled as sting compute- expansion capacity via:
    • node_selector["kubernetes.io/hostname"] = "sting"
    • toleration for dedicated.tinyland.dev/compute-expansion:NoSchedule
  • listeners still remain on honey, while the heavy runner lane itself now targets sting
  • remaining runtime drift is now narrower:
    • personal-nix still uses ATTIC_SERVER = http://attic-api.nix-cache.svc:8080
    • personal-nix and personal-docker are not repo-owned baseline lanes; they are jesssullivan/jesssullivan.github.io scale sets using github-personal-secret
  • surviving legacy state is still partial for other stacks: attic-dev and arc-runners-dev exist in archived gf-overlay, while runner-dashboard-dev and gitlab-runners-dev do not

Exit signal:

  • tinyland-nix-heavy is live on honey
  • tinyland-nix-heavy actually lands on sting as the explicit stateless compute-expansion node
  • repo-owned baseline runtime no longer depends on stale attic-api.nix-cache.svc:8080
  • first real heavy-lane canary is now published as Jesssullivan/yt-text#67
  • one real heavy Rust/Nix run still needs to complete on that lane to prove it under load

P0: Normalize Workflow-Owned Nix Bootstrap

Owner surfaces:

  • #210
  • local dogfood and shared-doc slices

Why now:

  • lab#73 proved the current contract: self-hosted Nix lanes cannot assume Nix is already present
  • this must stop being a niche repo-specific fix and become a visible shared contract

Sprint target:

  • keep pushing downstream repos toward either:
    • tinyland-inc/GloriousFlywheel/.github/actions/nix-job@main, or
    • explicit DeterminateSystems/determinate-nix-action@v3 before raw nix
  • dogfood the same contract in GloriousFlywheel-facing workflows and examples
  • make benchmark notes treat bootstrap time as its own measured phase

Exit signal:

  • the common downstream examples all show explicit Nix bootstrap
  • no public GF docs imply tinyland-nix guarantees preinstalled Nix

P0: Shared JS And Bazel Template Contract V2

Owner surfaces:

  • #210
  • #213

Why now:

  • live repo inspection shows the real downstream contract debt is concentrated in one reusable workflow: tinyland-inc/ci-templates/.github/workflows/js-bazel-package.yml
  • current downstream reality is now clearer:
    • scheduling-kit already has a verified repo-owned self-hosted package lane
    • acuity-middleware already has a verified repo-owned self-hosted package lane plus hosted Modal deploy
    • tinyvectors is the remaining hosted-template control case
  • until the template makes runner intent and workspace intent explicit, downstream rollout will keep spreading hosted fallback and persistent workspace hygiene

Sprint target:

  • introduce V2 inputs for:
    • runner intent
    • workspace intent
    • publish authority intent
  • integrate setup-flywheel for self-hosted modes
  • support isolated workspace behavior
  • migrate pilot repos in order:
    • scheduling-kit
    • acuity-middleware
    • tinyvectors decision lane

Exit signal:

  • the shared template no longer depends on clean: false in the normal path
  • at least one dedicated-lane pilot and one hybrid pilot run cleanly on V2
  • hosted template consumers are either promoted or left explicitly hosted

P0: Close Hosted Escape Hatches In Dogfood Repos

Owner surfaces:

  • #210
  • dogfood repo follow-on patches

Why now:

  • Jesssullivan/MassageIthaca run 24561967515 proved the repo-owned primary CI lane already uses dedicated honey labels successfully
  • the actual blocker was narrower: smoke-beta and e2e-beta still pin ubuntu-latest and were blocked by GitHub billing before any repo code ran
  • until dogfood beta validation can run on repo-owned runners, billing noise can still masquerade as platform instability

Sprint target:

  • move repo-owned beta validation jobs toward the same repo-controlled runner label variable used by primary CI where feasible
  • make browser/bootstrap assumptions explicit so Playwright jobs do not depend on GitHub-hosted image folklore
  • keep GitHub-hosted fallback only as explicit compatibility or bounded external-authority exception, not as the primary dogfood proof

Exit signal:

  • at least one repo-owned dogfood repo completes beta post-deploy validation without GitHub-hosted runners
  • GitHub billing can no longer block the main dogfood proof path
  • durable hosted policy exceptions such as docs or publication are no longer being confused with claim-breaking hosted product-proof drift

P1: FlakeHub Cleanup And Narrow RFC

Owner surface:

  • #215

Why now:

  • FlakeHub still matters strategically
  • but it should now be isolated to the right boundary: publication/discovery after builder bootstrap and runner-envelope design are already clear

Sprint target:

  • clean remaining builder-facing wording that still risks implying FlakeHub is part of the active runtime contract
  • define the narrow RFC as: post-bootstrap clean-derivation publication and discovery
  • keep Attic and Bazel classified as acceleration layers, not publication

Exit signal:

  • the repo has one clear FlakeHub owner lane
  • public docs stop mixing FlakeHub into the runtime/bootstrap story

Sequence

Recommended sequence for the next sprint:

  1. finish heavy-lane validation on honey with a completed real canary
  2. establish a source-repo default-branch proof path
  3. normalize workflow-owned Nix bootstrap in dogfood and downstream examples
  4. ship shared JS and Bazel template V2 and run the first pilots
  5. close GitHub-hosted beta escape hatches in repo-owned dogfood repos
  6. then tighten FlakeHub into a narrower publication/discovery RFC

Non-Goals

Do not treat these as near-term sprint promises:

  • dynamic vertical pod resizing for ARC runner pods
  • FlakeHub as the answer to Nix installation on self-hosted runners
  • FlakeHub as the answer to memory-heavy Rust/Nix workloads
  • broad publication rollout before the heavy-Nix lane and bootstrap boundary are stable

GloriousFlywheel