Repository navigation
PR A: REST transport TlsPosture + Basic auth axes (unblocks redfish defork) - #6759
Merged
Merged
Conversation
…ent (Get + moved Post/Download), curl.dag shrunk to tool authority, redfish hardwired-transport Scaffold row, real-execution witnesses + wet enrollment Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ure (refuse-don't-widen §5); dissolution notes on RestAuthScheme/RestTargetForm
…onal-with-default realization); fix {...} interpolation parse error in dissolution notes
…fig-auth + auth_basid both present, refuse-don't-widen §5) matching interp; interp TLS refusal message reflects emit-only decision (operator 2026-07-16, interp retiring)
…, TLS posture disposition, dual-auth conflict) into pure fns + hermetic execution unit tests with discriminating REDs — floor-enrolled §5 witness for the interp path (nextest gate); behavior-preserving refactor
briansrls
added a commit
that referenced
this pull request
Jul 16, 2026
Main advanced with #6759 (REST transport axes) and #6769 (deploy curl bounds). Three import-header conflicts resolved import-stripped: roadmap_static_site_witness_test.dag, 02_parse.dag, 05_emit_rust.dag. 00_core.dag auto-merged (transport_auth_basic_key, transport_tls_key). Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR A — REST transport axes (unblocks the redfish defork)
Machinery lane feeding the redfish
Scaffolddissolution declared inextdeps/bmc/http.dag(PR #6754). Everyredfish.Httpop hand-spells curl argv for three axes the shared HTTP-client machinery couldn't express; this PR models and realizes them so PR B can flip those 9 ops to declarativetransport restrows.Model (
extdeps/transports/rest.dag)TlsPosture = VerifyPeer | InsecureAcceptAnyCert(absent = VerifyPeer, fail-closed) — the typed dissolution of curl-kfor self-signed BMC certs.RestAuthScheme = BearerToken | HeaderToken | BasicCredentials(+ RFC 7617 anchor) — single-authority for the header value derivation.RestTargetForm = OriginFormOverBase | AbsoluteFormTarget— makes the per-call{bmc_host}target honest/refusable (it already worked via empty-base + full-URL path).RestTransportConfiggainstls: TlsPosture.Realized — Basic auth (end-to-end, decision-independent)
02_parse.dag):auth_basic: { username, password }andtls:are routed into transport properties (previously theparse_rest_fieldselsearm silently dropped unknown keys — a §5 fix in itself).v1_interpreter.rsdispatch_rest):auth_basic→Basic base64(user:pass)Authorization header, hand-rolledbase64_encode_std(keeps the shrinking seed dependency-free). Fail-closed: both-auth-declared, missing field, or non-String credential → typed refusal, never an unauthenticated send.05_emit_rust.dag):emit_rest_basic_auth_line→ reqwest native.basic_auth(user, Some(pass)).Realized — TLS posture
emit_rest_client_init→.danger_accept_invalid_certs(true)forInsecureAcceptAnyCert; stock builder otherwise; unrecognized posture →compile_error!.VerifyPeerproceeds on the stock rustls verifier.InsecureAcceptAnyCertis a typed fail-closed refusal, STAGED pending an operator decision on the realization approach (accept-any rustls verifier in-seed vs. emit-only vs. pinned-cert) — the axis fails closed, never sends under VerifyPeer while the row asked for insecure, and is witnessable now. This is the one open decision gating full PR B.Witnesses (green by execution)
rest_transport_axes_emit_witness_test.dag): insecure→danger_accept_invalid_certs(true); VerifyPeer + absent controls omit it; basic→.basic_auth(.base64_std_tests): RFC 4648 §10 vectors + the exact BMC credential shape.Self-host
Two stage0 regens (emit + parser),
regen_stage0 --verify→regen_divergence_count=0; fmt clean.🤖 Generated with Claude Code