The three-build comparison decision 0010 requires has no committed implementation #10

Closed
opened 2026-09-28 00:12:07 -03:00 by marcos-mendez · 0 comments
marcos-mendez commented 2026-09-28 00:12:07 -03:00 (Migrated from github.com)

Handbook decision 0010 accepts the component split on one condition, and
its step 3 states the condition: components move one at a time, "re-running
this three-build comparison for each, including the control-vs-control run".
Nothing in any repository runs that comparison.

What exists is /root/measure/build.sh on the build host, generalised there
from /root/unitbuild.sh, which builds one layer and captures
pkgs-$tag.tsv, tree-$tag.sha256 and links-$tag.txt into /root/measure.
It is a scratch file in root's home directory on one machine, it captures
only, and the comparison half, the part that turns three captures into the
number a pull request quotes, was ad hoc shell that was never written down at
all. grep -r over this organization's repositories finds no build.sh for
it, no unitbuild.sh and no /root/measure.

Three consequences.

The measurement is testimony, not evidence. Keel-Linux/keel-mariadb#11 and
Keel-Linux/keel-postgresql#7 were both approved on a count of attributable
differences that only their author could produce. A reviewer could not re-run
it, and neither can the next person to extract a component.

It is blind where it matters most. For mariadb the noise floor is 179
files, of which 173 are /var/lib/mysql/**. That directory holds
mysql/global_priv and mysql/user.*. The component's build-time job
includes deleting accounts, so the measurement subtracted, as noise, exactly
the region where the thing being measured would show up. A path is put inside
the noise floor by its name; whether its difference is really noise is a
question about its bytes, and nothing asked that question.

It counts wrong. The capture writes sha256sum's default
<hash> + two spaces + <path>, and the comparison split on whitespace.
docs/traps.md, "A path with a space in it", records the result: the Debian
rootfs contains setuptools/_vendor/jaraco/text/Lorem ipsum.txt, which
becomes two fields and never matches itself, so the LAMP measurement of
2026-09-27 reported 199 and 183 differing files where the true counts were
198 and 182.

Expected: a committed, tested tool in this repository, next to bt-layer and
bin/layer-lib, that does both halves. A capture subcommand that builds a
layer and records its package list, file tree and symlinks in a
tab-separated, path-keyed form, into a directory named on the command line
rather than a home directory. A comparison subcommand over two captures, and
an attribution subcommand over the three the decision asks for, that reports
what differs rather than only that a path fell inside the floor, and prints a
block a pull request body can quote so a claim names the command that
produced it.

Handbook decision 0010 accepts the component split on one condition, and its step 3 states the condition: components move one at a time, "re-running this three-build comparison for each, including the control-vs-control run". Nothing in any repository runs that comparison. What exists is `/root/measure/build.sh` on the build host, generalised there from `/root/unitbuild.sh`, which builds one layer and captures `pkgs-$tag.tsv`, `tree-$tag.sha256` and `links-$tag.txt` into `/root/measure`. It is a scratch file in root's home directory on one machine, it captures only, and the comparison half, the part that turns three captures into the number a pull request quotes, was ad hoc shell that was never written down at all. `grep -r` over this organization's repositories finds no `build.sh` for it, no `unitbuild.sh` and no `/root/measure`. Three consequences. **The measurement is testimony, not evidence.** Keel-Linux/keel-mariadb#11 and Keel-Linux/keel-postgresql#7 were both approved on a count of attributable differences that only their author could produce. A reviewer could not re-run it, and neither can the next person to extract a component. **It is blind where it matters most.** For mariadb the noise floor is 179 files, of which 173 are `/var/lib/mysql/**`. That directory holds `mysql/global_priv` and `mysql/user.*`. The component's build-time job includes deleting accounts, so the measurement subtracted, as noise, exactly the region where the thing being measured would show up. A path is put inside the noise floor by its name; whether its difference is really noise is a question about its bytes, and nothing asked that question. **It counts wrong.** The capture writes `sha256sum`'s default `<hash>` + two spaces + `<path>`, and the comparison split on whitespace. `docs/traps.md`, "A path with a space in it", records the result: the Debian rootfs contains `setuptools/_vendor/jaraco/text/Lorem ipsum.txt`, which becomes two fields and never matches itself, so the LAMP measurement of 2026-09-27 reported 199 and 183 differing files where the true counts were 198 and 182. Expected: a committed, tested tool in this repository, next to `bt-layer` and `bin/layer-lib`, that does both halves. A capture subcommand that builds a layer and records its package list, file tree and symlinks in a tab-separated, path-keyed form, into a directory named on the command line rather than a home directory. A comparison subcommand over two captures, and an attribution subcommand over the three the decision asks for, that reports what differs rather than only that a path fell inside the floor, and prints a block a pull request body can quote so a claim names the command that produced it.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Keel-Linux/buildtasks#10
No description provided.