aboutsummaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-20 13:44:11 -0500
committerCraig Jennings <c@cjennings.net>2026-07-20 13:44:11 -0500
commit4d87f35063e8430408178871cbf20b7268d7836a (patch)
treef4bca35bceb6976d921c5ef5687369f06ab159e1 /todo.org
parent0e9958abfbe97540b348b2118a863f7995e73b9e (diff)
downloadrulesets-4d87f35063e8430408178871cbf20b7268d7836a.tar.gz
rulesets-4d87f35063e8430408178871cbf20b7268d7836a.zip
feat: gate triage sources on a per-project :TRIAGE_SOURCES: declaration
The general triage plugins (personal Gmail, cmail, calendar, Telegram, GitHub PRs) are template-synced into every project, so the old "plugins present" probe self-activated triage everywhere. The sentry live trial caught it reaching personal inboxes from a project that isn't a triage target. Now a general plugin activates only when the project names its basename in a :TRIAGE_SOURCES: line in notes.org Workflow State. A project-specific plugin stays active by presence. The gate lives in triage-intake Phase 0, so it fixes the interactive over-pull too, and sentry's pass-3 probe reads the same signal. Presence is capability, the declaration is activation. A project that declares nothing and owns no project plugin pulls nothing. Migration handoffs went to home and work. rulesets correctly declares nothing.
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org16
1 files changed, 11 insertions, 5 deletions
diff --git a/todo.org b/todo.org
index b2dd369..fec2a71 100644
--- a/todo.org
+++ b/todo.org
@@ -74,6 +74,13 @@ What we're verifying: an in-session monitor fire collapses to a one-line heartbe
- Start "auto inbox zero" with an empty roam inbox, let a cycle run. Expected: one line, =inbox zero at HH:MM: nothing=.
- Add a roam inbox item, let the next cycle run. Expected: the item summarized, filed, and queued.
Expected: every empty fire is a single labelled heartbeat; every fire with real work does its full turn unchanged.
+*** Triage source activation — declared sources pulled, undeclared dormant
+What we're verifying: triage-intake pulls only the sources a project declares (spec: docs/specs/2026-07-20-triage-source-activation-spec.org).
+- In rulesets (no =:TRIAGE_SOURCES:=, no project plugin), run "triage intake". Expected: Phase 0 announces every general plugin as "inactive (undeclared)", loads zero sources, and the sweep no-ops.
+- In a project with =:TRIAGE_SOURCES: personal-gmail cmail=, run "triage intake". Expected: Phase 0 loads personal-gmail and cmail as active general sources, names the rest inactive, and scans only the two.
+- In a project with a project-specific plugin (=.ai/project-workflows/triage-intake.*.org=) and no declaration, run "triage intake". Expected: the project plugin is active by presence; general plugins stay inactive.
+- Under sentry, confirm pass 3 (triage) probe-skips in a project with no active source, and runs where one is declared.
+Expected: undeclared general plugins never scan; declared ones and project-specific ones do; sentry's triage pass activates only where a source is active.
** DONE [#B] working/ tracked-from-creation + gitignored temp/ :feature:
CLOSED: [2026-07-20 Mon]
@@ -185,12 +192,11 @@ session needs its own contract (mutation rights, async surfacing, dedup
state across runs) — same open questions inbox.org logs for unattended
auto inbox zero. Take up only if the interactive shape proves too narrow.
-** TODO [#B] Triage source activation — per-project source declaration :feature:spec:
-Spec: [[file:docs/specs/2026-07-20-triage-source-activation-spec.org][docs/specs/2026-07-20-triage-source-activation-spec.org]] (DRAFT, ID af73ef0b-cd1d-46f1-9e1d-62695733a4de).
-
-From the sentry live trial (2026-07-20): triage-intake self-activates in every project because the general (personal-account) plugins are template-synced everywhere, so sentry's pass-3 probe misfires and would pull Craig's personal inboxes into whatever project the fire runs in. Fix is an activation layer — general plugins gate on a per-project =:TRIAGE_SOURCES:= declaration; project-specific plugins stay active by presence. Fixes the interactive over-pull too.
+** DONE [#B] Triage source activation — per-project source declaration :feature:spec:
+CLOSED: [2026-07-20 Mon]
+Spec: [[file:docs/specs/2026-07-20-triage-source-activation-spec.org][docs/specs/2026-07-20-triage-source-activation-spec.org]] (IMPLEMENTED, ID af73ef0b-cd1d-46f1-9e1d-62695733a4de). Craig approved after his read, both open decisions resolved via cj comments; built same session.
-Awaiting Craig's deep read of the spec (DRAFT → READY gate). Two decisions still open in the spec (declaration format details, whether interactive adopts the same gate). On READY, spec-response decomposes the 5 phases into build tasks. Supersedes Fire 1's triage-probe approval-queue item, which was the narrower probe-only framing.
+From the sentry live trial (2026-07-20): triage-intake self-activated in every project because the general (personal-account) plugins are template-synced everywhere, so sentry's pass-3 probe misfired and would pull Craig's personal inboxes into whatever project the fire ran in. Fixed with an activation gate in triage-intake Phase 0 — general plugins gate on a per-project =:TRIAGE_SOURCES:= declaration; project-specific plugins stay active by presence. Applies to interactive and unattended alike. sentry pass-3 probe reads the same signal. Migration handoffs sent to home + work. Supersedes Fire 1's narrower probe-only approval-queue item.
** DONE [#B] Silent-until-signal for in-session monitor loops :feature:spec:
CLOSED: [2026-07-20 Mon]