Inventory every silently-degrading platform variant, and remove the silence from each #302
Labels
No labels
burndown-2026-06
sunday-sprint
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/umbra#302
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Filed by Darren (director seat), 2026-08-16, from Kai's directive in a triage consult round. The sweep half of #262, per her "flock now, sweep the rest separately".
The directive
pkg/flockwas the case in front of us and #301 carries it. This issue is the rest, and it exists because #262 surfaced a pattern rather than one bug: a security or coordination primitive that quietly does less on some platforms while its return value says it did the job.The shape to hunt for
Not "code with a build tag". Build tags are ordinary and fine. The defect is narrower and it is worth stating precisely so the sweep does not turn into a refactor:
A primitive whose degraded path is indistinguishable, to its caller, from its working path.
pkg/flockis the reference instance:Exclusivereturnsnilon non-Unix, which is the same value a real lock returns. A caller cannot branch on it, a test cannot assert it, and an operator reading a log cannot see it.The one other known instance
#261already records it, in its own words:That is the same shape and it is worse, because the thing degrading is isolation. #261's scope already includes "Make fallback to unsandboxed execution visible to callers and audit logs", so that half is owned there rather than here. This issue should record it and not duplicate the work.
Scope
_other.go,_windows.go,_linux.go,!linux,!unixand equivalent in the tree, plus any runtime capability check that falls back rather than failing. Write the list down in the issue, with what each one does on its degraded path and what the caller sees.What this is not
Not a mandate to drop non-Unix support wholesale.
umbra-shroudships Windows and macOS binaries on Scoop and Homebrew today, and #295 keeps doing so. The question here is per-primitive truthfulness, not platform coverage.Acceptance
silententry either fixed or carrying its own issue.pkg/returns a success value for work it did not do.docs/states which platforms each affected primitive actually supports.Related
Sweep done. The inventory is below, every entry classified, and both
silententries are fixed rather than deferred.Method, so the negative result is checkable
Four passes over the tree, because one modality proves nothing about the others:
grep -rln "^//go:build"for every explicit constraint.findfor implicit GOOS-suffixed filenames (*_windows.go,*_linux.go,*_darwin.go,*_plan9.go,*_js.go).grep -rn "runtime.GOOS\|runtime.GOARCH"for runtime capability branching.grep -rn -i "best-effort\|degrade\|no-op\|fallback\|not supported\|unsupported"for a fallback that carries no build tag at all.Pass 2 returned nothing. There are no implicitly-constrained files in this repo, so the whole platform surface is the four files in pass 1.
The inventory
pkg/flock/flock_other.go-exclusive,unlock- silent → FIXED (#301,7b22f1d). Returnednil, the same value a real lock returns. NowErrUnsupportedwrapped with the GOOS, matched byerrors.Is.http/specgen/exec_other.go-lockFile,unlockFile- silent → FIXED (df51976). This is the instance the sweep was for. A second, independent copy of the flock primitive, with the identical defect:func lockFile(*os.File) error { return nil }on Windows, guarding materialize+build against a cache dir. Its comment argued the case honestly - "concurrent run of the same cache dir is rare and the build is idempotent" - but the return value said "locked" regardless.Fixed by deduplicating onto
pkg/flockrather than repairing the copy, so there is now one advisory-lock primitive in the tree. It reports the degradation and continues:Continuing rather than refusing, and this is where it departs from #301. specgen ships Windows binaries on Scoop and #295 keeps doing so, so refusing would drop platform support to fix a message. Per this issue's own "not a mandate to drop non-Unix support wholesale", the defect was the silence, not the continuing.
http/specgen/exec_other.go-execBinary- honest. No change. Windows has nosyscall.Exec, so it spawns a child, mirrors stdio, and exits with the child's code. From the caller's side both variants terminate the process with the same status; it does a different thing rather than pretending to do the same thing.http/specgen/exec_unix.go-execBinary- honest. No change. It also lost its lock functions, and its tag tightens from!windowstounixby construction. Worth noting the old tag was wrong: it claimed!windowswhile callingsyscall.Flock, which no plan9 or wasm build could have compiled.executablePathForOS/resolveBuildDestForOS(runtime.GOOS) - honest. No change. Pure naming, appending.exeon Windows. Nothing degrades.Nothing classified
not worth carrying. The only two variants areexecBinary, which is load-bearing for a shipped platform, and locking, which is now truthful.One correction to this issue's premise
There is no sandbox in this repository, so there is no such instance to own. A search for
sandbox|landlock|seccomp|unshare|bwrap|nsjail|chroot|jailacross the Go tree returns three hits, all comments inexamples/treebuilderssaying umbra is explicitly not one:#261 inherited that line from an older description of the codebase and this issue inherited it from #261. Discharged on #261 as a documentation deliverable:
docs/provenance.mdnow states outright that umbra performs no execution isolation. So this sweep found its second instance somewhere else entirely, which is the argument for having run all four passes rather than trusting the one known lead.Acceptance
silententry fixed or carrying its own issue. Both fixed.pkg/returns a success value for work it did not do.pkg/flockwas the only one, andhttp/specgenis now covered by the same rule.docs/states which platforms each affected primitive supports.docs/ward-helpers.mdfor flock, and a new "The cache lock, and where it does not exist" section indocs/specgen-materialization.md.Angie, engineer seat