Archived
kill: purge old-paradigm dist/platform binaries from tree
El SDK Release / build-and-release (push) Failing after 13m0s
El SDK Release / build-and-release (push) Failing after 13m0s
The generated C, amalgams, vendored runtime pins, and compiled binaries from the Claude Code era are removed from the worktree. The El sources survive; this tree is now source-only for the first-principles rebuild. Per Principal direction 2026-08-19.
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
bash -c
|
||||
echo "INSTRUMENT: cloc 2.10 --force-lang=C (transfer standard, calibrated this session"
|
||||
echo " against hand-counted reference; agrees on both fixtures)"
|
||||
echo "UNIT: LINE, defined in docs/experiments/instruments/UNITS.md"
|
||||
echo "FILE: lang/el-compiler/src/codegen.el"
|
||||
echo
|
||||
printf "%-11s %-19s %6s %6s %8s %6s\n" commit date blank comment code total
|
||||
git log --format="%H %ad" --date=short --reverse -- lang/el-compiler/src/codegen.el | while read sha date; do
|
||||
blob=$(git show "$sha:lang/el-compiler/src/codegen.el" 2>/dev/null) || continue
|
||||
[ -z "$blob" ] && continue
|
||||
t=$(mktemp /tmp/cg-XXXXXX.c); printf "%s\n" "$blob" > "$t"
|
||||
row=$(cloc --force-lang=C --quiet --csv "$t" 2>/dev/null | tail -1)
|
||||
b=$(echo "$row"|cut -d, -f3); c=$(echo "$row"|cut -d, -f4); k=$(echo "$row"|cut -d, -f5)
|
||||
[ -n "$k" ] && printf "%-11s %-19s %6s %6s %8s %6s\n" "${sha:0:9}" "$date" "$b" "$c" "$k" "$((b+c+k))"
|
||||
rm -f "$t"
|
||||
done
|
||||
@@ -0,0 +1,64 @@
|
||||
INSTRUMENT: cloc 2.10 --force-lang=C (transfer standard, calibrated this session
|
||||
against hand-counted reference; agrees on both fixtures)
|
||||
UNIT: LINE, defined in docs/experiments/instruments/UNITS.md
|
||||
FILE: lang/el-compiler/src/codegen.el
|
||||
|
||||
commit date blank comment code total
|
||||
1ae68962c 2026-05-05 165 520 2561 3246
|
||||
7f295bffe 2026-05-05 165 524 2562 3251
|
||||
e587bedf3 2026-05-05 165 526 2591 3282
|
||||
ee86736ea 2026-05-05 165 530 2592 3287
|
||||
3726f6943 2026-05-05 192 615 2865 3672
|
||||
bd7303447 2026-05-06 192 623 2876 3691
|
||||
ec889e1e5 2026-05-06 201 642 3049 3892
|
||||
a3732a1e9 2026-05-07 202 643 3062 3907
|
||||
53e0b99d5 2026-05-08 202 643 3063 3908
|
||||
6b9d9e6c4 2026-07-15 202 643 3064 3909
|
||||
866c75e5e 2026-08-09 202 653 3070 3925
|
||||
bb64a236e 2026-08-12 204 652 3109 3965
|
||||
7aa847e32 2026-08-12 204 652 3110 3966
|
||||
d4f401de1 2026-08-14 215 697 3287 4199
|
||||
01826421c 2026-08-14 215 703 3290 4208
|
||||
101018597 2026-08-15 202 643 3070 3915
|
||||
2f832c8de 2026-08-15 207 677 3165 4049
|
||||
09ae14a97 2026-08-15 209 686 3211 4106
|
||||
69870ac88 2026-08-15 209 696 3217 4122
|
||||
bacaf3d39 2026-08-15 222 756 3444 4422
|
||||
e29fe4fd0 2026-08-15 209 696 3219 4124
|
||||
ee39aa5f1 2026-08-15 222 756 3446 4424
|
||||
09dade061 2026-08-15 222 756 3452 4430
|
||||
4e24d7d3f 2026-08-15 222 756 3454 4432
|
||||
e917b3d43 2026-08-15 222 756 3456 4434
|
||||
37bcf7eb7 2026-08-15 222 756 3462 4440
|
||||
24fac765a 2026-08-15 225 779 3500 4504
|
||||
a668062e3 2026-08-15 225 779 3506 4510
|
||||
3e7ab07e8 2026-08-15 225 787 3521 4533
|
||||
6a6b589ba 2026-08-15 225 787 3522 4534
|
||||
b55e6bfd5 2026-08-15 225 800 3523 4548
|
||||
b5a0a729e 2026-08-15 225 808 3529 4562
|
||||
cf060adbf 2026-08-15 225 808 3530 4563
|
||||
8ae163e8e 2026-08-16 228 835 3583 4646
|
||||
45325f739 2026-08-16 228 844 3589 4661
|
||||
dcaa77d77 2026-08-17 228 849 3593 4670
|
||||
5718943f2 2026-08-17 233 891 3676 4800
|
||||
60737b030 2026-08-17 236 910 3704 4850
|
||||
4f7568b07 2026-08-17 241 929 3783 4953
|
||||
2bed8483f 2026-08-17 248 949 3887 5084
|
||||
1b324a071 2026-08-17 251 967 3934 5152
|
||||
35b07bade 2026-08-17 251 970 3935 5156
|
||||
886626a64 2026-08-17 251 970 3935 5156
|
||||
28d19da7f 2026-08-17 251 971 3873 5095
|
||||
285166c25 2026-08-17 251 971 3821 5043
|
||||
bc2f26ddf 2026-08-17 251 972 3753 4976
|
||||
c741cfe92 2026-08-17 252 982 3728 4962
|
||||
c2d9596e7 2026-08-17 251 990 3655 4896
|
||||
9cc6040df 2026-08-17 251 958 3303 4512
|
||||
d2d89fcb6 2026-08-17 255 962 3320 4537
|
||||
e8e25a07b 2026-08-17 255 962 3289 4506
|
||||
cbef1c1eb 2026-08-17 256 969 3253 4478
|
||||
c48db6c2a 2026-08-17 256 974 3257 4487
|
||||
79f6cb798 2026-08-17 256 979 3258 4493
|
||||
6c975b1d5 2026-08-17 256 979 3258 4493
|
||||
f1a7e224a 2026-08-17 256 991 3277 4524
|
||||
abb0ab419 2026-08-17 256 980 3209 4445
|
||||
e82d941b5 2026-08-17 256 981 3197 4434
|
||||
@@ -0,0 +1,7 @@
|
||||
commit a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
tree dirty
|
||||
captured_utc 2026-08-17T17:42:20Z
|
||||
exit 0
|
||||
ms 6151
|
||||
sha256_out 1065416e0b69b3dac0accdd238799c52e3eb359daf3259191debb647095589d7
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
bash -c for f in lexer parser codegen; do git log --format="%H %ad" --date=short --reverse -- lang/el-compiler/src/$f.el | while read sha date; do blob=$(git show "$sha:lang/el-compiler/src/$f.el" 2>/dev/null); [ -z "$blob" ] && continue; t=$(mktemp /tmp/s-XXXXXX.c); printf "%s\n" "$blob" > "$t"; row=$(cloc --force-lang=C --quiet --csv "$t" 2>/dev/null | tail -1); k=$(echo "$row"|cut -d, -f5); [ -n "$k" ] && echo -e "$f\t${sha:0:9}\t$date\t$(echo "$row"|cut -d, -f3)\t$(echo "$row"|cut -d, -f4)\t$k"; rm -f "$t"; done; done
|
||||
@@ -0,0 +1,81 @@
|
||||
lexer 1ae68962c 2026-05-05 35 99 859
|
||||
lexer 2ac11a67b 2026-05-05 35 108 829
|
||||
lexer 1e67544c8 2026-05-05 39 143 857
|
||||
lexer 1eef9928f 2026-05-05 39 146 859
|
||||
lexer e587bedf3 2026-05-05 39 160 880
|
||||
lexer 8ae163e8e 2026-08-16 39 160 881
|
||||
lexer 0143cc458 2026-08-17 39 176 876
|
||||
lexer 6c975b1d5 2026-08-17 39 190 885
|
||||
parser 1ae68962c 2026-05-05 76 213 1360
|
||||
parser 1eef9928f 2026-05-05 76 217 1360
|
||||
parser 3726f6943 2026-05-05 83 306 1653
|
||||
parser ec889e1e5 2026-05-06 84 310 1670
|
||||
parser a3732a1e9 2026-05-07 85 340 1829
|
||||
parser f971e96dd 2026-05-07 85 340 1829
|
||||
parser 5f9cad590 2026-05-08 88 370 2009
|
||||
parser 0a0a2bcb4 2026-07-14 88 377 2026
|
||||
parser bb64a236e 2026-08-12 89 385 2041
|
||||
parser d4f401de1 2026-08-14 88 385 2063
|
||||
parser bacaf3d39 2026-08-15 89 393 2078
|
||||
parser 8ae163e8e 2026-08-16 90 419 2174
|
||||
parser 45325f739 2026-08-16 90 436 2186
|
||||
parser 6c975b1d5 2026-08-17 91 439 2193
|
||||
parser e82d941b5 2026-08-17 93 450 2218
|
||||
codegen 1ae68962c 2026-05-05 165 520 2561
|
||||
codegen 7f295bffe 2026-05-05 165 524 2562
|
||||
codegen e587bedf3 2026-05-05 165 526 2591
|
||||
codegen ee86736ea 2026-05-05 165 530 2592
|
||||
codegen 3726f6943 2026-05-05 192 615 2865
|
||||
codegen bd7303447 2026-05-06 192 623 2876
|
||||
codegen ec889e1e5 2026-05-06 201 642 3049
|
||||
codegen a3732a1e9 2026-05-07 202 643 3062
|
||||
codegen 53e0b99d5 2026-05-08 202 643 3063
|
||||
codegen 6b9d9e6c4 2026-07-15 202 643 3064
|
||||
codegen 866c75e5e 2026-08-09 202 653 3070
|
||||
codegen bb64a236e 2026-08-12 204 652 3109
|
||||
codegen 7aa847e32 2026-08-12 204 652 3110
|
||||
codegen d4f401de1 2026-08-14 215 697 3287
|
||||
codegen 01826421c 2026-08-14 215 703 3290
|
||||
codegen 101018597 2026-08-15 202 643 3070
|
||||
codegen 2f832c8de 2026-08-15 207 677 3165
|
||||
codegen 09ae14a97 2026-08-15 209 686 3211
|
||||
codegen 69870ac88 2026-08-15 209 696 3217
|
||||
codegen bacaf3d39 2026-08-15 222 756 3444
|
||||
codegen e29fe4fd0 2026-08-15 209 696 3219
|
||||
codegen ee39aa5f1 2026-08-15 222 756 3446
|
||||
codegen 09dade061 2026-08-15 222 756 3452
|
||||
codegen 4e24d7d3f 2026-08-15 222 756 3454
|
||||
codegen e917b3d43 2026-08-15 222 756 3456
|
||||
codegen 37bcf7eb7 2026-08-15 222 756 3462
|
||||
codegen 24fac765a 2026-08-15 225 779 3500
|
||||
codegen a668062e3 2026-08-15 225 779 3506
|
||||
codegen 3e7ab07e8 2026-08-15 225 787 3521
|
||||
codegen 6a6b589ba 2026-08-15 225 787 3522
|
||||
codegen b55e6bfd5 2026-08-15 225 800 3523
|
||||
codegen b5a0a729e 2026-08-15 225 808 3529
|
||||
codegen cf060adbf 2026-08-15 225 808 3530
|
||||
codegen 8ae163e8e 2026-08-16 228 835 3583
|
||||
codegen 45325f739 2026-08-16 228 844 3589
|
||||
codegen dcaa77d77 2026-08-17 228 849 3593
|
||||
codegen 5718943f2 2026-08-17 233 891 3676
|
||||
codegen 60737b030 2026-08-17 236 910 3704
|
||||
codegen 4f7568b07 2026-08-17 241 929 3783
|
||||
codegen 2bed8483f 2026-08-17 248 949 3887
|
||||
codegen 1b324a071 2026-08-17 251 967 3934
|
||||
codegen 35b07bade 2026-08-17 251 970 3935
|
||||
codegen 886626a64 2026-08-17 251 970 3935
|
||||
codegen 28d19da7f 2026-08-17 251 971 3873
|
||||
codegen 285166c25 2026-08-17 251 971 3821
|
||||
codegen bc2f26ddf 2026-08-17 251 972 3753
|
||||
codegen c741cfe92 2026-08-17 252 982 3728
|
||||
codegen c2d9596e7 2026-08-17 251 990 3655
|
||||
codegen 9cc6040df 2026-08-17 251 958 3303
|
||||
codegen d2d89fcb6 2026-08-17 255 962 3320
|
||||
codegen e8e25a07b 2026-08-17 255 962 3289
|
||||
codegen cbef1c1eb 2026-08-17 256 969 3253
|
||||
codegen c48db6c2a 2026-08-17 256 974 3257
|
||||
codegen 79f6cb798 2026-08-17 256 979 3258
|
||||
codegen 6c975b1d5 2026-08-17 256 979 3258
|
||||
codegen f1a7e224a 2026-08-17 256 991 3277
|
||||
codegen abb0ab419 2026-08-17 256 980 3209
|
||||
codegen e82d941b5 2026-08-17 256 981 3197
|
||||
@@ -0,0 +1,7 @@
|
||||
commit a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
tree dirty
|
||||
captured_utc 2026-08-17T17:44:12Z
|
||||
exit 0
|
||||
ms 8561
|
||||
sha256_out 266ad033509a4026529ef4b722eeb85881857404f34853eab6d4cc72ddab632b
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,50 @@
|
||||
calibration run 20260817T174713Z
|
||||
commit a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
tree dirty
|
||||
cloc 2.10
|
||||
matplotlib 3.10.8
|
||||
cc Apple clang version 21.0.0 (clang-2100.1.1.101)
|
||||
|
||||
--- line-count ---
|
||||
POSITIVE — reproduces hand-counted answers
|
||||
ok ref_lines.el total = 18
|
||||
ok ref_lines.el blank = 3
|
||||
ok ref_lines.el comment = 7
|
||||
ok ref_lines.el code = 8
|
||||
ok ref_wrong.el total = 4
|
||||
ok ref_wrong.el blank = 0
|
||||
ok ref_wrong.el comment = 3
|
||||
ok ref_wrong.el code = 1
|
||||
|
||||
POSITIVE — discriminates between fixtures
|
||||
ok distinct fixtures give distinct readings
|
||||
|
||||
NEGATIVE — refuses a false expectation
|
||||
ok false expectation code=999 refused; reports 8
|
||||
|
||||
NEGATIVE — self-checks its own unit invariant
|
||||
ok total == blank + comment + code (3), asserted at runtime
|
||||
|
||||
PROVEN — 11 checks, both arms hold. This instrument may be used.
|
||||
|
||||
--- plot ---
|
||||
POSITIVE — the plot contains exactly what was given to it
|
||||
ok point count in == point count plotted 5
|
||||
ok x range preserved (0.0, 4.0)
|
||||
ok y range preserved (5.0, 40.0)
|
||||
ok final point not dropped/sorted (4.0, 5.0)
|
||||
|
||||
POSITIVE — anti-truncation policy holds
|
||||
ok y-axis includes zero by default True
|
||||
|
||||
NEGATIVE — truncation is possible but must be ASKED for
|
||||
ok explicit truncate_y raises the floor True
|
||||
|
||||
NEGATIVE — refuses a false expectation
|
||||
ok a false point count (99) is refused False
|
||||
|
||||
POSITIVE — an output file is actually produced
|
||||
ok png written and non-empty True
|
||||
|
||||
transfer standard: matplotlib 3.10.8
|
||||
PROVEN — 8 checks, 0 failed
|
||||
@@ -0,0 +1,50 @@
|
||||
calibration run 20260817T174754Z
|
||||
commit a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
tree dirty
|
||||
cloc 2.10
|
||||
matplotlib 3.10.8
|
||||
cc Apple clang version 21.0.0 (clang-2100.1.1.101)
|
||||
|
||||
--- line-count ---
|
||||
POSITIVE — reproduces hand-counted answers
|
||||
ok ref_lines.el total = 18
|
||||
ok ref_lines.el blank = 3
|
||||
ok ref_lines.el comment = 7
|
||||
ok ref_lines.el code = 8
|
||||
ok ref_wrong.el total = 4
|
||||
ok ref_wrong.el blank = 0
|
||||
ok ref_wrong.el comment = 3
|
||||
ok ref_wrong.el code = 1
|
||||
|
||||
POSITIVE — discriminates between fixtures
|
||||
ok distinct fixtures give distinct readings
|
||||
|
||||
NEGATIVE — refuses a false expectation
|
||||
ok false expectation code=999 refused; reports 8
|
||||
|
||||
NEGATIVE — self-checks its own unit invariant
|
||||
ok total == blank + comment + code (3), asserted at runtime
|
||||
|
||||
PROVEN — 11 checks, both arms hold. This instrument may be used.
|
||||
|
||||
--- plot ---
|
||||
POSITIVE — the plot contains exactly what was given to it
|
||||
ok point count in == point count plotted 5
|
||||
ok x range preserved (0.0, 4.0)
|
||||
ok y range preserved (5.0, 40.0)
|
||||
ok final point not dropped/sorted (4.0, 5.0)
|
||||
|
||||
POSITIVE — anti-truncation policy holds
|
||||
ok y-axis includes zero by default True
|
||||
|
||||
NEGATIVE — truncation is possible but must be ASKED for
|
||||
ok explicit truncate_y raises the floor True
|
||||
|
||||
NEGATIVE — refuses a false expectation
|
||||
ok a false point count (99) is refused False
|
||||
|
||||
POSITIVE — an output file is actually produced
|
||||
ok png written and non-empty True
|
||||
|
||||
transfer standard: matplotlib 3.10.8
|
||||
PROVEN — 8 checks, 0 failed
|
||||
@@ -0,0 +1,19 @@
|
||||
bash -c R=docs/experiments/instruments/instrument/line-count/reference
|
||||
echo "TRANSFER STANDARD: cloc $(cloc --version), --force-lang=C"
|
||||
echo "PRIMARY STANDARD: the LINE definition in docs/experiments/instruments/UNITS.md"
|
||||
echo "REFERENCE: hand enumeration in reference/*.WORKING"
|
||||
echo
|
||||
printf "%-14s %-22s %s\n" fixture known "cloc (blank,comment,code)"
|
||||
while IFS= read -r line; do
|
||||
case "$line" in \#*|"") continue;; esac
|
||||
set -- $line
|
||||
done < /dev/null
|
||||
for f in ref_lines ref_wrong; do
|
||||
k=$(awk -F"\t" -v f="$f.el" "\$2==f && \$3!=\"total\" {printf \"%s \", \$4}" $R/KNOWN-ANSWERS.tsv)
|
||||
c=$(cloc --force-lang=C --quiet --csv $R/$f.el 2>/dev/null | tail -1 | cut -d, -f3-5)
|
||||
kk=$(echo $k | tr " " ",")
|
||||
printf "%-14s %-22s %s %s\n" "$f.el" "$kk" "$c" "$([ "$kk" = "$c" ] && echo AGREES || echo DIVERGES)"
|
||||
done
|
||||
echo
|
||||
echo "Both fixtures agree. cloc is a valid transfer standard for the LINE unit."
|
||||
echo "Convergent validity: two independently authored definitions, same readings."
|
||||
@@ -0,0 +1,10 @@
|
||||
TRANSFER STANDARD: cloc 2.10, --force-lang=C
|
||||
PRIMARY STANDARD: the LINE definition in docs/experiments/instruments/UNITS.md
|
||||
REFERENCE: hand enumeration in reference/*.WORKING
|
||||
|
||||
fixture known cloc (blank,comment,code)
|
||||
ref_lines.el 3,7,8 3,7,8 AGREES
|
||||
ref_wrong.el 0,3,1 0,3,1 AGREES
|
||||
|
||||
Both fixtures agree. cloc is a valid transfer standard for the LINE unit.
|
||||
Convergent validity: two independently authored definitions, same readings.
|
||||
@@ -0,0 +1,7 @@
|
||||
commit a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
tree dirty
|
||||
captured_utc 2026-08-17T17:41:59Z
|
||||
exit 0
|
||||
ms 239
|
||||
sha256_out 6409d2d1e023f40aa0c68a7e5bec95b6b45d18a9cd47db15d79b3b136532fda5
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
./docs/experiments/instruments/instrument/plot/prove.sh
|
||||
@@ -0,0 +1,20 @@
|
||||
POSITIVE — the plot contains exactly what was given to it
|
||||
ok point count in == point count plotted 5
|
||||
ok x range preserved (0.0, 4.0)
|
||||
ok y range preserved (5.0, 40.0)
|
||||
ok final point not dropped/sorted (4.0, 5.0)
|
||||
|
||||
POSITIVE — anti-truncation policy holds
|
||||
ok y-axis includes zero by default True
|
||||
|
||||
NEGATIVE — truncation is possible but must be ASKED for
|
||||
ok explicit truncate_y raises the floor True
|
||||
|
||||
NEGATIVE — refuses a false expectation
|
||||
ok a false point count (99) is refused False
|
||||
|
||||
POSITIVE — an output file is actually produced
|
||||
ok png written and non-empty True
|
||||
|
||||
transfer standard: matplotlib 3.10.8
|
||||
PROVEN — 8 checks, 0 failed
|
||||
@@ -0,0 +1,7 @@
|
||||
commit a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
tree dirty
|
||||
captured_utc 2026-08-17T17:46:05Z
|
||||
exit 0
|
||||
ms 555
|
||||
sha256_out a051538f9af841fbceb48cf68abcefffc11bc1ee8cc6996a14d900d398624ff1
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,2 @@
|
||||
sha256 bytes exit ms commit tree utc artifact command
|
||||
a051538f9af841fbceb48cf68abcefffc11bc1ee8cc6996a14d900d398624ff1 807 0 555 a0cc95e3db7b dirty 2026-08-17T17:46:05Z 0001-proof.out ./docs/experiments/instruments/instrument/plot/prove.sh
|
||||
|
@@ -0,0 +1,6 @@
|
||||
captured_utc 2026-08-17T17:46:05Z
|
||||
git_sha a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
git_dirty yes
|
||||
host Wills-MacBook-Pro
|
||||
uname Darwin Wills-MacBook-Pro 25.5.0 Darwin Kernel Version 25.5.0: Tue Jun 9 22:28:34 PDT 2026; root:xnu-12377.121.10~1/RELEASE_ARM64_T6041 arm64
|
||||
cc Apple clang version 21.0.0 (clang-2100.1.1.101)
|
||||
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Plot instrument. matplotlib is the transfer standard; this file is
|
||||
CONFIGURATION of it, not a new instrument. It adds exactly one policy:
|
||||
|
||||
the y-axis includes zero unless truncation is explicitly requested,
|
||||
|
||||
because an autoscaled y-axis turns a correct dataset into a false picture, and
|
||||
that is the most common way a plot lies.
|
||||
"""
|
||||
import sys, csv, matplotlib
|
||||
matplotlib.use("Agg")
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.dates as mdates
|
||||
from datetime import datetime
|
||||
|
||||
def plot(series, out, title, ylabel, truncate_y=False, dates=False):
|
||||
fig, ax = plt.subplots(figsize=(11, 5.2), dpi=160)
|
||||
for name, xs, ys, color in series:
|
||||
ax.plot(xs, ys, marker="o", ms=2.6, lw=1.4, color=color, label=name, zorder=3)
|
||||
if not truncate_y:
|
||||
ax.set_ylim(bottom=0) # the policy
|
||||
if dates:
|
||||
ax.xaxis.set_major_locator(mdates.AutoDateLocator())
|
||||
ax.xaxis.set_major_formatter(mdates.DateFormatter("%b %d"))
|
||||
ax.set_ylabel(ylabel); ax.set_title(title, loc="left")
|
||||
ax.grid(True, lw=0.5, alpha=0.35, zorder=0)
|
||||
ax.legend(frameon=False, loc="upper left")
|
||||
for s in ("top","right"): ax.spines[s].set_visible(False)
|
||||
fig.tight_layout(); fig.savefig(out)
|
||||
return ax
|
||||
|
||||
def readings(ax):
|
||||
"""What the plot ACTUALLY contains — read back off the axes, not off the
|
||||
input. This is what makes the plot checkable."""
|
||||
out = []
|
||||
for ln in ax.get_lines():
|
||||
d = ln.get_xydata()
|
||||
out.append({"label": ln.get_label(), "n": len(d),
|
||||
"xmin": float(d[:,0].min()), "xmax": float(d[:,0].max()),
|
||||
"ymin": float(d[:,1].min()), "ymax": float(d[:,1].max()),
|
||||
"last": (float(d[-1,0]), float(d[-1,1]))})
|
||||
return out, ax.get_ylim()
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env bash
|
||||
# prove.sh — evidence the plot instrument works. Both directions.
|
||||
set -uo pipefail
|
||||
D="$(cd "$(dirname "$0")" && pwd)"
|
||||
python3 - "$D" <<'PY'
|
||||
import sys, csv, os
|
||||
D = sys.argv[1]; sys.path.insert(0, D)
|
||||
from plot import plot, readings
|
||||
F=0; N=0
|
||||
def chk(name, expected, actual):
|
||||
global F, N; N += 1
|
||||
ok = expected == actual
|
||||
print(f" {'ok ' if ok else 'FAIL'} {name:<44} {'' if ok else f'expected {expected} got '}{actual}")
|
||||
if not ok: F += 1
|
||||
|
||||
rows=[r for r in csv.reader(open(f"{D}/reference/KNOWN-SERIES.tsv"), delimiter="\t") if r and not r[0].startswith("#")]
|
||||
xs=[float(r[0]) for r in rows]; ys=[float(r[1]) for r in rows]
|
||||
|
||||
print("POSITIVE — the plot contains exactly what was given to it")
|
||||
ax = plot([("known", xs, ys, "#B0691F")], "/tmp/prove_known.png", "calibration", "y")
|
||||
r, ylim = readings(ax)
|
||||
chk("point count in == point count plotted", 5, r[0]["n"])
|
||||
chk("x range preserved", (0.0, 4.0), (r[0]["xmin"], r[0]["xmax"]))
|
||||
chk("y range preserved", (5.0, 40.0), (r[0]["ymin"], r[0]["ymax"]))
|
||||
chk("final point not dropped/sorted", (4.0, 5.0), r[0]["last"])
|
||||
|
||||
print()
|
||||
print("POSITIVE — anti-truncation policy holds")
|
||||
chk("y-axis includes zero by default", True, ylim[0] <= 0)
|
||||
|
||||
print()
|
||||
print("NEGATIVE — truncation is possible but must be ASKED for")
|
||||
ax2 = plot([("known", xs, ys, "#B0691F")], "/tmp/prove_trunc.png", "truncated", "y", truncate_y=True)
|
||||
_, ylim2 = readings(ax2)
|
||||
chk("explicit truncate_y raises the floor", True, ylim2[0] > 0)
|
||||
|
||||
print()
|
||||
print("NEGATIVE — refuses a false expectation")
|
||||
chk("a false point count (99) is refused", False, r[0]["n"] == 99)
|
||||
|
||||
print()
|
||||
print("POSITIVE — an output file is actually produced")
|
||||
chk("png written and non-empty", True, os.path.getsize("/tmp/prove_known.png") > 1000)
|
||||
|
||||
print()
|
||||
import matplotlib
|
||||
print(f" transfer standard: matplotlib {matplotlib.__version__}")
|
||||
print(f" {'PROVEN' if F==0 else 'NOT PROVEN'} — {N} checks, {F} failed")
|
||||
sys.exit(F)
|
||||
PY
|
||||
@@ -0,0 +1,17 @@
|
||||
Known properties of KNOWN-SERIES.tsv, derived by hand from the five rows above.
|
||||
|
||||
n points 5
|
||||
x min / max 0 / 4
|
||||
y min / max 5 / 40
|
||||
point at i=3 (3, 40) -- the maximum, deliberately not last
|
||||
point at i=4 (4, 5) -- the minimum, deliberately last
|
||||
|
||||
Why these values: the maximum is NOT the final point and the minimum IS, so a
|
||||
plotter that silently drops the last point, or that sorts, or that plots only
|
||||
the running maximum, produces a visibly different reading.
|
||||
|
||||
ANTI-TRUNCATION: with y ranging 5..40, a plotter left to autoscale will start
|
||||
the y-axis near 5 and make a 3.5x visual change out of an 8x numeric one. For an
|
||||
evidence plot the y-axis MUST include zero or be explicitly declared truncated.
|
||||
This is the single most common way a correct dataset produces a false picture,
|
||||
and it is checked below.
|
||||
@@ -0,0 +1,7 @@
|
||||
# A series whose plotted properties are known BEFORE the plotter runs.
|
||||
# x y
|
||||
0 10
|
||||
1 20
|
||||
2 15
|
||||
3 40
|
||||
4 5
|
||||
|
@@ -0,0 +1 @@
|
||||
./tools/evidence/report-prove.sh
|
||||
@@ -0,0 +1,7 @@
|
||||
Traceback (most recent call last):
|
||||
File "<stdin>", line 12, in <module>
|
||||
File "/Users/will/Development/neuron-technologies/foundation/el/tools/evidence/report.py", line 35, in load
|
||||
art = os.path.join(evdir, r['artifact'])
|
||||
File "<frozen posixpath>", line 90, in join
|
||||
File "<frozen genericpath>", line 188, in _check_arg_types
|
||||
TypeError: join() argument must be str, bytes, or os.PathLike object, not 'NoneType'
|
||||
@@ -0,0 +1 @@
|
||||
POSITIVE — reads and verifies a real evidence directory
|
||||
@@ -0,0 +1,7 @@
|
||||
commit a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
tree dirty
|
||||
captured_utc 2026-08-17T17:53:46Z
|
||||
exit 1
|
||||
ms 315
|
||||
sha256_out f76d174e98375a9c137936cc77a6675a3076b34fd7e1be8f91be8204aaaa8980
|
||||
sha256_err 31646694e108bb5c245b4ab128321bb3b46f30d380d070fa8a3214a4e2e685b3
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1,2 @@
|
||||
sha256 bytes exit ms commit tree utc artifact command
|
||||
f76d174e98375a9c137936cc77a6675a3076b34fd7e1be8f91be8204aaaa8980 58 1 315 a0cc95e3db7b dirty 2026-08-17T17:53:46Z 0001-proof.out ./tools/evidence/report-prove.sh
|
||||
|
@@ -0,0 +1,6 @@
|
||||
captured_utc 2026-08-17T17:53:46Z
|
||||
git_sha a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
git_dirty yes
|
||||
host Wills-MacBook-Pro
|
||||
uname Darwin Wills-MacBook-Pro 25.5.0 Darwin Kernel Version 25.5.0: Tue Jun 9 22:28:34 PDT 2026; root:xnu-12377.121.10~1/RELEASE_ARM64_T6041 arm64
|
||||
cc Apple clang version 21.0.0 (clang-2100.1.1.101)
|
||||
Executable
+73
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
# reproduce.sh — ONE COMMAND. Proves every instrument, records the calibration,
|
||||
# re-runs every cycle, verifies every artifact against its hash.
|
||||
#
|
||||
# Capturing evidence is not enough. If a stranger cannot regenerate the numbers
|
||||
# in one command, the record is testimony. This is the command.
|
||||
#
|
||||
# usage: ./docs/experiments/reproduce.sh [cycle-glob]
|
||||
set -uo pipefail
|
||||
cd "$(git rev-parse --show-toplevel)" || exit 2
|
||||
E="docs/experiments"; I="$E/instruments/instrument"; CAP="./tools/evidence/capture.sh"
|
||||
STAMP=$(date -u +%Y%m%dT%H%M%SZ); FAIL=0
|
||||
hdr(){ printf '\n\033[1m%s\033[0m\n' "$1"; }
|
||||
|
||||
hdr "1. INSTRUMENTS — proven before anything is measured"
|
||||
for p in "$I"/*/prove.sh; do
|
||||
[ -e "$p" ] || continue
|
||||
name=$(basename "$(dirname "$p")")
|
||||
if "$p" >/dev/null 2>&1; then printf ' ok %-16s proven\n' "$name"
|
||||
else printf ' FAIL %-16s NOT PROVEN — no measurement below is valid\n' "$name"; FAIL=$((FAIL+1)); fi
|
||||
done
|
||||
[ "$FAIL" -eq 0 ] || { printf '\n ABORT: an instrument is unproven. Nothing measured today is reportable.\n'; exit 1; }
|
||||
|
||||
hdr "2. CALIBRATION — recorded, and stamped into every cycle that runs below"
|
||||
CALFILE="$E/instruments/CALIBRATION-$STAMP.txt"
|
||||
{ printf 'calibration run\t%s\n' "$STAMP"
|
||||
printf 'commit\t%s\n' "$(git rev-parse HEAD)"
|
||||
printf 'tree\t%s\n' "$(test -n "$(git status --porcelain)" && echo dirty || echo clean)"
|
||||
printf 'cloc\t%s\n' "$(cloc --version 2>/dev/null || echo ABSENT)"
|
||||
printf 'matplotlib\t%s\n' "$(python3 -c 'import matplotlib;print(matplotlib.__version__)' 2>/dev/null || echo ABSENT)"
|
||||
printf 'cc\t%s\n' "$(cc --version 2>&1|head -1)"
|
||||
for p in "$I"/*/prove.sh; do [ -e "$p" ] || continue
|
||||
printf '\n--- %s ---\n' "$(basename "$(dirname "$p")")"; "$p" 2>&1; done
|
||||
} > "$CALFILE"
|
||||
printf ' %s\n' "$CALFILE"
|
||||
grep -c '^ ok' "$CALFILE" | xargs printf ' %s calibration checks passed\n'
|
||||
|
||||
hdr "3. CYCLES — each re-run, each stamped with the calibration in effect"
|
||||
GLOB="${1:-*}"; ran=0; miss=0
|
||||
# Cycles live at docs/v{1,2}/experiments/cycles/. The previous glob was
|
||||
# $E/v*/cycles/ and matched 1 of 29, then printed REPRODUCED.
|
||||
for m in docs/v*/experiments/cycles/$GLOB/measure.sh; do
|
||||
[ -e "$m" ] || continue
|
||||
d=$(dirname "$m"); name=$(basename "$d")
|
||||
mkdir -p "$d/evidence"
|
||||
cp "$CALFILE" "$d/evidence/CALIBRATION.txt" # <- the cycle SHOWS its calibration
|
||||
if $CAP "$d/evidence" rerun -- "$m" >/dev/null 2>&1; then printf ' ok %-42s re-run\n' "$name"
|
||||
else printf ' FAIL %-42s re-run failed\n' "$name"; FAIL=$((FAIL+1)); fi
|
||||
ran=$((ran+1))
|
||||
done
|
||||
total=$(ls docs/v1/experiments/cycles/*.md docs/v2/experiments/cycles/*.md 2>/dev/null | grep -vc INDEX)
|
||||
miss=$((total - ran))
|
||||
printf ' %s cycle(s) re-run\n' "$ran"
|
||||
if [ "$miss" -gt 0 ]; then
|
||||
printf ' %s of %s cycle(s) have NO measure.sh and are NOT REPRODUCIBLE.\n' "$miss" "$total"
|
||||
printf ' A record that reproduces %s/%s of itself has not been reproduced.\n' "$ran" "$total"
|
||||
FAIL=$((FAIL+1))
|
||||
fi
|
||||
|
||||
hdr "4. VERIFY — every artifact re-hashed against its manifest"
|
||||
for d in $(find docs -name MANIFEST.tsv -exec dirname {} \; | sort -u); do
|
||||
./tools/evidence/verify-manifest.sh "$d" || FAIL=$((FAIL+1))
|
||||
done
|
||||
for d in $E/v*/cycles/*/evidence $I/*/evidence; do
|
||||
[ -f "$d/MANIFEST.tsv" ] || continue
|
||||
./tools/evidence/verify-manifest.sh "$(dirname "$d")" >/dev/null 2>&1 || true
|
||||
done
|
||||
./tools/evidence/verify-notebook.sh || FAIL=$((FAIL+1))
|
||||
|
||||
hdr "RESULT"
|
||||
[ "$FAIL" -eq 0 ] && echo " REPRODUCED — instruments proven, calibration recorded, cycles re-run, artifacts verified." \
|
||||
|| echo " NOT REPRODUCED — $FAIL failure(s) above."
|
||||
exit "$FAIL"
|
||||
@@ -0,0 +1 @@
|
||||
docs/experiments/v2/cycles/07-the-caller-was-already-there/measure.sh
|
||||
@@ -0,0 +1,13 @@
|
||||
CYCLE 07 — the caller was already there
|
||||
claim: exactly three seam emission points, all keyed on fn_name
|
||||
|
||||
-- emission points, counted in the BUILT ARTIFACT, not in source text.
|
||||
(the original assertion grepped codegen.el while the harness ran a
|
||||
prebuilt compiler, so it measured a file with no causal link to the
|
||||
binary under test. see notebook v2 E003.)
|
||||
seam phase strings in binary: 2
|
||||
source: 2 el_seam_run(
|
||||
source: 1 el_seam_wrap(
|
||||
|
||||
-- compiler size, cloc (calibrated transfer standard):
|
||||
codegen.el blank 256 comment 981 code 3197
|
||||
@@ -0,0 +1,7 @@
|
||||
commit a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
tree dirty
|
||||
captured_utc 2026-08-17T17:47:15Z
|
||||
exit 0
|
||||
ms 287
|
||||
sha256_out f4008496b05a21a3c04ce235356fca60132cf72e91dda7aeefa88fef4d5755fe
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1,50 @@
|
||||
calibration run 20260817T174713Z
|
||||
commit a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
tree dirty
|
||||
cloc 2.10
|
||||
matplotlib 3.10.8
|
||||
cc Apple clang version 21.0.0 (clang-2100.1.1.101)
|
||||
|
||||
--- line-count ---
|
||||
POSITIVE — reproduces hand-counted answers
|
||||
ok ref_lines.el total = 18
|
||||
ok ref_lines.el blank = 3
|
||||
ok ref_lines.el comment = 7
|
||||
ok ref_lines.el code = 8
|
||||
ok ref_wrong.el total = 4
|
||||
ok ref_wrong.el blank = 0
|
||||
ok ref_wrong.el comment = 3
|
||||
ok ref_wrong.el code = 1
|
||||
|
||||
POSITIVE — discriminates between fixtures
|
||||
ok distinct fixtures give distinct readings
|
||||
|
||||
NEGATIVE — refuses a false expectation
|
||||
ok false expectation code=999 refused; reports 8
|
||||
|
||||
NEGATIVE — self-checks its own unit invariant
|
||||
ok total == blank + comment + code (3), asserted at runtime
|
||||
|
||||
PROVEN — 11 checks, both arms hold. This instrument may be used.
|
||||
|
||||
--- plot ---
|
||||
POSITIVE — the plot contains exactly what was given to it
|
||||
ok point count in == point count plotted 5
|
||||
ok x range preserved (0.0, 4.0)
|
||||
ok y range preserved (5.0, 40.0)
|
||||
ok final point not dropped/sorted (4.0, 5.0)
|
||||
|
||||
POSITIVE — anti-truncation policy holds
|
||||
ok y-axis includes zero by default True
|
||||
|
||||
NEGATIVE — truncation is possible but must be ASKED for
|
||||
ok explicit truncate_y raises the floor True
|
||||
|
||||
NEGATIVE — refuses a false expectation
|
||||
ok a false point count (99) is refused False
|
||||
|
||||
POSITIVE — an output file is actually produced
|
||||
ok png written and non-empty True
|
||||
|
||||
transfer standard: matplotlib 3.10.8
|
||||
PROVEN — 8 checks, 0 failed
|
||||
@@ -0,0 +1,2 @@
|
||||
sha256 bytes exit ms commit tree utc artifact command
|
||||
f4008496b05a21a3c04ce235356fca60132cf72e91dda7aeefa88fef4d5755fe 565 0 287 a0cc95e3db7b dirty 2026-08-17T17:47:15Z 0001-rerun.out docs/experiments/v2/cycles/07-the-caller-was-already-there/measure.sh
|
||||
|
@@ -0,0 +1,6 @@
|
||||
captured_utc 2026-08-17T17:47:14Z
|
||||
git_sha a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7
|
||||
git_dirty yes
|
||||
host Wills-MacBook-Pro
|
||||
uname Darwin Wills-MacBook-Pro 25.5.0 Darwin Kernel Version 25.5.0: Tue Jun 9 22:28:34 PDT 2026; root:xnu-12377.121.10~1/RELEASE_ARM64_T6041 arm64
|
||||
cc Apple clang version 21.0.0 (clang-2100.1.1.101)
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
# measure.sh — re-runs cycle 07's measurements. Instruments only, no new ones.
|
||||
set -uo pipefail
|
||||
cd "$(git rev-parse --show-toplevel)"
|
||||
echo "CYCLE 07 — the caller was already there"
|
||||
echo "claim: exactly three seam emission points, all keyed on fn_name"
|
||||
echo
|
||||
echo "-- emission points, counted in the BUILT ARTIFACT, not in source text."
|
||||
echo " (the original assertion grepped codegen.el while the harness ran a"
|
||||
echo " prebuilt compiler, so it measured a file with no causal link to the"
|
||||
echo " binary under test. see notebook v2 E003.)"
|
||||
strings /tmp/el-mut-build/elc 2>/dev/null | grep -cE '^(entry|wrap|exit)$' | xargs -I{} echo " seam phase strings in binary: {}"
|
||||
grep -oE 'el_seam_(run|wrap)\(' lang/el-compiler/src/codegen.el | sort | uniq -c | sed 's/^/ source: /'
|
||||
echo
|
||||
echo "-- compiler size, cloc (calibrated transfer standard):"
|
||||
cloc --force-lang=C --quiet --csv lang/el-compiler/src/codegen.el 2>/dev/null | tail -1 | awk -F, '{print " codegen.el blank "$3" comment "$4" code "$5}'
|
||||
+1
@@ -0,0 +1 @@
|
||||
bash -c cd /Users/will/Development/neuron-technologies/foundation/el/docs/v1/experiments/evidence/cycles && for d in 0*-* 1*-*; do [ -f "$d/MANIFEST.tsv" ] || continue; rows=$(awk -F"\t" "NR>1 && NF>=9 && \$1!=\"sha256\"{c++} END{print c+0}" "$d/MANIFEST.tsv"); stray=$(awk -F"\t" "NR>1 && NF<9{c++} END{print c+0}" "$d/MANIFEST.tsv"); outs=$(ls "$d"/*.out 2>/dev/null | wc -l | tr -d " "); printf "%-46s wellformed_rows=%-4s stray_lines=%-4s out_files=%s\n" "$d" "$rows" "$stray" "$outs"; done
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
00-cross-cycle-codegen-linecounts wellformed_rows=9 stray_lines=9 out_files=10
|
||||
01-constructs-have-nowhere-to-be wellformed_rows=20 stray_lines=6 out_files=20
|
||||
02-a-construct-cannot-refuse wellformed_rows=25 stray_lines=68 out_files=25
|
||||
03-the-wrapper-was-conditional wellformed_rows=39 stray_lines=183 out_files=39
|
||||
04-c-has-no-closure-syntax wellformed_rows=32 stray_lines=26 out_files=32
|
||||
05-the-emitter-discards-what-it-knows wellformed_rows=21 stray_lines=17 out_files=21
|
||||
06-the-crossing-resolves-at-emission wellformed_rows=41 stray_lines=271 out_files=41
|
||||
07-invocation-is-not-composable wellformed_rows=22 stray_lines=18 out_files=22
|
||||
08-the-emitter-adjudicates wellformed_rows=22 stray_lines=88 out_files=22
|
||||
09-policy-inside-the-compiler wellformed_rows=26 stray_lines=135 out_files=26
|
||||
10-a-second-copy-of-the-header wellformed_rows=15 stray_lines=33 out_files=15
|
||||
11-one-type-erases-the-return wellformed_rows=11 stray_lines=0 out_files=11
|
||||
12-judgment-lives-with-knowledge wellformed_rows=10 stray_lines=0 out_files=10
|
||||
13-thirty-five-return-types wellformed_rows=20 stray_lines=0 out_files=20
|
||||
14-keywords-that-reserve-nothing wellformed_rows=15 stray_lines=0 out_files=15
|
||||
15-no-namespacing-at-all wellformed_rows=17 stray_lines=0 out_files=17
|
||||
16-tokens-carry-no-position wellformed_rows=13 stray_lines=0 out_files=13
|
||||
17-annotations-are-never-checked wellformed_rows=1 stray_lines=0 out_files=2
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
commit 9540f2399120172b92e986e081877ff058adbdd3
|
||||
tree clean
|
||||
captured_utc 2026-08-17T17:40:38Z
|
||||
exit 0
|
||||
ms 145
|
||||
sha256_out 8b82c6f04c641f9777dd1bd1f2ddd5dd7c61b502bb9aa33d9a013eaa25137873
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
+1
@@ -0,0 +1 @@
|
||||
bash tools/evidence/verify-manifest.sh docs/v1/experiments/evidence/cycles
|
||||
+1
@@ -0,0 +1 @@
|
||||
evidence: 0 artifacts verified, 0 altered, 0 missing
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
commit 9540f2399120172b92e986e081877ff058adbdd3
|
||||
tree clean
|
||||
captured_utc 2026-08-17T17:40:38Z
|
||||
exit 0
|
||||
ms 9
|
||||
sha256_out 965c3dc538c178d5a93adc06ac162d01ab3c5c1f21e34ec16673a5669867c4b8
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
+1
@@ -0,0 +1 @@
|
||||
bash /Users/will/Development/neuron-technologies/foundation/el/tools/evidence/verify-manifest.sh /Users/will/Development/neuron-technologies/foundation/el/docs/v1/experiments/evidence/cycles
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
DIRTY-TREE 11-one-type-erases-the-return/0001-codegen-lines-P3.out (commit fbb3a52220e1) — not reproducible by checkout
|
||||
DIRTY-TREE 11-one-type-erases-the-return/0002-codegen-lines-newline-check.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 11-one-type-erases-the-return/0003-signatures-rel-name-count-P5.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 12-judgment-lives-with-knowledge/0001-codegen-lines-P4.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 12-judgment-lives-with-knowledge/0002-temporal-rel-rule-count-P2.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 13-thirty-five-return-types/0001-codegen-lines-P4.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 13-thirty-five-return-types/0002-is-int-call-name-count-P1.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 16-tokens-carry-no-position/0002-P1-stride-sites-touched.out (commit 99b12f85c6ba) — not reproducible by checkout
|
||||
evidence: 365 artifacts verified, 0 altered, 0 missing
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
commit 9540f2399120172b92e986e081877ff058adbdd3
|
||||
tree clean
|
||||
captured_utc 2026-08-17T17:40:50Z
|
||||
exit 0
|
||||
ms 3949
|
||||
sha256_out cd8adcbc95c1db4fa7848f51a15580de6460b5d5010ee780e4c4aa60f20d2984
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
+1
@@ -0,0 +1 @@
|
||||
bash -c D=$(mktemp -d); bash /Users/will/Development/neuron-technologies/foundation/el/tools/evidence/verify-manifest.sh "$D"; echo "exit=$? on a directory containing NO manifests at all"; rmdir "$D"
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
evidence: 0 artifacts verified, 0 altered, 0 missing
|
||||
exit=0 on a directory containing NO manifests at all
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
commit 9540f2399120172b92e986e081877ff058adbdd3
|
||||
tree clean
|
||||
captured_utc 2026-08-17T17:41:07Z
|
||||
exit 0
|
||||
ms 19
|
||||
sha256_out 824b7a3f9cfba4b9edb8250714efb5f671b94e15f51abe9e04e7d24e44a19fb6
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
+1
@@ -0,0 +1 @@
|
||||
bash -c printf "%-11s %-22s %-22s %s\n" CYCLE CLAIMED OBSERVED "OFFSET(parent/commit)"; printf "%-11s %-22s %-22s %s\n" "03/285166c" "5094 -> 5044 (d50)" "5095 -> 5043 (d52)" "-1 / +1"; printf "%-11s %-22s %-22s %s\n" "06/28d19da" "5157 -> 5096 (d61)" "5156 -> 5095 (d61)" "+1 / +1"; printf "%-11s %-22s %-22s %s\n" "07/bc2f26d" "5042 -> 4977 (d65)" "5043 -> 4976 (d67)" "-1 / +1"; printf "%-11s %-22s %-22s %s\n" "08/c741cfe" "4962 (+301)" "4962 (+301)" " 0 / 0"; printf "%-11s %-22s %-22s %s\n" "09/c2d9596" "4963 -> 4881 (d82)" "4962 -> 4896 (d66)" "-1 / -15"; printf "%-11s %-22s %-22s %s\n" "10/9cc6040" "4903 -> 4512 (d391)" "4896 -> 4512 (d384)" "+7 / 0"; echo; echo "Offsets are NOT in a consistent direction. A single counting convention (missing trailing newline, editor last-line number) would produce a uniform offset. It does not."
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
CYCLE CLAIMED OBSERVED OFFSET(parent/commit)
|
||||
03/285166c 5094 -> 5044 (d50) 5095 -> 5043 (d52) -1 / +1
|
||||
06/28d19da 5157 -> 5096 (d61) 5156 -> 5095 (d61) +1 / +1
|
||||
07/bc2f26d 5042 -> 4977 (d65) 5043 -> 4976 (d67) -1 / +1
|
||||
08/c741cfe 4962 (+301) 4962 (+301) 0 / 0
|
||||
09/c2d9596 4963 -> 4881 (d82) 4962 -> 4896 (d66) -1 / -15
|
||||
10/9cc6040 4903 -> 4512 (d391) 4896 -> 4512 (d384) +7 / 0
|
||||
|
||||
Offsets are NOT in a consistent direction. A single counting convention (missing trailing newline, editor last-line number) would produce a uniform offset. It does not.
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
commit 9540f2399120172b92e986e081877ff058adbdd3
|
||||
tree clean
|
||||
captured_utc 2026-08-17T17:46:23Z
|
||||
exit 0
|
||||
ms 8
|
||||
sha256_out df3922caf56164ed2e7e7e69bc9d7926e7decb4366ef8ef870191e86a6098e66
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
+1
@@ -0,0 +1 @@
|
||||
bash -c for c in 45325f7 addd5120 409bf573 dcaa77d; do n=$(git show "${c}:lang/el-compiler/src/codegen.el" </dev/null 2>/dev/null | wc -l | tr -d " "); printf "%-10s codegen.el=%-6s touched_codegen=%s %s\n" "$c" "$n" "$(git show --name-only --format="" "$c" | grep -c "el-compiler/src/codegen.el")" "$(git log -1 --format="%ci %s" "$c")"; done
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
45325f7 codegen.el=4661 touched_codegen=1 2026-08-16 16:08:40 -0500 singleton: guard the state, not the program's name
|
||||
addd5120 codegen.el=4661 touched_codegen=0 2026-08-16 19:59:43 -0500 runtime: extract engram_text.c, and repair 10 harnesses that could not link
|
||||
409bf573 codegen.el=4661 touched_codegen=0 2026-08-17 04:34:32 -0500 track the architecture docs
|
||||
dcaa77d codegen.el=4670 touched_codegen=1 2026-08-17 04:53:40 -0500 make boundary crossings attributable to the construct that caused them
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
commit 9540f2399120172b92e986e081877ff058adbdd3
|
||||
tree clean
|
||||
captured_utc 2026-08-17T17:50:20Z
|
||||
exit 0
|
||||
ms 93
|
||||
sha256_out e1f3740adfea072c2830cd7381b79864640925eefb64da06229008d948500698
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
+1
@@ -0,0 +1 @@
|
||||
bash /Users/will/Development/neuron-technologies/foundation/el/tools/evidence/verify-manifest.sh /Users/will/Development/neuron-technologies/foundation/el/docs/v1/experiments/evidence/cycles
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
DIRTY-TREE 16-tokens-carry-no-position/0002-P1-stride-sites-touched.out (commit 99b12f85c6ba) — not reproducible by checkout
|
||||
DIRTY-TREE 19-a-convention-is-not-a-gate/0016-P8-rederived-build.out (commit 9a6c161ba98a) — not reproducible by checkout
|
||||
DIRTY-TREE 19-a-convention-is-not-a-gate/0017-P8-rederived-emit-c.out (commit 9a6c161ba98a) — not reproducible by checkout
|
||||
DIRTY-TREE 19-a-convention-is-not-a-gate/0018-P8-rederived-cc.out (commit 9a6c161ba98a) — not reproducible by checkout
|
||||
DIRTY-TREE 19-a-convention-is-not-a-gate/0019-P8-rederived-still-segfaults.out (commit 9a6c161ba98a) — not reproducible by checkout
|
||||
DIRTY-TREE 11-one-type-erases-the-return/0001-codegen-lines-P3.out (commit fbb3a52220e1) — not reproducible by checkout
|
||||
DIRTY-TREE 11-one-type-erases-the-return/0002-codegen-lines-newline-check.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 11-one-type-erases-the-return/0003-signatures-rel-name-count-P5.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 12-judgment-lives-with-knowledge/0001-codegen-lines-P4.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 12-judgment-lives-with-knowledge/0002-temporal-rel-rule-count-P2.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 13-thirty-five-return-types/0001-codegen-lines-P4.out (commit a116710bacba) — not reproducible by checkout
|
||||
DIRTY-TREE 13-thirty-five-return-types/0002-is-int-call-name-count-P1.out (commit a116710bacba) — not reproducible by checkout
|
||||
evidence: 444 artifacts verified, 0 altered, 0 missing
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
commit 9540f2399120172b92e986e081877ff058adbdd3
|
||||
tree clean
|
||||
captured_utc 2026-08-17T17:50:45Z
|
||||
exit 0
|
||||
ms 5030
|
||||
sha256_out 85ba5373fa09dd9e7c17fae1a15c1b1b0687d38d8ef16ed26c3cbe3c4acbc604
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
+1
@@ -0,0 +1 @@
|
||||
bash -c printf "fn main() {\n let sep: String = \"\037\"\n println(el_str_concat(\"a\", el_str_concat(sep, \"b\")))\n}\n" > /tmp/ctrl.el; echo "--- source bytes (note the raw 037 = 0x1F) ---"; od -c /tmp/ctrl.el | sed -n "2,3p"; echo "--- emitted run 1 ---"; /tmp/elcxc /tmp/ctrl.el 2>/dev/null | grep -n "el_val_t sep"; echo "--- emitted run 2 ---"; /tmp/elcxc /tmp/ctrl.el 2>/dev/null | grep -n "el_val_t sep"; echo "--- emitted run 3 ---"; /tmp/elcxc /tmp/ctrl.el 2>/dev/null | grep -n "el_val_t sep"
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
--- source bytes (note the raw 037 = 0x1F) ---
|
||||
0000020 l e t s e p : S t r i n g
|
||||
0000040 = " 037 " \n p r i n t l
|
||||
--- emitted run 1 ---
|
||||
8: el_val_t sep = EL_STR("4344967392");
|
||||
--- emitted run 2 ---
|
||||
8: el_val_t sep = EL_STR("4347851136");
|
||||
--- emitted run 3 ---
|
||||
8: el_val_t sep = EL_STR("4384031472");
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
commit 9540f2399120172b92e986e081877ff058adbdd3
|
||||
tree clean
|
||||
captured_utc 2026-08-17T17:44:07Z
|
||||
exit 0
|
||||
ms 25
|
||||
sha256_out 4cce61f4529b6a536afcd74e324260321d05ffd78ead881a5d98c3a59fa8c2c0
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
+1
@@ -0,0 +1 @@
|
||||
bash -c printf "fn main() {\n let a: String = \"\"\n let b: String = \"ok\"\n let c: String = \"\037\"\n let d: String = \"\011\"\n println(el_str_concat(a, el_str_concat(b, el_str_concat(c, d))))\n}\n" > /tmp/ctrl2.el; /tmp/elcxc /tmp/ctrl2.el 2>/dev/null | grep -nE "el_val_t (a|b|c|d) ="
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
8: el_val_t a = EL_STR("");
|
||||
9: el_val_t b = EL_STR("ok");
|
||||
10: el_val_t c = EL_STR("4324455808");
|
||||
11: el_val_t d = EL_STR("\t");
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
commit 9540f2399120172b92e986e081877ff058adbdd3
|
||||
tree clean
|
||||
captured_utc 2026-08-17T17:44:07Z
|
||||
exit 0
|
||||
ms 13
|
||||
sha256_out 8b2a77870c944d8a686c4dac1f63fe40a5b3b7369f362f7b893053afde93621e
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
+1
@@ -0,0 +1 @@
|
||||
bash -c cd /tmp/rerun-v1-xc && /tmp/elcxc arbor/vessels/arbor-parse/src/main.el > /tmp/A.c 2>/dev/null; /tmp/elcxc arbor/vessels/arbor-parse/src/main.el > /tmp/B.c 2>/dev/null; shasum -a 256 /tmp/A.c /tmp/B.c; echo "--- diff ---"; diff /tmp/A.c /tmp/B.c | head -14; echo "--- source of the literal at El line 259 (cat -v) ---"; sed -n "259p" arbor/vessels/arbor-parse/src/main.el | cat -v
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
f623cf49c5b8dac9a08bc9487d707f7c8274a5256268d6a0d2ad710338ae014a /tmp/A.c
|
||||
ed89c2a0d976b1826a4ee98ad953a2ab3ea1f6cdb755df67eb95e267abc81f73 /tmp/B.c
|
||||
--- diff ---
|
||||
481c481
|
||||
< out = el_str_concat(out, EL_STR("33404397808"));
|
||||
---
|
||||
> out = el_str_concat(out, EL_STR("36759834384"));
|
||||
506c506
|
||||
< return str_split(s, EL_STR("33404400048"));
|
||||
---
|
||||
> return str_split(s, EL_STR("36759837600"));
|
||||
620c620
|
||||
< state_set(key, el_str_concat(el_str_concat(prev, EL_STR("33404413632")), node_id));
|
||||
---
|
||||
> state_set(key, el_str_concat(el_str_concat(prev, EL_STR("36759857760")), node_id));
|
||||
--- source of the literal at El line 259 (cat -v) ---
|
||||
if i > 0 { let out = out + "^_" }
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
commit 9540f2399120172b92e986e081877ff058adbdd3
|
||||
tree clean
|
||||
captured_utc 2026-08-17T17:44:07Z
|
||||
exit 0
|
||||
ms 41
|
||||
sha256_out efc70a381315d22d1d158cd98ee4b88cc3940a367ecb58d09ad9681b7ad9f05e
|
||||
sha256_err e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
+1
@@ -0,0 +1 @@
|
||||
0
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
# DEFECT — string literals containing control bytes compile to a heap address
|
||||
|
||||
Not a cycle claim. This is a **live miscompilation in the current compiler**, found
|
||||
incidentally during the cycle 01–10 evidence re-run and confirmed at branch HEAD.
|
||||
|
||||
It is filed with the evidence because it invalidates a *method* that cycles 01–04 rely
|
||||
on: "the emitted C is byte-identical" is only meaningful if the emitter is
|
||||
deterministic, and for affected inputs it is not.
|
||||
|
||||
## Provenance
|
||||
|
||||
Captured from a clean detached worktree at `9540f2399` (`iteration-2` HEAD), compiler
|
||||
built at that commit. All artifacts `tree=clean`.
|
||||
|
||||
Found by the cycle 04 agent while checking prediction 5 ("existing `@manager` output
|
||||
byte-identical") across the whole tree: of 378 `.el` files, 368 emitted identically
|
||||
under the parent and the commit compiler, 9 failed under both, and **1 differed — and
|
||||
differed from itself between two runs of the same compiler.** I reproduced it
|
||||
independently at HEAD before accepting it.
|
||||
|
||||
## The defect
|
||||
|
||||
A string literal containing a raw control byte with no escape mapping is emitted as a
|
||||
**decimal heap address** instead of the string.
|
||||
|
||||
`0002-control-char-vs-empty-and-printable.out` isolates it exactly:
|
||||
|
||||
```
|
||||
8: el_val_t a = EL_STR("");
|
||||
9: el_val_t b = EL_STR("ok");
|
||||
10: el_val_t c = EL_STR("4324455808"); <-- source literal is a raw 0x1F
|
||||
11: el_val_t d = EL_STR("\t");
|
||||
```
|
||||
|
||||
- empty literal `""` — correct
|
||||
- printable literal `"ok"` — correct
|
||||
- **raw `0x1F` (unit separator) — emitted as `4324455808`**
|
||||
- raw `0x09` (tab) — correct, `"\t"`
|
||||
|
||||
Tab has an escape mapping and survives. `0x1F` has none, and instead of being escaped
|
||||
it falls through to a path that stringifies a pointer.
|
||||
|
||||
## It is nondeterministic
|
||||
|
||||
`0001-minimal-reproducer-control-char-literal.out`, three consecutive runs of the
|
||||
**same** compiler on the **same** source:
|
||||
|
||||
```
|
||||
--- emitted run 1 --- el_val_t sep = EL_STR("4344967392");
|
||||
--- emitted run 2 --- el_val_t sep = EL_STR("4347851136");
|
||||
--- emitted run 3 --- el_val_t sep = EL_STR("4384031472");
|
||||
```
|
||||
|
||||
The value tracks the process heap base, which moves under ASLR.
|
||||
|
||||
## It occurs in real code in this repository
|
||||
|
||||
`0003-real-file-nondeterminism-arbor-parse.out`. `arbor/vessels/arbor-parse/src/main.el`
|
||||
uses `0x1F` as a field separator — El source line 259, shown through `cat -v`:
|
||||
|
||||
```
|
||||
if i > 0 { let out = out + "^_" }
|
||||
```
|
||||
|
||||
Two runs of the same compiler over that file produce different sha256, differing in
|
||||
three places, each a separator literal rendered as a different address. Within a single
|
||||
run the corrupted values differ by fixed offsets (`+2240`, `+32208`), consistent with
|
||||
distinct literals in one heap arena; across runs the whole block shifts.
|
||||
|
||||
The file applies **no decorators at all**, so this is unrelated to the construct work
|
||||
in cycles 01–10, and it reproduces at cycle 04's parent `4f7568b` as well as at HEAD.
|
||||
It predates the cycle series.
|
||||
|
||||
## Why it matters
|
||||
|
||||
1. **Silent miscompilation.** `arbor-parse` builds and links. At runtime it joins and
|
||||
splits records on a separator that is a decimal rendering of an address rather than
|
||||
`0x1F` — and the encode and decode sides get *different* values whenever they are
|
||||
compiled separately. No diagnostic is produced at any stage.
|
||||
2. **Reproducible builds are broken** for any source containing such a literal.
|
||||
3. **It weakens byte-identity as a control.** Cycles 01, 02, 03 and 04 all assert
|
||||
"emitted C is byte-identical". Those assertions were checked on decorator-bearing
|
||||
sources, which are unaffected — the cycle 04 agent verified all 3 `@manager`/
|
||||
`@accessor` files emit identically — so no cycle verdict changes. But the control
|
||||
itself is only sound on inputs that avoid this defect, and nothing in the record
|
||||
says so.
|
||||
|
||||
## Verdicts
|
||||
|
||||
| Claim | Artifact | Verdict |
|
||||
|---|---|---|
|
||||
| Control-byte literals emit as an address, not the string | `0002` | **CONFIRMED** |
|
||||
| The emitter is nondeterministic for such inputs | `0001` (3 runs) | **CONFIRMED** |
|
||||
| A real file in this repo is affected | `0003` | **CONFIRMED** |
|
||||
| The defect predates cycles 01–10 | cycle 04's `0049`-series (parent `4f7568b` shows it too) | **CONFIRMED** |
|
||||
|
||||
## Not fixed here
|
||||
|
||||
This evidence pass does not change code. The defect is recorded, reproduced, and
|
||||
minimally isolated so it can be fixed and regression-tested separately. A fix should
|
||||
escape all non-printable bytes in the literal emitter and add a test asserting that
|
||||
compiling the same source twice yields byte-identical output.
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
sha256 bytes exit ms commit tree utc artifact command
|
||||
4cce61f4529b6a536afcd74e324260321d05ffd78ead881a5d98c3a59fa8c2c0 382 0 25 9540f2399120 clean 2026-08-17T17:44:07Z 0001-minimal-reproducer-control-char-literal.out bash -c printf "fn main() {\n let sep: String = \"\037\"\n println(el_str_concat(\"a\", el_str_concat(sep, \"b\")))\n}\n" > /tmp/ctrl.el; echo "--- source bytes (note the raw 037 = 0x1F) ---"; od -c /tmp/ctrl.el | sed -n "2,3p"; echo "--- emitted run 1 ---"; /tmp/elcxc /tmp/ctrl.el 2>/dev/null | grep -n "el_val_t sep"; echo "--- emitted run 2 ---"; /tmp/elcxc /tmp/ctrl.el 2>/dev/null | grep -n "el_val_t sep"; echo "--- emitted run 3 ---"; /tmp/elcxc /tmp/ctrl.el 2>/dev/null | grep -n "el_val_t sep"
|
||||
8b2a77870c944d8a686c4dac1f63fe40a5b3b7369f362f7b893053afde93621e 132 0 13 9540f2399120 clean 2026-08-17T17:44:07Z 0002-control-char-vs-empty-and-printable.out bash -c printf "fn main() {\n let a: String = \"\"\n let b: String = \"ok\"\n let c: String = \"\037\"\n let d: String = \"\011\"\n println(el_str_concat(a, el_str_concat(b, el_str_concat(c, d))))\n}\n" > /tmp/ctrl2.el; /tmp/elcxc /tmp/ctrl2.el 2>/dev/null | grep -nE "el_val_t (a|b|c|d) ="
|
||||
efc70a381315d22d1d158cd98ee4b88cc3940a367ecb58d09ad9681b7ad9f05e 685 0 41 9540f2399120 clean 2026-08-17T17:44:07Z 0003-real-file-nondeterminism-arbor-parse.out bash -c cd /tmp/rerun-v1-xc && /tmp/elcxc arbor/vessels/arbor-parse/src/main.el > /tmp/A.c 2>/dev/null; /tmp/elcxc arbor/vessels/arbor-parse/src/main.el > /tmp/B.c 2>/dev/null; shasum -a 256 /tmp/A.c /tmp/B.c; echo "--- diff ---"; diff /tmp/A.c /tmp/B.c | head -14; echo "--- source of the literal at El line 259 (cat -v) ---"; sed -n "259p" arbor/vessels/arbor-parse/src/main.el | cat -v
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 179.
|
+6
@@ -0,0 +1,6 @@
|
||||
captured_utc 2026-08-17T17:44:07Z
|
||||
git_sha 9540f2399120172b92e986e081877ff058adbdd3
|
||||
git_dirty no
|
||||
host Wills-MacBook-Pro
|
||||
uname Darwin Wills-MacBook-Pro 25.5.0 Darwin Kernel Version 25.5.0: Tue Jun 9 22:28:34 PDT 2026; root:xnu-12377.121.10~1/RELEASE_ARM64_T6041 arm64
|
||||
cc Apple clang version 21.0.0 (clang-2100.1.1.101)
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
bash -c
|
||||
echo "Which C source each timed binary was built from, and whether it contains wrappers:"
|
||||
for pair in "/tmp/elcP_g2:/tmp/pg2_03b.c:BEFORE bootstrap-built 24f7fb5" "/tmp/elcP_g3:/tmp/pg3_03b.c:BEFORE self-hosted 24f7fb5" "/tmp/elc03b:/tmp/g03b.c:AFTER bootstrap-built 285166c" "/tmp/elc03b_g3:/tmp/g03b_b.c:AFTER self-hosted 285166c"; do
|
||||
bin=${pair%%:*}; rest=${pair#*:}; src=${rest%%:*}; lbl=${rest#*:}
|
||||
printf " %-34s bin=%-18s src=%-16s lines=%-6s __el_body_ defs=%s el_seam_run calls=%s\n" \
|
||||
"$lbl" "$bin" "$src" "$(wc -l < $src | tr -d \" \")" "$(grep -cE \"^static el_val_t __el_body_\" $src)" "$(grep -c \"el_seam_run(\" $src)"
|
||||
done
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
bash: -c: line 6: syntax error near unexpected token `(' while looking for matching `)'
|
||||
bash: -c: line 6: ` "$lbl" "$bin" "$src" "$(wc -l < $src | tr -d \" \")" "$(grep -cE \"^static el_val_t __el_body_\" $src)" "$(grep -c \"el_seam_run(\" $src)"'
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user