ingestion main.go: symlink tripwire wiring, buildMux arguments and ListenAndServe line remain untested (split from #154) #182
Open
opened 2026-10-05 07:40:18 +00:00 by mathias
·
0 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
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#182
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.
Split from #154 (comment 14360). The #154 fix moved
/mcp's bearer and the metrics wrap intobuildMux, so the handlerListenAndServeserves is built and tested in one function. Three pieces of wiring iningestion/cmd/server/main.goare still untested:startupSymlinkCheck(brainDir)must run before any brain reader starts, andgo symlinkguard.Watch(...)must run at all. Removing both calls keeps the suite green.buildMux. These are therestAuthfields (token,validator,realm,resourceMetadataURL) and thepublicmap. The tests build their own arguments. The PR #183 review (comment 15474) showed this by execution: changing main'svalidator: jwtValidatortovalidator: nilleavesgo vetandgo test ./cmd/server/green, yet it drops JWT acceptance on /mcp and REST and breaks the claude.ai OAuth connector. PR #183 now tests that buildMux uses the validator and resourceMetadataURL on /mcp, but not that main supplies them.http.ListenAndServe(addr, handler)must servebuildMux's result unchanged. A handler built around it in main (for example a publicPOST /queryin front of it) would not be seen by the tests.The comments in
routes.go,main.goandroutes_test.go(testMux) claim only this (PR #183,b04a348).Fix direction: extract main's assembly into a tested
run(ctx, cfg) error, or a server struct with injectable reader starters. A test can then assert that a planted symlink refuses boot before any reader starts, that the served handler isbuildMux's, and that a configured issuer yields a non-nil validator on the router main builds. This was deferred because main.go is about 600 lines with env-driven side effects (k8s client, pg, graph backfill), which is a larger refactor than #154. Signal handling (#184) touches the same function.Source:
ingestion/cmd/server/main.go(the startupSymlinkCheck call near the top of main,go symlinkguard.Watch, thebuildMux(restAuth{...}, ...)call, and the final ListenAndServe).Created via git-mcp on behalf of @mathias; scope widened per PR #183 review 15474
ingestion main.go: symlink tripwire wiring and ListenAndServe line remain untested (split from #154)to ingestion main.go: symlink tripwire wiring, buildMux arguments and ListenAndServe line remain untested (split from #154)