Skip to content

The organization is in the code conventions; the words are the codebase's

datasets/results/separability.json, separability-code.json. Prompted by Ghaleb's finding that for AI coding agents the commit-message conventions carry more than the code changes. For organizations the answer is the other way round, and it is the sharpest thing the probe has said.

OpenStack against Qt, Python only so content is held fixed, against every pair among each organization's four largest Python projects that clears the probe's size floor:

baseline reviewers' words code convention shapes
cross-organization 0.849 [0.769, 0.867] 0.771 [0.665, 0.814]
starlingx/test vs starlingx/config 0.828 0.639
starlingx/test vs openstack/swift 0.872 0.557
starlingx/test vs openstack/neutron 0.892 0.696
starlingx/config vs openstack/swift 0.816 0.630
starlingx/config vs openstack/neutron 0.760 0.575
openstack/swift vs openstack/neutron 0.789 0.596
pyside-setup vs qt/qtbase 0.892 refused, too few

Read as the reviewers' words, the cross-organization figure sits inside the within-organization range and three of seven baselines beat it: two projects of one organization are as far apart in review vocabulary as two organizations, so that surface carries the codebase, not the owner. Read as code convention shapes -- snake_case against camelCase, brace placement, f-strings, scope operators, counted as shapes rather than as identifiers so the probe cannot read project vocabulary back in -- the cross-organization figure exceeds all six usable baselines, and its lower bound of 0.665 sits above five of the six point estimates.

That is the fingerprint's location, and it is where a fingerprint should be: a coding standard is written once for an organization and applied across its projects, while review vocabulary follows the subject matter, which is the project's. It also inverts Ghaleb's result for agents, which is worth saying plainly -- an agent is one artefact-producing process, so its habits show in the artefacts it emits around the code; an organization is a rule applied to many people, so its habits show in the code's conventions.

The limitation, stated rather than buried. All six usable code-shape baselines are OpenStack's. Every Qt pair fell below the probe's per-label floor on Python, because Qt writes little of it. The within-organization calibration for the code reading therefore rests on one organization, and the claim is only as good as the assumption that Qt's projects are no further apart than OpenStack's -- which the latency measurement suggests is false in the other direction, since Qt's per-project spread was the wider one. A Qt-side baseline needs a suffix Qt carries, which is what the C++ corpus is for.

Incidental, and it matters for anything quoting the old file. The recorded figures predated the 2026-09-18 refreeze: the raw reading moves from 0.837 on 4,048 changes to 0.841 on 4,031. Both files are rewritten from the current corpus.

And a defect the code reading exposed. A refused estimate was still getting an interval. separability returns NaN below a per-label floor, but accuracy_interval went on resampling, and a few draws happened to clear the floor while the rest were dropped -- so the surviving interval was selected on passing the very check the estimate failed, and printed as [0.562, 0.857] beside a NaN. It now returns NaN for the interval too, and the probe prints the refusal as a refusal.