Remove the stash-and-restore machinery entirely. It manipulated the operator's working tree and had a fatal bug: modern git's 'stash push' does not print the stash SHA on stdout, so the SHA was never recorded, the stash was never restored, and with REDBEAR_ALLOW_DIRTY=1 the operator's dirty-fork WIP was silently stranded in 'git stash list' on every build (base had accumulated 25 strands). The build now cooks committed HEAD, or the working tree AS-IS under REDBEAR_ALLOW_DIRTY=1 — it never touches the tree. A read-only startup advisory surfaces any leftover redbear-build-* strands from the old code. Recovered the valuable stranded work to local/recovered-stashes/ (netstack proptest, relibc get_dns_server daemon-path + getnetbyaddr impl); originals remain in each fork's git stash list. See local/recovered-stashes/README.md. Also: pre-cook now runs 'repo cook' with CI=1 (matches make live), fixing the 'Entering raw terminal mode ... Inappropriate ioctl' noise; and the failure diagnostics per-recipe dump is scoped to THIS build's artifacts (mtime >= build start) so a bare/mini build no longer lists graphical packages left over from a prior redbear-full build. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Recovered / stranded stashes — 2026-07-27
The build system's stash-and-restore had a bug (git stash push never prints the
stash SHA on modern git, so the stash was created but never recorded, hence never
restored). With REDBEAR_ALLOW_DIRTY=1, every dirty build stranded the working
tree in git stash list. This directory preserves the VALUABLE strands as patch
files. Nothing is lost — the originals remain in each repo's git stash list.
Do NOT git stash clear any fork until you have triaged the list below.
Extracted here (valuable, currently MISSING from the tree)
| Patch | Repo | What it is |
|---|---|---|
base--netstack-proptest-prop_filter_rule_priority.patch |
local/sources/base stash@{0} |
netstack filter-table property test (confirmed absent) |
base--netstack-round5-cargo+table.patch |
local/sources/base stash@{5} |
netstack Cargo.toml (proptest dep) + filter/table.rs scaffolding |
relibc--get_dns_server-daemon-path.patch |
local/sources/relibc stash@{2} |
get_dns_server() reads /scheme/dns/nameservers (daemon), falls back to /etc/net/dns |
relibc--getnetbyaddr+semaphore.patch |
local/sources/relibc stash@{0} |
real getnetbyaddr() impl (was unimplemented!()) + semaphore cbindgen |
Review a patch, then apply with e.g.:
git -C local/sources/relibc apply local/recovered-stashes/relibc--get_dns_server-daemon-path.patch
(or git -C <repo> stash apply stash@{N} to pull the original from git.)
NOT extracted — no value (still in git if ever needed)
- kernel
stash@{0}—ADDFILE_MINdebug logging only. - userutils
stash@{0}—LOGIN_DBG:debug prints only. - base
stash@{6,7,8}+ relibc misc —Cargo.lock-only churn (regenerable). - base
stash@{1..4,9..24}—redbear-build-*strands: mostly the same evolving netstack/Cargo.lock WIP re-stranded each build; newest (stash@{0}) supersedes. - base
stash@{12}— "netstack+rtl8168d parallel-agent": Cargo.lock only, already in tree.
Needs HUMAN review — do not bulk-restore
- parent repo
stash@{0}("wip-uncommitted-changes") — 202 files incl. binary prefix tarballs and ~28k deletions; a large divergent snapshot. Inspect withgit stash show -p 'stash@{0}'before touching. - parent
stash@{1}(tlc menubar) — already in tree.
Root cause fixed
Stashing was removed from build-redbear.sh (the build no longer touches your
working tree). The dirty-source gate still refuses dirty builds by default;
REDBEAR_ALLOW_DIRTY=1 now cooks your working tree AS-IS instead of stashing it.