- Rewrote the remaining em dashes outside docs/reviews/ (preserved as historical record, matching the alktty precedent): tests/ (313), fuzz/ (34 plus one shell comment), tasks/ (671 plus 12 kept in fences), docs/research + sdd_process + plans (525 plus 25 in fences), docs/architecture/overview.md fence labels (13), README, CHANGELOG, AGENTS.md, fuzz/README.md (176), and the .opencode/agents prompts (110) - Rewrote fenced content too: ASCII tree and module-map label separators, Rust snippet comments, and template placeholders; wire data, JSON/BAST examples, and transcripts survive verbatim - Rewrote 6 assert/expect message literals in tests/ and 2 format strings in fuzz/shared/src; no test data changed - Added Project Convention 18: no em dashes in prose (doc comments, markdown including docs/ and tasks/, agent prompts, commit messages); fence content rule, en-dash clause rule, and the no-spaced-hyphen prohibition follow alktty's convention 15 Follows6b20924(src doc comments) andcd0afe0(docs/architecture). Verification: cargo test (141 pass); cargo clippy --all-targets -D warnings; cargo fmt --check; cargo doc --no-deps; wasm check and clippy for wasm32-unknown-unknown with -D warnings; em dash grep over the repo returns matches only in docs/reviews/
3.4 KiB
id, name, status, depends_on, scope, risk, impact, level, tags
| id | name | status | depends_on | scope | risk | impact | level | tags | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| tunnels/review-002-trivial-batch | Trivial batch: D-3 (rename the overpromising schema test helper) + D-4 (trim the stale CHANGELOG preamble) | completed | narrow | trivial | isolated | implementation |
|
Description
Two trivial review 002 findings
(docs/reviews/002-graduation-implementation-review.md) batched:
each is a one-line-scale change with no behavior impact.
D-3: the test helper's name overpromises
src/params.rs:628-637: jsonschema_valid parses the value with
serde and pattern-matches the substrate string, so it validates the
serde layer, NOT the JSON Schema (the registry compiles the real
validators; adding a jsonschema dev-dependency purely for this unit
test is not warranted). The call-site
schema_rejects_unknown_substrate_value therefore promises more than
it delivers; the sibling
direct_target_schema_gates_shape_per_substrate is honest (it does
structural schema assertions and says so).
Fix: rename jsonschema_valid → serde_valid (or inline the check)
and rename the call-site test
schema_rejects_unknown_substrate_value →
serde_rejects_unknown_substrate_value (its doc comment should say
"the serde layer; the registry's real schema gate is pinned
end-to-end by the integration probes
(schema_rejects_unknown_substrate_loudly,
malformed_target_is_schema_class…, the forwarded listen: 0
gate)"). Do NOT add a jsonschema dev-dependency.
D-4: the CHANGELOG "Unreleased" preamble is stale
CHANGELOG.md's Unreleased section still opens with "implementation
is decomposed in tasks/tunnels/ and lands in the next release…
the only behavior-affecting change so far (no wire or API change at
this level yet)", written before the six graduation implementation
commits. The ### Added section below it correctly lists all six
features; the preamble contradicts the section it introduces.
Fix: trim the preamble to a one-liner (e.g. "The graduation implementation (ADRs 007/008) landed; see Added below." (the final wording is the agent's choice) or drop it.
Acceptance Criteria
- The overpromising unit test/helper renamed (no
jsonschemadev-dependency added) - The CHANGELOG Unreleased preamble trimmed or dropped
cargo testgreen (the renamed test included); clippy + fmt clean
References
- docs/reviews/002-graduation-implementation-review.md §D-3, §D-4
- src/params.rs:628-637 (the helper + call-site)
- CHANGELOG.md (the Unreleased preamble)
Notes
Agent fills during implementation.
Implementation Notes (2026-09-20)
- D-3: inlined the honest serde check directly into the renamed
test
serde_rejects_unknown_substrate_value(thejsonschema_validhelper deleted, since it had exactly one call-site, and itsmatches!-with-guard body was convoluted beyond its job). The doc comment names the integration probes that pin the real registry-side gate end-to-end. Nojsonschemadev-dependency added (the structural-assertion siblingdirect_target_schema_gates_shape_per_ substrateis untouched and stays honest). - D-4: trimmed the preamble to the one-liner ("The graduation
implementation … landed; see Added below."); the stale
tasks/tunnels/sentence and the "only behavior-affecting change" claim are gone. - Verification:
cargo fmt --check,cargo clippy --all-targets -D warnings,cargo test(86 default tests + 2 doc-tests) all green.