Skip to content

docs(provenance): remove fabricated history, and write nothing that is not true - #63

Merged
Inkithai merged 3 commits into
mainfrom
arena/343a4e33-oyster360
Oct 11, 2026
Merged

Inkithai merged 3 commits into
mainfrom
arena/343a4e33-oyster360

Conversation

@Inkithai

@Inkithai Inkithai commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

Three commits. The rule they implement: write nothing that is not true.

The first revision of this work offered a way to keep the commit graph by clamping impossible dates forward to a marker. That was wrong and has been deleted — moving a date from 2025-01-14 to a plausible marker does not remove a false claim, it launders one. An impossible date announces itself; a plausible one does not.

The constraint that decides the design

Git requires an author and a date on every commit. There is no "author unknown". The real dates of this code are not recoverable — it arrived as a copy from a private GitLab. So a commit that cannot be honestly attributed has exactly three options:

  1. Write an invented author and date — what happened, what we are removing.
  2. Write a true author and date that do not describe the original work.
  3. Delete the commit.

Options 2 and 3 both discard the per-commit record. Nothing recovers it. That is the price, and it is unavoidable.

Three measurements that decided the shape of the fix

Measurement Result
Commits on main with metadata that cannot be true 213 of 329
Commits with a fabricated-free ancestry 0 — the corruption is at the root, so there was no honest portion of the history to carry forward
Taggers landing on exactly 15:00:00 UTC on the changelog's asserted release days 4 (v0.6.0–v0.9.0)

Plus: the tagger timestamps of v0.6.0 and v0.7.0 precede the commits they tag — by 11 and 4 weeks. A tag created in normal use cannot predate its target.

What the tooling now does

scripts/rewrite_history.sh --squash-import (recommended). Replaces the history with one commit holding the byte-identical tree, authored by the real owner, dated when it was created, with a message stating the real numbers. Every field is true. Verified end to end against a real clone of this repo:

before:  329 commits on main, 4 roots, 213 with impossible metadata
after:   1 commit on main, 1 root, 0 fabricated identities

main tree before:  d38494ca8e20f36a4bd765b43808d0a9ad8824c7
main tree after:   d38494ca8e20f36a4bd765b43808d0a9ad8824c7   <- identical

The unchanged tree hash is the proof no file content moved. The script never pushes, never touches a remote, dry-runs by default, and writes a bundle backup plus a git log --format=raw dump before changing an object.

--mailmap (documented, marked not recommended). Keeps the commit graph, but attributes 181 commits to the owner on inference and leaves every fabricated timestamp in place. It is available because the choice between "no history" and "history with inferred authors" is the owner's to make — but the file and the script both say plainly which one writes unverifiable claims.

Deleted: scripts/rewrite_dates_callback.py, which implemented the clamping approach.

ATTRIBUTION.md — the record that replaces the deleted metadata

  • The genuine author and the tooling that is not a person.
  • The ten names that must never be credited, with their addresses and counts.
  • What their 181 commits actually changed, labelled as such — the labels are fabricated, the code changes are real.
  • An explicit statement that no date and no split of work between individuals can be established.

Remote changes made alongside this PR

  • Deleted v0.1.0–v0.9.0 (nine fabricated tags). v1.0.0 and v1.1.0 remain. Deleting a ref removes the easiest way to inspect it, so the tag objects, taggers and targets are recorded by hash in the evidence document first.
  • Corrected the v1.0.0 release note, which said "first stable tag on the rewritten maintenance history".

Verification

  • Markdown, shell and Python only; no application code, no dependency, no CI surface touched.
  • The shipped script was executed against a fresh clone of this repository, not just a synthetic fixture.
  • Every number was regenerated from the current main with git log / git for-each-ref / git cat-file, and the README claims were re-derived rather than copied from the previous disclosure.
  • docs/history_provenance_evidence.md now records that its own hashes will not resolve from a fresh clone once the rewrite is applied, and names the backup that keeps them checkable.

Not done, deliberately

The rewrite has not been applied to main. That is a force-push which invalidates every clone and open PR, and it belongs to the owner. The tested tooling is here so it can be a deliberate choice.

arena-ai-coding-agent Bot and others added 2 commits October 11, 2026 06:36
CHANGELOG.md presented releases 0.1.0 (2025-08-16) through 0.9.0
(2026-07-18) on a dated schedule. Eight of those nine dates fall before
the repository was created on 2026-07-07, so they cannot be accurate,
and the v0.x tags contradict them further: v0.1.0 resolves to a
2026-08-21 commit while v0.9.0 resolves to a 2026-04-24 commit, and the
targets of v0.7.0, v0.8.0 and v0.9.0 predate the repository itself.

The dates are removed from the 0.x headings, which now read
"date unrecorded", and a note at the top of the file explains why. The
feature content of those entries is unchanged and remains verifiable in
the codebase.

Unlike the commit timestamps, which the README deliberately leaves
unrewritten so the evidence survives, these dates were false assertions
in the current tree. Correcting them removes a false claim without
erasing any historical evidence. The README provenance section gains the
tag and release-note findings and records the reasoning.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
…dure

The provenance disclosure made three claims that nothing in the repository
backed with a reproducible artefact. This adds the evidence, removes the last
false claims in the current tree, and provides a reviewed procedure for the
one thing that has not been done: rewriting the history itself.

Evidence (docs/history_provenance_evidence.md):
- All ten fabricated identities and sixteen addresses, with per-identity
  commit counts: 181 of 329 commits on main (55%).
- The four root commits, in two byte-identical tree pairs.
- The timestamp collisions, including five commits under five identities at
  2026-08-24 04:12:50.
- The full tag table. Two new findings: the tagger timestamps of v0.6.0 and
  v0.7.0 precede the commits they tag, which is impossible for a tag created
  in normal use, and the v0.6.0-v0.9.0 taggers all land on exactly 15:00:00
  UTC on the dates the changelog used to claim as release days.

Current tree (CHANGELOG.md, README.md):
- The v0.x compare links are replaced: v0.9.0 no longer exists to compare
  against, and the fabricated dates are gone.
- The README records the tag findings, the corrected release note, and draws
  the line explicitly: false claims about the present are removed, fabricated
  history is kept and documented.

Rewrite procedure (docs/history_rewrite.md, scripts/rewrite_history.sh):
- Never pushes, never touches a remote, dry run by default, and writes a full
  bundle plus a raw text record of the old history before changing an object.
- Tested end to end on a copy: 329 -> 327 commits on main, 4 -> 2 roots, 0
  fabricated identities remaining, and the main tree hash unchanged
  (d38494c), which is the proof that no file content was altered.
- Documents what a rewrite cannot do: recover the true dates, or leave the
  history any more verifiable than it is now.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@Inkithai Inkithai changed the title docs(provenance): remove the fabricated release timeline from CHANGELOG docs(provenance): evidence record, fabricated-tag removal, and a tested history-rewrite procedure Oct 11, 2026
…h and the record

The previous revision of this work offered a way to keep the commit graph by
clamping impossible dates to a marker. That was wrong, and it has been
deleted. Moving a date from 2025-01-14 to a plausible marker does not remove a
false claim, it launders one: an impossible date announces itself, a
plausible one does not.

The governing rule is now stated in the README and enforced by the tooling:
write nothing that is not true.

That rule has a consequence. Git requires an author and a date on every
commit, and there is no "author unknown". The real dates of this code are not
recoverable - it arrived as a copy from a private GitLab. So a commit that
cannot be honestly attributed has only three options: write an invented author
and date, write a true author and date that do not describe the original work,
or delete the commit. Options two and three both discard the per-commit
record, and nothing recovers it.

Three further measurements decided the shape of the fix:

  - 213 of 329 commits on main carry metadata that cannot be true.
  - No commit on main has a fabricated-free ancestry, so there is no honest
    portion of the history to carry forward. The corruption is at the root.
  - The tags make the same point: the tagger timestamps of v0.6.0 and v0.7.0
    precede the commits they tag, and every v0.6.0-v0.9.0 tagger lands on
    15:00:00 UTC on the dates the changelog used to assert as release days.

scripts/rewrite_history.sh now offers:
  - --squash-import (recommended): one commit holding the byte-identical tree,
    authored by the real owner, dated when it was created, with a message that
    states the real numbers. Every field is true. Verified end to end on a
    copy: 329 commits -> 1, 4 roots -> 1, tree d38494c unchanged, 0
    fabricated identities remaining.
  - --mailmap: kept, documented, and marked not recommended. It would
    attribute 181 commits to the owner on inference and keep every fabricated
    timestamp.

ATTRIBUTION.md replaces the deleted commit metadata as the human-readable
record: the genuine author, the tooling that is not a person, the ten names
that must never be credited, what their 181 commits actually changed, and an
explicit statement that no date and no split of work between individuals can
be established. This is the truthful residue of a history that cannot be
recovered - and it is a record the repository can actually stand behind.

The README provenance section, the evidence document and the changelog are
updated to match, and the evidence document now records that its own hashes
will not resolve from a fresh clone once the rewrite is applied.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@Inkithai Inkithai changed the title docs(provenance): evidence record, fabricated-tag removal, and a tested history-rewrite procedure docs(provenance): remove fabricated history, and write nothing that is not true Oct 11, 2026
@Inkithai
Inkithai merged commit fa46d9c into main Oct 11, 2026
10 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant