Commit f09fa00
committed
feat(perf): #263-A — the measurement instrument, calibrated and firewalled
The instrument for #263's P-022 performance baselines: how a number is
produced, never what the number should be. It permits calibration and refuses
the decisive measurement, which is #263-B behind the D7 freeze. No thresholds,
no repetition count N, no engine-comparison statistic — those are D7's, and a
harness that offered any of them would be choosing them.
Preflight, against primary source. Live #263 and #262's Performance-gates
reconcile as: the brief's phase list is #262's seven gate phases plus frontend
extraction, recorded and explicitly NOT D7-gated. Both populations are frozen —
A, the G3 cutover subset, feeds D7; B, the IDE-foundation remainder, does not
unless separately ratified. What this instrument does NOT measure is written
down rather than left implied, so completing #263-A cannot narrow #263's own
acceptance by omission: the .own workloads, OwnIR serialization, no-op and
single-file-edit recheck, the latency proxy, allocation profiles and IDE
budgets are owed on B's track.
The honest limit, recorded rather than routed around. Neither engine exposes
per-phase timing through its production surface and #263-A may not add
production instrumentation, so phases are measured by a LADDER of real
production invocations, each recorded as the composed interval it actually is
with the phases inside it named. bridge-lowering and analysis are marked NOT
SEPARATELY OBSERVABLE. Derived views — parse by subtraction, core work as
end-to-end minus extraction — are labelled derived and never presented as
measurements. #263 asks for unavailable stages to be marked, not imputed.
The firewall is structural, not clerical. Exactly one function starts a clock
and it refuses a decisive workload unless the identity gate is armed, which
needs a D7 attestation that does not exist. Deliberately stricter than "no
paired runs": a single-engine timed run of a decisive workload is refused too,
because a stopwatch appears nowhere in the permitted list of enumerate / hash /
fetch / availability-check / non-timed smoke. "We did not save the delta" is
accounting-clean and epistemically worthless — whoever watched the two numbers
has already peeked.
The four carried obligations live in the harness. The identity gate exists NOW
and dormant, because D7's C1 freezes the harness digest and a gate added after
that freeze makes this a different instrument. Arming is a JSON file: a control
proves the digest does not move when the gate arms and that the firewall then
opens. Verification completes before any clock starts, and a control counts
digest calls INSIDE a measured interval and requires zero — a gate that pays
for itself out of the startup benchmark is a defect wearing a safeguard's coat.
The candidate binary is a separate domain: frozen at session start, its drift
refuses the remainder rather than measuring half the cells on another binary.
Peak RSS comes from os.wait4's per-child ru_maxrss rather than /usr/bin/time,
which is a package that can simply be absent — it is absent here, and "the tool
was missing" is not a memory measurement. Windows uses a Job Object. Where
nothing is available the value is null WITH A REASON, never a confident zero.
Two defects of my own, found while building this and worth recording. The
comparison guard first grepped the source for "ratio" and refused its own
report — the sentence explaining the prohibition matched it, and then so did
"calibration" and "iterations". It now reads the report's structure and matches
whole tokens. And an aggregate of bytes was being emitted under a median_ns
key: a unit lie in a report whose entire purpose is measurement.
Calibrated: 44 cells, both engines, all six rungs, run twice on one machine with
every cell's median reproducing within the noise floor that run itself recorded.
CI calibrates on Linux and Windows and asserts the same, plus that no decisive
workload was timed and the gate stayed dormant.
scripts/perf_baseline.py is a new wrapper that reaches the launcher, so it is
added to the Stage-2 census entry points and the job classified — the census
enumerates wrappers, which makes that list a maintenance obligation, now stated
in the ledger.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CYLNQy6tLXqsV1CbuNqsSb1 parent ca8b106 commit f09fa00
6 files changed
Lines changed: 1971 additions & 2 deletions
File tree
- .github/workflows
- docs
- evidence
- notes
- scripts
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2894 | 2894 | | |
2895 | 2895 | | |
2896 | 2896 | | |
| 2897 | + | |
| 2898 | + | |
| 2899 | + | |
| 2900 | + | |
| 2901 | + | |
| 2902 | + | |
| 2903 | + | |
| 2904 | + | |
| 2905 | + | |
| 2906 | + | |
| 2907 | + | |
| 2908 | + | |
| 2909 | + | |
| 2910 | + | |
| 2911 | + | |
| 2912 | + | |
| 2913 | + | |
| 2914 | + | |
| 2915 | + | |
| 2916 | + | |
| 2917 | + | |
| 2918 | + | |
| 2919 | + | |
| 2920 | + | |
| 2921 | + | |
| 2922 | + | |
| 2923 | + | |
| 2924 | + | |
| 2925 | + | |
| 2926 | + | |
| 2927 | + | |
| 2928 | + | |
| 2929 | + | |
| 2930 | + | |
| 2931 | + | |
| 2932 | + | |
| 2933 | + | |
| 2934 | + | |
| 2935 | + | |
| 2936 | + | |
| 2937 | + | |
| 2938 | + | |
| 2939 | + | |
| 2940 | + | |
| 2941 | + | |
| 2942 | + | |
| 2943 | + | |
| 2944 | + | |
| 2945 | + | |
| 2946 | + | |
| 2947 | + | |
| 2948 | + | |
| 2949 | + | |
| 2950 | + | |
| 2951 | + | |
| 2952 | + | |
| 2953 | + | |
| 2954 | + | |
| 2955 | + | |
| 2956 | + | |
| 2957 | + | |
| 2958 | + | |
| 2959 | + | |
| 2960 | + | |
| 2961 | + | |
| 2962 | + | |
| 2963 | + | |
| 2964 | + | |
| 2965 | + | |
| 2966 | + | |
| 2967 | + | |
| 2968 | + | |
| 2969 | + | |
| 2970 | + | |
| 2971 | + | |
| 2972 | + | |
| 2973 | + | |
| 2974 | + | |
| 2975 | + | |
| 2976 | + | |
| 2977 | + | |
| 2978 | + | |
| 2979 | + | |
| 2980 | + | |
| 2981 | + | |
| 2982 | + | |
| 2983 | + | |
| 2984 | + | |
| 2985 | + | |
2897 | 2986 | | |
2898 | 2987 | | |
2899 | 2988 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
30 | 37 | | |
31 | 38 | | |
32 | 39 | | |
| |||
0 commit comments