2026-05-14 Upstream Issue Cleanup and Update Script
What I set out to do
Two threads, hours apart:
- Fix a long-standing gap in the
updatescript — it never refreshed the root devflake.nix, only the HM flake undernix/. - Run
check-upstream-issuesand triage anything newly resolved. Two issues had closed:j178/prek#1765andpydantic/pydantic-ai#3925.
What I actually did
Three commits, all on main:
-
71dad6d— Taught theupdatescript to bump the root dev flake. Two flakes live in this repo: the HM flake atnix/flake.nix(built byhm switch) and a rootflake.nixthat only ships thedotfiles-devdevShell and pre-commit config. Added a secondnix flake update --flake $CONFIG_HOMEcall and a separatecommit_root_flake_lockfunction so the dev flake’s history (onlygit-hooks-nixmoves there) stays distinct from HM input bumps. Preview mode also now reports root-flake update status by copyingflake.nix,flake.lock, andpre-commit.nixinto a tempdir. -
7855a43— Migrated prek’s auto-update cooldown from a CLI flag to global config. Prek 0.3.12 (PR #2044) landsauto_update.cooldown_dayssupport in~/.config/prek/prek.toml. Creatednix/home-manager/modules/prek.nixdeploying the config viaxdg.configFile, dropped--cooldown-days 3from threeprek auto-updaterecipes (repo root, claude-ops, gh-review-preview). The wrapper recipes stay because j178/prek#1895 (transitive-dep cooldown) is still open. Also addedprek/to.gitignore— same HM-symlink-into-repo-root footgun aszsh/from earlier today. -
f5e74b3— Migratedpermission-suggestionto pydantic-ai’s nativeconversation_id. Pydantic-ai 1.89 (PR #5251) acceptsconversation_id=onAgent.run_syncand stampsgen_ai.conversation.idon theagent_runspan natively. Bumpedpydantic-ai>=1.89(lock resolved to 1.93.0). Dropped the wrapping span andopentelemetry.traceimport inagent.py; forwarded the kwarg directly. Widened_FakeAgent.run_syncintest_agent.pyto capture kwargs so assertions check forwarding instead of span attributes. Kept the manual attribute intracing.py:eval_case_span(see below) and removed only the misleading@upstream-issuemarker.
Earlier in the session also walked through two hm news items (programs.man.man-db/programs.man.mandoc and home.services modular services) — both not actionable for this config (Darwin-only host, no systemd, no programs.man overrides).
What was striking
-
tracing.pylooked removable but isn’t. The original workaround’s docstring said “Removable once pydantic-ai emits the attribute natively.” But pydantic-ai’s native support only stampsgen_ai.conversation.idonagent_runspans — not on arbitrary parent spans.eval_case_spanopens a parent span around multiple agent runs to group an eval under one MLflow session, and that’s a use case upstream doesn’t (and shouldn’t) cover. Removing the@upstream-issuemarker but keeping the behavior was the right call. -
Nixpkgs lags the fix by one version. Prek 0.3.12 is where
auto_update.cooldown_dayslands; nixpkgs-unstable currently pins 0.3.11. The TOML config I deployed is silently ignored on the older version and activates the moment a future flake update lands prek ≥ 0.3.12. A no-op until then, but worth landing now so it just-works on the next bump. -
statixrejects both{ ... }:and_:as empty patterns. For modules that take no arguments, the only acceptable form is a bare attribute set — no{}:wrapper at all. Surprised me twice ({ ... }:→_:→ bare{). -
Splitting the commits paid off. The three changes had nothing to do with each other once the upstream-issue work was framed. One feature (update script), two refactors (prek, pydantic-ai). Each commit’s body documents exactly what landed upstream and what’s still in-flight, so a future reader can re-evaluate independently.
Top 3 tomorrow
- Run
updateonce nixpkgs has prek 0.3.12+ to confirmauto_update.cooldown_daysis honored end-to-end. - Watch MLflow’s Sessions tab on the next eval run to confirm grouping still works with the new
conversation_idflow. - Re-run
check-upstream-issuesin a week or two — five LiteLLM bugs and the SigNoz Terraform provider issues are still open, worth scanning periodically.