Rearchitect compat pipeline - #5
Merged
Merged
Conversation
Replace the five ad-hoc pipeline scripts (gen_tests/container/test_shell/ gen_compat/regen_docs) with a shared lib.sh and a single `build` dispatcher running extract -> run -> collect -> render. The duplicated tool resolution, ROOT_DIR discovery, TAP parsing, version sorting, and <shell>_<version> path splitting now live once in lib.sh (sd_* helpers), with stage prerequisite gates. Fixes the ksh version split (first-underscore, not `cut -d_ -f2`). Introduce data/ as the single durable, committed source of truth: one TAB-delimited feature/shell/version/status record per observation, replacing the gitignored compat/ tree. The ledger accumulates across shell-image refreshes (collect merges, current run wins, prior observations retained). Each .results file carries its own ISC SPDX header, written by the pipeline so it stays REUSE-compliant across regeneration. The initial ledger was seeded from the prototype's last run. container.sh/test_shell.sh now source lib.sh (mounted into the image). README documents the new workflow and the data/ licensing; .gitignore drops /compat and keeps tests/ and results/ as disposable scratch.
Render the compatibility tables from the data/ ledger instead of a lossy `>=min` per cell. Cells now distinguish what was actually observed across the sparse set of tested versions: X+ introduced at X (a lower tested version failed), still supported ?X+ works at X, the oldest version tested; may work in older ones we lack X-Y worked from X through Y, then removed (a newer tested version fails) - unsupported in every tested version . no data This makes introduction bounds honest (no false precision) and, for the first time, surfaces removals/regressions the old `>=` model hid (e.g. yash `echo -n` worked 2.10-2.21 then broke). A legend is appended under each table.
Replace the four deleted scripts (gen_tests/container/gen_compat/regen_docs) with the build dispatcher, split into two jobs: - docs: fast and deterministic, no docker. Asserts the committed docs are the faithful render of the committed data/ ledger (./build render then git diff --exit-code docs). Catches a hand-edited table or a ledger change that was not re-rendered. - pipeline: end-to-end smoke test against the real shells (./build all). It no longer asserts the output equals the committed state, since a fresh run is environment dependent and collect merges new observations into the ledger.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.