How Comline proves its implementations agree, and how it keeps track of
their speed, size and health over time. Each subject has its own page. This
one shows how they fit together.
The pipeline
flowchart LR
subgraph producers["Producers (each repository's CI)"]
rt["runtime"]
gen["generation"]
ts["comline-typescript"]
core["core"]
cli["cli"]
sim["simulator"]
end
producers -->|gates on pull requests| pr["pass / fail"]
producers -->|reports on main| rb["reports branch<br/>or default branch"]
gh["GitHub API"] --> col
rb --> col["Observatory collector"] --> site["Observatory site"]
rb --> docs["docs: Languages pages"]
- Pull requests are gated in each repository's own CI: vectors and
goldens must match, support claims must be proven, fuzz targets must
survive a short run, and instruction counts must not grow more than 1%
without a ledger entry.
- Pushes to the default branch publish reports, one JSON file per
measurement, committed to the repository's
reports branch. Conformance
reports are committed on the default branch itself.
- The Observatory collects every report's history, so each published
version can be opened and any two compared. It shows results and gates
nothing.
- The docs render the latest conformance, fuzz and bench results into the
Languages pages at build time.
Subjects
| Page |
Proves or measures |
Gate on pull requests |
Published as |
| Wire conformance |
every runtime reproduces the wire contract byte for byte |
yes: vectors current, claims proven |
reports/<lang>.json |
| Generator conformance |
each generator's output, and the features it claims |
yes: goldens match, claims proven |
features.json |
| Fuzzing |
the reference's decoders are strict, canonical and panic-free; other runtimes match it on random inputs |
yes: 60 s per target |
<lang>.fuzz.json (nightly) |
| Benchmarks |
instruction counts of shared and per-repository benchmarks |
yes: 1% limit plus the ledger |
<name>.bench.json |
| Timings, size and coverage |
compile time, CI time, artifact sizes, test coverage |
no |
<name>.compile.json, .size.json, .coverage.json; CI from the API |
| Reports and the Observatory |
how reports are published, collected and compared |
— |
— |
Schedule
| When (UTC) |
What |
| every pull request |
conformance, short fuzz, bench gate |
| every push to a default branch |
benches, size, coverage and compile reports published |
| 03:17 nightly |
long fuzz and property runs (runtime), differential tests against the reference (comline-typescript) |
| 04:30 daily, and every 4 hours |
Observatory rebuilt |
| 06:00 daily |
docs rebuilt, picking up the nightly fuzz reports |
| Mondays 07:45 |
docs drift check of the Languages pages against conformance |