Potential quality-improvement measures (the test suite itself is already strong: golden files, PTY suites, ASan/UBSan/TSan, fuzzing, completion-parity, FFI-poison gate). These are about automation, measurement, and project hygiene.
-
Coverage target (
make coverage). Clang source-based coverage (-fprofile-instr-generate -fcoverage-mapping) over the headless C test runners (output--no-animated, input--logic, style, app, args, serde, view) in a dedicatedbuild.coverage.nosynctree – mirror the sanitizer/tsan build-tree pattern. Merge withllvm-profdata merge, report withllvm-cov report(ignoretests/|examples/|cli/); optionalmake coverage-htmlviallvm-cov show -format=html. Make it tool-optional (skip with an install hint whenllvm-cov/llvm-profdataare absent, likemake lint). Wire into.PHONY,clean, and the-includedeps. -
Format gate (
make format/make format-check). Add a.clang-formatmatching the existing style (LLVM base +IndentWidth: 4,ColumnLimit: 80,PointerAlignment: Right,AlignAfterOpenBracket: BlockIndent, attach braces, short braced blocks on one line) and an.editorconfig.make formatappliesclang-format -i;make format-checkrunsclang-format --dry-run -Werrorand fails on diff. Both tool-optional (install hint whenclang-formatis missing). Tune the config so the gate starts green (clang-format is not currently installed locally, so the drift could not be measured yet). Keep it standalone for now – do not wire intomake qauntil the config is proven stable. -
Hygiene files.
LICENSEalready exists (MIT). Still missing:-
CONTRIBUTING.md– point todocs/development.mdfor the workflow, list the gate ladder (make test→make qa, plus opt-inmake qa-serde/make qa-view, the golden-regen targets, and the newmake format-check/make coverage), code style (CLAUDE.mdconventions, 80-col code), and the conventional-commit message style. -
SECURITY.md– supported versions (pre-1.0: latest only), how to report (GitHub private security advisory, email fallback), and the project's core security property: the ANSI sanitization / trust boundary (untrusted strings are sanitized at the library edge;sc_set_allow_ansiopt-out). -
CHANGELOG.md– placeholder only: "Keep a Changelog" header plus a note that the changelog will be maintained starting with the final v0.1.0 release; until then, see the git history.
-
-
Docs. Add the new
make coverage,make format, andmake format-checktargets to theCLAUDE.mdbuild listing and todocs/development.md(the project documents every make target).
-
CI (
.github/workflows). GitHub Actions matrix (Linux + macOS) runningmake qa+make qa-serde+make qa-view(plusmake format-checkandmake coverageonce they exist). Optional Linux-onlylibFuzzerjob (Apple clang ships no libFuzzer). Biggest single habit-forming win, since it enforces all the gates that already exist. -
Extend coverage instrumentation. Bring the CLI / PTY / C++ suites under coverage too (they need separately instrumented binaries and forkpty handling), and add a gcc/
lcovcoverage path as an alternative to the clang/llvm-covone.