Dev Attachment Field Notes (May 2026)

Dev Attachment Field Notes — May 2026

J3 of the May 10-16 sprint plan (2026-05-10-cache-forward-toward-rbe.md).

Status: SCAFFOLD for Jess to fill in on a real resource-constrained machine. Claude prepared the structure; the friction-log content is empty until the field test runs.

Purpose

Capture real friction points when a resource-constrained dev machine attempts to attach to the GloriousFlywheel cache substrate. The output informs the next iteration of just dev-attach (C4 alpha scaffold) and the productionized self-service attachment path.

This is ground truth, not a designed flow. The point is to write down what actually happened, not what should have happened.

Test machine

Field Value
Machine name / role e.g. yoga / personal laptop
OS / version macOS 15.x or NixOS 24.11
Architecture aarch64 / x86_64
Network position direct, tailnet, both?
Pre-existing tooling direnv? nix? bazel? just?
Cluster context available? y/n — kubectl config get-contexts honey

Step-by-step probe

For each step: (1) capture the exact command run, (2) the actual output (or the relevant line from the actual output), (3) time-to-result, (4) any surprise.

Step 1 — Cold-start state probe

# Verify nothing is attached yet
just dev-attach
  • Run command above.
  • Result: expected to print “Cache attachment: incomplete” with hint block
  • Time: record seconds
  • Surprise / friction: empty until run

Step 2 — Operator port-forward (Bazel cache)

kubectl --context honey -n nix-cache port-forward \
    svc/bazel-cache 19092:9092
  • Open in a separate shell. Confirm it stays foregrounded.
  • Result: record port forward output
  • Time-to-first-listening-line: seconds
  • Surprise / friction: record any kubeconfig issues, certificate warnings, RBAC errors

Step 3 — Export Bazel cache env

export BAZEL_REMOTE_CACHE=grpc://127.0.0.1:19092
export GF_BAZEL_SUBSTRATE_MODE=shared-cache-backed
  • Verify exports are set in the current shell.
  • Surprise / friction: record direnv .env handling notes if applicable

Step 4 — Re-run dev-attach without proof

just dev-attach
  • Should now show Bazel attached but Attic incomplete.
  • Result: record
  • Surprise: record any mismatch with Step 1 expectations

Step 5 — Configure Attic (Nix substituter)

# Operator-provided values
export ATTIC_SERVER=http://attic.<your-internal-host>
export ATTIC_CACHE=main
export ATTIC_PUBLIC_KEY=<operator-provided-key>
  • Confirm operator handed all three values.
  • Surprise / friction: record if values were obvious to find or required digging
  • Bonus: did direnv / .env make this materially easier or harder?

Step 6 — Full attachment + proof

just dev-attach --proof
  • Should run the bounded //:deployment_bundle proof.
  • Result: record exit code, time elapsed, cache hit/miss summary
  • Time-to-first-cache-hit: record
  • Surprise: record any unexpected build steps, network calls, or output

Step 7 — Re-run for cache validation

just dev-attach --proof
  • Should be substantially faster on second run if cache is real.
  • Time delta vs Step 6: record
  • If not faster, what does that say? record

Friction summary

(Fill in after running all steps.)

Top 3 friction points

  1. empty
  2. empty
  3. empty

Quick wins (could land in next C4 iteration)

  • empty

Out-of-scope but worth noting

  • empty (e.g. tailnet routing, certificate trust, multi-architecture handling)

Inputs for next C4 iteration

Suggestions for scripts/dev-attach.sh improvements based on this field test (filled in by Jess):

  • empty

Acceptance vs J3

Plan acceptance: “friction log committed at docs/runners/dev-attachment-field-notes-2026-05.md. Feeds Claude’s C4.”

  • File exists at the right path: ✓ (this scaffold)
  • Field test executed and documented: pending Jess on-device run
  • Feeds C4 next iteration: pending — Claude picks up after Jess fills in friction summary
  • TIN-1070 — sprint control list (J3)
  • C4 alpha scaffold: scripts/dev-attach.sh
  • docs/runners/cache-integration.md — operator-side bring-up
  • TIN-650 / TIN-758 — closed: developer-machine cache attachment proof + exposure policy

GloriousFlywheel