Skip to content

feat(journal): pin the report-tone contract — a narrative engineering report, not a diary (#2711)#2722

Merged
rysweet merged 1 commit into
mainfrom
feat/issue-2711-change-the-tone-of-simards-journal-so-it-no-longer
Jul 6, 2026
Merged

feat(journal): pin the report-tone contract — a narrative engineering report, not a diary (#2711)#2722
rysweet merged 1 commit into
mainfrom
feat/issue-2711-change-the-tone-of-simards-journal-so-it-no-longer

Conversation

@rysweet

@rysweet rysweet commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Closes #2711.

What

Simard's daily journal must read as a professional NARRATIVE ENGINEERING & RESEARCH REPORT — third-person, factual, reflective prose — and never as a personal diary ("Dear diary", confessional "I, Simard", cutesy sign-offs).

That voice is already enforced in three places on main:

  • the two journal recipe prompts (journal-narrative.yaml, journal-plain-language.yaml) mandate the report voice and forbid the diary voice;
  • the deterministic offline pipeline scrubs diary phrasing via the "dear diary" -> "" glossary;
  • lib tests assert its absence in generated output.

The one untested surface was the prompt assets themselves plus the end-to-end anti-diary guarantee. This PR pins that contract and closes the gap.

Changes (additive, back-compatible)

  • tests/journal_report_tone_contract.rs — hermetic, offline test:
    • Part A: both journal recipe YAMLs MANDATE the report voice and FORBID the diary voice. Asserts the prohibition instruction is present (not the mere absence of "Dear diary", which legitimately appears inside the negative instruction and the glossary).
    • Part B: injected diary phrasing is scrubbed from the generated narrative; both active-day and quiet-day pipelines stay report-framed (## Overview, no I, Simard); glossary backstop retained.
  • src/journal/types.rs — fix a stale "diary-like narrative" module doc comment to match the enforced third-person report voice.
  • Docsdocs/concepts/journal-report-tone-contract.md (the tone contract), linked from docs/index.md and the mkdocs Concepts nav.

Verification

  • cargo build
  • cargo test --test journal_report_tone_contract — 6/6 pass ✅
  • cargo test --lib journal:: — 60/60 pass ✅
  • pre-commit (fmt, clippy) and pre-push (release lib tests, all-targets clippy) hooks pass — committed/pushed without --no-verify

No production behavior change, no new identifiers, no stray println!/eprintln!.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

… report, not a diary (#2711)

Simard's daily journal already renders as a professional NARRATIVE ENGINEERING
& RESEARCH REPORT (third-person, factual, reflective prose) rather than a
personal diary — the two journal recipe prompts forbid the diary voice, the
deterministic offline pipeline scrubs it via the `"dear diary" -> ""` glossary,
and lib tests assert its absence. The one untested surface was the prompt
assets themselves and the end-to-end anti-diary guarantee.

This change pins that contract and closes the gap:

- Add tests/journal_report_tone_contract.rs — a hermetic, offline test that
  (A) asserts BOTH journal recipe YAMLs MANDATE the report voice and FORBID the
  diary voice (asserting the prohibition INSTRUCTION is present, not the mere
  absence of "Dear diary", which legitimately appears inside the negative
  instruction), and (B) proves the deterministic pipeline strips injected diary
  phrasing and stays report-framed (`## Overview`, no "I, Simard").
- Fix a stale "diary-like narrative" doc comment in src/journal/types.rs so the
  module docs match the enforced third-person report voice.
- Document the tone contract: docs/concepts/journal-report-tone-contract.md,
  linked from docs/index.md and the mkdocs Concepts nav.

Additive and back-compatible: no production behavior change, no new
identifiers, no stray println!/eprintln!. cargo build + the journal test suite
are green.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rysweet rysweet force-pushed the feat/issue-2711-change-the-tone-of-simards-journal-so-it-no-longer branch from 92fb2d8 to 54b6ae0 Compare July 6, 2026 20:16
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

📊 Coverage Summary

Generated by cargo llvm-cov --workspace --summary-only (nightly, excluding test files)

Module Lines Covered Coverage
Total 146828 122478 83.4%

Coverage data from CI run. Test files matching tests?/ are excluded from line counts.

@rysweet rysweet merged commit bbdd81b into main Jul 6, 2026
17 checks passed
@rysweet rysweet deleted the feat/issue-2711-change-the-tone-of-simards-journal-so-it-no-longer branch July 6, 2026 20:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant