Wing resolver (merged in #207, flag OFF) cannot meet its goal; defects found by independent Opus review — do not enable INGEST_WING_RESOLVE or run wingmigrate -apply #208
Open
opened 2026-10-20 07:28:29 +00:00 by mathias
·
0 comments
No Branch/Tag Specified
main
wt/client-pattern
wt/legacy-move
wt/web-clip
wt/watcher-write-safety
wt/wing-layout
wt/inbox-zero
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.25.0
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#208
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: independent read-only review (Opus agent) of #206/#207 + #205 plan, 2026-10-20. Items marked VERIFIED were re-checked by me in the code; others are the reviewer's execution results, not yet reproduced by me.
Decision recorded
INGEST_WING_RESOLVEstays OFF.wingmigrate -applymust NOT be run on the live brain (not transactional, no rollback manifest, brain-sync can push it half-done, and with the watcher running the moved legacy entities can be recreated). Dry-run is fine.Defects in merged code
Resolver.explicitapplies the same eligibility check to a subfolder/frontmatter wing. With the liveclassification.yamlonly homelab/hyperguild are eligible, so moving a parked note intoraw/<wing>/(the documented way to approve) parks it again for 35 of 37 wings.brain_promote/brain_rejectread onlyraw/<basename>(VERIFIED:readRawSource), so they cannot act onneeds-review/entries thatbrain_pendinglists. The #205 line "approving = existing brain_promote" is wrong. Approval path must exist before any flag-on.search.Queryscoresstrings.Count(lower, term)— raw substring counts, no term weighting or length normalisation, so one long off-topic page outscores a perfect short one (reviewer: 50 vs 5; answered homelab 37/55).TestBM25Scorer_ABigWingDoesNotWinOnVolumedoes not cover the one-long-page case; the type name and test name overclaim.jev.mdin two wings). Slugs are the graph's global identity (graph/extract.go), so this breaks uniqueness. A legacy source re-ingested with a wing is written twice (dedupe only looks inside one wing).classification.yamlmeans "safe for cloud/us-nexus harnesses"; reusing it as the auto-placement allowlist ties them together. The real risk is client content landing in any wing; check content (e.g. theCLAUDE_INGEST_CLIENT_BLOCKregex) before extraction instead.Process notes (mine)
stuckset in memory; park failure re-errors every poll; empty-frontmatter note).Proposed direction (pending Mathias's decision, see #205)
Reviewer's top 5: (1) a known subfolder wing always places and promote/approve works on
needs-review/; (2) no-signal notes go to ONE default reading wing, classifier out of the hot path, falsified if >20% are moved by hand in two weeks; (3) block client content before extraction; (4) entities/concepts stay global, deduped across all wings; (5) migrate legacy pages by stampingwing:in place, not moving files. Do not tune thresholds/embeddings before the default wing has run two weeks. Also: 5 of 11 real clips were rejected by hand, so a "worth keeping?" triage may save more time than choosing wings.Created via git-mcp on behalf of @mathias