diff options
| -rw-r--r-- | .ai/notes.org | 2 | ||||
| -rw-r--r-- | .ai/sessions/2026-06-11-01-37-agent-kb-spec-to-ship.org | 128 | ||||
| -rw-r--r-- | .claude/settings.json | 4 | ||||
| -rw-r--r-- | inbox/2026-06-11-0037-from-work-2026-06-10-daily-prep-template-spec.org | 307 | ||||
| -rw-r--r-- | inbox/2026-06-11-0037-from-work-handoff-daily-prep-rewrite.org | 51 | ||||
| -rw-r--r-- | inbox/2026-06-11-0045-from-archsetup-screenshot-py-launch-crash-on-ratio.org | 5 | ||||
| -rw-r--r-- | inbox/2026-06-11-0056-from-work-four-template-refinements-from-craig-s.org | 5 | ||||
| -rw-r--r-- | todo.org | 107 |
8 files changed, 552 insertions, 57 deletions
diff --git a/.ai/notes.org b/.ai/notes.org index a41e6e4..abb03af 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-10 +:LAST_INBOX_PROCESS: 2026-06-11 Format: one =:MARKER: YYYY-MM-DD= line per workflow. Workflows overwrite their own marker on completion. diff --git a/.ai/sessions/2026-06-11-01-37-agent-kb-spec-to-ship.org b/.ai/sessions/2026-06-11-01-37-agent-kb-spec-to-ship.org new file mode 100644 index 0000000..46be0a4 --- /dev/null +++ b/.ai/sessions/2026-06-11-01-37-agent-kb-spec-to-ship.org @@ -0,0 +1,128 @@ +#+TITLE: Session Context — 2026-06-10/11 agent KB: spec to ship +#+DATE: 2026-06-10 + +* Summary + +** Active Goal +Take the agent knowledge base from ratified spec to shipped v1, plus the day's inbox batches. Started as a crash-recovery resume (the morning voice-skill session's anchor), ran through spec finalization, Craig's five design questions, the D8 git-transport pivot, and a full no-approvals implementation of Phases 0-4. Closed with insights-report follow-ups. + +** Decisions +- D8 (Craig): the KB moves from Syncthing to git, Shape A — whole roam relocates to ~/org/roam with a cjennings.net remote; agents/ subdir for agent writes; work machine never clones. Phone stays on on-demand drops to ~/sync/phone. +- Work-root denylist confirmed: ~/projects/work only; archangel is not work-scoped. +- Transition-symlink strategy dropped post-migration: Syncthing removed the symlink, and all live references were already repointed, so recreating it would just fight the share. +- Signal is Emacs-only (Craig's ruling, correcting the morning plugin): standalone signal-cli receive removed entirely; signel starts and stays running. +- Insights report triage: harness-loaded rules beat protocols.org for action-gating invariants; the suggested pre-commit hook rejected (wrong layer, breaks track-mode projects); the 500-token-cap finding was a mislabel of 529/stream-timeout errors. + +** Data Collected / Findings +- Syncthing share root is ~/sync/org; roam was 487 org files + 63 conflict files, 18MB; org-roam-db-autosync-mode is on; db lives outside the repo. +- git@cjennings.net has a real shell; repos live in /var/git. +- defconst re-evaluates on reload but defvar doesn't (inbox-file needed explicit setq); bare git remotes default HEAD to master while pushing main (bats fixture gotcha); awk FS ': *' mis-splits org property drawer lines (kb-hygiene orphan bug, caught by test 4). +- The orphaned linear-emacs memory dir (1 entry, no live project) flagged for Craig. + +** Files Modified +- roam.git born: 424 clean org files + 4 agent nodes (3 promoted memories + the seed/doc node), indexed at 420 org-roam nodes. +- rulesets, 14 commits e0364b8..63b9a5f: KB spec finalized → amended (D8 + five folds) → implemented; knowledge-base.md rule; roam-sync.sh + kb-hygiene.sh + 12 bats + 4 systemd units (both timers enabled); wrap-it-up promotion check + KB receipt line; daily-prep execution/join links; triage-intake loud-failure rule + signal Emacs-only rewrite + telegram lifecycle; transcript workflow classification/extraction/exit-gate; interaction.md render-merge guard; debug-skill hypothesis discipline; commits.md staging guard; tracked CLAUDE.md with the mirror invariant; two [#C] pilots filed (morning orchestrator, session harvest). +- ~/.emacs.d/modules/user-constants.el roam-dir (committed there as 9c261ea7 per its session). +- Handoffs: .emacs.d x2, archsetup x1, work x3 (replies), migrate-memories broadcast x10. + +** Next Steps +- Craig: the manual-testing child under the memories parent (org-roam visual check, cross-machine round-trip, work/unknown refusal behavior); other personal machines need the one-time roam clone + timer setup (archsetup handoff). +- Four unprocessed handoffs deferred to next session's startup: work daily-prep rewrite + template spec (x2), archsetup screenshot.py crash on ratio, work four-template-refinements. +- Voice pattern #13 slipped twice on commit SUBJECTS today (em-dashes in 4d26552 and 63b9a5f) — the subject-line exemption reading needs tightening in the skill or the habit. +- The 30-day KB checkpoint (success metrics in the spec) lands ~2026-07-10. + +KB: promoted 4 / consulted no + +* Session Log + +** Startup + inbox processing (09:59 CDT) + +Startup ran clean: rulesets dirty (.claude/settings.json modified — pre-existing, untouched), pull skipped; make install nothing new; project branches current; .ai/ synced from templates; no crashed session; no reminders or pending decisions; 5 top-level tasks stale >7 days (task-review nudge). + +Inbox had the work project's voice-skill revision delivery: a change-rationale handoff (supersedes the same morning's finding-stems handoff) plus a complete revised SKILL.md. Craig adopted all changes in the 2026-06-10 work session, so disposition = implement now. + +Applied: +- voice/SKILL.md replaced with the revised version (45 patterns; attestation block step 8; artifact budgets table; compact output format; write-back step; reordered terse-pass→audit; #37 verdict-formula exemption; #40 verification-narration variant; new #42 finding stems, #43 single-sentence cadence, #44 parenthetical asides, #45 declarative marker; Personality/Soul mode-tagged). Frontmatter kept, description updated to 45 patterns + finding stems + budgets. +- voice/references/voice-profile.org per the pairing rule: new entries §42 (with the three Craig-approved PR #233 Before/After examples from the stems handoff), §43–§45 (basis from the 2026-05-29 corpus); §37 exemption + history; §40 verification-narration variant + #236 Before/After + history (third recurrence); §13/§33 self-discipline reframing moved into the entries proper; suggested-deltas section marked landed; stale "only §13 populated" migration note fixed. +- claude-rules/commits.md: hardcoded "41 patterns" references replaced with count-free phrasing ("full pattern walk") and artifact-mechanics lists updated to include finding stems (5 spots). +- claude-templates/.ai/workflows/no-approvals.org (canonical) same de-count fix; mirror synced via sync-check --fix. +- Revision handoff preserved at docs/design/2026-06-10-voice-skill-revision-handoff.org; all 3 inbox files deleted (stems handoff superseded, its examples live in profile §42; companion SKILL.md content landed in voice/SKILL.md). + +Verified: profile has exactly 45 §-entries, org-element parse OK, SKILL.md carries 45 pattern headings. voice/ is symlinked into ~/.claude by make install, so the change is live machine-wide immediately; harness picked up the new skill description mid-session. + +Next: commit (review-code + voice pass on the message per publish flow, .ai/ tracked → approval gate skipped). + +** Publish + close-out (10:13 CDT) + +Inbox pass closed: 3 items processed, 1 accepted as implement-now (the consolidated revision; the stems handoff was superseded by it, the companion .md was its payload), 0 rejected. /review-code --staged ran inline (prose diff, all criteria PASS or N/A, verdict Approve; one intentional non-issue noted — the profile's dated "Findings against the 41 SKILL.md patterns" heading stays as a 2026-05-29 record). Commit message walked through the revised skill itself (compact output + attestation — its first live exercise; #32 and #37 fired on the draft). Committed 5716695 as Craig, pushed a19db36..5716695 to origin/main. Acceptance reply sent to work's inbox (2026-06-10-1013-from-rulesets-inbox-response-voice-skill-revision.org). notes.org :LAST_INBOX_PROCESS: already 2026-06-10, no change. Inbox empty (only .gitkeep). + +Outstanding, not mine to touch: .claude/settings.json has a pre-existing uncommitted modification (it blocked the Phase A.0 rulesets pull; pull was a no-op anyway since this is the only machine ahead). Surface to Craig. Task-review nudge: 5 top-level tasks unreviewed >7 days. + +** settings.json commit + task review (14:05-14:25 CDT) + +Craig approved committing the settings drift: c6bd31f (chore(claude): pin model to fable in settings), pushed. Trivial-diff exemptions applied to review/voice gates. + +Task review, batch of 5 (the two stamped 2026-06-10 last night skipped): token-rotation helper KEPT (hold-until-imminent logic stands); Codex runtime spec EDITED (noted Phase 1/AI_AGENT_ID already shipped, narrowed to the phases 2-6 decision) + stamped; voice-profile corpus task marked DONE (profile is canonical with 45 entries, all deltas landed this morning; extension corpora deliberately not pursued); memories/org-roam task KEPT + stamped. Fifth (create-documentation) interrupted by Craig's /respond-to-cj-comments — not reviewed, resurfaces next run. + +** Org-roam KB spec — cj answers + spec-create rewrite (14:29 CDT) + +Craig annotated the 2026-06-05 org-roam spec with 5 cj comments (closing fences had a stray > — scanner saw them as unclosed; parsed manually). Answers: DECISION 5 = option C ratified; Syncthing DOES replicate ~/sync/ to a work machine, C still fine; node granularity per-fact; harness-memory-fate = "don't know what this means, explain" (explained in chat, held open); agent writes land freely in KB ONLY — explicitly not permission for email/Linear/public channels without review. + +IMPORTANT CONSTRAINT: Craig said "do not start implementing yet." No knowledge-base.md, no implementation tasks — spec only. + +Applied: new spec at docs/agent-knowledge-base-spec.org in spec-create format (D1-D6 accepted, D7 harness-memory open with the explanation Craig asked for; 3 implementation phases sketched but explicitly held; full readiness dimensions). Old draft docs/design/2026-06-05-org-roam-knowledge-base-spec.org deleted (superseded; git history has it). Inbound link in todo.org:97 retargeted. VERIFY under the memories task resolved to a dated entry recording the ratification; new sibling VERIFY filed for D7. cj-scan confirms the new spec clean; org parse OK; no stale links outside session archives. + +Uncommitted: todo.org (task review + VERIFY resolution), docs spec swap, session-context.org. Lands at wrap-up. + +** Spec-response on the KB spec (14:39-14:46 CDT) + +Craig ratified D7 = keep, then asked for the spec-response workflow. A review file existed: docs/agent-knowledge-base-spec-review.org, written at 14:35 by a CONCURRENT Codex session (which also appended its reviewer entry to the spec history, added a "Spec review — not ready" log entry + two VERIFYs + a [#D] hygiene child to todo.org — todo.org changed under me mid-edit, re-read before applying). + +Dispositions: both blockers accepted (D7 → accepted keep with Phase 3 mandatory; new "Project classification and write routing (v1)" design subsection — work-root denylist in knowledge-base.md as source of truth, initially ~/projects/work; personal = under ~/code|~/projects|~/.emacs.d and not denylisted; work/unknown → refuse + redacted-fact report; v1 adds no work-side store). Mediums accepted: canonical rg commands with --glob '!*sync-conflict*' baked in (63 conflict files exist), Phase 2 approval/rollback (Craig approves fact, one node, rollback = delete the file), Makefile no-change note, ~490 count, Testing/Verification section. Three MODIFIED (recorded in the spec's Review dispositions): standalone [#B] drop-in tasks → children under existing parent; exact count → ~490; work-side destination → existing conventions + refusal only. None rejected. Spec status: ready with caveats (caveat = denylist completeness; is archangel work-scoped?). + +todo.org: Codex's two VERIFYs resolved to dated entries; new VERIFY for denylist contents; stale 2026-05-16 "write the spec here" cj stub removed (fulfilled); Phase 1-3 implementation tasks + manual-testing child created under the parent (Phase 3 tagged :solo:; Phase 1 blocked on the denylist VERIFY); Codex's [#D] hygiene child kept, body extended with conditional vNext. Review file deleted (exit criterion). Both files org-parse OK. + +Implementation remains HELD — Craig's standing "do not start implementing yet". Nothing committed yet this stretch; wrap-up bundles it. + +** Session resumed after interruption — spec work committed (15:20 CDT) + +New session picked up the crash anchor (previous stretch ended ~14:46 without wrap-up). Craig chose: commit the held spec work first, then process the 3 inbox handoffs (daily-prep links; triage-intake signal replacement + telegram/engine edits — the latter two land together). + +Publish flow ran: Step 0 reconcile 0/0 clean. /review-code --staged inline (prose diff, universal criteria): both files org-parse OK, no stale references to the deleted old spec path; one Minor — todo.org:98 carried a live file: link to the deleted spec-review file — fixed to plain text before commit (keep-links-current). Verdict Approve. /voice personal on the message (compact; #27/#32 first-person rewrite, #38 terse). Committed e0364b8 (docs: finalize agent knowledge-base spec as ready with caveats) as Craig, pushed c6bd31f..e0364b8 to origin/main. session-context.org deliberately left uncommitted (live anchor); inbox files pending processing next. + +** Inbox pass — 3 handoffs implemented, 2 commits shipped (15:28 CDT) + +Processed the 3 work handoffs, all accepted as implement-now (each improves project tooling; Craig's verbatim asks). Commit 34c6945 (feat(workflows): daily-prep carries execution links and join links): execution-link rule in the thin-link section + sub-step 3c, new Phase 4 join-links sub-section, Updates entry. Commit 403f8b8 (feat(triage-intake): loud scan-failure rule + messenger plugin rework): signal plugin replaced verbatim with the signel-aware version, telegram quick-reference lifecycle + work-contact classify sentence, engine Phase C item 0 (SCAN FAILED banner) + Common Mistakes #9 + history entry — one commit per the sequencing note. + +Verified: mirrors synced via sync-check --fix, org parse OK on all four canonical files, workflow-integrity OK (44). Both commits pushed e0364b8..403f8b8. Acceptance reply sent to work (2026-06-10-1527-from-rulesets-inbox-response-triage-and-daily-prep.org); all 3 inbox files deleted; inbox empty (.gitkeep only). 3 processed / 3 accepted (implement-now) / 0 rejected. :LAST_INBOX_PROCESS: already 2026-06-10. + +** Denylist VERIFY resolved — spec flips to ready (17:30 CDT) + +Craig answered in chat: the work-root denylist is just ~/projects/work, archangel is not work-scoped. VERIFY at todo.org rewritten to a dated entry; Phase 1 task body updated to unblocked-awaiting-go; spec status flipped from "ready with caveats" to "ready" (Metadata, classification subsection, Phase 1, Risks dodge, new history entry at 17:29). Committed + pushed. Implementation hold stands — Craig has not said go. Also identified the 1 stale task for him: create-documentation (LAST_REVIEWED 2026-06-02, the review interrupted yesterday by /respond-to-cj-comments). + +** Task review — create-documentation kept (17:33 CDT) + +Craig reviewed the one stale task (create-documentation, interrupted in yesterday's batch): KEPT as-is, re-stamped LAST_REVIEWED 2026-06-10. Staleness count now 0. Uncommitted: todo.org stamp + session-context — lands at wrap-up. + +** KB spec amendment — D8 git transport + five folds (17:57-18:05 CDT) + +Craig asked five design questions (migration, shared-vs-separate roam, thin testing, his docs, maintenance), then ratified Shape A: whole roam moves from Syncthing to git. Ground truth gathered first: Syncthing share root is ~/sync/org (.stfolder there), roam not a git repo, 63 conflict files confirmed recursive, org-roam-db-autosync-mode on. Phone constraint dissolved: Craig's mobile pattern is on-demand drops to ~/sync/phone, he does NOT want whole-roam on the phone. + +Spec amended: new D8 (git on cjennings.net, ~/org/roam proposed, systemd git-sync timer, opt-in-by-clone, work machine no clone, agents/ subdir for agent writes); Summary/Problem/Goals/Alternatives/D1/D5/D6 consequences updated; new Inclusion-criteria and Transport-and-layout design subsections; phases renumbered 0-4 (new Phase 0 transport migration, 1.5 guided memory sweep, 4 monthly hygiene automation); seed node redefined as the KB's own doc; new Success metrics section (usage, recall wins, boundary integrity, hygiene; 30-day checkpoint); Risks/Readiness/Testing updated; query commands path-neutralized to <kb-path>. todo.org: dated amendment entry + Phase 0 and 1.5 tasks added, Phase 1/2/3 bodies updated, manual-testing child gains the cross-machine round-trip check, [#D] hygiene child promoted to Phase 4 framing. Committed + pushed. Implementation hold still stands. + +** No-approvals batch: KB Phases 0-4 — Phase 0 done (18:14 CDT) + +Craig: "the word. do it all in no-approvals mode." Batch = Phases 0-4 per the ratified spec; engineering gates stay on. + +Phase 0 complete: tarball backup at ~/roam-backup-2026-06-10.tar.gz; roam copied to ~/org/roam, 63 conflict files deleted (424 org files remain); git init + initial commit 515693d as Craig; bare repo created at /var/git/roam.git (git@cjennings.net has real shell); pushed, tracking main. Old ~/sync/org/roam replaced with symlink to ~/org/roam (Syncthing will propagate symlink to other machines — they need clones, noted in archsetup handoff). Emacs: user-constants.el roam-dir defconst rewritten to ~/org/roam (live-reloaded; inbox-file/reading-notes-file defvars set explicitly — defvar reload caveat; org-roam-directory repointed; db-sync rebuilt 416 nodes). roam-sync.sh + 6 bats (red-first, all green; bare-remote -b main fixture gotcha) + systemd units installed + enabled, manual run verified. Old-path sweep: protocols.org task-list pointer, journal-entry workflow, notes template, todo.org line 6 → ~/org/roam; mirrors synced. Handoffs sent to .emacs.d (commit the constants edit) and archsetup (adopt units, other-machine clone steps). rulesets commit fcf554a pushed. + +Next: Phase 1 knowledge-base.md. + +** Phase 1 done (18:16 CDT) +claude-rules/knowledge-base.md written and committed (d071f1f, pushed). make install linked it; verified known-note query + conflict-glob exclusion with a planted file. Next: Phase 1.5 memory sweep. + +** Phases 1-4 + bookkeeping + evening inbox (18:15-18:28 CDT) + +Phase 1: knowledge-base.md rule (d071f1f), linked machine-wide, query + conflict-exclusion verified. Phase 1.5: rulesets memories swept — 3 promoted to ~/org/roam/agents/ (notify pattern, pdftools venv, gpg-agent SSH TTLs), 2 kept local (rule-encoded), ai-scripts-canonical memory de-staled (claude-templates subtree); migrate-memories handoff broadcast to 10 memory-bearing projects (work skipped per boundary; orphaned linear-emacs memory dir noted). Phase 2: seed/doc node written, indexed + resolvable by title via org-roam (420 nodes). Phase 3: wrap-it-up promotion check + mandatory "KB: promoted N / consulted yes-no" Summary line (242b95e). Phase 4: kb-hygiene.sh (awk :ID: field-split bug caught by test 4, fixed; 6/6 green, shellcheck clean) + monthly roam-hygiene timer installed/enabled; live run: 4 agent nodes, 428 files, 0 conflicts (b014095). Bookkeeping: phase tasks → dated entries, parent → DOING (manual testing + other-machine clones outstanding), spec status → implemented + history entry (97a7d63). + +Three evening work handoffs processed at the task boundary, all implement-now: Signal plugin corrected to Emacs-only per Craig's ruling — Path B removed, signel started-and-left-running (4d26552; NOTE: subject line carries an em-dash, a voice slip caught post-push); interaction.md render-merge guard (d5d5448); transcript workflow classification + Analyze-and-Extract + exit gate (df94836). Acceptance reply sent to work (...1828...); inbox empty; tree clean except this anchor. KB receipt for this session when it wraps: promoted 4 (3 sweep + seed) / consulted no (KB was the work itself). diff --git a/.claude/settings.json b/.claude/settings.json index 13cbc57..2e37bc6 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -7,6 +7,7 @@ "permissions": { "defaultMode": "bypassPermissions" }, + "model": "fable", "hooks": { "PreToolUse": [ { @@ -56,6 +57,5 @@ "remoteControlAtStartup": true, "inputNeededNotifEnabled": true, "agentPushNotifEnabled": true, - "skipAutoPermissionPrompt": true, - "model": "fable" + "skipAutoPermissionPrompt": true } diff --git a/inbox/2026-06-11-0037-from-work-2026-06-10-daily-prep-template-spec.org b/inbox/2026-06-11-0037-from-work-2026-06-10-daily-prep-template-spec.org new file mode 100644 index 0000000..f267afd --- /dev/null +++ b/inbox/2026-06-11-0037-from-work-2026-06-10-daily-prep-template-spec.org @@ -0,0 +1,307 @@ +Here's what I propose to be the new Daily Prep template with guidance for you and a strict format. Review and ask any questions you might have. + +== STARTING DAILY PREP == + +There are only two times when I run daily prep. First, when I want to create the daily prep for a day in the future. Second, when I want a day's daily prep updated. + +When creating the next day's daily prep, assemble the information and content using the following as guidance. At the end, you should review it with me and ask me if I agree on the priorities. If not, work with me to add/remove/substitute the days priorities and work blocks. that's also a trigger that the todo.org file is stale as it should be easy to identify my current priorities by looking at the toro.org file. + +Regardless of if I'm creating or updating the daily prep, if no triage-intake has been done in the last hour, starting daily prep should trigger that action first. the information coming in may impact what can be achieved that day, and we should respond ASAP by reviewing and update the daily prep with this in mind. Make sure this is in the daily prep workflow. + +== FORMAT AND CONTENT EXAMPLES == + +* Heads-Up +This is where you'll put items that might frame the day. + +Examples: + +--- + +It 's a meeting-dense morning: 09:00 SWE discussion, 10:00 Software Team standup, 11:00 General standup. Real focus time only opens at noon. + +--- +Note: this example is a standing item that's always in the daily prep. Make sure it's there. Birthdays, vacations, holidays, big events will all be in either my work calendar or my personal calendar. This is where that information should be placed. + +It's someperson and someother person's birthday today. +Happy Halloween. +Your anniversary is in 3 days. +Your trip to Tampa for SOFWeek begins on Friday. + +--- +Note: this example is a standing item that's always in the daily prep. Make sure it's there. From time-time you will have reminders that are either due, imminently due, or past due, and this should be reported. + +Reminders Past Trigger: +Asking Hayk about Kostya's contract was set for the 6/1 1:1 with Hayk which got rescheduled for today. + +--- +Note: this example is a standing item that's always in the daily prep. Make sure it's there. From time-time I will ask you to report on a metric to the daily prep and section is where that metric should be reported. + +PR Approval State Since Friday/Yesterday +- your [[linear-url] [SE-227)] [[ghe-url] [PR #222]] was reviewed and approved on whichday. It's ready to merge. +- There are X number of open PRs awaiting review. + +--- + +* Day's Priorities +When coming up with the days priorities, you'll have to consider both what's in Linear (the official company issue tracker), and what's in the project's todo.org file. + +Also, thank you Claude for adding the links to tasks, linear tickets, and pr-reviews. I know you considered where it should go and chose the org-header to make it easier to access. However, I'd prefer to have the links in the content along with all the other relevant information. Here's the format for this section along with examples. Note that the three dashes separate the examples and aren't part of the example content. + + ''' + <format> + org-level-2: STATUS [#PRIORITY] TASK-DESCRIPTION :org-tag: + <property-drawer> + + Relevant Information: (rename as appropriate) + [todo.org link] + (summary of what success is on this task, today's achievement goal, and any relevant preparation + </format> + + </examples> + + [[spec url] [somelargespectitle]]: Finish phase 2 of the spec and be ready to start phase 3 tomorrow (day's goal of a larger task) + The overall spec is due this coming Friday. After this portion, there's only phase 3 left, then you have X days for review/polish. + + --- + + [[phone-url] [phone-number]]: Call someperson and deliver somenews. (full task) + Somenews happened last week. You need to connect with someperson and let them know before someconsequence happens. + + --- + + [[document-url] [somedocumenttitle]]: Design plan to deliver proposal X (day's goal of a larger task) + Proposal is due in 2 days on Monday. + + --- + + [[linear-url] [linear-ticket-id]]: Complete Tech Debt ticket + This is also good prep for when this topic comes up in your meeting with someteammember at somemeeting on somedaywithinthe5daywindow. + + --- + + PR Review: [ghe pr-url] [pr-id - the-pr-subject-rephrased-if-more-than-40-characters]] + This has been a tricky area of the product and we have seen X number of REQUEST-REVIEWs in this area in the last week. The REQUEST-REVIEWs are mostly from someteammember, the author of this PR. + + --- + + Goal: + The deliverable you committed to Eric in the AdTech review: scan the PoL sample for over-water devices, reconstruct 2–3 device tracks, correlate to an AIS vessel, hand Eric mock data for the Figma entity view. This is the afternoon focus block at 2 pm. + + --- + + Recap and Goal: + Vulcan is SOCOM's procurement portal ([[https://www.vulcan-sof.com][vulcan-sof.com]]), where companies submit capabilities against posted opportunities. DeepSat has an account. Sarkis's [[https://www.notion.so/deepsat/Vulcan-SOCOM-Procurement-Portal-2aff237f0fee80109eb4d43ac6c91f89][Notion page]] tracks three workstreams: a NORAD/NORTHCOM J84 CORE proposal, the TE 26-3 maritime experiment submission (Orion's Belt drone-simulated VLEO repasses, dark-vessel detection, sub-30s cross-cue), and Scout Card drafts. + + Where it stands: Nerses and Hayk reviewed the Vulcan submission the night of 5/27 but never posted conclusions back to #team-internal. Eric asked the next morning (5/28 09:21 CT, ts 1779978088.694099) whether the TE-3 half is what they worked on and what the team's next steps are. His thread still has zero replies, so the reply is ~13 days late. What he needs: confirmation of the TE-3 connection plus a next-steps list. Pulling Nerses's actual conclusions fits Thursday's 1:1. + + </examples> + + org-level-2: STATUS [#PRIORITY] TASK-DESCRIPTION :org-tag: + ... + ''' + +* Meetings / Focus Blocks +The vast majority of content will be here. The meetings and blocks are listed like a schedule with tasks. All the information on Standup Briefs should go here. + +General Event Title Guidance +Note the tile is just what the calendar event subject is. No additional information. +No extraneous information (you sometimes put "personal routine" here. That's not useful or actionable information.) +Any information that goes here should be actionable information or a useful reference during the meeting. +The morning + +General Event Content Guidance + +** 08:30–09:00 — Morning Prep +Morning Prep is about doing what I need to do to prepare for the rest of the day. I read the daily prep and mentally prepare and think through the schedule. I envision what I should say in each meeting, and will spend time refreshing my memory on proposals, project status, progress against deadlines, ensuring I'm reporting everything relevant during my status reports (i.e., standup briefs). + +You will do a triage intake during the session startup (verify and raise the alarm if it's not already there). You will inevitably identify last minute cancellations, conflicts, reschedules, important news, or other items that impact my ability to achieve what I'm setting out to do today. The daily prep workflow is where you take the information from the triage intake and strategically and proactively supply me with what I need to continue to get things done. + +For instance: + +Imagine you're me and you see your boss called a one-on-one last night and it overlaps with another meeting you have to settle a question with a co-worker. The triggers: (a) it's your boss and (b) it came up last night. Those tell you whatever the meeting's about, it's going to be important. In this case, you should look at both ny calendar and Eric's calendar to see when we're available next. Identify what might be the most desirable time that we're both free and recommend it, listing the others. Then follow up with the offer: Tell me when you'd like to reschedule the meeting with Eric and I'll handle it. I'll add a cj-comment telling you which one, and then you would go draft a comment to include as a Slack message to Eric so he gets the heads-up as well, run /voice personal on it, send it, then reschedule the meeting to the time I indicated. + +Imagine your meeting got bumped an hour earlier and now conflicts with the time that was blocked off to prepare for that same meeting. You would check any of the earlier work blocks and recommend substituting a block of lesser priority, or perhaps to use 15 minutes of the morning prep's half hour. + +Example Content: + +''' +Resolve scheduling your conflict between meetingX and meetingY first thing. For MeetingX, here are the alternative dates and times everyone is available. +- someday at sometime to sometime (this is the only time when you'll have the full hour that's scheduled). +- anotherday at anothertime (this is only 30 mins. Could the meeting time be reduced only to the high priority topics?) + + +or: +- I can't find any free time on someperson's calendar. you need to connect with them directly. here's the first draft of the Slack message to send: + [message content] + +--- + +Your next meeting's agenda is to discuss how we should handle the chore queue. Review the proposal you wrote. + +--- + +Important FYI: You got a [slack-url] [Slack message]] from someperson, saying "somebignews happened." + +--- + +''' +** 09:00–09:50 — SWE Team Discussion +Note the tile is exactly how the calendar event says. No additions. + +Example Content: + +''' +Only Kostya accepted as Vrezh is at the dentist. + +Agenda: +- Discuss [Some Technical Question] +- Announce [Some Change Being Rolled Out] +- Recognize [Some Achievement] +- Resolve [Some Open Team Question] +- Communicate [Some Information] because [Why It's Important] +''' +** 10:00–10:30 — Software Team Daily Standup + There should never be a separate standup section. the daily standup briefings should go immediately under the meeting I report in. + + This is the software team's meeting. What goes here must be directly relevant to achieving the engineering goals. It's about what have I been doing to push the platform forward, or the demo forward. It's architecture docs, PRs, Linear tickets, meetings with potential partners that may have use cases, discussions about integrating the platform with other systems, security issues discussed with BBN, reviewing the Cerbicore datasets and what I discovered, + + It's not about one-on-ones, attending other standups, maintenance on my own personal tooling, updating my LinkedIn profile, the SOCOM portal next steps, sending Slack messages or sending email, meeting prep, booking travel, or interviews with people who aren't going to be engineers. + + It's not about that I met with Jason. It's about what came out of that meeting -- did Jason finish his work on the branches and CI/CD? + It's not about that I went to a manager's meeting, but it could be that Subbu talked about a new development with a potential partner or customer that has impact on the engineering team. + It's not about having a 1:1 meeting with Nerses, but it could be that Nerses wanted to see more demos in the weekly software iteration reviews. + + Though the questions are about what have I done, it's really about (a) how have I moved us closer to acheiving our engineering goals (b) what do I plan to to work on that will move us closer to achieving the engineering goals, and (c) what information do I have that might impact the team or the team's goals. + + Below the sections Yesterday, Today, and Blockers have parenthetical questions to explain what should go there. In the actual template, they should omit the questions. + + Here's a few examples of what goes in. + + --- + +Yesterday (What did I do since last time I was in this standup?) +- Completed engineering playbook v0.5 and sent to Jason, Ryan, Subbu, Eric, and Vrezh for +- Met with Eric and Ryan and Vrezh about next steps for Linear adoption. Goal is to have this in place for a Sprint Planning on Monday. +- Integrated Kostya's build-first-validate-together proposal into the SDLC (committed, pushed) +- SE-127 completed and merged. Reviewed 5 PRs that needed to be reviewed. + +Today (What will I be working on until the next standup?) +- Debug GitHub Enterprise SSH clone issue and get access to prototype repos +- Meeting with BBN to discuss them partnering on the platform's sandbox testing for the D2P2. +- I am working on the TAK server integration plan and hope to get the second section done. + +Blockers (Anything the team should know?) +- The intermittent problem with CI/CDs is now recurring and Jason Ouelette is on vacation until next week. +- Ryan wants to move to Jira because Linear can't run in a controlled environment we need for CMMC Level 3. No decision yet, and I'll keep you posted as discussions continue. + +** 10:30–11:00 — Focus Block +Focus Blocks are blocks of time on my calendar, but they are marked as free. Others will see them, and my time is open for booking if something comes up. However, they will see that I have blocked this time off for focused work, and will therefore self-select out of scheduling something if it's not important or urgent. They will just wait until my next one-on-one with them, or Slack a message asking if I can meet. These get booked at the end of the day before, and are the first things to shrink if needed. The second item to be shrunk is Lunch, but that needs to be at least a half-hour daily. + +Don't assign specific items in focus blocks. "No plan survives contact with the enemy." or "Everybody has a plan until they get punched in the mouth." + +I don't know what kind of day I'll have, how much sleep I will get, or whether something will happen that may impact my emotions. I may want to tackle the biggest thing. I may want to take it a bit easier because I don't have the focus. Let me choose. List out a few things on my task list that are a priority for me to get done this week, which are not necessarily just the top priority things. If there's a deadline I've accepted and it's around the corner, list that task, even if there are other higher priority items. If this is a short block, tell me what's in the PR queue, or recommend doing some grooming of the chores in Linear, or meeting prep for a later meeting. If it's an hour or more, list out the bigger tasks, even if they won't get to done in the time allotted. Typically, this will be a rehash of the daily priorities above. + +Since this is a time of action and there's not much time, make sure you link to all the items I might need to see. + +Here are some examples for a half hour block: + +- Recommended: merge #222 (provide the link)if re-review cleared, else chore queue (provide the link to the Linear chores). +- Review Nerses's pitch deck (provide the link) that he asked you to review. +- Draft and send a reply to Partha at BBN (link to email). Here's a first draft: (add a draft of the email to get me started). +- Review the resume that Hayk submitted for a position (link to the resume). +** 11:00–11:30 — General Daily Standup +Again, there should never be a separate standup section. the daily standup briefings should go immediately under the meeting I report in. And this is very different than the software team daily standup. This is business level. + +I need to talk about anything related to getting us closer to our business goals, and since the software team is moving the business forward, + +Did we finish a feature Nerses or Hayk wanted? +Is someone on a long vacation (so others might expect team velocity to be slower)? +Am I going on vacation within the week? Am I traveling such that I'll be difficult to reach on specific days? +How were the sessions I attended at the recent conference and what did I learn? +Did we get a decision from the partner about using their technology? +Is the team confused about something related to Hardware (Hayk), an upcoming conference we're going to (Sarkis), an operational or IT process (Subbu/Ryan), or our business strategy on some topic (Nerses). + +Same format: Yesterday (means what happened since last time I attended), Today (means what I will make happen short-term), and Blockers (issues that are concerning to me, concerning to the team, or might impact others or the business). + +** 11:30–12:30 — Focus Block +An hour block. This is enough time to make progress on some of those bigger items above. + +Recommended: +[[document-url] [somedocumenttitle]]: Design plan to deliver proposal X (day's goal of a larger task) Proposal is due in 2 days on Monday. + +[[linear-url] [linear-ticket-id]]: Complete Tech Debt ticket +** 12:30–13:00 — Lunch +Typically, this will be an hour, but on busy days, this is a half hour. This could also fall anytime between 11:00 AM and 1:30 PM. Don't have me doing any tasks or preparing for anything. This is not DeepSat time, it's personal time. +** 13:00-13:30 - Important Meeting + + +Attendees: Nerses, Hayk, Craig, Eric, Sarkis, Subbu, +dustyn.b.carroll.civ@mail.mil Zoom: +https://us06web.zoom.us/j/88416255495?pwd=iaxSSjnbiUOaVourCh755jdFmkpdGW.1&jst=2 + +[[Meeting Prep url] [Meeting Prep]] + +Summary: +This is Dusty Carroll — Civilian, J7 (Experimentation), JIATF South. +He's DeepSat's primary JIATF South contact. He shared the human impact +narrative during the Florida trip (Feb). His boss is Jeff Stahl +(Director of J7). Rob Shaw (Coast Guard, J7) and Ben Foster (Deputy +J7, built Mage modules at NGA) are his counterparts. + +This meeting hasn't appeared in previous daily preps or session notes. +First time seeing "DeepSat Updates" with a .mil attendee. Likely a +JIATF South touchpoint — treat as a customer-facing meeting. + +Add whatever it is that I need to contribute to this meeting. +Add whatever it is that I need to get from this meeting. +Add the questions you think I'll be asked and some responses or "I don't know". If "I don't know" then we need to have a block of time scheduled somewhere earlier the day before to do the preparation. Do NOT wait until the day-of-the-meeting to add a prep block of time. + +** 13:30-14:00 - Arusyak / Craig +Here's a less on what NOT to do and why: + +The KIT project handed off some documents that amounted to a meeting prep for the discussion I had with Arusyak. We prepped over a week ago, but it was on a topic I know well, so I didn't think I needed preparing. I'd just read the documents a few minutes before the meeting started for the information about her resume and to remind me of the topics I'd cover. And this is what I found in the Meetings / Work Blocks for that meeting: + +13:00–14:00 — Craig <> Arusyak sync — [[https://meet.google.com/fdp-qpgo-tex][join Meet]] (prep below) +...with nothing underneath. There was no prep below. I had minutes. I wanted to find the doc. So I used Emacs search for her name and found it only in a few places. + +There it was underneath a meeting that was labeled "16:45–17:15 — Thursday prep (next-day half hour — Thursday is heavy, so do it)" + +The recurring 2-week personal sync (resume + interview help; she's a friend, ex-Vineti engineering lead, job-searching in Lisbon — Al Jazeera contract non-renewing ~July 30). Folded in from the kit handoff. +- *The one thing to drive:* the resume formatting cycle is blocked on her. After the 5/27 call she was to send the resume as Google Docs + MS Word so you could apply formatting fixes; the source files never arrived (cold since 5/27), and everything downstream (network post, interview prep) is gated on it. Ask her directly — did she send the Google Docs / Word files, and if not, can she send them now? +- *Talking points:* (1) resume source files — get them; (2) how she's doing, emotionally and on the search (~1yr runway, Lisbon house paused); (3) Al Jazeera restructuring (PDI/PNO merger, layoffs, new CEO) — any change to the ~July-30 / two-month-buffer timeline; (4) Ali (her friend, suspected next non-renewal) — gentle check; (5) interview prep — flag it's queued and ready (question bank + STAR-L) for after the resume settles. +- *Docs in kit (review before the call):* =arusyak-resume-feedback.org=, =arusyak-resume-call-agenda.org= (5/27), =interview-prep-question-bank.org=, the STAR-L writeup, the contact profile. After the call, log the outcome back in kit (contact history + bump LAST_CONTACT/NEXT_DUE). + +First, the meeting was that day, not Thursday. It was clearly on my calendar. It had been moved a day earlier, and I remembered, but the agent didn't check. + +Also, by the time I found it, the meeting was starting. Where were the documents I'd spent time prepping on? I didn't have time to search the project for them. I expected them to be linked, not merely mentioned. + +In the end, I had to wing it. It wasn't a disaster, but I didn't achieve half of what I needed to. I failed a former employee who was looking for my help during a time of crisis. It's okay, but I felt terrible for not reviewing the document more thoroughly. Ultimately, it's my responsibility, not yours, but I do need help, and this is where you can really help: be thorough, check every meeting, and find and link all the relevant docs. I am very appreciative of the help you do give. I'm grateful for it. But I do need it to be consistent. Thank you. + +** 14:00–16:30 — Focus Block +Another big block. You know what to do now. + +Examples: + +--- + +Recommended: The deliverable you committed to Eric in the AdTech review: scan the PoL sample for over-water devices, reconstruct 2–3 device tracks, correlate to an AIS vessel, hand Eric mock data for the Figma entity view. + +[[document-url] [somedocumenttitle]]: Design plan to deliver proposal X (day's goal of a larger task) Proposal is due in 2 days on Monday. + +[[linear-url] [linear-ticket-id]]: Complete Tech Debt ticket + +** 16:30–17:00 — What Kind of Day Has It Been? +That's what I used to put as the end-of-day review and prep for tomorrow. Block this time on my calendar. + +This is where I'll summarize what happened that day and plan for the next one. We'll typically be generating the daily prep during this time. + +Note that there's no deadlines section in this daily prep template. That's because the upcoming deadlines get listed here. + +--- + +Tomorrow: SOFWeek prep +Tomorrow: Feature-flag granularity decision +Mon 5/18: Platform-architecture Tech Deck +5/17–5/21: SOFWeek* (Tampa, FL) +5/23 Fri: TAK-server plugin scenarios +5/29 Thu: STRATFI submission window opens diff --git a/inbox/2026-06-11-0037-from-work-handoff-daily-prep-rewrite.org b/inbox/2026-06-11-0037-from-work-handoff-daily-prep-rewrite.org new file mode 100644 index 0000000..e788230 --- /dev/null +++ b/inbox/2026-06-11-0037-from-work-handoff-daily-prep-rewrite.org @@ -0,0 +1,51 @@ +#+TITLE: daily-prep workflow rewrite — Craig's template spec + settled decisions +#+DATE: 2026-06-11 + +* What this is + +A full rewrite spec for =claude-templates/.ai/workflows/daily-prep.org=, from Craig's instructive template doc (written 2026-06-10 evening, filed at work:working/daily-prep-rework/2026-06-10-daily-prep-template-spec.org — READ IT; it is the source of truth and carries worked examples plus the rationale, including the Arusyak prep-orphaning failure that motivated the structural rules). This handoff carries the decisions Craig settled on top of the spec, the structure summary, and the integration points with the Manager Tools material already in the canonical. Supersedes the per-task link note sent 2026-06-10-1011 (its two asks are absorbed here). + +* Run modes (new) + +1. *Create* — build the prep for a future day (normally tomorrow, during the 16:30 "What Kind of Day Has It Been?" block). Ends with a MANDATORY priorities review gate: Craig confirms the Day's Priorities or reworks them interactively. Disagreement at the gate is a todo.org staleness signal — surface it and offer a task review. +2. *Update* — refresh an existing day's prep when the world moved (typically after a triage-intake lands something). + +Both modes: if no triage-intake ran in the last HOUR, run one FIRST. Incoming information may change what the day can achieve; the prep reacts to it, never ignores it. + +* Document template (strict) + +Three sections only. The separate Standup Briefs and Upcoming Deadlines sections are RETIRED (briefs nest under their meetings; deadlines live in the end-of-day block). + +** Heads-Up +Standing items, always present: +- Meeting-density framing (e.g. "meeting-dense morning; real focus time opens at noon"). +- Calendar events from BOTH calendars: birthdays, holidays, anniversaries, vacations, trips, big events. +- Reminders due / imminently due / past trigger (from notes.org Active Reminders + scheduled tasks). +- Requested metrics — a slot for metrics Craig asks to track. NONE ACTIVE YET (his PR-approval example was illustrative only; metric design is a coming discussion). Keep the slot, render only when a metric is active. +- The 5-day look-ahead STAYS, in Heads-Up (Craig's call 2026-06-11), with the invite quick-read + decline gate from the MT additions. + +** Day's Priorities +Sourced from BOTH Linear and todo.org. Each entry is a task-shaped level-2 header: =** STATUS [#PRIORITY] TASK-DESCRIPTION :tags:= where status/priority/tags MIRROR the linked todo.org task exactly (Craig's call). Property drawer optional. Body carries: the todo.org/Linear/PR/doc links (links in content, never in the heading), what success on the task is, today's achievement goal when the task is bigger than a day, and any relevant preparation. The big-ball daily chunk (MT) folds in here as an entry (Craig's call). + +** Meetings / Focus Blocks +The spine of the doc — most content lives here. Every calendar event is a level-2 header: =** HH:MM–HH:MM — Exact Calendar Title= (the title is the calendar subject verbatim; no annotations like "personal routine"). ALL content nests directly under the event's own header. Rules per event type: + +- *Morning Prep (08:30-09:00)* — where triage findings become strategy: conflict resolutions with both-calendar availability checks and a recommended slot, drafts pre-written (Slack reschedule messages etc., /voice personal applied), important FYIs. The worked conflict examples in the spec show the expected depth: recommend, list alternatives, offer to execute on Craig's cj-comment. +- *Standups* — the Yesterday/Today/Blockers brief nests under the standup it's reported in, never in a separate section. SWE standup content is engineering-goal material only; General standup is business-level. The spec has explicit is/is-not lists for each — carry them into the workflow as guidance (it's outcomes, not meeting-attendance: "Jason finished the branch CI/CD work", not "met with Jason"). No recurring 1:1s or ceremonies in briefs. +- *Meetings* — content: who accepted/declined when notable, attendees + join link, the meeting-prep doc LINKED (file: links, never a bare mention — the Arusyak lesson), summary, what Craig needs to contribute, what he needs to get, likely questions with answers. An "I don't know" answer forces a prep block scheduled THE DAY BEFORE, never day-of (MT schedule-the-block). Verify every meeting against the live calendar at build AND update time — times move. +- *Focus Blocks* — menus, not assignments ("no plan survives contact with the enemy"). Recommended item first, then alternates, every item LINKED. Size the menu to the block: short block → PR queue / Linear grooming / meeting prep; hour+ → the bigger Day's Priorities items. Focus blocks are calendar events marked FREE; the workflow CREATES them the day before (Craig's call), after Craig confirms the prep. First thing to shrink under pressure; lunch second, with a 30-minute floor. +- *Lunch* — 30-60 min, anywhere 11:00-13:30, NO tasks, not DeepSat time. +- *What Kind of Day Has It Been? (16:30-17:00)* — end-of-day review + next-day prep generation + the upcoming-deadlines list (this replaces the deadlines section). A recurring weekday calendar event now exists (created 2026-06-11, work calendar, event cvg1s66a9f7p19sti0i725qufc). + +* Manager Tools integration + +Already in canonical and KEPT: 5-day look-ahead + invite quick-read (now in Heads-Up), decline gate, big-ball daily chunk (now a Day's Priorities entry). NEWLY mechanical via the template: schedule-the-block (day-before prep blocks for I-don't-know questions; day-before focus-block creation), attending→contributing (the contribute/get/likely-questions trio per meeting), get-all-info (the per-meeting doc-linking requirement). The staff-meeting agenda prep (MT "Running your staff meeting") slots into the SWE-discussion meeting's content when that meeting occurs (Craig's call to fold it in). + +* Conventions this supersedes + +- The prep-doc thin-link convention (entries now carry their own context; links in body). The work project's memory layer is already updated. +- The separate Standup Briefs and Upcoming Deadlines sections in the current canonical template. + +* Sequencing + +The work project is generating Thursday 6/11's prep in the new format tonight as the worked example — expect a follow-up handoff if the build surfaces under-specified corners. diff --git a/inbox/2026-06-11-0045-from-archsetup-screenshot-py-launch-crash-on-ratio.org b/inbox/2026-06-11-0045-from-archsetup-screenshot-py-launch-crash-on-ratio.org new file mode 100644 index 0000000..dfad9f4 --- /dev/null +++ b/inbox/2026-06-11-0045-from-archsetup-screenshot-py-launch-crash-on-ratio.org @@ -0,0 +1,5 @@ +#+TITLE: screenshot.py --launch crash on ratio 2026-06-10 15:15 — roo +#+SOURCE: from archsetup +#+DATE: 2026-06-11 00:45:45 -0500 + +screenshot.py --launch crash on ratio 2026-06-10 15:15 — root cause found, harness fix is yours. Coredump stack (Hyprland 0.55.2, SIGABRT): CWindow::onX11ConfigureRequest -> CCompositor::changeWindowZOrder -> IHyprRenderer::damageMonitor -> CMonitor::isMirror. The launched app (emacs -Q, no pgtk env vars) mapped via XWayland; its configure request raced the headless-output teardown and the damage path dereferenced the removed monitor. Two fix directions for --launch: (1) wait for the client to map and close it before destroying the headless output, (2) force the Wayland backend for launched apps (e.g. GDK_BACKEND=wayland, WAYLAND_DISPLAY set, DISPLAY unset) so no XWayland surface exists to race. The other capture modes don't touch outputs and are fine. Until the fix lands, archsetup treats --launch as unsafe on live sessions (memory entry filed). Full coredump retrievable on ratio: coredumpctl info 1833 --since '2026-06-10 15:10'. diff --git a/inbox/2026-06-11-0056-from-work-four-template-refinements-from-craig-s.org b/inbox/2026-06-11-0056-from-work-four-template-refinements-from-craig-s.org new file mode 100644 index 0000000..13550f9 --- /dev/null +++ b/inbox/2026-06-11-0056-from-work-four-template-refinements-from-craig-s.org @@ -0,0 +1,5 @@ +#+TITLE: Four template refinements from Craig's review of the first n +#+SOURCE: from work +#+DATE: 2026-06-11 00:56:20 -0500 + +Four template refinements from Craig's review of the first new-format daily prep (2026-06-11) — fold into the daily-prep rewrite already in your inbox (0037 handoff): (1) When Morning Prep surfaces a scheduling question, the Slack/email draft itself goes IN the prep doc, ready to send on Craig's word — not an offer to draft one. (2) The 5-day look-ahead renders one day per line, format 'Fri 12:', 'Mon 15:', including clear days marked 'clear'. (3) Standup briefs always carry a Blockers line — 'Blockers: None' explicitly when there are none. (4) General (business-level) standup briefs exclude routine maintenance and operational items like PR reviews; foundational/strategic engineering work belongs, operations don't. @@ -1123,60 +1123,6 @@ Before any implementation: needs a real review pass on the spec, and a decision *** 2026-06-10 Wed @ 14:13:55 -0500 Noted Phase 1 already shipped; narrowed scope to the phases 2-6 decision Phase 1 (the correctness fix) is live: protocols.org documents the AI_AGENT_ID-scoped session-context path (=.ai/session-context.d/<id>.org=) and =.ai/scripts/session-context-path= resolves it. The singleton race Codex flagged is closed. What remains is the spec review plus a go/no-go on the broader runtime-neutral refactor: runtimes/ adapter manifests, generic install commands, language-bundle split, launcher refactor, local model service. -** DONE [#C] Build Craig's writing voice profile from real corpora :spec: -CLOSED: [2026-06-10 Wed] -:PROPERTIES: -:CREATED: [2026-05-29 Fri] -:LAST_REVIEWED: 2026-05-29 -:END: -Shipped across 2026-05-29 → 2026-06-10. =voice/references/voice-profile.org= is the canonical paired file: Phases 1-2 corpora measured (commit bodies 128k words + email/PR/review registers), all 45 patterns carry entries with basis and history, and every reconciliation delta landed in =voice/SKILL.md= (#13/#33 self-discipline reframing, #7 soft flag, new corpus-derived #43-#45). Extension corpora (Slack, long-form, syntactic fragment detection) deliberately not pursued. - -Build a grounded profile of Craig's actual writing voice by mining the corpora he's produced over time. The =voice/SKILL.md= patterns today are observation-derived (em-dash zero-tolerance, semicolon → period, contractions kept, sentence-fragment rewrite, felt-experience cut, etc.). Some are spot-on; others are intuition. A real corpus pass would tell us which patterns are genuinely Craig's voice and which were guesses, plus surface idioms, sentence structures, and vocabulary the current ruleset misses. - -*** Sources to mine - -- *Email* — sent folders across all three accounts (=gmail=, =dmail/DeepSat=, =cmail/Proton=). Filter to Craig-authored (not forwards or replies-just-quoting). Separate work voice (=dmail=) from personal voice (=gmail=, =cmail=) since they're likely distinct registers. -- *Commit messages* — =git log --author= across his repos. Captures terse-imperative voice. -- *PR descriptions and review comments* — same corpora. More deliberate prose than commits. -- *Org files he authored* — =notes.org=, todo bodies he typed, design docs in =docs/design/=, journal entries. Heavier on first-person voice than emails. -- *Slack/messages* — DeepSat work slack, family group, friends. Casual register. -- *Long-form artifacts* — résumé, proposals, white papers, blog posts (if any). - -Skip session-context files, which are Claude-co-written and would muddy the signal. - -*** Output - -- =voice/references/voice-profile.org= (or =.md=) — the canonical reference doc: - - Vocabulary tendencies (preferred verbs, avoided cliché classes, technical-vs-plain word choice). - - Sentence structures (typical length, conjunction patterns, parenthetical use). - - Punctuation patterns (em-dash actual frequency, semicolon vs period split, contraction rate). - - Register markers (signs of formal vs casual mode, work vs personal). - - Idioms and recurring phrasings. - - "Anti-patterns" — phrasings Craig consistently avoids that show up in AI-generated prose. -- Updated =voice/SKILL.md= patterns grounded in evidence rather than intuition. Patterns that the corpus confirms get strengthened; patterns the corpus contradicts get rewritten or removed. - -Each finding should cite at least two evidence samples from the corpora so the basis for a rule is reviewable. - -*** Approach - -Phase 1 (corpus assembly) — pull the relevant slices: sent-mail dumps, =git log --author --no-merges --pretty=format:'%B'=, =gh pr list --author= bodies, org-file extracts. Strip headers, replies-quoted blocks, signatures. Land in =voice/corpus/= (gitignored if the project's =.ai/= is gitignored, tracked if private repo with private remote). - -Phase 2 (analysis) — pass over the corpus with focused queries: distribution of em-dashes per 1000 words, semicolon count, contraction frequency by register, sentence-length histogram, top-N adjectives/adverbs, etc. Subagent dispatch fits here. - -Phase 3 (draft profile) — write =voice-profile.org= with findings + evidence. Surface contradictions with the current ruleset. - -Phase 4 (reconcile with voice/SKILL.md) — present the deltas to Craig. Each delta is one of: confirm existing rule with evidence, strengthen rule, weaken rule, add new pattern, remove unsupported pattern. Apply approved deltas. - -*** Privacy - -Email and Slack content is private. The corpus must NOT enter any commit unless rulesets stays on the private cjennings.net remote (which it does today). If a future move to a public remote is on the table, the corpus and any direct quotes have to go before that happens. The profile doc itself can stay (it's analysis, not raw content), but cite by pattern not by verbatim quote. - -*** Why this matters - -The voice skill earns its place when Craig sees the rewrite and recognizes it as his own voice rather than a "clean" AI voice that approximates him. Today the skill catches common AI tells (em-dashes, semicolons, the felt-experience tic), which is useful. Corpus-grounding would make it catch the absence of *Craig-specific positive traits* — the phrasings he actually reaches for — not just the AI traits he doesn't. - -Likely improves =/voice personal= output quality on PR bodies, commit messages, and email drafts. Compound interest over the long run. - * Rulesets Resolved ** DONE [#C] Fix =cj-scan= false positives on cj fences nested inside other =#+begin_*= blocks :bug: CLOSED: [2026-05-15 Fri] @@ -2592,3 +2538,56 @@ CLOSED: [2026-06-10 Wed] meeting-prep lives in the work project's =project-workflows/= and is general-purpose — it builds a per-meeting prep doc — but its body carries project-specific references: =deepsat/assets/= transcript paths, Linear as the tracker, =knowledge.org=. Promoting to =claude-templates= means generalizing those to project-neutral terms (the project's transcript home, the project's tracker), adding it plus its =meeting-prep.pre-wire.org= supporting doc to the =.ai/= mirror and INDEX.org, and a workflow-integrity pass. Once promoted, the daily-prep 5-Day Look-Ahead's conditional "where the project has one" reference can become a direct link. Out of the 2026-06-10 daily-prep handoff from the work project. +** DONE [#C] Build Craig's writing voice profile from real corpora :spec: +CLOSED: [2026-06-10 Wed] +:PROPERTIES: +:CREATED: [2026-05-29 Fri] +:LAST_REVIEWED: 2026-05-29 +:END: +Shipped across 2026-05-29 → 2026-06-10. =voice/references/voice-profile.org= is the canonical paired file: Phases 1-2 corpora measured (commit bodies 128k words + email/PR/review registers), all 45 patterns carry entries with basis and history, and every reconciliation delta landed in =voice/SKILL.md= (#13/#33 self-discipline reframing, #7 soft flag, new corpus-derived #43-#45). Extension corpora (Slack, long-form, syntactic fragment detection) deliberately not pursued. + +Build a grounded profile of Craig's actual writing voice by mining the corpora he's produced over time. The =voice/SKILL.md= patterns today are observation-derived (em-dash zero-tolerance, semicolon → period, contractions kept, sentence-fragment rewrite, felt-experience cut, etc.). Some are spot-on; others are intuition. A real corpus pass would tell us which patterns are genuinely Craig's voice and which were guesses, plus surface idioms, sentence structures, and vocabulary the current ruleset misses. + +*** Sources to mine + +- *Email* — sent folders across all three accounts (=gmail=, =dmail/DeepSat=, =cmail/Proton=). Filter to Craig-authored (not forwards or replies-just-quoting). Separate work voice (=dmail=) from personal voice (=gmail=, =cmail=) since they're likely distinct registers. +- *Commit messages* — =git log --author= across his repos. Captures terse-imperative voice. +- *PR descriptions and review comments* — same corpora. More deliberate prose than commits. +- *Org files he authored* — =notes.org=, todo bodies he typed, design docs in =docs/design/=, journal entries. Heavier on first-person voice than emails. +- *Slack/messages* — DeepSat work slack, family group, friends. Casual register. +- *Long-form artifacts* — résumé, proposals, white papers, blog posts (if any). + +Skip session-context files, which are Claude-co-written and would muddy the signal. + +*** Output + +- =voice/references/voice-profile.org= (or =.md=) — the canonical reference doc: + - Vocabulary tendencies (preferred verbs, avoided cliché classes, technical-vs-plain word choice). + - Sentence structures (typical length, conjunction patterns, parenthetical use). + - Punctuation patterns (em-dash actual frequency, semicolon vs period split, contraction rate). + - Register markers (signs of formal vs casual mode, work vs personal). + - Idioms and recurring phrasings. + - "Anti-patterns" — phrasings Craig consistently avoids that show up in AI-generated prose. +- Updated =voice/SKILL.md= patterns grounded in evidence rather than intuition. Patterns that the corpus confirms get strengthened; patterns the corpus contradicts get rewritten or removed. + +Each finding should cite at least two evidence samples from the corpora so the basis for a rule is reviewable. + +*** Approach + +Phase 1 (corpus assembly) — pull the relevant slices: sent-mail dumps, =git log --author --no-merges --pretty=format:'%B'=, =gh pr list --author= bodies, org-file extracts. Strip headers, replies-quoted blocks, signatures. Land in =voice/corpus/= (gitignored if the project's =.ai/= is gitignored, tracked if private repo with private remote). + +Phase 2 (analysis) — pass over the corpus with focused queries: distribution of em-dashes per 1000 words, semicolon count, contraction frequency by register, sentence-length histogram, top-N adjectives/adverbs, etc. Subagent dispatch fits here. + +Phase 3 (draft profile) — write =voice-profile.org= with findings + evidence. Surface contradictions with the current ruleset. + +Phase 4 (reconcile with voice/SKILL.md) — present the deltas to Craig. Each delta is one of: confirm existing rule with evidence, strengthen rule, weaken rule, add new pattern, remove unsupported pattern. Apply approved deltas. + +*** Privacy + +Email and Slack content is private. The corpus must NOT enter any commit unless rulesets stays on the private cjennings.net remote (which it does today). If a future move to a public remote is on the table, the corpus and any direct quotes have to go before that happens. The profile doc itself can stay (it's analysis, not raw content), but cite by pattern not by verbatim quote. + +*** Why this matters + +The voice skill earns its place when Craig sees the rewrite and recognizes it as his own voice rather than a "clean" AI voice that approximates him. Today the skill catches common AI tells (em-dashes, semicolons, the felt-experience tic), which is useful. Corpus-grounding would make it catch the absence of *Craig-specific positive traits* — the phrasings he actually reaches for — not just the AI traits he doesn't. + +Likely improves =/voice personal= output quality on PR bodies, commit messages, and email drafts. Compound interest over the long run. |
