diff --git a/scripts/verify.sh b/scripts/verify.sh new file mode 100755 index 0000000..203faf9 --- /dev/null +++ b/scripts/verify.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# verify.sh [--all-features] — run tests under 2G memory scope; exit non-zero on any failure. +set -u +LOG=$(mktemp) +if [ "${1:-}" = "--all-features" ]; then + systemd-run --user --scope -p MemoryMax=2G -p MemorySwapMax=0 cargo test --all-features >"$LOG" 2>&1 +else + systemd-run --user --scope -p MemoryMax=2G -p MemorySwapMax=0 cargo test >"$LOG" 2>&1 +fi +TEST_RC=$? +grep -E "^test result" "$LOG" | awk '{p+=$4; f+=$6} END {if (f>0) failed=1; print "tests passed:"p+0" failed:"f+0; exit failed}' || { echo "TESTS FAILED"; grep -B2 -A12 "panicked\|FAILED" "$LOG" | head -60; rm -f "$LOG"; exit 1; } +if [ "$TEST_RC" -ne 0 ]; then + grep -B2 -A12 "panicked\|FAILED\|error\[" "$LOG" | head -60 + rm -f "$LOG"; exit 1 +fi +rm -f "$LOG" +cargo clippy --all-targets -- -D warnings >"$LOG" 2>&1 || { echo "CLIPPY FAILED"; grep -E "warning|error" "$LOG" | head -20; rm -f "$LOG"; exit 1; } +cargo fmt --check || { echo "FMT FAILED"; exit 1; } +rm -f "$LOG" +echo "VERIFY OK" \ No newline at end of file diff --git a/tasks/adapters/review-002-oai13-path-item-wildcards.md b/tasks/adapters/review-002-oai13-path-item-wildcards.md index fa16b94..33628f9 100644 --- a/tasks/adapters/review-002-oai13-path-item-wildcards.md +++ b/tasks/adapters/review-002-oai13-path-item-wildcards.md @@ -1,7 +1,7 @@ --- id: review-002-oai13-path-item-wildcards name: Path-item parameters, 2XX/4XX/5XX wildcards, webhooks handling (OAI-13) -status: pending +status: completed depends_on: [review-002-oai11-ref-memoization] scope: moderate risk: medium @@ -67,4 +67,8 @@ wildcard sweeps, (3) webhooks decision. The wildcard-to-error-status mapping is the one judgment call worth a line in ADR-066 (e.g. "4XX wildcards project to their range's first legal HTTP_ code per error dedup rules"). Sequence after review-002-oai11-ref-memoization (same -file, resolver shape changes first) — or rebase-verify. \ No newline at end of file +file, resolver shape changes first) — or rebase-verify. + +## Summary + +Path-item parameters merge (op-level override wins by last-insert), 2XX/4XX/5XX wildcards (4XX->HTTP_400, 5XX->HTTP_500 class representatives; 2XX authoritative for SSE/output when no concrete 2XX), webhooks rejected loudly at parse time. Unbound-placeholder diagnosis improved. diff --git a/tasks/gateway/review-002-gw15-publish-body-cap.md b/tasks/gateway/review-002-gw15-publish-body-cap.md index 3eb5e2e..8ef268a 100644 --- a/tasks/gateway/review-002-gw15-publish-body-cap.md +++ b/tasks/gateway/review-002-gw15-publish-body-cap.md @@ -1,7 +1,7 @@ --- id: review-002-gw15-publish-body-cap name: Cap /publish body buffering pre-newline + explicit body-limit layer (GW-15) -status: pending +status: completed depends_on: [] scope: moderate risk: medium @@ -74,4 +74,8 @@ cap is optional (the layer limit bounds the total once landed). GW-16 (the 400-vs-422 drift on the cap error's status) is deliberately NOT in scope here — see review-002-gw16-status-drift; land the cap with today's status first, then normalize statuses in that task to avoid -churn in the same lines. \ No newline at end of file +churn in the same lines. + +## Summary + +GATEWAY_BODY_LIMIT layer (2 MiB + 64 KiB headroom; Content-Length pre-rejection + counting stream, plain-text 413) + BufferedLines pre-extend cap on the residual tail; WIP's scan-before-extend bug fixed (complete lines now drain on arrival). 6 wire tests. ADR-068 updated; GW-16 status sites documented.