Audit the requested code/config scope, not the whole machine.
Review requests are read-only; obtain approval before implementing findings.
Procedure
Record nu --version, build features and experimental_options from version.
Compare the installed release with the last reviewed release;
do not assume online docs match it.
Read intervening release notes and affected command help.
Use the book for concepts;
resolve conflicts with local probes or release-tagged source.
Query scope commands for relevant deprecation_info when supported.
Match command and flag metadata against actual code,
not comments or generated text templates.
Removed commands may no longer appear; check release notes too.
Resolve imports, generators, and launch mode before diagnosing startup changes.
Use $nu paths instead of hard-coded Linux paths.
Keep secrets and real login side effects out of probes.
Run the checker on reviewed, non-secret files.
Treat its ok as a static diagnostic result only,
not proof of runtime correctness or freedom from deprecations.
For every proposed migration, test old and replacement shapes
against the same tiny fixtures.
Include success, deliberate failure, missing/empty input, and output types.
Record version, experimental options, commands, and results;
delete temporary fixtures afterward.
Report confirmed migration, unchanged behavior,
or unresolved discrepancy with evidence.
Separate source defects, upstream bugs, expected failures, and harness limitations.
Do not install upgrades, disable type checks, or rewrite unrelated config automatically.
Reviewed checkpoint
Nu 0.115.1 on Linux; also reviewed intervening 0.114.1 and 0.115.0 notes.
This is an audit baseline, not a minimum supported version
or a reason to load a feature catalogue.
0.114.1:
runtime annotation fixes; reproduce type mismatches before changing signatures.
0.115.1:
semver boolean comparisons, completion behavior, and keybinding merging fixes.
Only investigate a change when the requested scope uses the affected feature.
A newer feature is not automatically a better replacement.
Verified traps
On 0.115.1, --ide-check can emit Error diagnostics and exit zero.
The helper parses diagnostics; a raw exit-code gate is insufficient.
The same IDE mode can omit str upcase deprecation warnings
that normal execution emits.
Use deprecation metadata and reviewed isolated runtime probes
as independent checks.
On 0.115.1, "not json" | from json succeeds as a string.
Use --strict when validating an external JSON contract.
complete captures external stdout, stderr, and exit_code in one record.
A later $env.LAST_EXIT_CODE lookup is not a reliable substitute
across pipelines and failure modes.
Startup configuration depends on flags and mode.
A config-free syntax pass does not validate interactive/login wiring.
Use help run, help source, and help use
before changing script invocation.
Probe pipeline input, top-level statements and main argument binding
instead of assuming equivalence.
# Modernize Nu
Audit the requested code/config scope, not the whole machine.
Review requests are read-only; obtain approval before implementing findings.
## Procedure
1. Record `nu --version`, build features and `experimental_options` from `version`.
Compare the installed release with the last reviewed release;
do not assume online docs match it.
2. Read intervening [release notes](https://www.nushell.sh/blog/) and affected command help.
Use the [book](https://www.nushell.sh/book/) for concepts;
resolve conflicts with local probes or release-tagged source.
3. Query `scope commands` for relevant `deprecation_info` when supported.
Match command and flag metadata against actual code,
not comments or generated text templates.
Removed commands may no longer appear; check release notes too.
4. Resolve imports, generators, and launch mode before diagnosing startup changes.
Use `$nu` paths instead of hard-coded Linux paths.
Keep secrets and real login side effects out of probes.
5. Run [the checker](../scripts/check.mjs) on reviewed, non-secret files.
Treat its `ok` as a static diagnostic result only,
not proof of runtime correctness or freedom from deprecations.
6. For every proposed migration, test old and replacement shapes
against the same tiny fixtures.
Include success, deliberate failure, missing/empty input, and output types.
Record version, experimental options, commands, and results;
delete temporary fixtures afterward.
7. Report confirmed migration, unchanged behavior,
or unresolved discrepancy with evidence.
Separate source defects, upstream bugs, expected failures, and harness limitations.
Do not install upgrades, disable type checks, or rewrite unrelated config automatically.
## Reviewed checkpoint
Nu 0.115.1 on Linux; also reviewed intervening 0.114.1 and 0.115.0 notes.
This is an audit baseline, not a minimum supported version
or a reason to load a feature catalogue.
- [0.114.1](https://www.nushell.sh/blog/2026-07-11-nushell_v0_114_1.html):
runtime annotation fixes; reproduce type mismatches before changing signatures.
- [0.115.0](https://www.nushell.sh/blog/2026-08-15-nushell_v0_115_0.html):
structured deprecation metadata; YAML/KDL semantics;
reserved `$ans`; script arguments and scope changes.
- [0.115.1](https://www.nushell.sh/blog/2026-08-23-nushell_v0_115_1.html):
semver boolean comparisons, completion behavior, and keybinding merging fixes.
Only investigate a change when the requested scope uses the affected feature.
A newer feature is not automatically a better replacement.
## Verified traps
- On 0.115.1, `--ide-check` can emit Error diagnostics and exit zero.
The helper parses diagnostics; a raw exit-code gate is insufficient.
- The same IDE mode can omit `str upcase` deprecation warnings
that normal execution emits.
Use deprecation metadata and reviewed isolated runtime probes
as independent checks.
- On 0.115.1, `"not json" | from json` succeeds as a string.
Use `--strict` when validating an external JSON contract.
- `complete` captures external `stdout`, `stderr`, and `exit_code` in one record.
A later `$env.LAST_EXIT_CODE` lookup is not a reliable substitute
across pipelines and failure modes.
- [File and pipe redirection][redirection] differ:
`o+e> file` versus `o+e>| filter`.
- [Startup configuration](https://www.nushell.sh/book/configuration.html) depends on flags and mode.
A config-free syntax pass does not validate interactive/login wiring.
- Use `help run`, `help source`, and `help use`
before changing [script](https://www.nushell.sh/book/scripts.html) invocation.
Probe pipeline input, top-level statements and `main` argument binding
instead of assuming equivalence.
[redirection]: https://www.nushell.sh/book/stdout_stderr_exit_codes.html