Repository navigation
DECISION: hyperpolymath-archive tracked Idris2 .ttc/.ttm — keep (archive preservation) vs gitignore-untrack #121
Description
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.idrsource set and a valid.ipkg(idris2 --build <pkg>.ipkgreproduces them). Nothing here is irreplaceable. - Each project's own
.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-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 +.ipkgremain, 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
.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.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.)
Refs #66
Activity
hyperpolymath commentedon May 18, 2026
Decision: Option A (untrack) — executed.
User-authorized 2026-05-18. The 19 tracked Idris2
.ttc/.ttmfiles (~640 KB) in hyperpolymath-archive were deterministic regenerable typecheck/bytecode output, so option A was selected over verbatim-preservation: untracked viagit rm --cached(history fully preserved — the archive's preservation purpose is intact since the bytes remain reachable in git history) and gitignored going forward.Implemented and merged: hyperpolymath-archive#11.
Closing this decision issue (decision made + implemented). Parent standards#66 left open and untouched — no joint-close.