Skip to content

Tracking: July 2026 maintenance audit (83 verified findings) #110

Description

@mmcky

Tracking issue for the July 2026 full-repository maintenance audit. Milestone: Maintenance audit 2026-07.

Complete (2026-09-24). All seven sub-issues are closed; v0.12.0 delivered the last five, and v0 moved to it after the staged canary run (decision 4). Two follow-ups in other repos are listed in the closing comment and in docs/dev/PLAN.md (#187).

A multi-agent sweep of every tracked file across 14 dimensions, then two adversarial verification passes: 135 raw findings, 63 rejected, 72 confirmed, 11 added by four completeness sweeps, 83 actioned. Nothing found is architectural.

The work, ordered by dependency

Decisions (2026-09-23)

  1. PLAN item 10's docs trim comes later. The four docs: reconcile action READMEs and templates with the shipped code #109 items in docs/QUICK-REFERENCE.md (the alias: recipe, the cache-key row, the fabricated LaTeX log line, docs: QUICK-REFERENCE "Pages 404?" snippet recommends the wrong permissions #99's 404 snippet) are fixed in place now. The trim is its own editorial PR. This lets docs: sweep to the Anaconda 2026.06 baseline and measured container sizes #106 and docs: reconcile action READMEs and templates with the shipped code #109 land as one docs PR.

  2. fix(preview): surface deploy errors, pin CLIs, remove unsafe fork guidance #105 pins the CLIs with a package.json and package-lock.json in each preview action directory, installed with npm ci, plus an npm ecosystem entry in .github/dependabot.yml for both directories. Installing them into the images was rejected on three grounds. Dependabot cannot see a version string in action.yml. An image install does not reach non-container runners, which both READMEs support. And no ecosystem tracks tools installed in a Dockerfile: feat(containers): Node 24 LTS from nodejs.org, out of conda #166 bumps Node by hand for that reason.

  3. docs: sweep to the Anaconda 2026.06 baseline and measured container sizes #106 publishes both image sizes, each labelled: compressed, from the registry manifest, and on-disk, from a pull on a hosted runner. It does this after the size job is fixed.

  4. Releases carrying fix(preview): surface deploy errors, pin CLIs, remove unsafe fork guidance #105 or fix(actions): batch of small correctness fixes across the seven actions #107 are staged. Merging to main reaches no action consumer. Moving v0 reaches every @v0 consumer on its next run, with nothing tested first: the Release gating: require a green canary before v0 moves (adds a v0-next staging tag) #135 gate is unbuilt, and the canary pins @v0, so it sees a release only after it ships. For these releases:

    1. Cut the exact vX.Y.Z tag and create the Release, but hold the v0 move.
    2. Open a same-repo canary PR with ci.yml pointed at @vX.Y.Z. That runs build-lectures and a real preview-netlify deploy with pull_request semantics.
    3. Dispatch the canary's cache.yml from a branch pointed at build-jupyter-cache@vX.Y.Z. That runs build-jupyter-cache's own steps, including fix(actions): batch of small correctness fixes across the seven actions #107's builder parse.
    4. Move v0 only when both are green.

    Known limits:

    Container images do not stage: any merge touching containers/** rebuilds and pushes :latest immediately.

Found in the 2026-09-23 revalidation

Checked against main @ 44c0273. #165, #166 and #168 merged since the 2026-08-14 revalidation.

Tracker structure

QEP-2 routes umbrella issues to native sub-issues with no Type label on the parent.

Labelling and related issues

Labels follow QEP-2, now Accepted: infrastructure not maintenance for CI/build/deploy work, grouping by milestone rather than an audit label. security on #105 is a cross-cutting modifier, not a second Type. testing is retired to infrastructure/maintenance; #108 and #100 both moved, so nothing here uses it.

Nothing supersedes an existing issue. #100 (action-logic test coverage) stays open: its stage-1 harness shipped in v0.10.0, #108 covers only existing container tests being unable to fail, and its release-gating stage is tracked in #135. #99 folds into #109. #92 is open and unblocked. #83 and #14 were advanced here but closed elsewhere — #83 in v0.11.0 (#122, #123 variant in #127), which moots PLAN item 14 since create-failure-issue.sh was deleted rather than hardened, and #14 in v0.11.1 (#131). PLAN items 7 and 8 are done; item 15 is down to one cosmetic fix (#187).

The full ranked report — 83 findings, a 26-row quick-wins table, per-finding evidence — sits outside the repo.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions