doctor: ship as a devenv module, beside .doctor.just #96
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Meta/Campaign
Meta/Epic
Meta/Session
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Curated
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Scope/Campaign
Status/Abandoned
Status/Blocked
Status/Conflicted
Status/In Progress
Status/In Review
Status/Need Grooming
Status/Need More Info
Status/Ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Ting/Jostoph!96
Loading…
Reference in a new issue
No description provided.
Delete branch "tango/95-devenv-doctor"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ships Ting's repository doctor as a devenv module,
ting-doctor.nix, beside.doctor.justrather than replacing it. Every repo not yet migrated keeps working unchanged;.doctor.justis removed only when the last consumer has moved.What changed in the mechanism
The nushell bodies are carried over byte-for-byte — verified by diffing all 11 against the
.doctor.justoriginals after the Nix''-string round-trip (0 mismatches). What went away is the shell plumbing that devenv makes structural:flakenushell/guminto the firstmkShellinflake.nix.packagesin the module is the declaration now.environment.envrcheader and gated on a hand-setTING_DEVSHELL="active"marker.$env.DEVENV_ROOTis set by devenv itself.doctor-cached[cache(...)]wrapper is now a sharedstatusgate script with the same policy.syncdevenv updateis the sync, and the rev lands in theirdevenv.lock.ting:pinflake.lockanddevenv.lockagree. Warns; never rewrites a lockfile behind the operator.wireandadoptbecome devenvscriptsguarded bygum confirm— they edit tracked files, so they stay deliberate acts and never run unattended before a shell opens.One escaping trap worth flagging for review:
'${1}'indefault-branchescapes to'''${1}', which Nix reads as a literal''followed by a live interpolation. It evaluated tocannot coerce an integer to a string: 1. Double-quoted at the source.Verification
Proven from
lar.ad/flake-opswith this file as apath:input:devenv tasks listrenders the full chain, every task carrying the status gate.devenv tasks run ting:doctorcompletes green.Not in this PR
This repo's own
.envrc/.doctor.justusage is untouched — it migrates with the rest, after this lands and the input resolves.Closes #95