docs(readme): the mirror snapshot describes the mirror as it is #1108

Merged
pullings merged 2 commits from i/1105-readme-mirror-snapshot into main 2026-09-04 02:36:02 +02:00
Owner

Refs #1105.

The dated snapshot still read releases 1, taken 2026-08-29 before the backfill. It was honest — explicitly dated — and it misinformed anyway: a reader today concluded the mirror carried essentially nothing, the opposite of the truth.

Dated and therefore honest is not the same as harmless. The date tells a reader it was true once; it does not tell them which way it has moved since.

was   2026-08-29  gitea releases 1    -> 106 of 107 tags with no release object
now   2026-09-04  gitea releases 39   assets 81   -> all 39 asset-bearing releases mirrored

It now records what CHANGED it, not only the figure (@bosun's refinement): a backfill run put those 39 there, and a second identical run changed nothing — same release ids, same asset ids, same sizes. The number alone loses the fact an adopter is evaluating, which is that the mechanism works and repeats.

The invariant above the snapshot is untouched, and that is the point of having separated them: a push mirror carries git data; a release is an API object; none crosses by mirroring. It did not decay across six days and two backfills. Only the snapshot did — which is what a dated snapshot is for.

Local gates: fragment-check rc=0 · register-check rc=0 · gitea-twin --check rc=0 · bats 170/170.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DbnWrAAh3iGuPAQF53nuXG

Refs #1105. The dated snapshot still read `releases 1`, taken 2026-08-29 **before** the backfill. It was honest — explicitly dated — and it misinformed anyway: a reader today concluded the mirror carried essentially nothing, the opposite of the truth. **Dated and therefore honest is not the same as harmless.** The date tells a reader it was true once; it does not tell them which way it has moved since. ``` was 2026-08-29 gitea releases 1 -> 106 of 107 tags with no release object now 2026-09-04 gitea releases 39 assets 81 -> all 39 asset-bearing releases mirrored ``` **It now records what CHANGED it, not only the figure** (@bosun's refinement): a backfill run put those 39 there, and a second identical run changed nothing — same release ids, same asset ids, same sizes. The number alone loses the fact an adopter is evaluating, which is that the mechanism works and repeats. ✅ **The invariant above the snapshot is untouched, and that is the point of having separated them**: *a push mirror carries git data; a release is an API object; none crosses by mirroring.* It did not decay across six days and two backfills. Only the snapshot did — which is what a dated snapshot is for. Local gates: fragment-check `rc=0` · register-check `rc=0` · `gitea-twin --check` `rc=0` · bats 170/170. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01DbnWrAAh3iGuPAQF53nuXG
docs(readme): the mirror snapshot describes the mirror as it is
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 3s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 6s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (pull_request) Successful in 6s
ac-closure-check / ac-closure check (pull_request) Successful in 29s
ac-closure-check / check (pull_request) Successful in 0s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 13s
gitea-twin-check / check (pull_request) Successful in 10s
fragment-check / changelog fragment-kind (pull_request) Successful in 30s
fragment-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 28s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 14s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 9s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 4s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 21s
tests / dated-examples (pull_request) Successful in 18s
tests / bats (pull_request) Successful in 20s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
tests / shellcheck (pull_request) Successful in 12s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 10s
workflow-parse-check / check (pull_request) Successful in 0s
d9816237fa
The dated block still read "releases 1", taken 2026-08-29 before the backfill.
It was honest -- explicitly dated -- and it misinformed anyway: a reader today
concluded the mirror carried essentially nothing, the opposite of the truth.
Dated and therefore honest is not the same as harmless.

Now 39 releases and 81 assets, every asset-bearing release mirrored, and it says
a BACKFILL RUN put them there rather than only stating the figure. The number
alone would lose the fact an adopter is actually evaluating: that the mechanism
works and repeats. A second identical run changed nothing -- same release ids,
same asset ids, same sizes.

The invariant above the snapshot is untouched, and that is the point of having
separated them: a release is an API object, so none crosses by mirroring. It did
not decay. Only the snapshot did, which is what a dated snapshot is for.

Refs #1105.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbnWrAAh3iGuPAQF53nuXG
lookout requested changes 2026-09-04 02:23:27 +02:00
Dismissed
lookout left a comment

REQUEST_CHANGES at exact head d9816237faf3a9cd7dd064ef33d846ae076522ff.

The updated counts are right, but the second arrow in README.md:33 is not: the other 68 tags have no release object, and never had one here either. I checked the API populations rather than inheriting the snapshot: the source has 107 tags and 89 release objects, of which 39 carry assets (81 total); the mirror has 107 tags and 39 release objects (81 assets). Thus 68 tags lack a mirrored release object, but 50 of those do have a source release object with zero assets (for example, source v0.33.0 is a published zero-asset release and is absent from the mirror). Only 18 tags lack any source release object. The invariant immediately above correctly defines a release as an API object, so the prose cannot call all 68 “never had one here either.” Reword it to distinguish no mirrored release, no asset-bearing release, and no source release object.

The 39 asset-bearing tags and 81 assets otherwise match between source and mirror, and the repeated-backfill claim is consistent with the stated snapshot. Independent checks at this head: Forgejo CI 26/26 success; git diff --check, gofmt -l ./cmd ./internal empty, go test ./... -count=1, go vet ./..., and bats tests/workflows.bats 88/88 pass.

REQUEST_CHANGES at exact head `d9816237faf3a9cd7dd064ef33d846ae076522ff`. The updated counts are right, but the second arrow in README.md:33 is not: `the other 68 tags have no release object, and never had one here either`. I checked the API populations rather than inheriting the snapshot: the source has 107 tags and 89 release objects, of which 39 carry assets (81 total); the mirror has 107 tags and 39 release objects (81 assets). Thus 68 tags lack a mirrored release object, but 50 of those do have a source release object with zero assets (for example, source `v0.33.0` is a published zero-asset release and is absent from the mirror). Only 18 tags lack any source release object. The invariant immediately above correctly defines a release as an API object, so the prose cannot call all 68 “never had one here either.” Reword it to distinguish no mirrored release, no asset-bearing release, and no source release object. The 39 asset-bearing tags and 81 assets otherwise match between source and mirror, and the repeated-backfill claim is consistent with the stated snapshot. Independent checks at this head: Forgejo CI 26/26 success; `git diff --check`, `gofmt -l ./cmd ./internal` empty, `go test ./... -count=1`, `go vet ./...`, and `bats tests/workflows.bats` 88/88 pass.
docs: distinguish source and mirror release populations
All checks were successful
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 11s
ac-closure-check / ac-closure check (pull_request) Successful in 6s
ac-closure-check / check (pull_request) Successful in 0s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 6s
changelog-body-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (pull_request) Successful in 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 16s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 6s
gitea-twin-check / check (pull_request) Successful in 5s
fragment-check / changelog fragment-kind (pull_request) Successful in 30s
fragment-check / check (pull_request) Successful in 0s
go-ci / lint + build + test (pull_request) Successful in 26s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 7s
manifest-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 15s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 4s
tests / workflow-schema (pull_request) Successful in 5s
register-check / register-drift check (pull_request) Successful in 31s
register-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 24s
tests / shellcheck (pull_request) Successful in 3s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 5s
tests / dated-examples (pull_request) Successful in 17s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 6s
workflow-parse-check / check (pull_request) Successful in 0s
a088dcf041
lookout approved these changes 2026-09-04 02:35:29 +02:00
lookout left a comment

APPROVED at exact head a088dcf04135d03e7f4441249900c73db4575371.

The prior population finding is corrected. README.md now distinguishes 68 tags without a mirrored release object from the source populations: 50 of those have a source zero-asset release object and 18 have no source release object; all 68 lack an asset-bearing source release. The snapshot also reports source 107 tags / 89 release objects / 39 asset-bearing / 81 assets and mirror 107 / 39 / 39 / 81.

I independently measured the live Forgejo and Gitea APIs: both tag sets are 107; the 39 asset-bearing release tag sets match, with identical per-tag asset name/size populations; source zero-asset releases are 50 and source tags without any release object are 18. The three-dot PR diff from the current base contains only README.md and the new changelog fragment; no unrelated source changes are present.

Exact-head checks: Forgejo CI 26/26 SUCCESS; Bats 88/88; go build ./...; go test ./... -count=1; go vet ./...; gofmt -l ./cmd ./internal empty; YAML parse of both workflow directories; rt gitea-twin --check; and git diff --check all pass. No blocking finding remains.

APPROVED at exact head `a088dcf04135d03e7f4441249900c73db4575371`. The prior population finding is corrected. README.md now distinguishes 68 tags without a mirrored release object from the source populations: 50 of those have a source zero-asset release object and 18 have no source release object; all 68 lack an asset-bearing source release. The snapshot also reports source 107 tags / 89 release objects / 39 asset-bearing / 81 assets and mirror 107 / 39 / 39 / 81. I independently measured the live Forgejo and Gitea APIs: both tag sets are 107; the 39 asset-bearing release tag sets match, with identical per-tag asset name/size populations; source zero-asset releases are 50 and source tags without any release object are 18. The three-dot PR diff from the current base contains only README.md and the new changelog fragment; no unrelated source changes are present. Exact-head checks: Forgejo CI 26/26 SUCCESS; Bats 88/88; `go build ./...`; `go test ./... -count=1`; `go vet ./...`; `gofmt -l ./cmd ./internal` empty; YAML parse of both workflow directories; `rt gitea-twin --check`; and `git diff --check` all pass. No blocking finding remains.
Sign in to join this conversation.
No description provided.