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.shon the build host, generalised therefrom
/root/unitbuild.sh, which builds one layer and capturespkgs-$tag.tsv,tree-$tag.sha256andlinks-$tag.txtinto/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 -rover this organization's repositories finds nobuild.shforit, no
unitbuild.shand 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 holdsmysql/global_privandmysql/user.*. The component's build-time jobincludes 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 Debianrootfs contains
setuptools/_vendor/jaraco/text/Lorem ipsum.txt, whichbecomes 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-layerandbin/layer-lib, that does both halves. A capture subcommand that builds alayer 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.