feat(server): INGEST_WING_RESOLVE=1 wires the wing resolver into the watcher (#205 S3)

Off by default (retired layout unchanged). On: eligibility from
classification.yaml, local ingest LLM as classifier, BM25 as cross-check,
INGEST_WING_THRESHOLD (default 0.9, rejected outside [0,1]). Build failure
is fatal when explicitly enabled.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-20 06:09:17 +02:00
co-authored by Claude Sonnet 5.5
parent 2c6220782d
commit 20d874a23d
7 changed files with 196 additions and 27 deletions
+1 -27
View File
@@ -24,8 +24,6 @@ import (
"github.com/mathiasbq/hyperguild/ingestion/internal/wing"
)
var legacyDirs = map[string]bool{"concepts": true, "entities": true, "sources": true}
func main() {
brain := flag.String("brain", "/var/lib/supervisor/brain", "brain directory (read only)")
wingsFlag := flag.String("wings", "", "comma-separated wings to sample pages FROM (must be wings you would allow)")
@@ -42,7 +40,7 @@ func main() {
}
func run(brain string, sampleWings []string, perWing int, llmURL, model string, seed int64) error {
known, err := knownWings(brain)
known, err := wing.KnownWings(brain)
if err != nil {
return err
}
@@ -112,30 +110,6 @@ func report(samples []wing.Sample, per map[string][]wing.Sample) {
}
}
// knownWings lists wiki/<wing> dirs that hold hall subdirectories, skipping
// the retired legacy layout.
func knownWings(brain string) ([]string, error) {
entries, err := os.ReadDir(filepath.Join(brain, "wiki"))
if err != nil {
return nil, fmt.Errorf("list wings: %w", err)
}
var out []string
for _, e := range entries {
if !e.IsDir() || legacyDirs[e.Name()] {
continue
}
subs, _ := os.ReadDir(filepath.Join(brain, "wiki", e.Name()))
for _, s := range subs {
if s.IsDir() {
out = append(out, e.Name())
break
}
}
}
sort.Strings(out)
return out, nil
}
func listPages(brain, w string) ([]string, error) {
var out []string
root := filepath.Join(brain, "wiki", w)