GATE6-CLOSE-01 — REPORT — 2026-08-14¶
Seat: Alex (bridge) · Lane: dead-window recon · Blast radius: zero.
Read-only throughout. No TGA request of any kind. No PUT/POST/PATCH/DELETE against any Cloudflare
resource. Every D1 statement a SELECT, every one returning rows_written: 0, changed_db: false.
Credential: op://RTOpacks/cloudflare-api-token, id 76eb6809697eef0268c6de7f473d1f3d, verified
active at job start. No token minted.
⚠ RETURNS TO TIM BEFORE THE V-P2P-009 ABANDONMENT IS FILED — see §1.5.
The versions/ corpus did capture real observed change in the window. Five series differ, four of
them genuine register events and one an upstream schema change. This is the outcome the brief named as
requiring Tim's ruling prior to abandonment.
0 · INSTRUMENTS, DEMONSTRATED BEFORE ANY ZERO¶
R2 listing is available via the REST API. GET /accounts/{acc}/r2/buckets/{bucket}/objects, with
prefix, per_page and cursor. This corrects a standing note that R2 has no list-objects — that
is true of wrangler and the MCP tools, and false of the REST API.
Boundary-key discipline, proven before the crawl. The cursor is base64 of a JSON payload carrying
startAfter. Across four consecutive pages: full cursors all distinct, boundary keys strictly
ascending, and cursor.startAfter equals the last key of each page in every case. The enumerator
raises on two consecutive non-advancing boundaries; it never fired.
Known-present control (Job 1 step 2). ACMAAS401, named in both
TGA-VERSIONS-CENSUS-01-REPORT-2026-08-04 and TGA-CONTENT-BUCKET-RECON-2026-08-04. Re-found
5 keys, all 751 B: 2026-05-24, 2026-06-02, 2026-06-13, 2026-06-28, 2026-07-05.
One false zero caught mid-job and discarded. A grep --include=*.md run unquoted under zsh
aborted and printed hits: 0. That is the known unquoted-glob trap; the figure was not a
measurement. Every search below uses --include='*.md' quoted, and each demonstrates on a
known-present hit first.
1 · JOB 1 — versions/ SIZE-DIFF CENSUS, COMPLETED¶
1.1 Population (step 3)¶
| Measure | Figure |
|---|---|
Keys enumerated under versions/training/, to exhaustion |
348,990 |
Keys not matching versions/training/{code}/{date}.json |
0 |
| Distinct codes | 84,728 |
| Codes with ≥2 snapshots | 84,728 |
| Codes with exactly 1 snapshot | 0 |
| Pages / API calls | 349 / 350 · final boundary versions/training/ZWV60205/2026-07-05.json |
Every code in the prefix carries at least two snapshots. There is no single-snapshot tail.
1.2 The prior census covered 8.32%, not ~20%¶
TGA-VERSIONS-CENSUS-01 enumerated 29,028 keys and estimated "roughly 20%" against a floor figure of
≥144,674 for the whole versions/ prefix. Measured against the actual versions/training/ total
of 348,990, its coverage was 29,028 / 348,990 = 8.32%.
The ≥144,674 figure was explicitly a floor, so nothing was misstated — but the floor was low by a factor of ~2.4 for one sub-prefix alone, and the derived 20% was correspondingly optimistic. Any document carrying "roughly 20%" should be read as 8.3%.
1.3 Size-diff census (step 4)¶
| Result | Count |
|---|---|
| Codes with any size-differing pair | 5 |
| Codes all-equal size | 84,723 |
| Codes single-snapshot | 0 |
1.4 Same-length sample (step 5) — previously UNRUN, now measured¶
Selection method, deterministic: the 84,723 all-equal-size codes sorted ascending; every 847th
taken, index i × 847 for i in 0–99. First 2, last ZWACEN301B. No randomness.
Earliest and latest snapshot bodies fetched for each and compared by sha256.
| Compared | 100 · errors 0 |
| Byte-identical earliest vs latest | 100 |
| Byte-differing at identical length | 0 |
| Same-length error rate, measured | 0 / 100 = 0.0% |
The size-only method's error rate is no longer assumed. At n=100, deterministically sampled across the full alphabetical range, it is zero. This was the stated point of the job and it is now closed.
1.5 ⚠ THE FIVE DIFFERING SERIES — REAL OBSERVED CHANGE¶
All five fetched and byte-compared. None is an artefact; all five are genuine content change.
| Code | Window | Size | What changed |
|---|---|---|---|
| DEF | 2026-05-24 → 2026-06-28 | 4,966 → 5,190 B | releases — approvalProcess nqcProcess → iscUpgrade, currencyChangeDate advanced |
| MSF | 2026-05-25 → 2026-07-04 | 4,421 → 4,645 B | releases — same shape, new release appended |
| UEE | 2026-05-26 → 2026-07-05 | 4,260 → 4,559 B | releases — currencyChangeDate advanced |
| MSFGG3027 | 2026-05-25 → 2026-07-04 | 931 → 1,091 B | releases — new release; currencyChangeDate 2018-12-03 → 2026-06-01 |
| PSPMGT003 | 2026-05-25 → 2026-07-05 | 1,393 → 1,412 B | schema change — keys status / statusLabel removed, usageRecommendation / usageRecommendationLabel added |
DEF, MSF and UEE are Training Package codes; MSFGG3027 and PSPMGT003 are units.
Four are register events — new releases appended upstream during the observation window. These are
exactly the class of thing the versions/ corpus exists to witness, and it witnessed them.
PSPMGT003 is different in kind. It is not a content change; it is TGA changing the shape of its
own payload, retiring status in favour of usageRecommendation. That is upstream API drift
captured incidentally, and it is arguably the most valuable single object in the corpus.
Consequence for V-P2P-009. The abandonment argument rests on the corpus holding no observed change worth keeping. It holds five, in a 6-week window, at a 0.0% same-length error rate — so the count is 5 and not "5 plus an unknown tail of same-length edits." Whether five events across 84,728 codes is material enough to preserve is Tim's judgment, not a measurement, and the brief reserves it to him.
2 · JOB 2 — THE PER-CODE JOIN¶
training/ enumerated to exhaustion: 84,728 keys, 85 pages, final boundary
training/ZWV60205/raw.json. Zero keys failed the training/{code}/raw.json shape.
This confirms the prior reported figure of 84,728 by measurement rather than carrying it.
Current-unit code set. Database rto-nrt-db (1249760d-070a-43f8-81d7-de462b626cdf).
Exact query, paged at 4,000 with ORDER BY code:
Returned 15,169 rows / 15,169 distinct codes — matching the brief's figure exactly. Vocabulary was
established first by SELECT type_slug, status_slug, COUNT(*) … GROUP BY, so the filter is measured,
not guessed. Cumulative rows_written across all pages: 0.
The number the recon left uncomputed¶
| Direction | Count |
|---|---|
Current codes with NO training/ object |
78 |
| Coverage against the 15,169 | 15,091 / 15,169 = 99.49% |
training/ objects whose code is not a Current unit |
69,637 (69,559 alphabetic, 78 numeric) |
The 78 missing are clustered — AURETH017/018, AURETR052/053/054/249, AURHTJ008/009/107/202/203/204
and others, i.e. concentrated in the AUR (Automotive) package rather than scattered.
The 69,637 excess is expected and not a defect: the bucket holds superseded, deleted and non-unit
components, and was never scoped to Current units. TGA-CONTENT-BUCKET-RECON said as much.
3 · JOB 3 — ORGANISATIONS RECONCILIATION¶
Answer: none found.
Population searched: the whole repository excluding .git, node_modules and docs/site, across
*.md, *.py, *.ts, *.json. Searched without assuming a name: tga_organisations (literal),
organisation facet / organisations facet / orgFacet, totalCount … organisation, and every file
matching reconcil (746 files) filtered by content.
Instrument demonstrated: the same quoted grep returns the known-present control
outputs/TGA-REGISTER-RECONCILIATION-2026-08-06.md plus five other live-facet documents.
Every hit is the question, not an answer:
outputs/ANCHOR-ONE-GATHER-01-VERDICTS-2026-08-14.md:142— "reconcilestga_organisationsagainst a live TGA organisation facet — rides with the GATE6-CLOSE-01"outputs/ANCHOR-ONE-GATHER-01-INVENTORY-2026-08-14.md:849— the least-sure item itselfoutputs/GATE6-CLOSE-01-BRIEF-2026-08-14.md— this brief
No document performs, for organisations, what TGA-REGISTER-RECONCILIATION-2026-08-06 performs for
training components. The Driver's least-sure item is confirmed: the reconciliation has never been done.
Related but not the same thing: docs/docs/data-sources.md and docs/docs/infrastructure/tga-ingest.md
record rtos at 12,515 rows, and standing-rules records that only 72 of 12,515 were ever
enriched by tga-ingest (0.58% coverage). That is an internal coverage figure, not a reconciliation
against a live register total.
4 · JOB 4 — CVIG LICENSING LEGAL POSITION¶
Answer: none found.
Instruments demonstrated before the zero, each term class returning known-present hits across
*.md: licence 146 files · license 117 · copyright 67 · creative commons 10 · sharealike 4 ·
DEWR 53 · intellectual property 3. Also searched: legal advice/opinion/clearance/position/review,
cleared for use, counsel, solicitor, lawyer.
The four sharealike files are the two CVIG-LANDSCAPE-RECON-01 documents, this job's brief, and
ANCHOR-ONE-GATHER-01-INVENTORY — i.e. the recon and the question, not a position.
Two copyright documents exist and neither mentions CVIGs at all (cvig|companion volume → 0
hits in both):
docs/docs/briefs/copyright-disclaimer.md— public-facing, effective 19 March 2026trust-docs/docs/legal/copyright.md— the trust-site legal page
outputs/CVIG-RING2-RESOURCES-RECON-01-DOSSIER-2026-08-08.md matches on licenc/licens, but the hits
are about occupational licensing content inside the CVIGs (ASIC licence exemptions, education-care
National Law), not about the licensing of the CVIG documents themselves.
CVIG-LANDSCAPE-RECON-01's statement stands: no written legal position on CVIG licensing exists in
the repo. Tim's recollection is most plausibly of the TGA training-package clearance, which does
exist and is recorded — a different corpus from the CVIGs.
⚠ Incidental finding — the two copyright documents contradict each other¶
| Document | Claimed licence for National Register / TGA content |
|---|---|
docs/docs/briefs/copyright-disclaimer.md |
CC BY-ND 3.0 AU — "No derivatives are permitted — unit descriptors and qualification content must not be modified, reworded, or adapted" |
trust-docs/docs/legal/copyright.md |
CC BY 4.0 — "This licence permits sharing and adaptation of the data provided attribution is given" |
ND versus BY 4.0 is the difference between "must not be modified" and "may be adapted." Both are public-facing. RTOpacks generates derived material from TGA descriptors, so which one is correct is load-bearing, and the two live pages currently give opposite answers. Out of this brief's scope; flagged because it surfaced while searching and because it bears directly on V-P2P-010.
5 · WHAT WAS NOT DONE, AND WHY¶
versions/prefixes other thantraining/were not enumerated. The brief scoped Job 1 toversions/training/. The ≥144,674 whole-prefix figure therefore remains unclosed forversions/organisations/and any sibling.- The same-length sample is n=100, as specified. It bounds the error rate at that size; it does not prove zero across 84,723.
last_modifiedwas not used. The list API returnslast_modified, notuploaded; snapshot dates in this report come from the key itself ({code}/{YYYY-MM-DD}.json), which is the authored snapshot date rather than the object's write time. Where those differ, this report reflects the key.- The 78 missing Current codes were not investigated — whether they are genuinely absent upstream, or absent from our capture, is a further question and requires a TGA call, which is forbidden here.
- The 69,637 excess codes were not classified against the mirror's non-Current statuses. Their shape (69,559 alphabetic / 78 numeric) is reported; their composition is not.
6 · JOB ACCOUNTING¶
R2 list calls: 435 · R2 object GETs: 210 (5 differing series × 2, plus 100 sample × 2) ·
D1 SELECTs: 8, all rows_written: 0. Zero writes of any kind. Zero TGA requests. Zero 429.
Crawl wall-clock 467 s.
Least sure, and what would make this wrong. §1.5's materiality claim rests on five objects read
once each; if the four releases changes are re-serialisations rather than genuine new releases —
i.e. TGA re-emitting the same release set in a different order or with a refreshed
currencyChangeDate — then the count of real events is lower than five and possibly zero, and only
PSPMGT003 survives as a true capture. Distinguishing those needs a field-level diff of the
releases arrays, which I did not run. Second, §1.4's 0.0% rests on a deterministic every-847th
sample; a systematic edit affecting only codes that sampling stride skips would be invisible to it,
and stride-aligned blindness is a real failure mode for deterministic sampling in a way it is not for
random sampling — the brief specified deterministic and I followed it, but that is the trade it makes.