docs: shift to Pattern A in history-normalization.md

Phase 0 follow-up — Pattern A migration (post-Pattern-C trailer strip
+ archive tag deletion).

Updates the public-facing explanation to match the post-strip state:
no more Co-authored-by trailers in commit messages, no more archive
tag on origin. The off-platform bundle remains as the canonical
pre-rewrite preservation record.

Why the change from Pattern C → A: the Co-authored-by trailers added
in the original rewrite caused GitHub to render the AI identities
(claude, cowork, certctl-bot, certctl-copilot, github-actions) as
co-author chips on every AI-touched commit AND count them in the
repo's contributor graph. Operator opted to clean the contributor
list. The legal posture (counsel-signed AI-authorship declaration in
cowork/legal/) is unchanged — only the git-history layer's
transparency signal was dialed back.

Bundle at cowork/legal/pre-rewrite-2026-05-13.bundle still preserves
the original history (all 14 author identities + un-stripped commit
messages) for any future forensic / diligence question.
This commit is contained in:
shankar0123
2026-05-13 23:14:20 +00:00
parent d364ace02a
commit 09c29b9f40
+24 -26
View File
@@ -10,17 +10,16 @@ no longer resolves, this is the explanation.
## What changed ## What changed
Every commit's `author` and `committer` metadata was rewritten to a Every commit's `author` and `committer` metadata was rewritten to a
single canonical identity (`shankar0123 <skreddy040@gmail.com>`). Where single canonical identity (`shankar0123 <skreddy040@gmail.com>`). The
the original author was an AI/automation identity (Claude, Copilot, 14 pre-rewrite author identities — operator name variants plus
cowork agent, certctl-bot, etc.), a `Co-authored-by:` trailer was AI/automation identities (Claude, Copilot, cowork agent, certctl-bot,
appended to the commit message preserving the original identity. The etc.) — collapsed to that one canonical author.
intent is a uniform single-author authorship layer + preserved
attribution of AI involvement.
No source-code content was changed by the rewrite. Every line of code No source-code content was changed by the rewrite. Every line of code
in every commit is byte-for-byte identical to its pre-rewrite version. in every commit is byte-for-byte identical to its pre-rewrite version.
Only `author` / `committer` metadata and (for ~129 AI-touched commits) Only the `author` and `committer` metadata fields were touched; commit
a `Co-authored-by:` trailer line were touched. messages, subject lines, milestone IDs (M49, L-1, etc.), and every
other line of every commit's body are preserved verbatim.
## Why ## Why
@@ -41,15 +40,18 @@ Two reasons:
## What is preserved ## What is preserved
The exact pre-rewrite history is preserved on origin at the tag A complete off-platform bundle backup of the pre-rewrite tree is held
**`archive/pre-author-normalization-2026-05-13`**. If you need to by the operator (off-repo, not pushed). It contains every original
reference an original commit SHA from before the rewrite — for example commit SHA, every original author identity, and the full ref graph as
in a blog post, an external citation, or a pre-rewrite release artifact it existed before the rewrite. The bundle is the immutable
— check that tag. The tag is immutable; we will not move or delete it. preservation record and is recoverable forever.
A separate off-platform bundle backup of the pre-rewrite tree is also An `archive/pre-author-normalization-2026-05-13` tag briefly existed
held by the operator (off-repo, not pushed). Both artifacts ensure the on origin pointing at the pre-rewrite tip but was removed when the
original history is recoverable forever. operator opted to clean the contributor graph of pre-rewrite
authorship signal. The bundle remains as the canonical archive — any
forensic question about pre-rewrite state can be answered by loading
the bundle into a fresh clone (`git clone pre-rewrite-2026-05-13.bundle`).
## Recovering after the rewrite ## Recovering after the rewrite
@@ -67,22 +69,18 @@ This force-aligns your local tree with the new origin. Any local
branches you had based on pre-rewrite history will need rebasing onto branches you had based on pre-rewrite history will need rebasing onto
the new master. the new master.
If you want to inspect the pre-rewrite state for any reason: If you need to inspect the pre-rewrite state for a forensic or
diligence question, contact the operator directly — the off-platform
```bash bundle is the canonical archive and is available on request.
git fetch origin archive/pre-author-normalization-2026-05-13
git checkout archive/pre-author-normalization-2026-05-13
```
## Container images and release tarballs ## Container images and release tarballs
ghcr.io container images that were published before the rewrite ghcr.io container images that were published before the rewrite
(`ghcr.io/certctl-io/certctl-{server,agent}:<old-tag>`) remain pullable (`ghcr.io/certctl-io/certctl-{server,agent}:<old-tag>`) remain pullable
indefinitely. Their OCI source-SHA labels reference commit SHAs that indefinitely. Their OCI source-SHA labels reference commit SHAs that
now only resolve via the `archive/` tag — the images themselves still no longer resolve in the public origin — the images themselves still
work; only the source-SHA back-reference points at the archive. New work; only the source-SHA back-reference is now orphan. New release
release images published after the rewrite reference current SHAs images published after the rewrite reference current SHAs normally.
normally.
If you downloaded a release tarball before the rewrite, the tarball's If you downloaded a release tarball before the rewrite, the tarball's
contents are unchanged; only its associated `git` SHA differs from the contents are unchanged; only its associated `git` SHA differs from the