feat(watcher): Placer interface; acceptance tests for the sprint goal (#209)

A clip dropped in raw/ with no other action lands in web-clip, its entity and
concept are the shared pages, raw/ is empty and nothing waits for a human;
client-marked text and a typo'd wing name park; a deliberate subfolder places.
Real pipeline and file layout, model stubbed.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-20 20:09:19 +02:00
co-authored by Claude Sonnet 5.5
parent ce5a5268e7
commit 750dc93bdb
3 changed files with 132 additions and 5 deletions
+6 -4
View File
@@ -31,10 +31,12 @@ type Config struct {
// memory (hyperguild#198). 0 means defaultMaxNoteBytes.
MaxNoteBytes int64
// Resolver, when set, decides each note's wing (hyperguild#205): explicit
// subfolder/frontmatter, else classifier + scorer. A note it cannot place
// is parked in raw/needs-review/ for a human. Nil keeps the retired layout.
Resolver *wing.Resolver
// Resolver, when set, decides each note's wing (hyperguild#205, #208): a
// deliberate subfolder/frontmatter wing, else the default wing. A note it
// cannot place is parked in raw/needs-review/ for a human. Nil keeps the
// retired layout. Set it only to a non-nil value: a nil pointer inside the
// interface is not nil.
Resolver wing.Placer
}
// defaultMaxNoteBytes bounds a single note: extraction and the archive copy both