Skip to content

Cut the scaffolding that had no audience - #47

Merged
mkuznets merged 1 commit into
mainfrom
cut-release-and-verification-scaffolding
Aug 15, 2026
Merged

Cut the scaffolding that had no audience#47
mkuznets merged 1 commit into
mainfrom
cut-release-and-verification-scaffolding

Conversation

@mkuznets

Copy link
Copy Markdown
Owner

Removes eight pieces of release, evidence, and governance apparatus that were sized for a widely-depended-upon artifact rather than for this repo. The plugin itself (src/) is unchanged.

Net: 91 files changed, −7,123 lines.

Removed Detail
Attempt-level resumability Candidate and manifest jobs no longer reuse artifacts from earlier attempts. Managed-D1 evidence reuse stays — it avoids re-provisioning real Cloudflare resources.
Hand-rolled S3 client + two-phase publish ~1,700 lines replaced by aws s3api put-object --if-none-match '*', a public-URL digest re-check, and gh release create.
Publication preflight The 6-check job and the 9-step manual audit that compensated for the three checks it could never verify.
Release dry-run What forced the rehearsal-object and teardown machinery to exist.
coverage-manifest.json A 1,439-line hand-maintained traceability matrix over this repo's own tests.
Seven JSON Schemas Every producer and consumer is a script in this repo at the same commit.
Prose-linting tests AGENTS.md line counts, backticked-path existence, version-string bans.
CONTEXT.md + docs/agents/ Folded into one self-contained AGENTS.md.

Also changed

  • scripts/ is now TypeScript run directly by Node 24's type stripping — no build step, no hand-written .d.mts twins (718 lines). erasableSyntaxOnly makes a violation a typecheck failure rather than a CI runtime failure.
  • package.json is "type": "module", required to make .ts unambiguously ESM for both Node and tsc.
  • Workflow contract tests keep the three checks that each caught a real failure (unknown permission scopes, downloads by artifact ID without merge-multiple, packages imported before npm ci) and drop the ones that only transcribed YAML into regexes.

One property genuinely lost: additionalProperties: false on the release manifest and compatibility evidence. The equivalent guard for managed-D1 evidence — the one keeping SQL, rows, bookmarks, and credentials out of published artifacts — survives as inspectKeys in managed-d1-contract.ts.

Verification: make verify-local passes locally — build, drift, 128 root tests, candidate, types, Miniflare (33), example worker (5).

Untouched: the eight-layer verification pyramid and managed-D1 verification, both still wired into CI and the release gate.

🤖 Generated with Claude Code

This repo carried the release, evidence, and governance apparatus of a
widely-depended-upon artifact: supply-chain proofs, an auditable traceability
matrix, and a controlled vocabulary. Those controls answer "how do I prove this
to someone who doesn't trust me?", and nobody is asking. The plugin itself is
unchanged.

Removed:

- Attempt-level resumability. The candidate and manifest jobs no longer look up
  artifacts from earlier attempts of the same run; re-running from scratch is
  cheaper than the code that avoided it. Managed-D1 evidence reuse stays, since
  that one avoids re-provisioning real Cloudflare resources.
- The hand-rolled S3 client and two-phase publish (~1,700 lines). Publication is
  now three steps in the workflow: a create-only `aws s3api put-object
  --if-none-match '*'`, a public-URL re-download compared to the candidate
  digest, then `gh release create`. The immutable-version-key guarantee is
  unchanged; it was always the conditional write doing the work.
- The 6-check publication preflight, and with it the 9-step manual audit that
  existed because three of those checks could never pass from inside a workflow.
- The release dry-run mode. To rehearse a release, cut the next patch version.
  This is what forced the rehearsal-object and teardown machinery to exist.
- verification/coverage-manifest.json and its catalog: a 1,439-line
  hand-maintained traceability matrix over this repo's own tests.
- All seven JSON Schemas. Every producer and consumer of those files is a script
  in this repo at the same commit. The semantic equality checks that already
  compared every field were doing the real work; the schemas were a third
  encoding of shapes the TypeScript types now own.
- The tests that linted prose — AGENTS.md line counts, backticked-path
  existence, and a ban on version-shaped strings in documentation.
- CONTEXT.md's 14-term controlled vocabulary and the eight docs/agents/ files it
  fed. AGENTS.md is now one self-contained document.

Changed:

- scripts/ is TypeScript, run directly by Node 24's type stripping. No build
  step and no hand-written .d.mts twins (718 lines). scripts/tsconfig.json sets
  erasableSyntaxOnly so a violation fails typecheck instead of at runtime in CI.
- package.json is "type": "module", required to make .ts unambiguously ESM for
  both Node and tsc.
- The workflow contract tests keep the three checks that each caught a real
  failure — unknown permission scopes, downloads by artifact ID without
  merge-multiple, and packages imported before npm ci — and drop the assertions
  that only transcribed the YAML back into regexes.

One property is genuinely lost: additionalProperties:false on the release
manifest and compatibility evidence. The equivalent guard for managed-D1
evidence, which is the one that keeps SQL, rows, bookmarks, and credentials out
of published artifacts, survives as inspectKeys in managed-d1-contract.ts.

make verify-local passes: build, drift, 128 root tests, candidate, types,
Miniflare, and the canonical example worker.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mkuznets
mkuznets merged commit c1ea1c4 into main Aug 15, 2026
12 checks passed
@mkuznets
mkuznets deleted the cut-release-and-verification-scaffolding branch August 15, 2026 14:48
mkuznets added a commit that referenced this pull request Aug 15, 2026
Removes eight pieces of release, evidence, and governance apparatus that
were sized for a widely-depended-upon artifact rather than for this
repo. The plugin itself (`src/`) is unchanged.

**Net: 91 files changed, −7,123 lines.**

| Removed | Detail |
|---|---|
| Attempt-level resumability | Candidate and manifest jobs no longer
reuse artifacts from earlier attempts. Managed-D1 evidence reuse stays —
it avoids re-provisioning real Cloudflare resources. |
| Hand-rolled S3 client + two-phase publish | ~1,700 lines replaced by
`aws s3api put-object --if-none-match '*'`, a public-URL digest
re-check, and `gh release create`. |
| Publication preflight | The 6-check job and the 9-step manual audit
that compensated for the three checks it could never verify. |
| Release dry-run | What forced the rehearsal-object and teardown
machinery to exist. |
| `coverage-manifest.json` | A 1,439-line hand-maintained traceability
matrix over this repo's own tests. |
| Seven JSON Schemas | Every producer and consumer is a script in this
repo at the same commit. |
| Prose-linting tests | `AGENTS.md` line counts, backticked-path
existence, version-string bans. |
| `CONTEXT.md` + `docs/agents/` | Folded into one self-contained
`AGENTS.md`. |

**Also changed**

- `scripts/` is now TypeScript run directly by Node 24's type stripping
— no build step, no hand-written `.d.mts` twins (718 lines).
`erasableSyntaxOnly` makes a violation a typecheck failure rather than a
CI runtime failure.
- `package.json` is `"type": "module"`, required to make `.ts`
unambiguously ESM for both Node and `tsc`.
- Workflow contract tests keep the three checks that each caught a real
failure (unknown permission scopes, downloads by artifact ID without
`merge-multiple`, packages imported before `npm ci`) and drop the ones
that only transcribed YAML into regexes.

**One property genuinely lost:** `additionalProperties: false` on the
release manifest and compatibility evidence. The equivalent guard for
managed-D1 evidence — the one keeping SQL, rows, bookmarks, and
credentials out of published artifacts — survives as `inspectKeys` in
`managed-d1-contract.ts`.

**Verification:** `make verify-local` passes locally — build, drift, 128
root tests, candidate, types, Miniflare (33), example worker (5).

Untouched: the eight-layer verification pyramid and managed-D1
verification, both still wired into CI and the release gate.
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