build: a build no longer dirties the tree

v3/include/version.h is written by every build (kernel/Makefile and
v3/Makefile, both FORCE), with a timestamp and the last build's ARCH; the
committed copy was stale (LITHOS_VERSION 2.1.0). Untracked, and .gitignore's
entry corrected: it said include/version.h, the path before the move to v3/,
and matched nothing.

capsules/BLOCK_MAP.md differed on every build only in mkcapsule's
"Generated ... <timestamp>" header. The timestamp is dropped, so the manifest
changes only when the capsules do; two runs are byte-identical.
mkcapsule's warnings unchanged (5, #143).

Captain Bob, 2026-11-11: untrack version.h and fix the ignore; drop the
manifest timestamp.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017RzZgrf7V7Zk2iczBXDRbm
This commit is contained in:
Claude
2026-11-11 17:05:01 +00:00
parent aec7ddb56e
commit 90c5c140ea
4 changed files with 5 additions and 22 deletions
+2 -1
View File
@@ -16,7 +16,8 @@ docs/api/
*.iml
# generated headers
include/version.h
# v3/include/version.h is written by every build (kernel/Makefile, v3/Makefile): untracked 2026-11-11
v3/include/version.h
# bundles / archives
*.bundle
+1 -1
View File
@@ -1,5 +1,5 @@
# Capsule Block Manifest — Auto-generated
<!-- Generated by mkcapsule --manifest 2026-10-17T02:58:45Z -->
<!-- Generated by mkcapsule --manifest (no timestamp: it changes only with the capsules) -->
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
<!-- Hand-written justifications and immutability notes live -->
<!-- in MANIFEST.md alongside this auto-generated index. -->
+2 -7
View File
@@ -740,11 +740,6 @@ static int cmp_blockref(const void *a, const void *b) {
}
static void generate_manifest(FILE *out) {
time_t now = time(NULL);
struct tm *tm_ptr = gmtime(&now);
char timestamp[64];
strftime(timestamp, sizeof(timestamp), "%Y-%m-%dT%H:%M:%SZ", tm_ptr);
qsort(manifest_entries, (size_t)manifest_count,
sizeof(ManifestEntry), cmp_manifest_name);
@@ -762,11 +757,11 @@ static void generate_manifest(FILE *out) {
fprintf(out,
"# Capsule Block Manifest — Auto-generated\n"
"<!-- Generated by mkcapsule --manifest %s -->\n"
"<!-- Generated by mkcapsule --manifest (no timestamp: it changes only with the capsules) -->\n"
"<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->\n"
"<!-- Hand-written justifications and immutability notes live -->\n"
"<!-- in MANIFEST.md alongside this auto-generated index. -->\n"
"\n", timestamp);
"\n");
/* Capsule summary */
fprintf(out, "## Capsule Summary\n\n");
-13
View File
@@ -1,13 +0,0 @@
#ifndef STARFORTH_VERSION_H
#define STARFORTH_VERSION_H
#define STARFORTH_VERSION "3.2.0"
#define STARFORTH_ARCH "amd64"
#define STARFORTH_TARGET "kernel"
#define STARFORTH_TIMESTAMP "2026-10-16T22:58:44-04:00"
#define STARFORTH_VERSION_FULL "StarForth v3.2.0 amd64 kernel 2026-10-16T22:58:44-04:00"
#define LITHOS_VERSION "2.1.0"
#define LITHOS_VERSION_STR "LithosAnanke v2.1.0 amd64"
#endif /* STARFORTH_VERSION_H */