Skip to content

Implement the Workers Static Assets provider with verified postconditions #68

Description

@forkwright

Finding

Typikon embeds Cloudflare deployment behavior in generated workflows. It has no typed provider implementation, provider-neutral request/result schema, or provider fixture corpus — deployment postconditions are verified only by fixture-tested shell/Python, not by a typed, portable boundary.

Evidence

Deployment logic is distributed across workflow templates and shell/Python checks. Two of the five absences originally named here have since landed:

  • ci/check-cf-deploy-gate.py extracts the deploy step's run: block verbatim from ci/github-workflow.yml.tmpl and proves it halts before Wrangler runs unless Cloudflare's PATCH response reports .success == true and .result.production_branch exactly matches the branch being shipped — a postcondition readback, fixture-tested against 5 response shapes, not transport-success-as-proof (Assert the Cloudflare production-branch mutation before deploy #63).
  • ci/deploy-manifest.toml + ci/validate-deploy-bundle.py require and syntax-check _headers/_redirects/404.html before deploy and hash the bundle into a receipt, covered by 12 deletion/corruption fixtures in ci/check-deploy-bundle-gate.py — the exact bundle inventory (Require and verify deployment control files before deploy #48).

Still genuinely absent: crates/typikon-provider-workers, a provider-neutral request/result schema, and a provider fixture corpus in that crate — i.e. the typed, portable provider. #48 and #63 own the shell-level v1 defects that produced the two landed mechanisms above; neither owns the durable typed provider.

Why this matters

Portability and a compile-time contract do not follow from a fixture-tested shell script, however well it is tested. Without a typed boundary, a second provider cannot reuse the request/result contract, and nothing prevents the shell path and a future typed path from silently diverging.

Desired correction

Implement a provider-neutral bundle/deploy/postcondition contract in core and a Workers Static Assets provider in crates/typikon-provider-workers. Accept only a validated exact-digest bundle, perform the bounded provider mutation, read authoritative state back, redact credentials, and emit a content-addressed receipt binding request, artifact, response, and observed deployment identity.

Done when fixtures cover malformed/unsuccessful responses, missing assets, upload mismatch, wrong branch or project state, readback disagreement, retry/idempotency behavior, and credential redaction, in the typed crate; deploy success requires postcondition support, not transport success, at the typed boundary as it already does at the shell boundary. This durable mechanism extends rather than closes #48 and #63 by intent alone.

Program: ardent-web-triad. Refs #48 #63.

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

    enhancementNew capability or improvement to an existing feature

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions