Skip to content

test(compat): sdk compat parity tripwire and proxy-swap 101 note (D-0705, D-0769) - #1012

Merged
acamarata merged 3 commits into
mainfrom
dw10-cli-10
Oct 29, 2026
Merged

acamarata merged 3 commits into
mainfrom
dw10-cli-10

Conversation

@acamarata

Copy link
Copy Markdown
Collaborator

D-0705 (partial hardening, row stays latent)

The sdk copy of the ADR 0021 rule (sdk/go/compat) still reads only NSELF_V15. Today both copies agree, so no behaviour changes. Added internal/compat/sdk_parity_test.go: in the CLI process it asserts internal/compat.V15() equals sdk/go/compat.V15() for every rule value. If P7-SHIP flips the internal default without the sdk copy following (or the CLI exporting its resolved mode), this test fails and names D-0705 and the pin store gate, so the flip must handle the sdk in the same change. Mutation check: making an empty NSELF_V15 true in internal/compat fails the new test (<unset> and empty subtests); reverted. I did not flip the default or delete the v1.4 branch in knownhosts_compat.go: that is the P7-SHIP release step (version-lock territory) and compat-markers.sh already lists the file (D-0484).

D-0769 (partial, doc only)

Added the comment in scripts/e2e/proxy-swap.sh that browsers do not apply CSP/HSTS/X-Frame-Options from a websocket 101 handshake, so the missing 101 headers have no browser effect. The Vary decision needs a Traefik renderer change in the plugins repo; tightening the matrix first would turn the e2e red, so the matrix is unchanged.

Not in this PR

Checks

  • go test ./internal/compat/... ok
  • go vet ./internal/compat/ ok
  • bash scripts/ci/compat-markers.sh --check ok
  • bash -n scripts/e2e/proxy-swap.sh ok (shellcheck not installed locally)

…e 101 header rule in proxy-swap matrix (D-0705, D-0769)
…ratchet

internal/compat is L0 and may not import the SDK module (sdk/go/v2/compat
is unclassified). Moving TestSDKCopyAgreesInCLIProcess to test/e2e (L3)
resolves the D1 violation without loosening the ratchet.
@acamarata

Copy link
Copy Markdown
Collaborator Author

Fixed nself-ci layering ratchet failure: moved TestSDKCopyAgreesInCLIProcess from internal/compat (L0) to test/e2e (L3). L0 packages may not import the SDK module (sdk/go/v2/compat is unclassified), which caused a D1 violation after rebase onto main. The test now lives in a non-L0 package where cross-module imports are permitted. Ratchet tests pass; commit 607f6f3.

Chromium learns HSTS from secure WebSocket handshakes and enforces it on
subsequent requests. Document the missing HSTS header on 101 responses as
an unresolved difference instead of claiming it has no browser effect.
@acamarata

Copy link
Copy Markdown
Collaborator Author

Fixed CHANGES-1: corrected the claim that WebSocket handshake HSTS headers have no browser effect. Chromium learns HSTS from secure WebSocket handshakes (regression test linked in code); documented the missing HSTS header on 101 responses as an unresolved difference. Commit 9192533.

@acamarata
acamarata merged commit 0f0eb2f into main Oct 29, 2026
27 of 34 checks passed
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