You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Parent: #66 (estate gitignore audit). Surfaced by reposystem#33/#34 (BuckleScript-artifact residual) and the Item-83 audit. Decision needed from owner — do not bulk-strip pending this call.
What was found
hyperpolymath/hyperpolymath-archive tracks 19 Idris2 build artifacts committed before the ignore rule existed (same shape as the reposystem#34 BuckleScript case — committed pre-ignore, now redundant against .gitignore):
Project
.ttc
.ttm
idris2-cno
3
3
idris2-dyadt
4
4
idris2-echidna
2
3
Total
9
10
All under idris2-{cno,dyadt,echidna}/{src,tests}/build/ttc/2025081600/...
Combined size: .ttc ≈ 339 KB, .ttm ≈ 301 KB, ≈ 640 KB total (repo working tree is small; this is a meaningful fraction of churn-prone content but not a size emergency).
These are standard Idris2 outputs: .ttc = typechecked binary, .ttm = compiled bytecode. Both are fully regenerable — every project ships its complete .idr source set and a valid .ipkg (idris2 --build <pkg>.ipkg reproduces them). Nothing here is irreplaceable.
Each project's own .gitignorealready ignores build/ (idris2-cno/.gitignore:86:build/ matches the exact paths, verified with git check-ignore --no-index). So this is purely tracked-stale-artifact debt; no new .gitignore rule is required — the existing rule already covers it. (Confirmed: git rm --cached is the only mechanism in question; not a gitignore-pattern change.)
The genuine tension
hyperpolymath-archive is not a normal repo. Its README.adoc states:
"Archive of repositories that have been consolidated into monorepos. Each subdirectory preserves the final state of an absorbed repository."
So the artifacts are arguably part of the deliberate frozen snapshot — "final state" could be read to include the as-absorbed build/ tree, not just sources. That is why this was routed for a decision rather than swept with the rest of Item 83.
Options
A. Untrack (git rm --cached the 19 files; keep on disk locally), recommended.
Pro: removes ~640 KB of regenerable binary noise; aligns the archive with the estate "don't commit regenerable build output" stance (cf. Stop committing generated/* — gitignore + regenerate-on-trigger #93) and with the reposystem#34 precedent (BuckleScript artifacts committed pre-ignore → untracked, no source impact); the build/ ignore rule already in place prevents recurrence; sources + .ipkg remain, so the snapshot is still faithfully reproducible — "final state" is preserved at the source level, which is the meaningful artifact.
Con: a strict reading of "preserves the final state" loses the literal as-absorbed bytecode bytes.
B. Keep (declare an explicit archive-preservation carve-out).
Pro: the archive's stated job is verbatim preservation; honour it literally; tiny size; no further action.
Con: institutionalises tracked regenerable binaries in a repo whose own .gitignore says otherwise (internally contradictory state); invites the same drift class to recur; inconsistent with reposystem#34 / Stop committing generated/* — gitignore + regenerate-on-trigger #93.
C. Keep but document. Add a one-line note in the archive README.adoc that tracked build/ trees under absorbed projects are intentional verbatim preservation, and add a !build/-style un-ignore (or .gitattributes marker) so the state is intentional rather than accidental drift. Heavier; resolves the contradiction by making "keep" explicit.
Recommendation
Option A. The Idris2 .ttc/.ttm are deterministically regenerable from the in-repo sources, the per-project .gitignore already excludes build/, and this exactly mirrors the reposystem#34 precedent the owner already approved. "Preserves the final state" is satisfied by the preserved sources + .ipkg; tracking the bytecode adds drift risk for no recoverability benefit. If verbatim-bytecode preservation is in fact intended, Option C (make it explicit) is preferable to the current silent-contradiction status quo.
Awaiting owner decision before any git rm --cached. No estate-wide sweep performed; no .ttc deleted from disk. (Scope note: hyperpolymath-archive is the only estate repo with committed .ttc/.ttm found in this audit.)
Parent: #66 (estate gitignore audit). Surfaced by reposystem#33/#34 (BuckleScript-artifact residual) and the Item-83 audit. Decision needed from owner — do not bulk-strip pending this call.
What was found
hyperpolymath/hyperpolymath-archivetracks 19 Idris2 build artifacts committed before the ignore rule existed (same shape as the reposystem#34 BuckleScript case — committed pre-ignore, now redundant against.gitignore):.ttc.ttmidris2-cnoidris2-dyadtidris2-echidnaidris2-{cno,dyadt,echidna}/{src,tests}/build/ttc/2025081600/....ttc≈ 339 KB,.ttm≈ 301 KB, ≈ 640 KB total (repo working tree is small; this is a meaningful fraction of churn-prone content but not a size emergency)..ttc= typechecked binary,.ttm= compiled bytecode. Both are fully regenerable — every project ships its complete.idrsource set and a valid.ipkg(idris2 --build <pkg>.ipkgreproduces them). Nothing here is irreplaceable..gitignorealready ignoresbuild/(idris2-cno/.gitignore:86:build/matches the exact paths, verified withgit check-ignore --no-index). So this is purely tracked-stale-artifact debt; no new.gitignorerule is required — the existing rule already covers it. (Confirmed:git rm --cachedis the only mechanism in question; not a gitignore-pattern change.)The genuine tension
hyperpolymath-archiveis not a normal repo. ItsREADME.adocstates:So the artifacts are arguably part of the deliberate frozen snapshot — "final state" could be read to include the as-absorbed
build/tree, not just sources. That is why this was routed for a decision rather than swept with the rest of Item 83.Options
A. Untrack (
git rm --cachedthe 19 files; keep on disk locally), recommended.build/ignore rule already in place prevents recurrence; sources +.ipkgremain, so the snapshot is still faithfully reproducible — "final state" is preserved at the source level, which is the meaningful artifact.B. Keep (declare an explicit archive-preservation carve-out).
.gitignoresays otherwise (internally contradictory state); invites the same drift class to recur; inconsistent with reposystem#34 / Stop committing generated/* — gitignore + regenerate-on-trigger #93.C. Keep but document. Add a one-line note in the archive
README.adocthat trackedbuild/trees under absorbed projects are intentional verbatim preservation, and add a!build/-style un-ignore (or.gitattributesmarker) so the state is intentional rather than accidental drift. Heavier; resolves the contradiction by making "keep" explicit.Recommendation
Option A. The Idris2
.ttc/.ttmare deterministically regenerable from the in-repo sources, the per-project.gitignorealready excludesbuild/, and this exactly mirrors the reposystem#34 precedent the owner already approved. "Preserves the final state" is satisfied by the preserved sources +.ipkg; tracking the bytecode adds drift risk for no recoverability benefit. If verbatim-bytecode preservation is in fact intended, Option C (make it explicit) is preferable to the current silent-contradiction status quo.Awaiting owner decision before any
git rm --cached. No estate-wide sweep performed; no.ttcdeleted from disk. (Scope note:hyperpolymath-archiveis the only estate repo with committed.ttc/.ttmfound in this audit.)Refs #66