Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
579 commits
Select commit Hold shift + click to select a range
ebb9dfc
fix(outbound): type batch termination
aram356 Sep 16, 2026
02771f1
fix(ci): avoid indexed cutoff assertions
aram356 Sep 16, 2026
6b1e707
docs(outbound): close batch termination plan
aram356 Sep 16, 2026
ea3de8f
fix(outbound): preserve batch driver failures
aram356 Sep 17, 2026
a47400c
docs(plan): complete batch driver failure delivery
aram356 Sep 17, 2026
6221c45
fix(outbound): harden batch and Fastly egress contracts
aram356 Sep 17, 2026
5ff5620
fix(outbound): preserve early Fastly batch timeouts
aram356 Sep 17, 2026
2e7a994
fix(fastly): satisfy CLI item ordering
aram356 Sep 18, 2026
bfdeadf
docs(outbound): clarify batch cancellation lifecycle
aram356 Sep 18, 2026
c20444a
docs(outbound): deduplicate budget source contract
aram356 Sep 18, 2026
4fc571d
docs: design response completion and ingress abort
aram356 Sep 19, 2026
317e9d4
feat(core): add response-scoped egress completion
aram356 Sep 19, 2026
6496e38
feat(core): carry completion through ingress admission
aram356 Sep 19, 2026
57092b5
feat(axum): abort rejected ingress at connection boundary
aram356 Sep 19, 2026
e34795b
feat(adapters): propagate ingress abort without a response
aram356 Sep 19, 2026
111a34b
feat(app): make application assembly fallible
aram356 Sep 19, 2026
477bbbb
docs: align consumers with ingress lifecycle hard cut
aram356 Sep 19, 2026
4ece0ce
test: close lifecycle hard-cut coverage
aram356 Sep 19, 2026
f7bf087
docs: complete lifecycle implementation plan
aram356 Sep 19, 2026
d240d38
feat(core): harden lifecycle and bounded reads
aram356 Sep 20, 2026
a32e4e7
feat(core): allow detached ingress abort decisions
aram356 Sep 20, 2026
cb91564
Merge origin/main into docs/outbound-http-spec
aram356 Sep 20, 2026
366d49f
docs(plan): record detached ingress verification
aram356 Sep 20, 2026
d276c11
docs: define response egress composition and deadlines
aram356 Sep 20, 2026
9d25fb4
feat(core): compose response egress completions
aram356 Sep 20, 2026
c59864b
feat(core): require detached response deadlines
aram356 Sep 20, 2026
71ed199
test(adapters): migrate detached egress deadlines
aram356 Sep 20, 2026
5988bed
feat: align detached response egress examples
aram356 Sep 20, 2026
97b328f
fix: align generated response lifecycle
aram356 Sep 20, 2026
f0ca3eb
fix: harden response egress legacy scan
aram356 Sep 20, 2026
44b1cf5
docs(plan): record response egress verification
aram356 Sep 20, 2026
6e28bca
ci: consolidate adapter clippy checks
aram356 Sep 20, 2026
851f73e
feat(core): add response-relative egress deadlines
aram356 Sep 21, 2026
2e3e79c
fix(core): preserve framework error response contracts
aram356 Sep 24, 2026
a1f0ca2
fix(core): preserve mandatory error headers
aram356 Sep 24, 2026
53bd6ff
fix(cli): isolate template dependency feature
aram356 Sep 25, 2026
6969fa9
Merge remote-tracking branch 'origin/main' into docs/outbound-http-spec
aram356 Sep 25, 2026
8b29079
feat(adapter): expose platform memory ceilings
aram356 Sep 27, 2026
d523e77
fix(app): centralize platform-aware construction
aram356 Sep 27, 2026
4189710
fix: harden outbound clock and decoder contracts
aram356 Sep 27, 2026
2b4d22b
fix: gate spin clock regression helper
aram356 Sep 27, 2026
6fe77d4
docs: specify platform resource metadata
aram356 Sep 29, 2026
02d4fa1
feat(core): model typed platform resource facts
aram356 Sep 29, 2026
ca221c7
feat(core): validate platform memory envelopes
aram356 Sep 29, 2026
ab4ee50
feat(adapters): publish platform resource metadata
aram356 Sep 29, 2026
b52e2c0
docs(outbound): clarify batch observation cutoff
aram356 Sep 29, 2026
89173af
fix(core): support generic platform facts
aram356 Sep 29, 2026
8fa8429
docs: publish platform resource contracts
aram356 Sep 29, 2026
62153bc
docs: record platform resource verification
aram356 Sep 29, 2026
491df84
docs: complete platform resource delivery record
aram356 Sep 29, 2026
97b1a7e
feat(outbound): decode deflate and type passthrough reasons
aram356 Sep 29, 2026
69b86ca
fix(outbound): close adapter lifecycle and scaffold gaps
aram356 Sep 29, 2026
74f864b
fix(fastly): order shared items for CLI-only lint
aram356 Sep 29, 2026
c84996a
fix: preserve declared config bindings and defer Spin opens
aram356 Oct 2, 2026
04353fc
Bound config envelope JSON structure before materialization
aram356 Oct 3, 2026
e1c80b1
refactor: construct ordinary JSON with json!
aram356 Oct 3, 2026
5527b58
test: preserve failed Cloudflare config binding contracts
aram356 Oct 3, 2026
dfd439c
fix(logging): separate boot diagnostics from runtime filtering
aram356 Oct 6, 2026
9211183
fix: validate response EOF and batch driver finalization
aram356 Oct 6, 2026
950cb81
docs: complete PR 275 changelog
aram356 Oct 6, 2026
91f4af3
Merge main and share outbound batch and response policy
aram356 Oct 7, 2026
2cecc2e
Bound Axum HTTP/1 ingress before application admission
aram356 Oct 7, 2026
d1a8157
fix(axum): bound config snapshots before serving
aram356 Oct 8, 2026
633bd84
test(cli): isolate demo startup store state
aram356 Oct 8, 2026
ea66eff
Bound provider config reads and add lifecycle qualification probes
aram356 Oct 8, 2026
28038cc
Merge main while preserving portable HTTP lifecycle contracts
aram356 Oct 13, 2026
6531264
Preserve original outbound Content-Type provenance
aram356 Oct 15, 2026
596f9f4
Merge main into outbound HTTP work for Rust 1.98.1
aram356 Oct 16, 2026
f6c708c
Merge repository transfer while preserving outbound implementation
aram356 Oct 16, 2026
bc300ac
docs: define outbound adoption requirements and implementation plans
aram356 Oct 18, 2026
7cccaf1
docs: finalize outbound adoption contracts and qualification plans
aram356 Oct 19, 2026
0250edc
feat: add outbound policy foundations and runtime evidence
aram356 Oct 20, 2026
8f5a05d
test: verify encoded relay across local adapters
aram356 Oct 20, 2026
852ec74
feat: classify request overflow as payload too large
aram356 Oct 21, 2026
619c69b
test: characterize request overflow across local runtimes
aram356 Oct 21, 2026
cda324d
test: prove generated application fallback limits over TCP
aram356 Oct 21, 2026
0ee5625
test: cover exact ingress overflow boundaries
aram356 Oct 21, 2026
9c4e4d6
fix: preserve declared KV bindings across serverless adapters
aram356 Oct 21, 2026
f85830d
feat: add text-free provider diagnostic foundations
aram356 Oct 21, 2026
31ff21d
feat: preserve typed SDK failure diagnostics
aram356 Oct 22, 2026
8a576f9
feat: retain outbound preparation diagnostics
aram356 Oct 22, 2026
e857243
feat: retain response source diagnostics
aram356 Oct 22, 2026
cfcbe05
feat: preserve typed egress framing diagnostics
aram356 Oct 22, 2026
046ec23
feat: publish provider failure diagnostic capabilities
aram356 Oct 22, 2026
5968cac
feat: report Fastly delivery disposition without unsafe replacement
aram356 Oct 22, 2026
e07a30d
feat: make application route assembly fallible
aram356 Oct 22, 2026
f29fd9f
feat: unify fallible application assembly and error delivery
aram356 Oct 23, 2026
fe0fd4c
feat: serve configured applications through Axum TCP helpers
aram356 Oct 23, 2026
7fdef8b
fix: align buffered response framing across adapters
aram356 Oct 23, 2026
d47c802
feat: bound synthesized headers across response delivery paths
aram356 Oct 23, 2026
70f2ea5
test: verify declared KV failures through response delivery
aram356 Oct 23, 2026
6e33275
test: compile the forwarding guide example in CI
aram356 Oct 23, 2026
fbedaeb
test: assemble pre-freeze outbound evidence
aram356 Oct 24, 2026
ff60e5a
docs: prepare outbound qualification runbook
aram356 Oct 24, 2026
d12730f
fix: retain errors in Viceroy body readiness
aram356 Oct 24, 2026
77819f7
test: expand Fastly deadline-readiness diagnostics
aram356 Oct 24, 2026
b6b4ad8
test: isolate Fastly readiness timer observations
aram356 Oct 24, 2026
3654f35
feat: add head-first outbound finalization foundation
aram356 Oct 24, 2026
08bfb89
feat: add validated outbound image option values
aram356 Oct 24, 2026
9c08622
refactor: model image optimizer regions as an enum
aram356 Oct 24, 2026
98a1d0e
docs: define native image optimizer parity gates
aram356 Oct 24, 2026
fff8d64
fix: require measurements for outbound comparisons
aram356 Oct 24, 2026
8b460dd
feat: integrate native image optimizer single sends
aram356 Oct 24, 2026
1e3614d
fix: preserve transport-known empty Axum bodies
aram356 Oct 25, 2026
4ecbca4
fix: preserve absent Fastly SDK request bodies
aram356 Oct 25, 2026
40ad2dc
refactor: centralize outbound header policy
aram356 Oct 25, 2026
944fc30
docs: reconcile outbound delivery and acceptance tracking
aram356 Oct 25, 2026
ee71817
test: bind local Axum adoption acceptance cases
aram356 Oct 25, 2026
a0d3151
test: consolidate inventory-bound Axum suite execution
aram356 Oct 25, 2026
e1d4fe3
fix: preserve native Cloudflare request body absence
aram356 Oct 25, 2026
069bb35
refactor: centralize outbound dispatch mode validation
aram356 Oct 25, 2026
622f996
fix: reject expired outbound response handoffs
aram356 Oct 25, 2026
b33342d
fix: tolerate Spin connect timeout option refusals
aram356 Oct 25, 2026
0166998
docs: prepare Fastly backend policy review
aram356 Oct 25, 2026
c70e2b0
test: exercise proposed Fastly backend timer vectors
aram356 Oct 26, 2026
92daf00
feat: adopt stable Fastly B31 backend policy
aram356 Oct 26, 2026
f5d74b4
test: strengthen outbound mixed-phase progress coverage
aram356 Oct 26, 2026
1bb75e8
feat: multiplex Fastly outbound receive progress
aram356 Oct 26, 2026
b7a288d
Merge main while preserving outbound HTTP contracts
aram356 Oct 26, 2026
ba486fc
Fix isolated Fastly lint and Cloudflare guest contracts
aram356 Oct 27, 2026
3607576
Scope Fastly batch drivers to callback and response lifetimes
aram356 Oct 27, 2026
14c8b73
Reuse dispatch-selected clients in Fastly lifecycle fixtures
aram356 Oct 27, 2026
d86d4c0
Pair outbound clocks with cancellable runtime timers
aram356 Oct 27, 2026
f4d660b
Order Cloudflare contract helpers for isolated feature builds
aram356 Oct 27, 2026
2be1dd8
feat(outbound): unify prepared dispatch and structured ownership
aram356 Oct 27, 2026
75cc304
fix(spin): match helper gates to guest test features
aram356 Oct 27, 2026
e02c236
feat(outbound): follow redirects through the shared pipeline
aram356 Oct 27, 2026
f57b813
fix(fastly): honor source wakeups before host waits
aram356 Oct 27, 2026
699cd49
test(outbound): verify provider redirect boundaries
aram356 Oct 27, 2026
361da4f
test(spin): move wire checks into Rust fixture harness
aram356 Oct 28, 2026
4e64db9
test(cloudflare): verify redirects through local workerd
aram356 Oct 28, 2026
b5f94c7
refactor(test): isolate the shared runtime harness
aram356 Oct 28, 2026
834a009
test(outbound): add bounded lifetime progress probes
aram356 Oct 28, 2026
7b68f73
fix(spin): pin SDK executor with eager spawn progress
aram356 Oct 28, 2026
f822e40
Merge main into outbound HTTP implementation
aram356 Oct 28, 2026
73ed39b
test(outbound): verify pending cutoff return boundaries
aram356 Oct 28, 2026
26e9e6b
docs(outbound): correct lifetime probe case count
aram356 Oct 28, 2026
44baaf3
test(outbound): characterize CPU-stretched batch observation
aram356 Oct 28, 2026
0d09236
test(outbound): calibrate CPU timing through the existing client
aram356 Oct 28, 2026
d3f4856
test(outbound): replace fixture accept sleeps with readiness
aram356 Oct 28, 2026
11b8f2c
test: expose fixture version probe errors in CI
aram356 Oct 28, 2026
cd8e77e
test(outbound): cover per-call expiry during late collection
aram356 Oct 28, 2026
87b5e1c
Update reviewed Spin SDK and retain outbound task ownership
aram356 Oct 29, 2026
8c11307
test: verify buffered caps during outbound batch progress
aram356 Oct 29, 2026
279c5a9
test: bind core batch receipt acceptance
aram356 Oct 29, 2026
abbc2c1
test: prove response-owned outbound work after handoff
aram356 Oct 29, 2026
15615da
test: prove Fastly response cleanup preserves callback work
aram356 Oct 29, 2026
fbdc060
test: cover Fastly response cleanup failures
aram356 Oct 29, 2026
5271994
test: verify retained outbound lifecycle cleanup
aram356 Oct 29, 2026
350c4b0
test: bind core outbound policy acceptance
aram356 Oct 29, 2026
7e9619c
test: bind forwarding and shared-head acceptance
aram356 Oct 29, 2026
be99226
test: expand native outbound acceptance and tighten timing evidence
aram356 Oct 30, 2026
ede796e
fix(http): protect ingress hooks and harden runtime guards
aram356 Oct 30, 2026
4470e73
fix(ci): format isolated ingress fixture
aram356 Oct 30, 2026
a9051e8
test: bind Spin response caps and repair CI evidence
aram356 Oct 30, 2026
0a04ddb
test: consolidate runtime harness and CI execution
aram356 Oct 30, 2026
ce1257f
docs: record CI consolidation verification
aram356 Oct 30, 2026
3b4e1f8
docs: record green CI and cache retention gap
aram356 Oct 30, 2026
9126631
docs: record warm CI cache verification
aram356 Oct 30, 2026
862eef3
test: bind Axum forwarding mode acceptance
aram356 Oct 30, 2026
9eaef2e
test: consolidate integration ownership and runners
aram356 Oct 30, 2026
c0379ee
test: remove backtracking from CI argument checks
aram356 Oct 30, 2026
a0fd6f7
test: complete Spin response normalization acceptance
aram356 Oct 30, 2026
80f7375
test: bind mixed batch recovery across adapters
aram356 Oct 30, 2026
0b949f0
test: restore Cloudflare wire acceptance without inspector
aram356 Oct 31, 2026
52d89c1
test: bind outbound client precedence across adapters
aram356 Oct 31, 2026
d1175fb
test: bind policy precedence and native marker acceptance
aram356 Oct 31, 2026
00a9edb
feat: expose request-scoped Fastly registration observations
aram356 Oct 31, 2026
2cbbc54
feat: publish independent connect-timeout capabilities
aram356 Oct 31, 2026
9fe6c56
test: replace Ruby workflow parsing with Node
aram356 Oct 31, 2026
c0e8aeb
fix: preserve empty ingress and verify native forwarding
aram356 Oct 31, 2026
dcd5ffc
test: bind strict Axum ingress deadline acceptance
aram356 Oct 31, 2026
9aaf0f5
test: bind native encoding and relay acceptance
aram356 Oct 31, 2026
d5dd8f1
test: repair lifecycle scheduling and callback attestation
aram356 Oct 31, 2026
96fb203
test: separate source and guest lifecycle timing evidence
aram356 Oct 31, 2026
071bbd4
test: bind local request overflow acceptance
aram356 Oct 31, 2026
dffca16
test: bind reader and fallback acceptance
aram356 Oct 31, 2026
1ff9ff9
test: consolidate dependency and forwarding checks in Rust
aram356 Nov 1, 2026
45ac7ef
test: bind outbound setting acceptance across adapters
aram356 Nov 1, 2026
fc97371
test: verify outbound provider mapping boundaries
aram356 Nov 1, 2026
b522a8e
fix: align focus invariants and Fastly CLI fixture lint
aram356 Nov 1, 2026
fb41b85
docs: format outbound approval audit tables
aram356 Nov 1, 2026
78f7a1b
test: bind image optimizer numeric and compiler acceptance
aram356 Nov 1, 2026
6920def
test: bind Fastly post-preparation dispatch acceptance
aram356 Nov 2, 2026
3523e12
test(outbound): witness native pending body reads
aram356 Nov 2, 2026
c6f3aaf
test(axum): use canonical observation cutoff name
aram356 Nov 2, 2026
deb0084
test(cloudflare): load native module manifests
aram356 Nov 2, 2026
92e03fe
test(spin): witness native pending body reads
aram356 Nov 2, 2026
5950548
test(fastly): witness native body readiness waits
aram356 Nov 2, 2026
eb8ac5d
test(fastly): cover arrivals during origin body reads
aram356 Nov 2, 2026
f0ce2b3
test(fastly): cover trickling slots and live-batch sends
aram356 Nov 2, 2026
775366f
test(fastly): prove batch execution after response handoff
aram356 Nov 2, 2026
f8f2dc5
test(outbound): complete local bindings and preserve qualification fa…
aram356 Nov 3, 2026
22c6386
fix(outbound): repair CI fixtures and pending-source observation
aram356 Nov 3, 2026
f036425
test(outbound): isolate cancellation and verify Linux connect
aram356 Nov 3, 2026
cd21436
test(outbound): isolate explicit reset cancellation control
aram356 Nov 3, 2026
8fbc4f8
test(spin): characterize response-result readiness before EOF
aram356 Nov 4, 2026
158b0c0
test(outbound): preserve absolute deferred batch dispatch timing
aram356 Nov 4, 2026
f82e402
fix(ci): recognize completed tests before host diagnostics
aram356 Nov 4, 2026
9f0a398
test(outbound): isolate cold entry timing before dispatch
aram356 Nov 4, 2026
55e07f6
test(outbound): isolate admission timing on original request clocks
aram356 Nov 4, 2026
3399588
fix(ci): recognize interrupted tests with diagnostic suffixes
aram356 Nov 4, 2026
562acc1
fix(cloudflare): retain absolute deadlines through timer setup
aram356 Nov 5, 2026
46019b2
docs: map outbound evidence to the reviewed revision
aram356 Nov 5, 2026
8f82547
fix(cloudflare): bound batch observation by its own cutoff
aram356 Nov 5, 2026
b56fccd
Merge latest main into outbound HTTP branch
aram356 Nov 6, 2026
6e5ce76
fix(cloudflare): retain absolute response-write deadlines
aram356 Nov 6, 2026
9b31a69
Replace Workers egress abort polling with owned events
aram356 Nov 6, 2026
3cc111c
Dispatch remaining Fastly slots after synchronous batch outcomes
aram356 Nov 6, 2026
daed2d0
Use one condition for unpromoted evidence deferrals
aram356 Nov 6, 2026
a95b7c8
Record Fastly arrivals during nonblocking observations
aram356 Nov 6, 2026
46dfa2d
Correct current lifecycle APIs and toolchain in changelog
aram356 Nov 6, 2026
16699f1
Keep Workers inbound reads on their absolute deadline
aram356 Nov 6, 2026
0e064bf
Observe parked Spin deadlines before ending batch collection
aram356 Nov 6, 2026
fbd3fb7
Record implemented Axum begun-request test coverage
aram356 Nov 6, 2026
8866a01
Preflight routed caller caps against the original body length
aram356 Nov 6, 2026
fb22efb
Align Axum guide with current toolchain and shared application lifetime
aram356 Nov 6, 2026
522537f
Describe complete Fastly backend identity and capacity risks
aram356 Nov 6, 2026
bdee04c
Correct Fastly guide entrypoint and response examples
aram356 Nov 6, 2026
edef031
Align capability guidance and guards with adapter-owned delivery
aram356 Nov 6, 2026
153874f
Document implemented GET and HEAD settlement across adapters
aram356 Nov 6, 2026
1afbf8c
Publish outbound behavior support without extra capability flags
aram356 Nov 6, 2026
6504037
Clarify native optimizer blocking and measurement boundaries
aram356 Nov 6, 2026
9f34724
Document Fastly deadline behavior and synchronous exceptions
aram356 Nov 6, 2026
a2c67a4
Preserve Cargo proxy launching in the Spin CI harness
aram356 Nov 6, 2026
179573a
Correct configuration reference and extraction wire terminology
aram356 Nov 6, 2026
42c9e8d
Clarify the repaired Viceroy baseline for bounded reads
aram356 Nov 6, 2026
6f15983
Describe elapsed time at recorded arrival rather than collection
aram356 Nov 6, 2026
7d959e3
Correct SDK feature and deploy-action pin migration guidance
aram356 Nov 6, 2026
4951310
Correct handler examples and bounded context API reference
aram356 Nov 6, 2026
cc20b94
Document outbound client selection precedence across adapters
aram356 Nov 6, 2026
1b99901
List only implemented options retained by followed requests
aram356 Nov 6, 2026
139a928
State per-target DNS and TLS connect-timeout coverage
aram356 Nov 6, 2026
6aa1dfd
Document the two deadlines of begun streamed responses
aram356 Nov 6, 2026
70b6ae9
Correct streaming ownership and decompression examples
aram356 Nov 6, 2026
a9becc6
Distinguish route-conflict timing across application entrypoints
aram356 Nov 6, 2026
12bedb3
Name batch collection results and bodiless forwarding semantics
aram356 Nov 6, 2026
0783467
Update architecture diagram to the admitted head-first lifecycle
aram356 Nov 6, 2026
7568083
Name both unsupported optimizer modes in the Fastly error
aram356 Nov 6, 2026
6004d8a
fix(fastly): preserve SDK cache selection for batch slots
aram356 Nov 6, 2026
c2656c9
fix(fastly): identify failures observed while waiting for headers
aram356 Nov 6, 2026
9849617
fix(fastly): log deterministic backend refusals safely
aram356 Nov 6, 2026
7dfaf49
test(framing): isolate known SDK deviations from regression failures
aram356 Nov 6, 2026
c41f5fd
style(docs): format reviewed API guides
aram356 Nov 6, 2026
aa0f9fd
fix(test-harness): preserve cancellation across child exit observation
aram356 Nov 6, 2026
c739091
test(adapters): cover refusal delivery and runtime failure diagnostics
aram356 Nov 6, 2026
4606c45
test(outbound): bind shipped follow-up acceptance proofs
aram356 Nov 6, 2026
9956829
test: consolidate outbound acceptance tooling in Rust
aram356 Nov 7, 2026
d675b4b
test: provide single-request Fastly qualification package
aram356 Nov 7, 2026
958e214
docs: reconcile adoption guides and qualification status
aram356 Nov 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .claude/agents/code-architect.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ architectural principles:

3. **Thin adapters**: each adapter translates platform types to/from core types.
Business logic never lives in adapters. The adapter file structure is:
`context.rs`, `request.rs`, `response.rs`, `proxy.rs`, `logger.rs`, `cli.rs`.
`context.rs`, `request.rs`, `response.rs`, `outbound.rs`, `logger.rs`, `cli.rs`.

4. **Contract testing**: every adapter has `tests/contract.rs` that validates
request/response mapping. New adapters must follow this pattern.
Expand Down
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Unified patches contain single-space context lines; check whitespace in the applied source.
patches/viceroy/*.patch -whitespace
4 changes: 2 additions & 2 deletions .github/actions/deploy-core/tests/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2795,8 +2795,8 @@ test_fastly_logical_link_documentation() {
grep -Fq -- '--service-id "$FASTLY_SERVICE_ID"' "$fastly_deployment"
assert_fails "Fastly managed deployment does not recommend direct provider deployment" \
grep -Fq 'fastly compute deploy' "$fastly_deployment"
assert_succeeds "bare Fastly deploy is explicitly store-free production compatibility" \
grep -Fq 'store-free production compatibility' "$fastly_deployment_flat"
assert_succeeds "bare Fastly deploy is explicitly limited to store-free production" \
grep -Fq 'supports store-free production deployments using a manifest command' "$fastly_deployment_flat"

# shellcheck disable=SC2016 # GitHub expression is the literal documentation contract.
assert_fails "lifecycle examples do not reference a cross-job archive path output" \
Expand Down
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,10 @@ updates:
interval: "weekly"
cooldown:
default-days: 7

- package-ecosystem: "npm"
directory: "/scripts"
schedule:
interval: "weekly"
cooldown:
default-days: 7
123 changes: 99 additions & 24 deletions .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,33 +30,47 @@ jobs:
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
tests/fixtures/reusable-app/target/
crates/edgezero-test-harness/fixtures/reusable-app/target/
crates/edgezero-test-harness/target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-

- name: Retrieve Rust version
id: rust-version
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> "$GITHUB_OUTPUT"
shell: bash

- name: Set up rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
cache: "false"
components: "clippy, rustfmt"
toolchain: ${{ steps.rust-version.outputs.rust-version }}

- name: Fetch dependencies (locked)
run: cargo fetch --locked
run: |
cargo fetch --locked
cargo fetch --locked --manifest-path crates/edgezero-test-harness/fixtures/reusable-app/Cargo.toml
cargo fetch --locked --manifest-path crates/edgezero-test-harness/Cargo.toml
cargo fetch --locked --manifest-path crates/edgezero-test-harness/fixtures/request-fidelity/Cargo.toml

- name: Run cargo fmt
run: cargo fmt --all -- --check

- name: Run cargo fmt (lifecycle fixtures)
run: cargo fmt --manifest-path tests/fixtures/reusable-app/Cargo.toml --all -- --check
run: cargo fmt --manifest-path crates/edgezero-test-harness/fixtures/reusable-app/Cargo.toml --all -- --check

- name: Run cargo fmt (test harness)
run: cargo fmt --manifest-path crates/edgezero-test-harness/Cargo.toml --all -- --check

- name: Run cargo fmt (ingress fixtures)
run: cargo fmt --manifest-path crates/edgezero-test-harness/fixtures/request-fidelity/Cargo.toml --all -- --check

- name: Run cargo clippy (native lifecycle fixtures)
run: cargo clippy --locked --manifest-path tests/fixtures/reusable-app/Cargo.toml -p fixture-harness -p fixture-core -p fixture-axum --all-targets -- -D warnings
run: |
cargo clippy --locked --manifest-path crates/edgezero-test-harness/Cargo.toml --all-targets -- -D warnings
cargo clippy --locked --manifest-path crates/edgezero-test-harness/fixtures/reusable-app/Cargo.toml -p fixture-core -p fixture-axum --all-targets -- -D warnings

- name: Run cargo clippy
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
Expand Down Expand Up @@ -84,28 +98,41 @@ jobs:
working-directory: examples/app-demo
run: cargo clippy --workspace --all-targets --all-features -- -D warnings

adapter-wasm-clippy:
name: ${{ matrix.adapter }} wasm clippy
adapter-clippy:
name: ${{ matrix.check_name }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- adapter: cloudflare
target: wasm32-unknown-unknown
features: cloudflare
- adapter: fastly
target: wasm32-wasip1
features: fastly
# The `cli` feature is a valid wasip1 build combination (the CLI host
# code compiled for the guest target); gate it so a dead-code or
# portability regression there is caught, not only in the fastly-only build.
check_name: cloudflare wasm clippy
feature_sets: |-
cloudflare
cloudflare,test-utils
- adapter: fastly
target: wasm32-wasip1
features: fastly cli
check_name: fastly wasm clippy
# The `cli` feature is valid on wasip1. Lint it independently so
# feature unification cannot mask target-specific cfg mistakes.
feature_sets: |-
fastly
fastly,cli
fastly,test-utils
fastly,cli,test-utils
- adapter: spin
target: wasm32-wasip2
features: spin
check_name: spin wasm clippy
feature_sets: |-
spin
spin,test-utils
- adapter: axum
target: native
check_name: axum native clippy
feature_sets: |-
axum
axum,test-utils
steps:
- uses: actions/checkout@v6
with:
Expand All @@ -119,34 +146,79 @@ jobs:
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
tests/fixtures/reusable-app/target/
crates/edgezero-test-harness/fixtures/reusable-app/target/
crates/edgezero-test-harness/fixtures/request-fidelity/target/
key: ${{ runner.os }}-cargo-${{ matrix.adapter }}-clippy-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-${{ matrix.adapter }}-clippy-

- name: Retrieve Rust version
id: rust-version
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> "$GITHUB_OUTPUT"
shell: bash

- name: Set up Rust tool chain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
cache: "false"
toolchain: ${{ steps.rust-version.outputs.rust-version }}
components: clippy

- name: Add wasm target
if: matrix.target != 'native'
run: rustup target add ${{ matrix.target }}

- name: Fetch dependencies (locked)
run: cargo fetch --locked
run: |
cargo fetch --locked
cargo fetch --locked --manifest-path crates/edgezero-test-harness/fixtures/reusable-app/Cargo.toml
cargo fetch --locked --manifest-path crates/edgezero-test-harness/fixtures/request-fidelity/Cargo.toml

- name: Clippy ${{ matrix.adapter }} (${{ matrix.features }}) on ${{ matrix.target }}
run: cargo clippy -p edgezero-adapter-${{ matrix.adapter }} --features "${{ matrix.features }}" --target ${{ matrix.target }} --all-targets -- -D warnings
- name: Clippy ${{ matrix.adapter }} feature combinations on ${{ matrix.target }}
env:
ADAPTER: ${{ matrix.adapter }}
FEATURE_SETS: ${{ matrix.feature_sets }}
TARGET: ${{ matrix.target }}
run: |
target_args=()
if [[ "${TARGET}" != "native" ]]; then
target_args=(--target "${TARGET}")
fi

while IFS= read -r features; do
echo "==> edgezero-adapter-${ADAPTER} ${TARGET} features=[${features}]"
cargo clippy \
--package "edgezero-adapter-${ADAPTER}" \
--no-default-features \
--features "${features}" \
"${target_args[@]}" \
--all-targets \
-- \
-D warnings
done <<<"${FEATURE_SETS}"

- name: Clippy ${{ matrix.adapter }} lifecycle fixture
if: matrix.features != 'fastly cli'
run: cargo clippy --locked --manifest-path tests/fixtures/reusable-app/Cargo.toml -p fixture-${{ matrix.adapter }} --target ${{ matrix.target }} --all-targets -- -D warnings
env:
ADAPTER: ${{ matrix.adapter }}
TARGET: ${{ matrix.target }}
run: |
target_args=()
if [[ "${TARGET}" != "native" ]]; then
target_args=(--target "${TARGET}")
fi
cargo clippy --locked --manifest-path crates/edgezero-test-harness/fixtures/reusable-app/Cargo.toml \
-p "fixture-${ADAPTER}" "${target_args[@]}" --all-targets -- -D warnings
if [[ "${ADAPTER}" == spin ]]; then
cargo clippy --locked --manifest-path crates/edgezero-test-harness/fixtures/reusable-app/Cargo.toml \
-p fixture-spin-async -p fixture-spin-wire "${target_args[@]}" --all-targets -- -D warnings
fi

- name: Clippy ${{ matrix.adapter }} ingress fixture
if: matrix.adapter != 'axum'
run: >-
cargo clippy --locked --manifest-path crates/edgezero-test-harness/fixtures/request-fidelity/Cargo.toml
--features ${{ matrix.adapter }} --target ${{ matrix.target }}
--all-targets -- -D warnings

format-docs:
runs-on: ubuntu-latest
Expand All @@ -162,7 +234,7 @@ jobs:
- name: Retrieve Node.js version
id: node-version
working-directory: .
run: echo "node-version=$(grep '^nodejs ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
run: echo "node-version=$(grep '^nodejs ' .tool-versions | awk '{print $2}')" >> "$GITHUB_OUTPUT"
shell: bash

- name: Use Node.js
Expand All @@ -180,3 +252,6 @@ jobs:

- name: Run Prettier (check)
run: npm run format

- name: Build documentation
run: npm run build
Loading
Loading