|
| 1 | +--- |
| 2 | +date_created: 2026-07-22 |
| 3 | +date_modified: 2026-07-22 |
| 4 | +title: "Stream-scan lands and Augment-from-DB is feature-complete — scan a pulse stream, badge the known, one-click the new" |
| 5 | +lede: "Spec step 8 ships as a mode of search-and-add: a per-stream Scan button on the org card fires the official-blog machinery with the stream URL as the authoritative index, dedups against content_items, and badges what the corpus already holds — proven live against The Aspen Institute's blog, flag-flip and all. All five phases of the spec are now implemented." |
| 6 | +publish: true |
| 7 | +authors: |
| 8 | + - Michael Staton |
| 9 | +augmented_with: |
| 10 | + - Claude Code on Claude Fable 5 |
| 11 | +files_changed: |
| 12 | + - services/social-search/src/stream-scan.ts |
| 13 | + - services/social-search/src/server.ts |
| 14 | + - services/record-surrealdb-resolver/src/resolver.ts |
| 15 | + - services/record-surrealdb-resolver/src/handlers.ts |
| 16 | + - services/workspace/src/capabilities.ts |
| 17 | + - apps/org-workbench/src/AdditiveList.svelte |
| 18 | + - apps/org-workbench/src/OrgCard.svelte |
| 19 | + - apps/org-workbench/src/lib/types.ts |
| 20 | + - apps/org-workbench/src/app.css |
| 21 | + - apps/search-and-add/src/App.svelte |
| 22 | + - apps/search-and-add/src/ResultRow.svelte |
| 23 | + - apps/search-and-add/src/lib/search-client.ts |
| 24 | + - apps/search-and-add/src/lib/types.ts |
| 25 | + - apps/search-and-add/src/app.css |
| 26 | + - context-v/plans/Augment-From-DB-Phase-5-Stream-Scan-Mode.md |
| 27 | + - context-v/specs/Augment-From-DB-Flow.md |
| 28 | +tags: |
| 29 | + - Progress-Update |
| 30 | + - Augment-From-DB |
| 31 | + - Stream-Scan |
| 32 | + - Entity-Pulse |
| 33 | + - Feature-Complete |
| 34 | +--- |
| 35 | + |
| 36 | +# Stream-scan lands — and the flow the spec drew is all there |
| 37 | + |
| 38 | +Phase 5 of [[../context-v/specs/Augment-From-DB-Flow.md]], and with it the spec goes **Shipped**: all five phases implemented in one day against a Signed-Off spec, each phase its own plan, commit, and proof. |
| 39 | + |
| 40 | +## What shipped |
| 41 | + |
| 42 | +**The cheap trick that made this a half-day, not a week:** `runOfficialBlogPack` already had the exact seam — `curated_index_urls`, where operator-curated index pages skip discovery entirely. A stream scan IS "the index is already curated: it's the stream URL." So `organization.stream.scan` is a thin wrapper: fire the blog machinery at the stream, then dedup via the new **`content.urls.check`** on record-surrealdb-resolver (social-search has no DB access by design — the cross-service NATS read follows the domains.ts → content-ingest precedent). |
| 43 | + |
| 44 | +**On the org card:** `AdditiveList` grew an optional per-entry action, and the Pulse-streams list wires it as **scan** — one click dispatches a stream-carrying envelope through the same localStorage + event + navigate contract as every 🔍. |
| 45 | + |
| 46 | +**In search-and-add:** a stream envelope flips the surface into scan mode — TermBar and palette give way to the stream URL + Re-scan; result rows carry an **"in corpus"** badge with the ➕ parked; fresh items one-click into `org_corpus` through the existing add path, and the flag flips on the next scan. |
| 47 | + |
| 48 | +Social walls (LinkedIn/Facebook) ride the same call but stay experimental per the spec's non-goal — blog/RSS/newsroom is the dependable path, and it's the one proven. |
| 49 | + |
| 50 | +## Proof |
| 51 | + |
| 52 | +Live, end-to-end, against the stream Phase 2's proof seeded: scan of `aspeninstitute.org/blog/` → **8 real posts with publish dates** (July 2026, fresh) · `organization.corpus.add` one of them · re-scan → `already_known: 1` and the added item's flag flipped to true. Full sweep green: svelte-check 0/0 on both remotes (one caught-and-fixed prop-destructure miss in AdditiveList — svelte-check earning its keep), all builds, three service typechecks, Phase 1 proof re-run 7/7. |
| 53 | + |
| 54 | +## Where the flow stands |
| 55 | + |
| 56 | +All five phases of [[../context-v/specs/Augment-From-DB-Flow.md]] are implemented and pushed as `attempt(augment-from-db, …, step1–5)`. Remaining before calling the *product* (not the code) done: the operator browser walk-throughs each plan names — the six-flow front door, the org card's ➕s, the 🔍→pairing→add loop, add-person with automatic affiliation, and the scan badge — plus the spec's parked open questions (fire-log persistence, pack-template seed terms, pinned-deploy remote URLs) for a future pass. |
0 commit comments