Skip to content

docs(ste): finish Simplified Technical English — the whole workspace is at zero - #57

Merged
JamesKane merged 5 commits into
mainfrom
docs/ste-workspace-complete
Aug 23, 2026
Merged

docs(ste): finish Simplified Technical English — the whole workspace is at zero#57
JamesKane merged 5 commits into
mainfrom
docs/ste-workspace-complete

Conversation

@JamesKane

Copy link
Copy Markdown
Owner

Completes the ASD-STE100 conversion started in #56. The three crates that were
left — navigator-align, navigator-domain and navigator-ui — are now at
zero, and so is every other crate. python3 scripts/ste-check.py over the repo
reports 0.

Progress

violations files
after #56 3,277 63
after navigator-align 2,714 52
after navigator-domain 1,869 21
after navigator-ui 0 0

Commits

  1. navigator-align to zero, and the read-mapping dictionary — 557 → 0 over
    11 files.
  2. navigator-domain to zero — 844 → 0 over 31 files.
  3. Move two stranded doc commentsroh_brief and impute_state.
  4. navigator-ui to zero — 1,869 → 0 over 21 files.
  5. Move seven stranded doc comments — five relocations and two merges.

Dictionary

Each crate with no prior STE commits needed its vocabulary declared first, so
documents/STE-dictionary.md grows three sections and six Technical Names:

  • Read mapping — CIGAR · mapper · mate · minimizer · part · preset ·
    template, plus the -ing names chaining and pairing.
  • Desktop UI — chip · frame · modal · scroll area · tab · tooltip ·
    viewport · widget.
  • Four more -ing names in existing sections: clustering and inbreeding
    (Statistics), grounding (Local LLM), and coding (Genetics, the
    protein-coding sense and never colour coding).

An -ing Technical Name has to go in both the dictionary and ING_OK in
the checker, because the -ing rule never reads the dictionary. scripts/ste-check.py
also gains two false-positive fixes: sibling and substring were matching as
-ing verbs.

Declaring was kept deliberately tight. sizing, weighting, voting,
templating, formatting, leading and trailing are ordinary English used
as gerunds, so they were rewritten rather than declared.

Facts preserved

The rewrite keeps every measured number, date and sample id — that is the value
of these comments and the point of the exercise. Spot-checked across the diff:
the 99.74% minimap2 parity and its zero disagreements at MAPQ > 0, the 19.2 and
11.7 GiB index peaks, the 549 GB of dirtied memory behind the WindowServer
teardown, the 332,653-against-332,722 lockstep mismatch, 404 million secondary
records at 86.6%, the ~3–39 private-Y QC range, F_ROH ~0.008, 61 of 6,218 MDKA
names carrying HTML entities, the 24 folded branches and 1,763 SNPs of R-Z290,
the 1,200 cM and 200 cM relationship floors, and the 64 MiB worker stacks with
both recursion sources that need them.

Doc comments that were documenting the wrong item

The conversion is how these get found: a block that changes topic in the middle
is obvious once you rewrite it. Nine turned up across the three crates, and they
are moved in two commits of their own — relocating a doc changes the API
documentation, which is a different review from a change to the English. The
word-level proof for each move is in those commit messages.

Gates

  • cargo clippy --all-targets -- -D warnings clean across the workspace.
  • cargo fmt --all --check clean.
  • cargo test -p navigator-align 48 passed, -p navigator-domain 172 passed,
    -p navigator-ui 49 passed. The navigator-ui glyph tests, which parse every
    source literal, are included.
  • cargo doc produces no new warnings for navigator-align or
    navigator-domain (compared against a stashed baseline). The same check was
    not run for navigator-ui: cargo doc there resolves to a different
    toolchain fingerprint and rebuilds the whole dependency graph, so it was
    abandoned after 25 minutes. clippy::doc_lazy_continuation, which is the doc
    lint that actually breaks this build, is covered by the clippy gate above.

🤖 Generated with Claude Code

https://claude.ai/code/session_01SequryftjcFkLnjQRMKCx3

JamesKane and others added 5 commits August 23, 2026 06:05
The crate had no prior STE commits, so its vocabulary was undeclared. Adds a
"Read mapping" section to the dictionary (CIGAR, mapper, mate, minimizer, part,
preset, template), SAM under formats, and two -ing Technical Names: chaining,
the middle step of minimap2's published seed-chain-align method, and pairing,
the step that makes two mapped ends into one template. Both also go into ING_OK
in the checker, because the -ing rule reads that set and never the dictionary.
Same pass fixes one checker false positive: "sibling" matched as an -ing verb.

That is 19 of the 557 before a line of prose changed. The other 538 are the
eleven files, each carried to zero: pe.rs 119, map.rs 87, output.rs 74,
batch.rs 72, index.rs 51, map/tests.rs 38, pe/tests.rs 31, lib.rs 29,
preset.rs 21, error.rs 8, examples/map_profile.rs 8.

Every measured number survives: the 99.74% parity against the C implementation,
the 19.2 and 11.7 GiB index peaks, the 8.93 GB .mmi, the 549 GB of dirtied
memory and the 1.4x write-back overshoot, the 332,653-against-332,722 lockstep
mismatch, 404 million secondary records at 86.6% of the file, ~26% pool use over
a 3 h 40 m stage, and the 9223372036854 Mbase sentinel.

Also refreshes "Where the work stands" in the dictionary, which still listed
five finished crates as not started.

Repo 3,277 -> 2,714. Eight of ten crates at zero; navigator-ui and
navigator-domain remain.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SequryftjcFkLnjQRMKCx3
Thirty-one files, 844 -> 0. The dictionary grows by three Technical Names that
the crate needs and did not have: `clustering` (the statistical method, under
Statistics), `inbreeding` (the population-genetics term that names the F
coefficient, same section), and `grounding` (the LLM term for the facts that
hold a model to the data, under Local LLM). All three end in -ing, so each also
goes into ING_OK in the checker, which reads that set and never the dictionary.
Same pass fixes a second checker false positive of the "sibling" kind:
"substring" matched as an -ing verb.

Nothing else was declared. `sizing`, `weighting`, `voting`, `templating`,
`formatting`, `leading` and `trailing` are ordinary English used as gerunds, not
domain nouns, and they are rewritten rather than declared.

Every fact survives, including the ones the conversion had to carry across a
sentence split: the 332,653-against-332,722 style figures in filetype.rs (404
million secondary records at 86.6%, 266 matched of ~260k), the private-Y QC
range (~3-39 novel calls per WGS sample), F_ROH ~0.008 for the ground-truth
sample, the 61-of-6,218 HTML-entity count in the MDKA corpus, the ~600-700k chip
marker count, and the 16,569 bp rCRS window.

Two run-together doc comments turned up, both of the shape the dictionary's
recipe describes: `roh_brief` in brief.rs and `impute_state` in consensus.rs each
have their documentation sitting on the *next* item. This commit only separates
the paragraphs so the checker can read them; the relocation is its own commit,
because a doc that moves to a different item is a different review.

Repo 2,714 -> 1,869. Nine of ten crates at zero; only navigator-ui remains
(1,869 in 21 files).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SequryftjcFkLnjQRMKCx3
The STE conversion of navigator-domain surfaced two doc blocks that documented
the *next* item, which is the first shape the dictionary's recipe names.

`brief.rs`: the documentation of `roh_brief` sat on `ArchaicBrief`, so the
struct read as though it also put the wording on a runs-of-homozygosity verdict,
and `roh_brief` had none.

`consensus.rs`: the documentation of `impute_state` sat on the `INDEL_DERIVED`
constant, so a one-line sentinel carried a paragraph about strand-complement
matching, and `impute_state` — the canonical base-to-state projection — had
none.

Both are pure moves. No prose word changes in either file; the only difference
is one `///` line in each, the paragraph separator that a merged block needed
and two separate blocks do not.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SequryftjcFkLnjQRMKCx3
Twenty-one files, 1,869 -> 0. The dictionary gains a "Desktop UI" section for
the nouns of the egui shell (chip, frame, modal, scroll area, tab, tooltip,
viewport, widget) and `coding` as a genetics -ing Technical Name, with a note
that it is the protein-coding sense and never *colour coding*, which is a colour
code.

This crate was the largest and the most mechanical: the biggest three files
(worker.rs 374, ui/mod.rs 323, cli.rs 188) are nearly half of it, and most of
that is one-line field documentation with an em-dash aside.

Four checker behaviours only show up at this volume, and they are recorded here
because each one cost time:

  * `in flight` (17 hits), `cheap` (15) and `expensive` (9) are on the idiom
    list. They become "in progress", "the cost is low" and "costs a lot".
  * "gets Advanced" trips the passive rule, because "Advanced" ends in `ed`. So
    does "are Markdown", on `own`. Reword; do not fight the rule.
  * A UI string quoted inside a comment is prose to the checker. `Building your
    brief…` and `via Atmosphere` go in backticks, which is honest: they are
    literals.
  * The sentence splitter needs a capital after the full stop, so a sentence
    that starts with a digit, an emoji, or a lower-case crate name silently
    merges with the one before it and reports a length that is not there.

Every measured fact survives: the ~60 GB `mapped.bam`, the 1.2M-site autosomal
panel, the ~1,900 catalog strings and the eight undrawable characters they hid,
the 404-million-vs-62-million secondary-record ratio, the 24 folded branches and
1,763 SNPs of the R-Z290 backbone, the 1,200 cM and 200 cM relationship floors,
and the 64 MiB worker stacks with both recursion sources that need them.

Seven run-together doc comments turned up here, of both shapes the dictionary
names. This commit only separates the paragraphs so the checker can read them;
moving them is its own commit.

Repo 1,869 -> 0. **Every crate in the workspace is at zero.**

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SequryftjcFkLnjQRMKCx3
The STE conversion of navigator-ui surfaced seven run-together doc blocks, of
both shapes the dictionary's recipe names.

Stranded docs, moved to the item each one describes:

  detail.rs   `ystr_sequence_section` carried four docs. Three belong to
              `str_section`, `str_consensus_section` and `ystr_report_section`,
              all of which had none.
  detail.rs   `sample_pca` carried the donor-level ancestry summary, which
              belongs to `donor_ancestry_summary`.
  central.rs  `sub_bar` carried "The Subjects work area", which belongs to
              `subjects_central`.
  worker.rs   `reload_genealogy` carried the doc of `handle`, the command-to-
              event map itself.
  worker.rs   `run_chore_streaming` carried the doc of
              `deep_analyze_project_streaming`.

Those five are pure moves. No prose word changes in central.rs, and the only
difference in the other two files is the paragraph separator a merged block
needed and two separate blocks do not.

Two summaries of one item, merged:

  charts.rs   `draw_color_donut` carried both a "generic donut … labels the hole
              with the largest slice's share" summary and the pie summary that
              replaced it. The function calls `draw_pie` and ignores
              `_center_pct`, so the donut text described behaviour that no
              longer exists. The pie summary stands, with the two call sites it
              serves named.
  worker.rs   `Command::LoadYProfile` carried two summaries of the same load.
              Merged into one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SequryftjcFkLnjQRMKCx3
@JamesKane
JamesKane merged commit cfa5fdf into main Aug 23, 2026
3 checks passed
@JamesKane
JamesKane deleted the docs/ste-workspace-complete branch August 23, 2026 15:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant