fix(pipeline,api,wing): never archive a note as processed when nothing was ingested; titles do not merge sources; ties prefer the page on disk (review of #211, pass 3)
- in a wing, an ingest that writes no source page is an error: the note goes to
raw/failed with the warnings in log.md instead of leaving the inbox as
'processed' (model returned [], only invalid types, only clashing entities)
- the wing's source path is deterministic, so Resolve no longer redirects a
source onto another note's page because the model gave both the same title
('Home'); that overwrote the hash and the text
- a batch tie between concept and entity prefers the page already on disk, so
its update is not lost; the wing's own source page keeps its slug even when a
foreign page shares it
- brain_pending lists an unreadable (over-cap) note with the reason instead of
dropping it; the client filter's 4 KiB match-span limit is documented
Each has a test that fails without it (mutation-checked).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -142,8 +142,10 @@ func matchesClient(re *regexp.Regexp, text string, chunk int) bool {
|
||||
if end == len(text) {
|
||||
return false
|
||||
}
|
||||
// A cut inside a rune is harmless: the overlap carries every marker
|
||||
// shorter than it whole into the next chunk.
|
||||
// A cut inside a rune is harmless: the overlap carries every match that
|
||||
// spans at most filterOverlap bytes whole into the next chunk. A match
|
||||
// longer than that (a pattern like `acme.{5000}corp`, or padding
|
||||
// between two words) can be missed on a chunk edge; documented limit.
|
||||
start = end - overlap
|
||||
}
|
||||
return false
|
||||
|
||||
Reference in New Issue
Block a user