raw/ inbox: route auto-ingest to wiki/<wing>/sources/ (wing from raw/<wing>/ subfolder) #205
Open
opened 2026-10-19 18:59:06 +00:00 by mathias
·
2 comments
No Branch/Tag Specified
main
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
No labels
risk/medium
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#205
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.
Follow-up to the inbox-zero change (watcher removes archived originals from raw/).
Problem
ingestion/internal/pipeline/build.gobuildPagewrites auto-ingested pages to the retired legacy dirswiki/sources|concepts|entities/. brain CLAUDE.md: those are archive-only; new sources go towiki/<wing>/sources/. Result: no wing/hall, no per-wing_index.md, found by BM25 only.Decided (2026-10-19, Mathias)
Option A: dump and forget. Wing comes from the subfolder the file is dropped in,
raw/<wing>/file.md.brain_pendingthen shows only what is unprocessed or failed/needs a wing.To do (each its own commit, test first)
raw/<wing>/, passes wing intopipeline.Run.buildPage: source ->wiki/<wing>/sources/<slug>.mdwithwing/hallfrontmatter. Decide where concept/entity pages go (facts? same wing) — and howwiki.LoadInventory/Resolve(keyed by PageType) stay correct across wings.brain_pending) rather than guess.*.processedmarkers + originals still sitting in raw/.pipeline.RunSkipped) — add a test that pins this.Source: session 2026-10-19, watcher.go processFile / promote.go ListPending.
Created via git-mcp on behalf of @mathias
Deferred from the PR #206 review (independent pass, verified by execution):
changedSincemisses a same-size rewrite with restored mtime (new bytes then live only inraw/processed/<date>/; wiki stays stale). Hardening:os.SameFilecatches new inode; hashing the ingested bytes vs the archive copy closes it fully.stuckskip set is keyed by path only: after a user fixes permissions AND edits the note, new content is ignored until restart. Key on (path, size, mtime).changedSinceand re-ingested next poll leaves a duplicate archive copy (doc-HHMMSS.md). Wiki page is idempotent (no duplicate).changedSinceandRemove(small; archive copy exists, loss partial).None blocks #206. Step 5 of this issue (dedupe on Syncthing re-sync) still stands.
Created via git-mcp on behalf of @mathias
Sprint plan + decisions (2026-10-19, Mathias)
Decided: (1) Clips: Dark Factory + 10 Levels ->
applied-ai-radarwith an unverified-vendor-claims banner; Best Jev use cases folded in; Pi Durable kept as plain source; Zazen / Paperclip / RoboNuggets-Jev rejected. Mathias delegated the 6 older ones to the agent. (2) Wing naming must work without the human typing it; human approves exceptions only. (4) Standing merge approval for every PR in this sprint (risk/medium, CI green on the head commit, independent pr-gatekeeper pass with no blocker). Does not extend beyond this sprint.Wing resolution (no typing)
Layered, deterministic first:
raw/<wing>/subfolder or frontmatterwing:— but only if<wing>is an existing wing._index.md); output = wing, confidence, reason. Cross-check with BM25 of the note against each wing's index. Agree + confident -> auto. Disagree or low confidence -> exception.applied-ai-radar.internal/publicin classification.yaml; unlisted fails safe to confidential = never auto). Never auto-create a wing; a proposed new wing is an exception.raw/needs-review/with proposed wing + confidence + reason in frontmatter;brain_pendinglists them; approving = existingbrain_promote. Every auto-assignment is logged (reason + confidence) to log.md for spot-checks.Steps (each its own commit, test first; PRs as needed)
wingresolver + allowlist + backtest harness (report in the PR).wiki/<wing>/sources|facts/, inventory across wings (step 2).needs-review/(steps 1,3).brain_pendingshowsneeds-review/with proposals.wiki/concepts|entities|sourcespages (~141) with the same resolver: dry-run report first, auto-apply above threshold, exceptions in one batch for Mathias; reversible per-commit; wikilinks are slug-based so they survive (verify with brain graph before/after). Plus clear the 12 legacy raw originals +.processedmarkers.Created via git-mcp on behalf of @mathias