symlinkguard ignores FIFOs and other special files: a planted FIFO classification.yaml crash-loops the pod #179
Closed
opened 2026-10-05 07:27:39 +00:00 by mathias
·
3 comments
No Branch/Tag Specified
main
fix/pipeline-writes-158
fix/edit-path-io-192
fix/create-regular-188
fix/guard-special-179
fix/linkcheck-keeps-write-178
fix/write-dir-redirect-173
fix/tunnel-detect-174
fix/pipeline-root-157
w3/154-mcp-auth-wiring
fix/tunnel-traversal
test/in-brain-targets-171
fix/brain-scan-root-157
fix/graph-wiki-root-157
fix/vectorstore-root-157
fix/notes-root-157
fix/search-root-157
fix/brainwide-root-157
fix/raw-symlinks-153
feat/symlink-tripwire-157
fix/rest-auth-149
fix/123-brain-edit-envelope-check
feat/106-page-aware-extraction
fix/105-source-drift-on-main
fix/104-surface-merge-conflicts-on-main
agent/b1-compile-on-ingest
agent/104-surface-merge-conflicts
agent/105-source-drift
agent/107-loud-unconfigured-alerting
feat/brain-read-edit
fix/capture-i1-refusal-names-target
renovate/configure
feat/consolidate-single-harness
icebox/cmd-routing
feat/brain-pending-promote
fix/close-session-classification-refresh
fix/capture-summarywriter
v0.24.0
v0.23.1
v0.23.0
v0.22.0
v0.21.1
v0.21.0
v0.20.1
v0.20.0
v0.19.1
v0.19.0
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.0
v0.16.1
v0.16.0
v0.15.0
v0.14.0
v0.13.2
v0.13.1
v0.13.0
v0.12.1
v0.12.0
v0.11.2
icebox/cmd-routing-2026-07-01
v0.11.1
v0.11.0
v0.10.0
v0.9.0
v0.8.0
v0.7.0
v0.6.0
v0.5.0
v0.4.1
v0.4.0
v0.3.0
v0.2.0
v0.1.0
Labels
Clear labels
agent/ready
blocked/client
blocked/supplier
blocked/upstream
risk/high
risk/low
risk/medium
size/l
size/m
size/s
size/xs
status:dispatch
status:dispatched
status:review
status:reviewing
type/chore
type/decision
type/docs
type/feat
type/fix
type/ops
type/research
type/test
Meets the agent-ready contract; authorizes unattended execution
Waiting on the client
Waiting on a supplier
Waiting on an upstream project or vendor
Irreversible, security-relevant, or control plane
Reversible, local, test-covered
Touches shared state, deploys or data
Too big - split it
Under two days
Under half a day
Under an hour
Maintenance, no behaviour change
Human decision required; never agent/ready
Documentation only
New capability
Corrects broken behaviour
Infrastructure, deploy, runtime
Investigate; output is a finding, not code
Test coverage only
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: mathias/hyperguild#179
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Source: PR #176 review (#157 slice 6), 2026-10-05, verified by running
classification.Load.With #176,
classification.Loadrefuses a non-regularclassification.yamland returns an error, and startup exits on it (cmd/server/main.go,os.Exit(1)). That is the right call: failing open would silently drop explicit tags, some of them stricter than the defaults.For a symlink, the startup tripwire (
startupSymlinkCheck) runs first and removes it. A FIFO, socket or device is not reported, so a FIFO atclassification.yamlpasses the tripwire and Load exits: a crash loop. Before #176 the pod hung forever inopen(2)instead, so this isn't worse. It needs local write access to the pod volume, since Syncthing does not sync FIFOs.Fix options
Recommended: the first.
Created via git-mcp on behalf of @mathias
pr-gatekeeper on PR #190 (head
f1f975d): BLOCKED. One blocking finding: the persistent-failure alert for a special file that Watch cannot remove has no test. Flipping it out leaves an unremovable FIFO in the brain with zero alerts, and every test stays green. Full review with repros and flip results: #190 (comment)pr-gatekeeper round 2 on PR #190 (head
edcfe9e): BLOCKED. B1 is fixed. B2: the new test also passes when the Remove error is swallowed, because the false "removed" alert matches both of its assertions. Review: #190pr-gatekeeper round 3 on PR #190 (head
e614d39): PASS. B1 and B2 are fixed, and both flips now go red. CI run 9496 is green and task check exits 0. The merge is left to Mathias, because it deploys ingestion. A pre-existing test flake was filed as #193. Review: #190