Skip to content

Rearchitect compat pipeline - #5

Merged
alganet merged 3 commits into
mainfrom
rearchitect-compat-pipeline
Jun 23, 2026
Merged

Rearchitect compat pipeline#5
alganet merged 3 commits into
mainfrom
rearchitect-compat-pipeline

Conversation

@alganet

@alganet alganet commented Jun 23, 2026

Copy link
Copy Markdown
Owner

No description provided.

alganet added 3 commits June 22, 2026 23:52
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.
@alganet
alganet merged commit 961ed69 into main Jun 23, 2026
2 checks passed
@alganet
alganet deleted the rearchitect-compat-pipeline branch June 23, 2026 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant