Files
nucleic-brush/NUCLEIC_FORK.md
T

31 lines
1.9 KiB
Markdown
Raw Normal View History

# Nucleic fork of brush
Vendored copy of [reubeno/brush](https://github.com/reubeno/brush), pinned at
tag **`brush-shell-v0.4.0`** (upstream commit `96a26d0`), consumed by the
`shell/` workspace to build **nash**, the Nucleic agent shell
([docs/NASH.md](../../docs/NASH.md)).
Every fork change is marked with a `// nash:` comment. Current patches:
| File | Change |
| --- | --- |
| `brush-shell/src/productinfo.rs` | `PRODUCT_NAME` → `nash`; display string identifies the fork |
| `brush-shell/src/args.rs` | usage/version strings rebranded |
| `brush-core/src/expansion.rs` | corpus divergence D1: added `ExpansionPiece::LiteralText` — literal unquoted text is never field-split (bash splits only expansion results) but keeps glob characters active. Parameter-expansion substitutions (`${v:-word}` etc.) convert back to splittable at the expansion boundary; `ExpanderOptions.field_split_literal_text` lets data-string callers opt in. Upstream candidate. |
| `brush-core/src/completion.rs` | `compgen -W` word list opts into `field_split_literal_text` (the -W string is data) |
| `brush-shell/tests/cases/compat/ifs.yaml` | removed `known_failure` from 3 IFS tests the D1 fix repairs |
Verification (this container): brush compat suite `2067 ran: 1684 succeeded, 6
failed, 377 known to fail, 38 skipped` — the 6 failures are identical to a
pristine `brush-shell-v0.4.0` baseline run (environmental: ANSI-C quote and
`echo -e` oracle differences, syntax-error formatting, missing `hexdump`), i.e.
zero fork-caused regressions; +3 successes vs baseline are the repaired IFS
tests. nash corpus: 94/94.
Planned (M1, per docs/NASH.md §4.2): `brush-core` `Gate` trait (verdict-shaped
observation hooks) — the only substantial divergence from upstream.
Updating: diff against the upstream tag, re-vendor, re-apply `// nash:` patches
(grep for the marker), then re-run `shell/corpus/replay.py` and the brush compat
suite (`cargo test -p brush-shell --test brush-compat-tests`).