looseendslisted
Install: claude install-skill stevehansen/eidet
# Loose Ends — priming
**Canonical spec:** `docs/domains/looseends.md` — read it for the state machine, all invariants, key
files, and gotchas. Terms of record: `UBIQUITOUS_LANGUAGE.md` § Loose End lifecycle (and the
*Memory vs Loose End* / *Resolve vs Forget* / *Park vs Store* ambiguities). Threat: `STRIDE.md` T-10.
Open *work*, not knowledge. Own collection, so no maintenance stage can reach it — no decay, no
consolidation, no dedup, no TTL. It surfaces until an agent resolves it.
## Core invariants (get these right)
- **Park is secret-scanned, never signal-gated** — terse speculation is the feature.
- **`IPromotionPort` is the only edge back into the gated memory write funnel.** Park never reaches
`StoreAsync`; promote only reaches it through the adapter.
- **Claim before you promote** (`Open → Resolving`, atomic in the store) or a retry double-mints.
- **A failed promote releases to a *clean* `Open`** — clear every staged resolution field, and release on
`CancellationToken.None` so a cancelled resolve never wedges an end in `Resolving`.
- **Resolve is idempotent**; a lost claim distinguishes finished (success) / mid-flight (reject) /
released (bounded retry).
- **Clamp priority to 1–3 at the park choke point** — it's the wake-up sort key, so unclamped values let
any caller pin a note into every session's context (T-10).
- **A near-duplicate promote succeeds onto the existing memory**; an external-ref promote mints nothing
and skips the gate.
- **Ordering liv