Skip to content

chore: blog dead-weight purge + TIN-3914 exception (2026-08-28) - #264

Merged
Jesssullivan merged 6 commits into
mainfrom
jess/blog-dead-weight-purge-20260828
Aug 28, 2026
Merged

Jesssullivan merged 6 commits into
mainfrom
jess/blog-dead-weight-purge-20260828

Conversation

@Jesssullivan

@Jesssullivan Jesssullivan commented Aug 28, 2026

Copy link
Copy Markdown
Owner

Source-only cleanup pass. No workflow behaviour changes, no post bodies touched, no serving-state surface involved.

Commit What Removed Evidence of no references
docs(agents) Record the 17 runs-on: ubuntu-latest sites as a dated TIN-3914 exception with its closing condition; add validate-blog-dates.yml to the Cross-Repo Delivery Ownership register 0 (2 lines added) grep -c 'runs-on: ubuntu-latest' .github/workflows/* = 17 across all 10 workflows; validate-blog-dates.yml was the only workflow absent from the register table
chore(blog-agent) Drop packages/blog-agent/.agentuity/app.js, gitignore the whole .agentuity/ build dir 4,038,673 bytes / 1 file Compiled bundle from the 2026-03-04 deploy of c938d4f, stale against src/ since. npm run deploy = agentuity cloud deploy --dir .; the bundle's own .agentuity/AGENTS.md documents agentuity build as the way to regenerate it; app.js.map was already gitignored. No reference outside the package
chore(scripts) Remove 8 one-off WordPress-migration scripts 39,008 bytes / 8 files Repo-wide grep for each basename: zero hits in package.json, any BUILD.bazel, Justfile, .github/workflows/**, or docs. Only surviving mentions were each other's header comments
docs Move 7 closed-out dated notes to docs/archive/, add docs/README.md index, banner build-metrics.md as superseded 0 (moves only) Per-file inbound-link scan across the repo: each of the 7 had zero inbound references. Dated notes with live inbound links (the tinyland-pulse-* cluster, editorial taxonomy) and the undated operator docs stay at the top level
chore(justfile) Route check / test / test-e2e at remote:check / remote:test / remote:e2e 0 (net +1 line) just check/test/test-e2e ran raw npx vitest / npx playwright, bypassing scripts/bazel-cache-backed.sh, so a local pass proved something CI never runs. Wayback/media-recovery cluster untouched — it has no other entry point

Deliberately kept: docs/blog-node-shadow.md and docs/dns-architecture.md have no inbound links but are undated live operator references, not write-once notes. docs/tinyland-pulse-media-object-lifecycle-2026-05-03.md is unreferenced but is a member of the live Pulse contract cluster it links into. packages/blog-agent/.agentuity/{AGENTS.md,agentuity.metadata.json} stay tracked (agent and deployment identity), even though the directory is now ignored. just test-e2e-file / test-e2e-headed stay on raw Playwright, relabelled as debug affordances.

Checks (local): npm run lint clean. bazelisk test //:workflow_authority_tests PASSED (13.1s, disk cache — this host is not GF-enrolled, so scripts/bazel-cache-backed.sh fails closed as designed and the target was run through plain local Bazel). just --list parses with the wayback cluster intact.

The v2 workflow estate pins runs-on: ubuntu-latest at 17 sites. Record that as a dated exception with its closing condition instead of leaving it to read as compliance, and add validate-blog-dates.yml to the Cross-Repo Delivery Ownership register, which was the only workflow missing from it.
packages/blog-agent/.agentuity/app.js is a 3.85 MB compiled bundle from the 2026-03-04 deploy of commit c938d4f, stale against src/ ever since. The package rebuilds it on deploy (npm run deploy = agentuity cloud deploy --dir .), and its own .agentuity/AGENTS.md documents agentuity build as the way to regenerate it. Ignore the whole build directory instead of only its source map.
These ran once during the WordPress import: placeholder cleanup, feature-image backfill, category assignment, code-fence conversion, entity fixes, image relacing, and the birdphoto download. Nothing references them - no package.json script, BUILD file, Justfile recipe, workflow, or doc - and their only remaining mentions were each other's header comments. The wayback/media-recovery scripts that still have Justfile entry points are untouched.
Seven write-once dated notes had no inbound link from any file in the repo: the tinyvectors trio, the April package-authority audit, the blog-authoring/Linear investigation, the 2026-07-14 federation reconciliation snapshot, and the static-post ingest note that already corrected itself to fallback evidence. Move them under docs/archive/ so the top level reads as current contracts only, add a short docs/README.md saying what is live versus archived, and mark build-metrics.md superseded now that Vite 8 has shipped.
…cked npm scripts

The Justfile duplicated check/test/test-e2e with raw npx vitest/playwright
recipes that CI never runs; they now call the same remote:check /
remote:test / remote:e2e package scripts CI uses. build is untouched. The
wayback/media-recovery recipe cluster is preserved (no other entry point).
@Jesssullivan

Copy link
Copy Markdown
Owner Author

Two while it's still draft:

  • 342105d subject says "check/test/build"; Justfile:36-37 build is
    untouched. The changed recipes are check/test/test-e2e, and the subject
    is what git-cliff lifts into CHANGELOG.md. Amend.
  • AGENTS.md:78 "17 sites" is correct today but goes stale silently against
    ci(tss): gated TSS shadow publish lane v2 (TIN-3026) #263 (clean merge, no gate). Post-merge the number is 20 across 11
    workflows, not 19 — tss-shadow-publish-v2.yml has 3 sites at its current
    head. Prefer stating the invariant and asserting it in
    scripts/test-workflow-authority.mjs; also add tss-shadow-publish.md to
    docs/README.md in whichever PR lands second.

@Jesssullivan

Copy link
Copy Markdown
Owner Author

Fixed at HEAD: the Justfile commit subject now says check/test/test-e2e (build untouched), and AGENTS.md states the hosted-runner exception as an invariant (hosted only where no self-hosted pool serves the job class) with the hand count dated, so #263's three new sites cannot silently stale it. docs/README.md gets tss-shadow-publish.md in whichever of #263/#264 lands second.

@Jesssullivan
Jesssullivan force-pushed the jess/blog-dead-weight-purge-20260828 branch from 342105d to b9a5e41 Compare August 28, 2026 19:52
@Jesssullivan
Jesssullivan marked this pull request as ready for review August 28, 2026 20:16
@Jesssullivan
Jesssullivan merged commit 270e0cf into main Aug 28, 2026
3 checks passed
@Jesssullivan
Jesssullivan deleted the jess/blog-dead-weight-purge-20260828 branch August 28, 2026 20:16
Jesssullivan added a commit that referenced this pull request Aug 29, 2026
…ness fail (TIN-161)

TIN-161, the "ship truthful performance/license surfaces" half. Two static
pages in this repo described the build and were allowed to go on describing a
build that no longer existed, because nothing checked them.

**`THIRD-PARTY-LICENSES.md` was hand-maintained and had drifted badly.** As of
`origin/main` it listed `shiki 3.22.0` against a resolution of 4.2.0,
`vite 6.4.1` against 8.0.14, `svelte 5.50.1` against 5.55.4, `sharp 0.33.5`
against 0.34.5, carried `mermaid` as a RUNTIME dependency it has not been for
some time, and published 18 of 42 direct dependencies.

It is now generated. `scripts/truth-surfaces.mjs` derives every row from
`package-lock.json`: the package and its declared range from `package.json`,
the resolved version and the `license` string from the lockfile entry for that
exact resolution. The npm lockfile is the right source here because it is
current with `package.json` and the pnpm resolutions AND carries a per-package
license field, which `pnpm-lock.yaml` does not. Regenerate with
`node scripts/truth-surfaces.mjs --write`.

A package whose lockfile entry declares no license prints as `UNDECLARED` and
is never guessed — five resolved packages are in that state and the document
now names them instead of quietly implying MIT. The page also publishes the
license histogram for the full 1,150-package resolved tree.

**`docs/build-metrics.md` was a February snapshot titled "Baseline".** `main`
had already added a prose "Superseded" note (#264); this makes the staleness
machine-checked instead of remembered. The page now declares a `Status`, a
capture date, and the toolchain it was captured against — `vite ^6.4.1`,
`svelte ^5.19.0`, `@sveltejs/kit ^2.16.0`, read from `9aac474:package.json`,
the commit that added the file, so the comparison is declared-range against
declared-range rather than range against resolution. The check fails in BOTH
directions: a toolchain bump without a recapture must carry STALE, and a page
that carries STALE once the toolchain matches again must drop it. No permanent
warning that nobody reads.

`scripts/truth-surfaces.test.mts` covers it, and half the cases exist to prove
the guard can go red — a check only ever observed passing is an unfailable
assertion. `BUILD.bazel`'s `vitest_srcs` and `scripts/run-vitest-bazel.mjs`
gain the two documents so they reach the Vitest sandbox next to
`package-lock.json`.

Verification (plain node 22; `node_modules` is not installed on this machine so
vitest itself was not run here — the test's fixtures and assertions were ported
1:1 to a harness and executed):

    $ node scripts/truth-surfaces.mjs
    truth surfaces OK

    12/12 harness cases pass, including: a lockfile version bump with a stale
    document goes red; an undeclared license renders UNDECLARED and NOT MIT;
    a moved toolchain without STALE fails; an unjustified STALE marker fails;
    a metrics page that will not name its toolchain fails; and the real tree
    publishes a row for all 42 direct dependencies with none unresolved.

**Out of scope here, and why.** The other TIN-161 bullets — mermaid prerender,
`sharp`-unreadable images, Pagefind skipping `/` and `/consultancy.html`, and
the large-chunk/post-import warnings — all need a real build to triage
honestly, and this machine cannot run one. Two of them look to have moved since
the audit and want re-derivation rather than a fix: `puppeteer` is now a direct
devDependency (`^24.43.1`), `scripts/render-mermaid.mts` carries an explicit
"Cannot find package 'puppeteer'" degradation path, and there is a
`puppeteer_chromium_smoke` bazel target. Stated as observations, not as a
closure. CI pending.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant