Repository navigation
You can now see the rhetorical devices in a draft, hear the findings read
aloud, and see how much of each property an edit kept. The intensifier rule no
longer blocks learner writing under the default profile.
-
filler-intensifierno longer blocks under the default profile. It still
shows on every report, as a LOW finding labelledreport only:. On the Liang
et al. (2023) essays it blocked 26 of 91 TOEFL learner texts against 2 of 70
length-matched US college essay windows. With the change, the TOEFL minus
college blocked-rate gap on a held-out half goes from +0.24 to 0.00. A profile
that wants the rule to block names it ingate_promote. The decision record
isdocs/calibration.md. -
A HIGH or MEDIUM finding inside a quotation attributed to someone else (a
speech or citation verb beside the quote) moves to LOW with the label prefix
quoted:. Quotation marks around your own paragraph change nothing. -
Both changes live in a new layer,
articulate.calibration(calibration/1),
after the pinned detector. The ruleset and its fingerprint are unchanged. A
receipt names the layer when it moved a finding, and receipts made before it
still verify. -
articulate devicesreads thirteen rhetorical devices: antithesis,
tricolon, anaphora, chiasmus, alliteration, assonance, polysyndeton,
asyndeton, anadiplosis, epizeuxis, isocolon, zeugma and oxymoron. It reports
where each one is and never gates. Rates on a held-out set written without
sight of the readers are indocs/devices.md. -
--speakand--ssmlonarticulate devices, and--speakon
articulate check, give a script of the findings to read aloud. -
The change report from
--explaincarriessurvival: a clarity value for
each fact, device, rhythm, sentence order and register, 1 kept, below 1 lost. -
Reports and receipts now name their limit field
scope, and each scope says
what the result covers. The field was nameddoes_not_provebefore. These
schemas move to version 2: changes, meaning, corpus-report, corpus-receipt,
desk, interview, titles, restructure, voice-compare, house-receipt,
process-summary, editor-receipt and the dialogue report.articulate verify
still accepts version 1 corpus receipts, voice comparisons, house receipts and
process summaries. To read either version in your own code, readscopeand
fall back todoes_not_prove;articulate.scope.scope_ofdoes this. -
Tool descriptions say "Runs on your machine". The findings tools say "Use the
findings to improve writing. Use other evidence to decide who wrote a text."
The CLI describes Articulate as a tool that finds writing patterns and shows
where they are. -
articulate campaignreads a JSON list of short social texts and reports
promotional templates in posts, stock-persona slot grammar in bios, and
clusters of near-duplicate or templated posts with their shared skeleton.
Each finding names the pattern, its offsets and its cost to a reader. The
report format isarticulate-campaign-report/1, with a JSON schema at
docs/campaign-schema.json. Python API:articulate.campaign.analyze. -
A labelled synthetic corpus in
corpus/campaign/with ESL, dialect,
translated, code-switched and non-English hard negatives, a per-platform
split, a per-stratum fairness bound and controls that must fail. Run it with
python -m articulate.campaign_bench. No change to the prose checker or its
ruleset.