aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.ai/notes.org2
-rw-r--r--.ai/sessions/2026-06-09-17-42-review-profile-model-and-broadcast-workflow.org83
-rw-r--r--todo.org10
3 files changed, 94 insertions, 1 deletions
diff --git a/.ai/notes.org b/.ai/notes.org
index 6cb5e28..1cf6cd3 100644
--- a/.ai/notes.org
+++ b/.ai/notes.org
@@ -79,6 +79,6 @@ Format:
Markers maintained by workflows to record when they last ran. Read by other workflows that gate their behavior on freshness.
:LAST_AUDIT: 2026-05-28
-:LAST_INBOX_PROCESS: 2026-06-06
+:LAST_INBOX_PROCESS: 2026-06-09
Format: one =:MARKER: YYYY-MM-DD= line per workflow. Workflows overwrite their own marker on completion.
diff --git a/.ai/sessions/2026-06-09-17-42-review-profile-model-and-broadcast-workflow.org b/.ai/sessions/2026-06-09-17-42-review-profile-model-and-broadcast-workflow.org
new file mode 100644
index 0000000..20e20b0
--- /dev/null
+++ b/.ai/sessions/2026-06-09-17-42-review-profile-model-and-broadcast-workflow.org
@@ -0,0 +1,83 @@
+#+TITLE: Session — startup + inbox processing 2026-06-09
+#+DATE: 2026-06-09
+
+* Summary
+
+** Active Goal
+
+Startup + inbox processing that turned into three shipped features: a project-profile-gated tiered model for /review-code, committing a concurrent session's spec-create workflow, and creating the broadcast workflow (cross-project-broadcast generalized into announcement + situational modes). Five commits pushed.
+
+** Decisions
+
+- *review-code tiered model.* Two tiers: a universal core (every review) plus nine conditional deep-dive modules gated by a project's review profile. Declared via a =Review profile:= line in CLAUDE.md, auto-detected as fallback. Driven by Craig's DeepSat platform needing the concurrency/perf/DB/auth checks. The archangel Code Review Pyramid doc is absorbed, not retired; security + dependency modules delegate depth to /security-check.
+- *broadcast = generalize, not duplicate.* cross-project-broadcast already did the fan-out (helper + sender-exclusion + cadence). Chose option 1: rename it to broadcast and split into two modes over the same plumbing — announcement (tooling/rule) + situational (life/work events). Situational: general-not-comprehensive message, NO per-project relevance analysis by the broadcaster, a fixed self-describing receiving contract (record in notes.org, hold time-boxed or standing, apply on own judgment, ask follow-ups at startup).
+- *spec-create (concurrent WIP).* An untracked spec-create.org appeared in canonical at 16:56 — another session's work. Craig confirmed done, said commit/push separately. Reconciled + committed in isolation.
+- *telegram + duet.* Committed Craig's telega.el plugin here (engine list + mirror); fixed the elisp bundle to name eask the build tool.
+
+** Data Collected / Findings
+
+- *Concurrent-session collision.* spec-create.org untracked in canonical-only blocked the broadcast commit because the pre-commit hook runs sync-check on the working tree (not staged-only). Resolved by reconciling spec-create to the mirror, then committing each concern in isolation (git add -p to split the shared INDEX hunk).
+- *rename-artifact shared-stem hazard.* "cross-project-broadcast" was the stem of both the .org and the .py; the token-boundary rewrite treats "." as a boundary, so a .org-only rename would have corrupted .py references. Fix: rename all three artifacts (.org, .py, test) to broadcast.*. The stem-rewrite also hit two historical todo.org lines (a past propagation-anomaly narrative) — reverted to preserve history accuracy.
+- Verifications: workflow-integrity OK (42), sync-check clean, broadcast helper test 12/12.
+
+** Files Modified
+
+- 75ab07d feat(triage-intake): Telegram source plugin (engine list + mirror + plugin).
+- 5bd8247 feat(review-code): Phase 3.5 conditional deep dives gated on review profile.
+- 4daecc8 docs(elisp): eask as the build tool.
+- 1f09002 feat(workflows): spec-create (the author leg of the spec trio) — concurrent session's work, committed separately.
+- c91bd0b feat(workflows): broadcast generalized into announcement + situational modes (rename + helper + test + INDEX + content).
+- todo.org: two new [#C] TODOs — SessionStart-on-clear hook (:feature:), wide org-table handling (:spec:).
+- notes.org: :LAST_INBOX_PROCESS: → 2026-06-09.
+- Handoffs sent: archangel (Review-profile declaration + delete its code-review.org), work x3 (Signal ack, SessionStart-hook filed, wide-table filed).
+
+** Next Steps
+
+- *Validate broadcast by execution* (create-workflow Phase 7) on Craig's next real situation — he said he's validating soon.
+- archangel: add its =Review profile:= line, then delete its local code-review.org.
+- Open [#C]s: SessionStart-on-clear hook, wide org-table handling, the memory/org-roam DECISION 5 VERIFY.
+- 7 top-level tasks unreviewed >7 days (task-review nudge).
+
+* Session Log
+
+** 2026-06-09 13:22 CDT — Startup + inbox
+
+Clean startup: session-context absent (prior session wrapped cleanly), no active reminders, no pending decisions. Project repo + rulesets both up to date. .ai/ template sync skipped this session — rulesets has an untracked WIP file under the synced paths (claude-templates/.ai/workflows/triage-intake.telegram.org), so the guard correctly held off.
+
+Inbox had 4 items (+ companion pairing). Acted on the duet handoff inline: edited languages/elisp/CLAUDE.md line 27 to make `eask` the named build/dependency tool and demote eldev/cask/emacs --batch to alternatives (eask is what chime/pearl/emacs-wttrin/duet actually use). Clear, bounded, in-scope doc-accuracy fix — acted per the act-now rule.
+
+Remaining inbox: work Signal-plugin heads-up (FYI, already committed in 627f521, nothing outstanding → delete-with-ack); archangel code-review pyramid doc retire-or-consolidate (needs Craig's call → surfacing). Plus the untracked telegram plugin WIP to surface.
+
+** 2026-06-09 — Telegram plugin commit prep + review-code tiered model
+
+Telegram: Craig said commit it here. Added "Telegram" to the engine's general-plugin list (line 51, matching how the Signal commit handled it), ran scripts/sync-check.sh --fix to sync the mirror (.ai/workflows/triage-intake.telegram.org created). canonical+mirror parity confirmed for both engine and plugin.
+
+archangel code-review doc: Craig redirected from retire → build a tiered review model. He's building a DeepSat software platform where the concurrency/perf/DB checks ARE relevant. Categorized all pyramid-doc checks into Tier 1 (universal, every review) + Tier 2 (9 conditional modules gated by project profile). Approved both the two-tier model and the declared-profile (`Review profile:` line in CLAUDE.md) + auto-detect-fallback mechanism. Also wants the rollout to file an inbox task so projects declare their profile rather than leaning on the fallback.
+
+Implemented in review-code/SKILL.md: Phase 1 captures the `Review profile:` line; new Phase 3.5 "Conditional Deep Dives" with profile resolution (declared-overrides-detected), an 8-tag→9-module map, and the 9 modules (security/OWASP, error-handling, API-compat, auth, sensitive-data/crypto, perf:db, perf:efficiency, concurrency, dependencies) — security + dependency modules delegate depth to /security-check. Front-matter description + Phase 5 example audit table updated. Next: archangel handoff for the Review profile line, then commit + push (review-code skill, telegram plugin, duet eask fix).
+
+** 2026-06-09 — Handoffs, commits, push, new work item
+
+Sent archangel a reply handoff (2026-06-09-1405) explaining the absorption + asking it to add a "Review profile:" line to its CLAUDE.md and delete its local code-review.org. Sent work a one-line ack for the Signal heads-up. Deleted the four processed inbox files (duet, work-signal, archangel pair).
+
+Committed and pushed three commits (627f521..4daecc8, authored as Craig): 75ab07d feat(triage-intake) Telegram plugin (engine list + mirror + plugin), 5bd8247 feat(review-code) Phase 3.5 conditional deep dives gated on review profile, 4daecc8 docs(elisp) eask as build tool. /voice personal walked all three messages (fired #13 em-dash, #33 semicolon on the review-code body).
+
+New mid-session work handoff (14:00) arrived: SessionStart-on-clear hook for auto-resume (the remaining automation piece after /flush). Filed as [#C] :feature: in todo.org Rulesets Open Work, replied to work (2026-06-09-1416), deleted the inbox file. Stamped :LAST_INBOX_PROCESS: 2026-06-09. Inbox clean.
+
+Carryover still open: 7 top-level tasks unreviewed >7 days (task-review nudge); the memory/org-roam DECISION 5 VERIFY; archangel awaits its Review-profile declaration.
+
+** 2026-06-09 17:00 — broadcast workflow (create-workflow) + concurrent-session collision
+
+New task: create a "broadcast" workflow — say a life/work event once, fan it to every project's inbox so no agent is missing context. Generic (travel, visitor, birth, death, quit job, etc.), message is general-not-comprehensive, broadcasting agent does NO per-project relevance analysis, receiving agents apply on own judgment + ask follow-ups after startup.
+
+Discovery: cross-project-broadcast.org already existed (the fan-out plumbing: cross-project-broadcast.py helper, sender-exclusion, cadence guidance) but scoped for tooling/rule announcements. Craig chose option 1: generalize it into one "broadcast" workflow with two modes (announcement + situational), reuse the helper, via rename-artifact.
+
+Renamed via scripts/rename-ai-artifact.sh (3 calls): cross-project-broadcast.py→broadcast.py, test_cross_project_broadcast.py→test_broadcast.py, cross-project-broadcast.org→broadcast.org. All six files (canonical+mirror) moved clean, workflow-integrity OK (42), zero dangling refs. The two todo.org historical references (lines ~2234/2245, a past propagation-anomaly narrative) got rewritten by the stem-replace — need reverting to preserve history accuracy (still pending).
+
+BLOCKER (resolved): an uncommitted spec-create workflow appeared in canonical-only at 16:56 today (concurrent session's WIP). Craig confirmed it's done and said to commit/push it separately. Reconciled it into the mirror (sync-check --fix), staged spec-create-only (files + INDEX hunk 1 via git add -p, broadcast hunk excluded), committed 1f09002 feat(workflows): add spec-create, pushed 4daecc8..1f09002.
+
+Then wrote broadcast.org two-mode content (announcement + situational), updated the INDEX entry (two-mode description + situational triggers), reverted the two historical todo.org lines the rename had rewritten. Verified: workflow-integrity OK (42), sync-check clean, broadcast helper test 12/12. Committed c91bd0b feat(workflows): generalize broadcast into announcement + situational modes (renames + INDEX + new content, isolated from notes/todo), pushed 1f09002..c91bd0b. /voice personal walked both commit messages.
+
+broadcast workflow DONE: renamed cross-project-broadcast→broadcast (workflow + broadcast.py helper + test_broadcast.py), two modes sharing the fan-out plumbing. Pending: validate-by-execution (create-workflow Phase 7) on a real broadcast when Craig has one; /tmp/broadcast-draft.org is superseded.
+
+Uncommitted for wrap-up: todo.org (new SessionStart-hook TODO), notes.org (LAST_INBOX_PROCESS stamp). New inbox item arrived mid-work: work 14:25 codify/wide-org discussion.
diff --git a/todo.org b/todo.org
index 212bf03..8e4479a 100644
--- a/todo.org
+++ b/todo.org
@@ -34,6 +34,16 @@ Tags are assigned and refreshed by =task-audit=; =task-review= keeps them honest
* Rulesets Open Work
+** TODO [#C] Wide org-table handling — helper/lint/standard :spec:
+The org-table standard keeps project-doc tables <=120 cols with multi-line wrapped cells and a rule between rows, but nothing enforces it and hand-wrapping a wide cell into multi-row form is tedious and error-prone. Decide among: (a) a helper that auto-wraps a wide table into multi-row cells at a target width, (b) a lint check that flags tables over the width budget, (c) tighten the written standard with a worked before/after example. Likely some combination. A worked before/after example exists in a work-project prep doc (a 6-col table reformatted by hand to a 4-col multi-row-cell version), to be reproduced generically when this lands.
+
+Out of a work-project handoff 2026-06-09.
+
+** TODO [#C] SessionStart-on-clear hook for auto-resume :feature:
+Add a SessionStart hook (matcher: clear) in settings.json that auto-injects "read .ai/session-context.org and resume if present, else run startup.org". Today /flush prompts the user to /clear and the next session relies on the model re-reading session-context; the hook makes resume automatic on /clear. Keep full startup.org for genuine fresh starts (new day, other machine, been away). Likely lands as claude-templates workflow notes plus the hook in settings.json.
+
+The checkpoint+resume halves already shipped as /flush. This is the remaining automation piece. Out of a work-project handoff 2026-06-09 (process tooling, belongs in rulesets not the work project).
+
** TODO [#C] Check that memories are sync'd across machines via git :spec:
:PROPERTIES:
:LAST_REVIEWED: 2026-06-02