overengineeringstudio / overengineeringstudio/effect-utils

Evergreen: support depsBuilds FOD repair in nested flakes without a root flake

Open
#920 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
82
Forks
2
Avg merge
1d 8h
Merged PRs (30d)
121

Description

Problem

evergreen fod reconcile cannot repair a known depsBuilds hash when the consumer is exposed from a nested flake in a non-flake repository root. This blocks the documented rung-1 exact-hash workflow.

Observed in schickling/schickling-stiftung for ./pi-nix#pimuseum-server:

  • auto-discovery: could not determine --hash-source for pimuseum-server
  • explicit hash source: could not determine --flake-ref
  • explicit nested flake ref: rejected as not a supported local package attr with depsBuilds
  • closure chase from the Git root prefixes .# and fails because the root has no flake.nix
  • using the nested flake as repo root fails Git snapshotting because it is not a separate repository

The build uses a literal depsBuilds["."] = mkSharedHash "sha256-..." boundary.

Principled capability

Allow repair identity to be supplied or discovered as: Git repository root, nested flake path/ref, consumer attr, hash-source path relative to Git root, and install-root key. Graph metadata should remain preferred; explicit arguments should provide a fail-closed fallback with read-after-write verification.

Acceptance

  • Reproduce with a Git repo whose only flake is subdir/flake.nix.
  • Repair a literal depsBuilds["."] = mkSharedHash ... hash from the Git root.
  • Verify only the intended hash location changed.
  • Re-evaluate the consumer and confirm the declared FOD hash matches.
  • Cover divergent per-system hashes without carrying an unmeasured architecture value forward.
Posted on behalf of @schickling
field value
agent_name 🥉 co2-bronze
agent_session_id 2146af7f-2c71-4fa2-aad5-a71cff8bcb9c
agent_tool Codex CLI
agent_tool_version 0.144.1
agent_runtime Codex CLI 0.144.1
agent_model unknown
runtime_profile /nix/store/qq3avrif77r90ypqbdv3hgd3gvwj5s32-coding-agent-runtime-profile/share/coding-agents/profile.json
skills_manifest /nix/store/pjlb3cwf453ghzmc8jj4v8h29sw6p4dg-agent-skills-corpus/share/agent-skills/manifest.json
worktree schickling-stiftung/pr219-rewrite-local
machine dev3
tooling_profile dotfiles@4b8e1c5

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing evergreen fod reconcile with a Git repository whose only flake is subdir/flake.nix, then trace how nested flake refs, hash sources, and the consumer attr are resolved from the Git root. Use the listed acceptance cases to verify the intended hash location alone changes, re-evaluation matches the declared FOD hash, and divergent per-system hashes are not carried forward.

Written by the indexing model from the issue text.

Assessment

Tech stack
git
Domain
build-system, cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.