fix: regenerate the stale API audit baseline; make wiki-currency diagnosable - #23
Merged
Merged
Conversation
…nosable
wiki-currency has been red on main independently of any PR. Reproduced the run
locally against the stack the workflow builds and identified the failure: of the
five sub-checks, exactly one fails.
--check-version FAIL API DRIFT vs baseline (generated 2026-07-23)
--scope all pass 31/31 cited symbols resolve, 0 missing
--lint-idioms pass 51 files, no defunct idioms
--check-provenance pass 8 pages, 0 errors
--check-citations pass 29 citations, 0 missing paths
The job log never named it because each check is redirected into drift-report.md.
WHY IT IS BASELINE STALENESS, NOT A DOC DIVERGENCE
Diffed the public surface at the baseline's own commits (PyAutoFit daa4e39,
PyAutoArray 85c57eb, both 2026-07-23) against today's main:
autoarray 120 -> 121 added InterpolatorDelaunayNN, validate
removed TransformerNUFFTPyNUFFT
autofit 149 -> 159 added AbstractClipper, AbstractScaler, ApproxUpdater,
ClipperNone, ClipperPriorBox, DynamicUpdater,
FactorUpdater, NSS, ScalerNone, ScalerPriorWidth,
SimplerUpdater
removed database
Two symbols were removed, so this is not blindly additive — but neither is cited
anywhere in wiki/, skills/ or modes/ (the `database` matches in the docs are
prose about the workspace's advanced/database/ script directory, not the
autofit.database symbol). The symbol audit agrees: all 31 cited symbols resolve
cleanly. And autonerves, autocti and autocti.plot — the surfaces this assistant
actually documents — are byte-identical to the baseline.
So the wiki makes no stale claim; the whole-surface hash simply aged. Baseline
regenerated against the stack the workflow builds (autonerves/autoarray/autofit
2026.8.17.1 from source main, autocti 2024.11.13.2, arcticpy 2.6). All five
checks then pass.
THE REPORT WAS MISLABELLED
The drift report printed `stack_version: latest released` whenever the input was
empty. That is false on the native PR/dispatch path: the install step builds the
stack from the sources/ `main` clones, and the workflow's own comment explains
why (the CTI release train is not wired, so PyPI would grade the modern docs
against a pre-resurrection wheel). The label sent the diagnosis of this very
failure looking for a release that had moved the API, when the actual clock is
the libraries' main branches — much faster. Both input descriptions and the
report header now say what is really installed.
The report also named no source refs at all, so a red run could not be diagnosed
after the fact. The clone step now records each source tree's short SHA into the
report header.
Refs PyAutoMind draft/bug/autocti/wiki_currency_baseline_drift.md
Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_018nDAxBEavkzb6Zkz1cYHef
This was referenced Aug 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
wiki-currencyhas been red onmainindependently of any PR, so every PR against this repo opened already-red.Which sub-check fails
The job log never says, because the workflow redirects each check into
drift-report.md. The drift-report artifact is served from a blob host this session's network policy blocks, so instead I reproduced the run locally against the stack the workflow builds (autonerves/autoarray/autofit2026.8.17.1from sourcemain, autocti2024.11.13.2, arcticpy 2.6). Exactly one of the five fails:--check-version--scope all--lint-idioms--check-provenance--check-citationsIt is baseline staleness, not a stale doc claim
The task rightly warned not to regenerate the baseline to paper over a genuine divergence, so I checked rather than assumed. I diffed the public surface at the baseline's own commits (PyAutoFit
daa4e39, PyAutoArray85c57eb, both 2026-07-23) against today'smain:So it is not blindly additive — two symbols were removed. But:
TransformerNUFFTPyNUFFTappears nowhere inwiki/,skills/ormodes/. Thedatabasematches are prose about the workspace'sadvanced/database/script directory, not theautofit.databasesymbol — there is noaf.database/from autofit import databaseanywhere.--scope allreports "All cited symbols resolve cleanly. No drift detected."autonerves,autoctiandautocti.plothashes are byte-identical to the baseline. The surfaces this assistant actually documents have not moved at all.The wiki makes no stale claim. The whole-surface hash simply aged. Baseline regenerated; all five checks then pass locally.
The report was mislabelled — and that caused the misdiagnosis
The drift report printed
stack_version: latest releasedwhenever the input was empty. That is false on the native PR/dispatch path. The install step does:— it builds from the
mainsource clones, and the workflow's own comment explains why (the CTI release train is not wired, so PyPI would grade the modern docs against a pre-resurrection wheel).This matters beyond tidiness: the task that filed this bug reasoned "the workflow audits against latest released, so it rots on a clock" and pointed at release timing. The real clock is the libraries'
mainbranches, which move far faster than releases. The label sent the diagnosis to the wrong hypothesis. Both input descriptions and the report header now state what is actually installed.Diagnosability
The report named no source refs at all, so a red run couldn't be diagnosed after the fact — you could not distinguish a genuine divergence from an aged baseline. The clone step now records each source tree's short SHA into the report header:
Verified by running that step's shell locally.
On pinning to a released stack version — recommend not doing this
The task asked whether pinning would stop the check rotting on timing alone. I don't think it should be done, and the reason is in the workflow already: autocti's PyPI release is the pre-resurrection
2024.11.13.2, so pinning would grade today's docs against an API that predates the work they describe — vacuously green, which is worse than noisily red.The structural issue is real but different.
--check-versiongates on a hash of the entire public surface of autoarray and autofit, almost none of which this assistant documents. Today's red is 12 additions and 2 removals, and not one of them touches a cited symbol. Any autofit/autoarraymainmerge that exports a new name turns this repo red again — this baseline will rot the same way within weeks.Meanwhile
--scope allalready answers the question that matters ("do the symbols the docs cite still resolve?") and is immune to that noise.A worthwhile follow-up would be to make
--check-versiongate only on symbols removed from the surface and report additions as informational — or to accept that--scope allsubsumes it as a gate. That is a change to what the check means, so I've left it as a proposal rather than making it unilaterally under this task'ssupervisedautonomy. Happy to file it.Unblocks
autocti_assistant#21 was held unmerged at
/prmbecause of this red. Note PR #22 (the arcticpy consumer leg) also toucheswiki-currency.yml, so these two will need merging in order — this one is independent of #22 and can go first or second, but whichever lands second will need a base merge.Generated by Claude Code