← Vault Index
Source: frameworks/kit-1on1-recap/07-1on1-recap-draft-actions.md

07 — DETECT SIGNALS (+ send existing shared assets)

Reframed in Phase 1 Build C (2026-06-18). This step USED to "draft Kathryn's deliverables." That is done-for-you by construction, and this kit is advisory-only (file 01 stance invariant) — so producing a new build / recommendation / research doc FOR the member is banned. The step's job is now: detect signals and route them to the member's signal rollup, plus a narrow path to wrap an EXISTING shared asset for sending.


When this step runs

After the member CPM is written (file 06). Auto-advances from there.

Source — read truth, not prose (hard rule). Detect signals from the gated ledger (file 05 Step 5) / the gated claims ([name]-claims-[date].json, which cite the transcript), and the transcript itself where needed. Do NOT source signals from the downstream composed artifacts — the action-items index (this step's own output), the member CPM prose (file 06), or the cascade report (file 10). Those are projections of the ledger; sourcing them projects from a projection and lets soft drift (a transcript "ceiling" quietly becoming a "build need" on the board) ride onto the signal board. Every signal traces to a gated fact row (transcript-cited) or is a labeled judgment built on named fact rows — Build A.

The stance reminder (file 01)

Kathryn does no between-session build work in this kit. So this step does NOT draft a new deliverable, recommendation, research doc, or build FOR the member. A member's build / tooling / infrastructure need is a signal, not a Kathryn to-do. (Rob 6/17: the "shared-file infrastructure recommendation" this step would once have drafted is exactly the violation — it assigned Kathryn a between-session build for a TPC member.)


Job 1 (primary): Detect signals → route to the member rollup

Scan the gated ledger / gated claims (transcript-cited; per the Source rule above) for signals — moments that say a member is moving off baseline (Stay TPC). Three buckets (per the signal-rollup spec):

BucketWhat it looks like
Engagementshowing up / no-shows (this 1:1, MM, co-working); emailing Kathryn; responsive vs. going quiet
Business-stagewinding down, scaling, transition, succession, a new service line — "a different point in the business"
Capability / buildneeds something built that the cohort tooling doesn't cover (Rob's file infra). The one that can point at a Sprint.

For each signal:

Don't force signals. A session can produce zero (the member's steady). That's a valid result — note "no signal change this session."


Board-write discipline (how the card actually gets updated)

When you update the TPC Member Pipeline card, three hard rules (full decision + token setup: business-aos/cyp/tpc/planning/tpc-board-write-architecture-2026-06-19.md):

  1. Smallest-risk write; judgment manual. Append the per-session log line and the proposed read as a block on the card body (additive — can't overwrite anything; use API-patch-block-children on the card page). Update only the Last touch property (the one at-a-glance field). Leave Signal / why as Kathryn's curated standing summary — don't auto-append. Never auto-change Lane or Current read — propose the read in the body block + cascade report; she moves the card.

⚠️ Do NOT use the comment endpoint (API-create-a-comment). Under the current board-writer server config (NOTIONTOKEN), it fails closed with missingversion (the Notion-Version header is sent as undefined) — confirmed Tracy 6/24, twice. Every other endpoint (patch-page, patch-block-children, search, query) sends the header fine, so the per-session log routes to the card body instead. (Optional: re-adding the server with the explicit OPENAPIMCPHEADERS form that hard-codes Notion-Version would restore true threaded comments — board-write setup doc Step 3 fallback. Body-append works today with zero reconfig, and it's the robust pathpatch-block-children is standard and won't regress on a package bump, whereas the comment endpoint is the proven-flaky one. So it's the default, not a stopgap.) Keep the body log bounded: terse, dated entries; once a card's body log passes ~8 touches, fold the oldest into one collapsed "Earlier touches" toggle so the card surface stays scannable (the one thing comments gave for free).

  1. Bounded. Update only the existing member card's text fields. Never create or delete pages, never touch another database, never the member title.
  2. Triage-gated. A substantive 1:1 writes facts to the card; a thin call writes a one-line Last touch and stops (file 05 Step 0.5).
  3. Never create a card. The scoped token is update-only. If a member has no Pipeline card (a new member), flag it ("no card — create at onboarding") — do not create it. Card creation is a supervised onboarding step, not a cascade action.

Access: through a scoped Notion integration token shared only with the board (least privilege) — never a blanket Notion write grant. Surface the proposed card change in the cascade report (file 10) so there's a record even when auto-written.

Job 2 (narrow): Send-wrapper for an EXISTING shared asset

The only thing this step "produces" for Kathryn is a send wrapper when she's sharing an asset that already exists (a group build, a resource, a framework she built for the cohort) — because sharing-what-exists is not building-for-the-member.

One-off advisory consult

Not a cohort member → no signal rollup. Note any genuine follow-up (a resource to send that already exists → send-wrapper; otherwise a line in the .md). No deliverable drafting.


Outputs

#OutputWhere
1Member signal rollup updatedmember CPM (cyp/tpc/members/[name]/cpm/[name]-cpm-[date].md) + the TPC Member Pipeline board card
2Signals + actions index (navigation)cyp/tpc/members/[name]/sessions/[name]-action-items-[YYYY-MM-DD].md
3Send-wrapper(s) for existing shared assets, if anycyp/tpc/members/[name]/drafts/[slug]-[YYYY-MM-DD].md

No new "Kathryn deliverable / build" files — that path is removed.

Index template

# [Member Name] — Signals + Actions Index, [YYYY-MM-DD]

**Source session:** `[name]-1on1-[YYYY-MM-DD].md`
**Source CPM:** `[name]-cpm-[YYYY-MM-DD].md`

## Signals this session (→ rollup)
| Bucket | Signal (the read) | Evidence (gated fact / labeled judgment) | Routed to | Offer trigger? |
|---|---|---|---|---|
| capability | needs a shared-file setup the cohort tooling doesn't cover | "we would definitely need the IT team… it's not gonna happen" (gated) | board: Watching + CPM #2 | possible Sprint — flagged |

(or: "No signal change this session — steady.")

## Send-wrappers (existing shared assets only)
- [asset] → `drafts/[slug].md` (links the canonical source)

## Member's / team items (NOT Kathryn's — context only)
[the member's own to-dos from the recap]

---
*Index produced by /draft-1on1-actions (signal-detection mode) in the 1:1 cascade.*

Quality gate

Auto-advance

After updating the rollup + writing the index (+ any send-wrappers), auto-advance to /update-open-actions (file 08).


Change Log