aboutsummaryrefslogtreecommitdiff
path: root/voice/references
Commit message (Collapse)AuthorAgeFilesLines
* feat(voice): expand skill to 45 patterns with attestation receipts and ↵Craig Jennings4 days1-6/+171
| | | | | | | | | | | | artifact budgets Two patterns kept failing in practice despite being documented (#40 praise asymmetry and the #38 terse cut), so I made the walk verifiable and closed the content gap behind tangled review text. The high-recurrence set (#13, #37, #38, #40, #42) now gets per-pattern attestation receipts. The anti-AI audit runs after the terse pass so the audited text is the text that ships. Short personal-mode artifacts get a compact output format, and a write-back step puts the voiced text in the file the publish flow posts from. Four patterns are new: #42 finding stems (one claim per sentence in review findings), #43 single-sentence paragraph cadence, #44 parenthetical asides, #45 declarative register marker. #37 exempts verdict formulas. #40 covers verification narration. #13 and #33 carry the self-discipline framing. A per-artifact budgets table makes terse a checkable budget instead of an adjective. The profile gains paired entries with the approved worked examples, and commits.md plus no-approvals.org drop hardcoded pattern counts so the next addition doesn't re-drift them.
* fix(voice): make the terse cut a mandatory final passCraig Jennings9 days1-0/+4
| | | | | | | | Pattern #38 (omit needless words) was one of 41 walked mid-list, so it got glossed as a checkbox instead of the real "cut it in half" sweep. A commit message went out today needing two manual Orwell-walk requests before it read terse, even though /voice personal had run. The rule already said to cut hard. The gap was position. Buried in the middle of the walk, #38 lost to the categorical detectors that come back clean while the text still runs a third too long. I moved it to an explicit standalone last step in the SKILL.md Process, run after every other pattern and right before the draft is shown. Now the first draft the user sees is already terse, not terse only after they ask. Profile §38 gains an execution-position rule and a history entry. The commits.md publish gate points at #38 as the last pass.
* docs(voice): generalize §38 from padding list to omit-needless-words walkCraig Jennings12 days1-4/+17
| | | | §38 was a wordlist match against named padding ("worth noting", "obviously"). A PR-review comment cleared that list and still ran a third too long on ordinary verbosity the list never names: "is the same change that already merged via" for "landed on", restated subjects, throat-clearing lead-ins. So §38 becomes two passes. The named list runs first, then a real per-sentence sweep whose forcing test is to delete half the sentence and keep only what changes meaning. I renamed "Rhetorical Padding" to "Omit Needless Words" and added a generic-verbosity example pair that carries no padding word. I updated SKILL.md and voice-profile.org together per the pairing rule.
* docs(voice): Phase 2 corpus findings: email + PR registers added to ↵Craig Jennings2026-05-291-9/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | voice-profile.org Phase 2 of the writing voice corpus adds four sub-corpora to the profile: personal email (1139 messages, 283k words), work email (22 messages, small sample), PR descriptions (9 PRs), and PR review comments (3 comments, very small sample). Mu queries on local maildirs and gh API calls on the cjennings github identity. Signatures, quoted replies, and forwarded blocks stripped before analysis. No corpus files written to disk. The headline finding is the register split. Phase 1's commit-prose signal does not generalize cleanly. Em-dashes and semicolons are concentrated in commit prose (3.49 and 3.16 per 1000). Conversational and PR prose run an order of magnitude lower (em-dash 0.28 in personal email, 0.00 in PR review comments). Semicolon shows the same shape (0.64 in personal email, 0.00 in PR comments). The personal-mode rules on those still earn their place, but the basis shifts. The rules mostly enforce what is already true for non-commit registers. Contractions invert the pattern: commits 3.57 per 1000, personal email 38.52, PR review comments 50.78. The Phase 1 curiosity (I'm and I'll surprisingly rare relative to standalone I in commits) is resolved as a register effect. Personal email shows I'm at 6.04 per 1000 vs standalone I at 36.91, near natural English. Craig's voice is heavily-contracted in conversational prose and uniquely suppresses contractions in commit prose. The contraction rule is strongly confirmed in the registers where contractions are most expected. Updates land in: - Top-level Corpus section: a new Phase 2 subsection with the four sub-corpora and a cross-register findings table. - Curiosities (resolved by Phase 2) section: I'm/I'll rarity puzzle answered. - §7 (AI vocabulary) Basis: cross-register watch-word measurements. Comprehensive is concentrated in commits. Leverage shows up modestly in personal email. - §13 (em-dash) Basis: register split documented. - §32 (first-person) Basis: standalone I rates across all five registers. - §33 (semicolon) Basis: register split parallels em-dash. - §34 (contractions) Basis: register inversion documented, Phase 1 curiosity resolved. - §38 (terse cut) Basis: single-sentence-paragraph rate across registers, highest in PR descriptions. AI tells stay near zero across all five corpora. Leverage 18 occurrences in personal email is the only non-zero hit on the watch-list outside commits.
* docs(voice): scrub prose em-dashes from voice-profile.orgCraig Jennings2026-05-291-20/+20
| | | | | | | | | | | | | | | | | | This hygiene sweep covers the profile's prose sections (Problem, Basis, History, Phase 1 findings, Phase 2 list) where em-dashes had carried over from the original SKILL.md text. 21 prose em-dashes were replaced with context-appropriate punctuation (periods, colons, parentheses, or rewords). Eight em-dashes are preserved as legitimate exceptions: the literal symbol reference in §13 Rule, §13 Before example (shows source text with em-dashes), §36 Before example (felt-experience tic), §38 heading "Terse Cut — Rhetorical Padding" (paired with SKILL.md heading verbatim), §39 Before example (WARN output format), §40 example dialogue (shows what a kind correction reads like). The profile now follows its own rule for prose voice. The known follow-up flagged in 10d0bc1's commit message is closed.
* docs(voice): complete the SKILL.md / voice-profile.org structural splitCraig Jennings2026-05-291-0/+1177
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backfills the remaining 40 patterns into the paired source-of-truth shape Pattern 13 demonstrated in 296b2e6. Each pattern in SKILL.md now collapses to a mode-tagged header plus a one-line Rule plus a profile pointer. The full Problem, Basis, Before/After, Detection, and History land in the corresponding voice-profile.org §N section. Sizes: - voice/SKILL.md: 678 to 437 lines. - voice/references/voice-profile.org: 134 to 1311 lines. - Net: 1297 insertions, 360 deletions across both files. Mode-tag conventions: general-only patterns (#1-12, 14-16, 18-31) tagged [general]. Prose+personal patterns (#33-38, 41) tagged [prose · personal]. Personal-only patterns (#32, 39, 40) tagged [personal]. Pattern 13 keeps its dual-mode tag (general overuse-reduction vs prose/personal zero-tolerance). Corpus-confirmed Basis entries cite the Phase 1 measurements for patterns 7, 17, 22, 32, 33, 34, 38. All other patterns are tagged observation-derived with the appropriate source (Wikipedia Signs of AI Writing, Strunk and White, Orwell, Plain English, Garner, or Craig's commits.md / interaction.md rules). Seven em-dashes were caught in the new SKILL.md Rule lines during a post-migration spot-check and rewritten as periods or colons. The em-dash on Pattern 13's Rule line stays because the rule references the symbol literally. Known follow-up: the profile's prose sections (Problem, Basis, History) still contain em-dashes carried over from the original SKILL.md Problem paragraphs. They don't break the loading model but they do violate the rule the file documents. A separate hygiene pass can scrub them. The em-dash sweep was not bundled here so the migration shape stays the deliverable. Bulk migration was dispatched to a subagent with strict format requirements. Spot-checks of patterns 1, 13, 17, 32, and 41 confirmed the shape lands correctly across all four mode-tag conventions.
* docs(voice): split SKILL.md and voice-profile.org into paired ↵Craig Jennings2026-05-291-1/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | source-of-truth, Pattern 13 worked example This is option C from the structural-split proposal. SKILL.md becomes the thin rule-set. voice-profile.org becomes the canonical home for rationale, basis, examples, and per-pattern history. Pattern 13 is migrated as the worked example to confirm the form. The remaining 40 patterns are scheduled for a backfill pass. SKILL.md gains a Source of Truth section near the top stating the pairing rule. Every change to a pattern must land in both files. A SKILL.md edit without a profile update is incomplete. A profile update without a SKILL.md edit is fine. Pattern 13 in SKILL.md collapses to a single Rule line plus mode tags plus a pointer to voice/references/voice-profile.org §13. The Problem paragraph, the Mode-dependent-strength paragraph, the Note-on-basis paragraph, and the Before/After examples all move to the profile. voice-profile.org gains a How this combines with SKILL.md preamble that names the pairing rule explicitly. Pattern §13 lands with all the migrated content plus a History section recording the prior commits (original SKILL.md entry, the 2026-05-26 prose-mode addition in 4fac2a0, the 2026-05-29 basis note in c3cf9a5, and this migration). If Craig confirms the shape, the next pass backfills patterns 1 through 12 and 14 through 41 in the same form.
* docs(voice): land Phase 1 voice profile derived from git-commit corpusCraig Jennings2026-05-291-0/+89
Phase 1 of the writing voice profile TODO (filed 7a861ed). The work covers corpus assembly, statistics, and a cross-check against the 41 SKILL.md patterns. Email, PR, Slack, and long-form sources deferred to Phase 2. Corpus: 5355 commits, 1895 with non-trivial bodies, 128608 words across 33 repos. Strong findings: - Pattern 17 (no emojis), Pattern 7 (AI vocabulary), Pattern 22 (filler), Pattern 32 (first-person), Pattern 34 (contractions), and Pattern 38 (terse cut) are all confirmed by direct corpus measurement. - Pattern 13 (em-dash zero-tolerance) and Pattern 33 (semicolons to period) contradict the corpus. Craig USES em-dashes at 3.49 per 1000 words and semicolons at 3.16 per 1000 words, rates comparable to AI-generated prose. The rules are self-discipline, not habit-reflection. SKILL.md should say so honestly. - Pattern 7 watch-word "comprehensive" appears 42 times in the corpus while every other watch-word clocks zero or one. "comprehensive" is genuine Craig vocabulary. The rule should pull it from the watch-list or flag only when it co-occurs with other AI tells. New patterns the corpus suggests adding: single-sentence-paragraph cadence (41.1% of paragraphs are exactly one sentence), parenthetical density (23 opening parens per 1000), declarative-default register (0.33 question marks per 1000). Six concrete SKILL.md edits proposed in the doc, none applied. The deltas await Craig's call. Phase 2 sources are documented in the doc body.