You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 == trueand.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.
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.pyextracts the deploy step'srun:block verbatim fromci/github-workflow.yml.tmpland proves it halts before Wrangler runs unless Cloudflare's PATCH response reports.success == trueand.result.production_branchexactly 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.pyrequire and syntax-check_headers/_redirects/404.htmlbefore deploy and hash the bundle into a receipt, covered by 12 deletion/corruption fixtures inci/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.