From 6dbb38b209a64910d1e7bc236b61093b6f0c6cae Mon Sep 17 00:00:00 2001 From: Anachronaut Date: Fri, 21 Aug 2026 13:29:41 -0400 Subject: [PATCH] Stop committing assembled programs, nine of which had gone stale Thirteen build artifacts were tracked: ten .bin files, a disk image, and the text file that had been put on it. Every one is produced by 'make' in Programs/ from a source file that is also tracked. NINE OF THE TEN BINARIES DISAGREED WITH THEIR OWN SOURCE, including Programs/CosmOS/Bin/cosmos.bin - the operating system. Only hello.bin still matched, and that by accident. That is worse than shipping no binary at all. A repository holding both a source file and a stale build of it has two answers to what a program does, and the wrong one is the one that runs. Somebody reads the source, runs the binary, and sees behaviour that is not in the code with nothing to tell them why. Nothing referenced any of them - not the makefiles, not the tests, not the manuals. Checked before removing, and checked after: the suite passes, and a clean clone with all of them gone builds both tools and assembles every program from source alone. .gitignore now covers *.bin, *.sbx and *.img, unanchored, because a build output may appear anywhere a source file lives. Programs/CosmOS/Bin/ held cosmos.bin, disk.img and a 17 byte hello.txt that existed only to be put on that image. It was a snapshot of a demo from before Tests/makedisks.sh built its own fixtures, and it goes with them. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW --- .gitignore | 10 ++++++++++ Programs/16bitFibonacci.bin | Bin 500 -> 0 bytes Programs/16bitSegmentedSieve.bin | Bin 1001 -> 0 bytes Programs/16x16Life.bin | Bin 800 -> 0 bytes Programs/32bitFibonacci.bin | Bin 579 -> 0 bytes Programs/8bitFibonacci.bin | Bin 458 -> 0 bytes Programs/CosmOS/Bin/cosmos.bin | Bin 3824 -> 0 bytes Programs/CosmOS/Bin/disk.img | Bin 131072 -> 0 bytes Programs/CosmOS/Bin/hello.txt | 1 - Programs/Libraries/int16print.bin | Bin 645 -> 0 bytes Programs/hello.bin | Bin 50 -> 0 bytes Programs/primeSieve/8bitSieve.bin | Bin 720 -> 0 bytes Programs/printHello.bin | Bin 483 -> 0 bytes Programs/replCalculator.bin | Bin 1020 -> 0 bytes 14 files changed, 10 insertions(+), 1 deletion(-) delete mode 100644 Programs/16bitFibonacci.bin delete mode 100644 Programs/16bitSegmentedSieve.bin delete mode 100644 Programs/16x16Life.bin delete mode 100644 Programs/32bitFibonacci.bin delete mode 100644 Programs/8bitFibonacci.bin delete mode 100644 Programs/CosmOS/Bin/cosmos.bin delete mode 100644 Programs/CosmOS/Bin/disk.img delete mode 100644 Programs/CosmOS/Bin/hello.txt delete mode 100644 Programs/Libraries/int16print.bin delete mode 100644 Programs/hello.bin delete mode 100644 Programs/primeSieve/8bitSieve.bin delete mode 100644 Programs/printHello.bin delete mode 100644 Programs/replCalculator.bin diff --git a/.gitignore b/.gitignore index d05758b..6a6b992 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,13 @@ # Python leaves these beside the test scripts. __pycache__/ + +# Assembled programs. Every one of these is built by 'make' in Programs/ from a source +# file that is tracked, so committing them only creates a second answer to the question of +# what a program does - and the second answer goes stale silently. Nine of the ten that +# used to be here disagreed with their own source, including the operating system. +# +# Not anchored, because a .bin may be built anywhere a .asm lives. +*.bin +*.sbx +*.img diff --git a/Programs/16bitFibonacci.bin b/Programs/16bitFibonacci.bin deleted file mode 100644 index 6282bac72ce911a605b517c1093bcc1dda8b9322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmWFta%XrZz%Wyd>mq}^y22$0A;h4hBEZ1mB*dU}k-pE2{ELKGfZ-H5@(nsz>w?c zB*c&laQF|f0i%9o#^2;ta(OPT~y3;tU+_j7$zr?u-l$&Ke9Zj?N$*3?dAV b+!+~M1Q=$DGcf;maSUN(VHoLvk%0jKqZTRo diff --git a/Programs/16bitSegmentedSieve.bin b/Programs/16bitSegmentedSieve.bin deleted file mode 100644 index ace554cefcd59a911ec50b1b693feb64eaf8a69a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1001 zcmWFta%Z#=V3?`Kb&)|{UEvah5MoeL5n$kO5@Jxg$lxHrAR+J0z@X^n;O5|_&Shw# z!6?EIAjA;h&cNVc;H0F%D9GU9D!`!c;^3qNqTLx7Tpb*ogcwrA874V8i8D+RV90fJ z5@N`O@#WPSI5;>s#2MPu7}(j_*~J;!j0_5j zZVpO93~K}!7P~VsI0-Rq6JXfq&d8v~=<49=&cvu@CeHBHgIPt0;k*FDVUPxAVTSu4 zEl&j)E{ikj2ryg+X;g9*V)!V)Fi)I;`MJD}y9EgCRFVB`?EDK}JPk#!PW0L0M)`dFF$vtdW{*6Sdhb^*I)ra{aXCooUP0 z=`7gkF1*oGDP&X6x+C)yph2d{}SK*zC;N=^5DVT{$&u z=k!Ryxe1<&(@!qX`M9>^<>p$=t@S_m_cb1z*m!jM%;U2*US9k1{vpT5Cq18@x%u*n P;QRZEA0IvZ{Y?@8Bw>5k diff --git a/Programs/16x16Life.bin b/Programs/16x16Life.bin deleted file mode 100644 index 9f4f7c654f31c0897aa71e76cd632e5792e372ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmWFta%bWaV3?`Kb&)|{UEvah5MoeL5n$kO5@Jxg$lxHrAR+J0z@X^n;O5|_&Shw# z!6?EIAjA;h&cNVc;H0F%D9GU9D!`!c;^3qNqTLx7Tpb*ogcwrA874V8i8D+RV90fJ z5@N`O@#WPSI5;>s#2MPu7}(j_*~J;!-QWB`jPn+Y(y zFq6k+m^foHk^uo`0*tn1NV*fv1Q<=tF>wko{*-rd3}NJ981XZh diff --git a/Programs/32bitFibonacci.bin b/Programs/32bitFibonacci.bin deleted file mode 100644 index 00ea1541ce65542a7fbbe0725e40e61a9af83152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 579 zcmWFta%VIYV3?`Kb&)|{UEvah5MoeL5n$kO5@Jxg$lxHrAR+J0z@X^n;O5|_&Shw# z!6?EIAjA;h&cNVc;H0F%D9GU9D!`!c;^3qNqTLx7Tpb*ogcwrA874V8i8D+RV90fJ z5@N`O@#WPSI5;>s#2MPu7}(j_*~J;!DI1BW{!i!;b{1{aVv5Yxd4!gc_2 i;5;bT!HGeHQP)L)VWv0(^M4n|5JnD$5e^uk{s#bHRX9Ze diff --git a/Programs/8bitFibonacci.bin b/Programs/8bitFibonacci.bin deleted file mode 100644 index 77dc8b5e147333bacae390b80aeddab2854eb8a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 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 BBv$|c diff --git a/Programs/printHello.bin b/Programs/printHello.bin deleted file mode 100644 index f8d640a8701241384f21b335d9d751bd7c7e6416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 483 zcmWFta%b2qz%Wyd>mq}^y22$0A;h4hBEZ1mB*dU}k-pE2{ELKGfZ-H5@(nsz>w?c zB*c&laQF|f0s#2MPu7}(j_*~J;!!ZwoT=x-+ski8B<7GcXG<%ok@Wa%VIbXOIwJnD5RQ1Y@L#Gf4b@z@Vu)_FnH#bCFW$NC}gBo vB&MV$XXYm6C}idpl$Pi*gyv=E<(KCv