Repository navigation
The 0.8.0 release build stopped before PyPI, so 0.9.0 is the first PyPI release
after 0.7.0 and carries everything listed under 0.8.0 as well. Detector rules
stay the published v0.5.2 rules (fingerprint sha256:9f78a7484bb20f84), and
with no project config and no domain profile, command output is byte-identical
to 0.8.0.
One release line. main now carries everything released from release/0.5.x
(0.5.1 to 0.8.0), so every later release comes from main.
- The writing-process record, disclosure statements and the review desk come
over frommain:articulate process,articulate discloseand
articulate desk.fixandpolishadd an assistance entry to a document's
process log when it has one. These commands add no detector rule and
change no finding. - Detector rules stay the published v0.5.2 rules (fingerprint
sha256:9f78a7484bb20f84), so every 0.7.0 and 0.8.0 receipt still verifies.
The reworked detector, the fairness harness andcheck --house-notesthat sat
onmainchange findings, so they stay out of this line until a reviewed
ruleset change. Their history stays reachable frommain. fix,polishandplantake--allow-change KINDS, and the MCPfix,
polishandedit_plantools takeallow_change, so an edit can update a
number, link, citation, quote or other named kind of protected content on
purpose. Each allowed change is listed inallowed_changesin the result and
the editor receipt. The plan binds the list, so a submission cannot widen it.
Disclosure lines, added first-person sentences, HTML and math can never be
allowed. Plans that allow nothing keep their old schema and plan IDs.fix,polishandsubmittake--explain [json|text], and the MCPfix,
polishandedit_submittools takeexplain, for a change report: each
changed sentence before and after, the findings it cleared, kept or added,
the paragraphs the guard kept and why, and each allowed change.- Five domain profiles add rule packs for one kind of writing:
ux-microcopy(UI string length, case, vague errors and link text),
code-review(condescension, absolutes and requests with no reason),
plain-language(reading grade, long sentences and wordy phrases),
controlled-english(sentence length, one instruction per sentence, idioms,
phrasal verbs and vague pronouns; no ASD-STE100 conformance is claimed) and
rfc-keywords(normative-specplus RFC 2119 and RFC 8174 keyword checks).
Choose one with--profile, an in-filewriting-profile:tag, the LSP
server or an edit plan. The packs run after the detector, so the detector
rules, every existing profile and every existing receipt are unchanged.
Receipts under a domain profile record anextension_fingerprint, and a
pack change makes them read Unverifiable.python -m articulate.benchalso
runs the new domain regression corpus. - The hosted MCP service accepts edit plans built under a domain profile.
It refused them before. A plan whose domain profile was altered is still
refused. - A project config file,
.articulate.json, found by walking up from each
file (nearest wins). It maps path globs to profiles, adds banned and
preferred terminology with their own rule ids, allows terms of art, freezes
terms that every rewrite must keep, and tunes rule-pack options.check,
score,receipt,plan,judge,fixandpolishtake
--config PATH|none, andarticulate config PATHshows what applies to a
file and why. Terminology findings appear in check text, JSON, SARIF,
per-span verdicts, LSP diagnostics and receipts. Receipts embed the project
rules with their hash, so they replay anywhere; an edited payload reads
Unverifiable. A malformed config stops the command with exit 2, the file and
the reason. With no config file, output is unchanged. - The Windows x64 native package now carries the house voice spec. The 0.8.0
release build stopped because the frozen server could not find that file at
start-up, so 0.8.0 never reached PyPI. The release check now lists all 17
local tools and runshouse_transformin the frozen binary.