|
| 1 | +--- |
| 2 | +title: "Team-crawl accept drops the crawled links and leaves the staged row — double-save risk" |
| 3 | +lede: "Accepting a staged person creates them and affiliates them — but the LinkedIn/bio links the crawl found never land on the person, and the staged row stays in the results, so the operator can save the same person twice. Accept should carry everything the crawl learned and consume the row." |
| 4 | +date_created: 2026-07-24 |
| 5 | +date_modified: 2026-07-24 |
| 6 | +authors: |
| 7 | + - Michael Staton |
| 8 | +augmented_with: |
| 9 | + - Claude Code on Claude Fable 5 |
| 10 | +semantic_version: 0.0.0.1 |
| 11 | +tags: |
| 12 | + - Issue |
| 13 | + - Usability |
| 14 | + - Augment-It |
| 15 | + - Didi-Crawl |
| 16 | + - Persons |
| 17 | + - Org-Workbench |
| 18 | +status: Open |
| 19 | +--- |
| 20 | + |
| 21 | +# Team-crawl accept: links dropped, row lingers |
| 22 | + |
| 23 | +## The two symptoms (operator-confirmed, 2026-07-24 evening) |
| 24 | + |
| 25 | +1. **Crawled links don't save.** The team crawl usually finds a LinkedIn |
| 26 | + URL (and often a bio page) per person. Accept runs `person.apply` + |
| 27 | + `person.affiliate` — and `person.apply`'s create branch writes |
| 28 | + `linkedin_profile_url` only as a scalar matching field |
| 29 | + (`person-resolver.ts` CREATE), never as a `personal_links[]` entry. The |
| 30 | + new person's card shows zero links; the crawl's best evidence is |
| 31 | + silently discarded. |
| 32 | +2. **The accepted row stays staged.** After accept the row flips to |
| 33 | + "added ✓" but remains in the staged list. The person now exists in the |
| 34 | + People list AND in the staged results — redundant state that invites a |
| 35 | + second save (via re-accept paths or operator confusion). An accepted |
| 36 | + row should be CONSUMED: it leaves the staged list; the person appearing |
| 37 | + in the People list above is the confirmation. |
| 38 | + |
| 39 | +## The fix (this doc precedes the implementation by minutes) |
| 40 | + |
| 41 | +- On accept, after apply + affiliate: add the crawled `linkedin_url` and |
| 42 | + `bio_url` to the person via the existing `person.links.add` — |
| 43 | + **on created persons only** (matched persons may already carry them; |
| 44 | + additive-not-duplicative, per [[Additive enrichment never overrides |
| 45 | + accepted|additive discipline]]). Link failures degrade soft — the person |
| 46 | + + affiliation are the core writes. |
| 47 | +- On success, remove the row from the staged list entirely (skip |
| 48 | + semantics). The "N staged" count and Done-clear affordance follow. |
0 commit comments