Skip to content

DECISION: hyperpolymath-archive tracked Idris2 .ttc/.ttm — keep (archive preservation) vs gitignore-untrack #121

@hyperpolymath

Description

@hyperpolymath

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 .gitignore already 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.)

Refs #66

Metadata

Metadata

Assignees

No one assigned

    Labels

    majorMajor / load-bearing work

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions