build-number
duration-label: 10m 5s
started-label-colon: time-days-ago
Parse traced readings and stream commands instead of calling them text
Output::lines was a three-way branch with a catch-all, while CG_LINE 850
lines below it encodes five alternatives. Two of them fell through to
Block::Text: `;\t+…` traced removed readings (group 8) and <STREAMCMD:…>
(group 7). blanktag marks Text as not part of the stream by prefixing
';', which is correct for foreign lines and destroys these two — a trace
line came back out as `;;\t"mun" …` and a flush as `;<STREAMCMD:FLUSH>`,
commented out. Both also got folded into blanktag's whitespace FST
lookup, where the C++ only ever puts `:` blanks.
Removed readings go *into* the cohort as Reading.removed rather than
beside it, matching the C++ (which collects them in `readings`). As a
sibling block they would have been deferred past their own cohort: iter
only drains the pending-text deque when no cohort is open. The ';' is
stripped in lines(), before rfind('\t'), so a removed sub-reading's
depth is right rather than off by one. Display re-emits it, so a trace
stream round-trips byte-for-byte.
Cohort::kept() is the analysis view. It is not, however, usable
everywhere: three clusters index-couple, and filtering one end of one
desyncs the indices and panics when a cohort's last reading is removed.
So indices stay over the whole vector and the filtering happens wherever
an index space is owned — build_reading_hierarchy emits no node for a
removed reading, keeping speech's three indexing sites valid untouched;
group_readings keeps removed slots so run_cg re-emits verbatim for free,
and generate_group plus the two suggest checks filter instead.
proc_reading's fold now walks a kept index list, counting the '#'
separator off kept rather than total.
Two latent bugs fell out. cgspell's re-emit and blanktag's process_cohort
both rebuilt reading lines by hand without the ';', so a removed reading
would have been silently promoted to a kept one — and blanktag would
have appended whitespace tags to it, which blanktag.cpp:90 explicitly
refuses to do. Both go through Display now. cgspell's is_unknown no
longer fires on a '?' the grammar already removed and hands the cohort
to the speller.
jobs-heading
divvun-actions cidivvun-actions ci
ran-in▶
lib-build-aarch64-apple-darwin./x build-lib --target aarch64-apple-darwin
mkdir -p libdivv...
ran-in▶
lib-build-x86_64-unknown-linux-gnu./x build-lib --target x86_64-unknown-linux-gnu
mkdir -p lib...
ran-in▶
aarch64-apple-darwin - Build./x build --target aarch64-apple-darwin
mv target/aarch64-ap...
ran-in▶
build-aarch64-pc-windows-msvcuv venv --python 3.12; uv pip install pyyaml setuptools; $en...
ran-in▶
build-x86_64-unknown-linux-gnu./x build --target x86_64-unknown-linux-gnu
mv target/x86_64...
ran-in▶
build-x86_64-pc-windows-msvcuv venv --python 3.12; uv pip install pyyaml setuptools; $en...
ran-in▶
lib-build-x86_64-pc-windows-msvcuv venv --python 3.12; uv pip install pyyaml setuptools; $en...
ran-in▶
lib-build-aarch64-pc-windows-msvcuv venv --python 3.12; uv pip install pyyaml setuptools; $en...
ran-in▶
aarch64-apple-darwin - Signecho '--- Downloading unsigned binary'
buildkite-agent artif...
not-started▶
Publish (Dev)divvun-actions run divvun-runtime-publish
not-started▶