Toward Chatter 1.0
Status: Current Last updated: 2026-10-20 (commit f7e32e22)
This is the public readiness contract, not a certificate that its conditions have been met. Candidate acceptance requires revision-bound results for each applicable condition; source descriptions and test names below are not receipts. Version 1.0 means a documented compatibility contract and reproducible evidence, not merely a release-number change. No date is promised here.
Where the numbers live
just spec-status reports the current spec counts (error specs by status,
examples verified, deferred or failing) and the CHECK assessment summary. These
are spec and example counts, not a count of independent validation rules. To
inspect the deferred specs, run
cargo run --manifest-path spec/Cargo.toml --bin spec_status -- --deferred:
prioritize rules reachable through supported CHAT input, preserve legal and
invalid examples together, and use the observation snapshot to adjudicate
backend differences.
The generated CHECK assessment owns the current scope, adjudication counts, completion status and reopening criteria. This readiness record does not maintain a second CHECK status.
Release conditions
- Define the stable CLI, exit-code, JSON/schema and Rust API surfaces. State which surfaces remain experimental and test the chosen compatibility contract.
- Adjudicate every deferred spec for the stable surface. Implement missing behavior or document why the rule is deprecated, unreachable or deferred; do not activate a spec merely by changing its status.
- Ground CHECK obligations against an identified executable and fixture set. Keep deliberate divergences justified in the manifest. Every observed disagreement needs a spec or validator adjudication before data repair.
- Review typestate transitions at parsing, validation, repair and writing. Output-producing APIs must consume the evidence their operation requires; a curated label, parsed AST or recovered node is not proof of validity.
- Require one-way backend error detection: every tree-sitter error must also yield some error through the corresponding supported re2c API and validation policy. Warnings and internal tool failures cannot satisfy detection. Keep valid controls and isolated faults; identical diagnostics or recovered models are not required. See the backend contract.
- Keep generated artifacts current and reader-facing documentation consistent with actual commands, validation behavior and release mechanics.
- Reach 100% handwritten primary parser/model/validation/transform line, region and branch coverage through canonical public workflows. Report generated code separately and prove source/feature completeness independently. Approved fault-injection or boundary evidence is a separate track, not a substitute for canonical coverage. A zero-hit recovery branch needs an actual invariant argument before removal; measurements alone do not prove unreachability.
- Verify registry-resolved
cargo installfor CLI and LSP as well as binary artifacts, supported platforms, current stable Rust and the chosen API compatibility surfaces. There is no older-compiler or fixed-MSRV promise; record the exact Rust toolchain used for candidate verification. Local path installs do not establish registry resolution or clean-machine installation. Include LSP protocol and native desktop workflows, not only compilation or transport-double checks. - Review all public documentation by its owner, including runnable tutorials, expected outcomes and safe recovery. Have an independent operator perform contributor and release/recovery drills; an author-run exercise on an already provisioned machine is not independent handover evidence.
- Complete the approved name-pseudonymizer scope after higher-priority re2c obligations. Partial implementation does not waive its CLI, policy and documentation acceptance; real-data operation has separate authorization.
- Pass the established release gate and platform jobs on the exact release commit. Verify packaged artifacts and deployment using the release runbook.
Evidence boundaries already in place
These are implemented mechanisms on which the release conditions build. Constructor, policy, wire-format and real public-boundary evidence still needs to match the candidate. A private constructor or named gate is not proof that its admission logic or test instrument is complete.
- CHECK mapping audit. It reads the compiled spec registry, renders only mapping evidence (unmapped or nonempty curated states) and has a report-currency integration gate. Explicit CLAN grounding cannot silently succeed without its wrapper.
- Source-bound diagnostic indexes.
SourceIndex<'source>owns the line boundaries and immutably borrows their source; its constructor is the only way to pair them, so a line map from another source cannot be supplied. Indexed callers useenhance_errors_with_index. One-off lookups scan the source prefix; repeated batches use one explicit index (O(source bytes) construction, O(log lines) lookup). - Checked diagnostic presentation.
SourceDiagnosticretains immutable original evidence and separately admits its primary/label ranges for display. Unavailable context carries a reason, not guessed coordinates; display-local spans cannot re-enter raw-source enhancement. Readable ranges do not establish diagnostic/source origin, even if two sources have equal lengths. - Prosodic validation.
Wordpasses through a privateProsodicWordmeasurement before its prosodic checks. It borrows the word immutably and owns the stress counts and the first and last spoken positions; only its constructor can assemble them, so they cannot describe a different word or outlive a mutation. - JSON conversion.
JsonSchemaPolicyselects serialization after the shared named CHAT parse, so skipping schema validation cannot discard transcript identity or bypass E531. - Deserialized model values need validation. CHAT text cannot construct an
empty text, phonetic or shortening segment, so E251 is implemented at the
model validation boundary (serde-constructed values), covered by
test_e251_deserialized_word_content. A wrapper type’s name is not evidence that deserialized content is valid. - Schema. The generated JSON schema is native Draft 2020-12, with
$refsiblings kept as the dialect allows; consumers must support that dialect. The generatedBracketedItemdefinition is exercised bygenerated_ref_siblings_enforce_tag_and_payload.just schema-genis an explicit operation; the normal suite checks currency without writing it. - Generated outputs preserve unchanged files. Generators publish through
scripts/generate_if_changed.py(staging, atomic replace, identical bytes keep their mtime, a failed generator leaves the existing file). The spec artifact writer deletes only explicitly retired names in shared directories, andGeneratedDirproves exclusive generated ownership before pruning.just node-types-checkandjust grammar-generate-checkverify these. See Testing. - Publication set. The publication check derives every non-first-wave
workspace package from Cargo metadata and requires
publish = falsefor it;--metadata-onlyruns it without package assembly. It is evidence of publication policy and metadata only; full package and registry verification remain part of the release review. - re2c backend. It borrows the caller’s source, owns only reconstructed
subtoken text (
Cow<str>) and has no productionBox::leak.just verify-vendored-lexerconfirms the committed lexer against the pinned generator.SinTier::from_tokensreturnsResult; JSON remains an unvalidated boundary, so utterance validation descends through%sinitems to report empty tokens.
Reproducing the CHECK evidence
From the Chatter checkout:
cargo test -p talkbank-parser-tests --test integration check_mapping_audit:: --offline
cargo test -p talkbank-parser-tests --test integration check_validity_parity:: --offline
CHATTER_CLAN_RUN=/path/to/clan-run.sh \
cargo test -p talkbank-parser-tests --test integration clan_check_grounding \
--offline -- --ignored --nocapture
The wrapper resolves its default CHECK executable from the CLAN checkout;
CLAN_BIN_DIR selects another binary directory. Retain the file-mode PTY
wrapper. Record the CHECK executable, wrapper and parity manifest SHA-256 and
the CLAN checkout HEAD with any result: the executable hash identifies what
actually ran, while the checkout HEAD identifies only the source inspected.
These results cover the committed fixture set, not all possible CHAT input.
This page last changed: 2026-10-20 (commit f7e32e22). The whole book last changed: 2026-10-27 (commit 5bfee2f9).