Ecosystem gate — known kit bugs (kept RED on purpose)
The real-world ecosystem gate (test/ecosystem/run.sh, make test-ecosystem)
surfaced genuine kit defects while building upstream C projects. We deliberately
do not xfail or work around them: the gate stays red until they are fixed,
so they remain visible and easy to dig into.
When the gate fails, the failing build's artifacts are preserved under
build/ecosystem-fail/<project>-<opt>-<stage>/:
build.err— captured compiler/linker stderrcmds.sh— the exact kit/ar/clang commands that ran, in ordersrcs— the library translation-unit listout,run.err,golden.expected,clang.out— for output mismatches
Open bugs
None. All seven projects — cJSON, LZ4, miniz, tinyexpr, Lua, yyjson, and SQLite — are green at both -O0 and -O1 and match clang byte-for-byte.
Each fixed-bug doc keeps a self-contained reproduction against the provisioned
cache (make provision-ecosystem first).
Fixed bugs
| id | file | was | fixed by |
|---|---|---|---|
| A | yyjson-write-label.md | yyjson.c at -O0 → MCEmitter: label NNNN placed twice |
front end: a goto label first seen inside a constant-false (codegen-suppressed) region now gets a real CG-label id |
| B | sqlite-o1-lkit-ro.md | kit cc src.c archive.a at -O1 → undefined reference to '.Lkit_ro.N' |
linker: one-shot in-memory link now honors removed (tombstoned) symbols/relocs, matching a serialized object |
| C | sqlite-o1-runtime-segfault.md | SQLite shell at -O1 → runtime SIGSEGV (null-pointer deref), surfaced once Bug B unblocked the -O1 link | -O1 native emit: a bitfield store (read-modify-write) materialized its value into the address's own scratch register; the value now avoids the address base/index regs (mirrors IR_STORE/IR_AGG_SET) |