Skip to content
Draft
Show file tree
Hide file tree
Changes from 180 commits
Commits
Show all changes
248 commits
Select commit Hold shift + click to select a range
662a519
build(http): register bounded HTTP crate
seonghobae Aug 9, 2026
a9215b9
build(http): lock bounded HTTP dependencies
seonghobae Aug 9, 2026
b9db53c
feat(http): add bounded HTTP crate manifest
seonghobae Aug 9, 2026
cb37ebe
feat(http): add bounded HTTP public surface
seonghobae Aug 9, 2026
ceaad5d
feat(http): add bounded content decoding
seonghobae Aug 9, 2026
afaf98d
feat(http): add bounded client policy
seonghobae Aug 9, 2026
0dbe3fa
feat(http): add deterministic request serialization
seonghobae Aug 9, 2026
0bd78e5
feat(http): bind canonical request targets
seonghobae Aug 9, 2026
e1bcad2
feat(http): add bounded field validation
seonghobae Aug 9, 2026
7524dfa
feat(http): add strict response framing
seonghobae Aug 9, 2026
ed1db7e
merge(http): align reconstruction with current main
seonghobae Aug 9, 2026
f0deede
feat(http): restore complete production module set
seonghobae Aug 9, 2026
e0d02a6
test(http): register reusable HTTP crate in workspace contract
seonghobae Aug 9, 2026
7a8f70a
test(http): restore chunked wire budget contract
seonghobae Aug 9, 2026
6c9aa9e
test(http): restore coverage contract
seonghobae Aug 9, 2026
ae4a995
test(http): restore timeout restoration contract
seonghobae Aug 9, 2026
ccc40ed
test(http): restore internal HTTP regression suite
seonghobae Aug 9, 2026
823b31a
test(http): restore authenticated HTTP integration suite
seonghobae Aug 9, 2026
053d5f2
style(http): apply canonical Rust formatting
seonghobae Aug 9, 2026
f59adaa
docs(http): restore implementation and security evidence
seonghobae Aug 9, 2026
396dad9
docs(http): add current-lineage HTTP authority ADR
seonghobae Aug 9, 2026
a79519f
docs(http): add reason-phrase diagnostic ADR
seonghobae Aug 9, 2026
c4a774c
docs(http): point chunked doctoring to current ADR
seonghobae Aug 9, 2026
82b05e9
docs(http): point reason diagnostics to current ADR
seonghobae Aug 9, 2026
4b7197f
docs(http): reconcile security doctoring with current ADR
seonghobae Aug 9, 2026
b3e0066
test(http): restore current-lineage governance contracts
seonghobae Aug 9, 2026
d7f05b2
fix(http): restore crates.io lock checksum integrity
seonghobae Aug 9, 2026
a877b5c
Merge branch 'main' into feat/http11-semantics-main
opencode-agent[bot] Aug 9, 2026
403e868
test(http): forbid raw response bytes in Debug output
seonghobae Aug 9, 2026
da7d727
fix(http): redact response payloads from Debug output
seonghobae Aug 9, 2026
0b6058d
test(http): cover UTF-8 sniff-prefix boundary
seonghobae Aug 9, 2026
3d92372
fix(http): preserve valid UTF-8 at MIME sniff boundary
seonghobae Aug 9, 2026
b21e033
test(http): reject trailing gzip members
seonghobae Aug 9, 2026
d1aedf4
fix(http): reject trailing gzip bytes
seonghobae Aug 9, 2026
68eb12e
test(http): verify error source contracts exhaustively
seonghobae Aug 9, 2026
4a5a475
test(http): tolerate post-close server flush failures
seonghobae Aug 9, 2026
4e94c7b
test(http): define HEAD digest integrity semantics
seonghobae Aug 9, 2026
1e01784
fix(http): classify no-content digest contexts
seonghobae Aug 9, 2026
b540fec
fix(http): avoid false digest verification for HEAD
seonghobae Aug 9, 2026
68356c9
test(http): bound aggregate interim header bytes
seonghobae Aug 9, 2026
653925a
fix(http): enforce aggregate response-head budget
seonghobae Aug 9, 2026
7573bfb
docs(http): record Structured Fields supersession
seonghobae Aug 9, 2026
765eef3
docs(http): cite current extended-value RFC
seonghobae Aug 9, 2026
c605157
docs(http): align locked flate2 version
seonghobae Aug 9, 2026
3f0d362
docs(http): align response API declaration
seonghobae Aug 9, 2026
4ae4168
Merge branch 'main' into feat/http11-semantics-main
github-actions[bot] Aug 9, 2026
f419c39
docs(http): correct RFC 9651 authorship
seonghobae Aug 9, 2026
8f66c3c
test(http): cover no-content integrity semantics
seonghobae Aug 9, 2026
26036ed
Merge branch 'main' into feat/http11-semantics-main
github-actions[bot] Aug 9, 2026
fc75949
test(http): register no-content integrity coverage
seonghobae Aug 9, 2026
695a023
style(http): apply canonical exchange formatting
seonghobae Aug 9, 2026
c20452f
style(http): apply canonical integrity formatting
seonghobae Aug 9, 2026
8699fd5
style(http): canonicalize test module ordering
seonghobae Aug 9, 2026
29acfa0
test(http): fix no-content error assertions
seonghobae Aug 9, 2026
3e7bd5d
test(http): execute credential-safe response Debug contract
seonghobae Aug 9, 2026
5956228
test(http): register runtime response Debug coverage
seonghobae Aug 9, 2026
226d38f
ci(coverage): surface missing production lines in logs
seonghobae Aug 9, 2026
6c3eec0
Merge branch 'main' into feat/http11-semantics-main
github-actions[bot] Aug 9, 2026
caac942
ci: drop unrelated coverage diagnostic workflow diff
seonghobae Aug 9, 2026
2d69d87
ci: surface exact coverage gaps for HTTP reconstruction
seonghobae Aug 9, 2026
4ce855a
test(http): cover fail-closed no-content and cumulative head paths
seonghobae Aug 9, 2026
7a4b84a
ci: propagate coverage report failures through tee
seonghobae Aug 9, 2026
cd23e48
style(http): apply canonical rustfmt diagnostics
seonghobae Aug 10, 2026
452c63c
test(http): cover invalid reason phrase at exchange boundary
seonghobae Aug 10, 2026
c628bc8
test(http): cover incomplete oversized status line
seonghobae Aug 10, 2026
06dab07
style(http): format exact coverage regression
seonghobae Aug 10, 2026
8c1d4d1
test(http): cover cumulative incomplete head budget
seonghobae Aug 10, 2026
a6e7a64
test(http): wire cumulative head budget contract
seonghobae Aug 10, 2026
a389806
fix(http): apply canonical module ordering
seonghobae Aug 10, 2026
9becaaf
docs(changelog): preserve rebuilt HTTP authority delta
seonghobae Aug 10, 2026
f44b2f0
test(http): expose no-content and duplicate length framing gaps
seonghobae Aug 11, 2026
df848c5
test(http): apply canonical formatting to framing regressions
seonghobae Aug 11, 2026
26e87d2
test(http): retain RFC same-decimal duplicate semantics
seonghobae Aug 11, 2026
21341af
fix(http): keep no-content metadata outside body budget
seonghobae Aug 11, 2026
7906068
test(http): expose oversized no-content metadata conversion gap
seonghobae Aug 11, 2026
42744e4
fix(http): validate large no-content lengths without narrowing
seonghobae Aug 11, 2026
629fa69
style(http): apply canonical rustfmt diagnostics
seonghobae Aug 11, 2026
73c54f2
test(http): scan nested Rust sources in governance checks
seonghobae Aug 13, 2026
c016f4b
Merge branch 'main' into feat/http11-semantics-main
github-actions[bot] Aug 13, 2026
7a0a69b
test(http): reject MIME parameters from essence constructor
seonghobae Aug 14, 2026
6fc6562
fix(http): keep MIME essence constructor parameter-free
seonghobae Aug 14, 2026
dafcaee
docs(changelog): record parameter-free MIME essence hardening
seonghobae Aug 14, 2026
d039bac
docs(http): index proposed HTTP architecture decisions
seonghobae Aug 14, 2026
a343896
docs(http): register proposed HTTP ADR lifecycle
seonghobae Aug 14, 2026
49ba0fd
style(http): restore canonical rustfmt newline
seonghobae Aug 14, 2026
50e31cf
test(http): reject deprecated 305 redirect metadata
seonghobae Aug 14, 2026
7f56e31
style(http): apply canonical test formatting
seonghobae Aug 14, 2026
f259e41
fix(http): exclude deprecated 305 redirect metadata
seonghobae Aug 14, 2026
9f7345d
test(http): use active redirect status for query metadata
seonghobae Aug 14, 2026
4a9a0f8
test(http): reject unterminated short HTML signatures
seonghobae Aug 15, 2026
7f26753
style(http): apply canonical MIME test formatting
seonghobae Aug 15, 2026
3f13a56
style(http): retain canonical MIME test newline
seonghobae Aug 15, 2026
0c98421
fix(http): require HTML short-signature delimiters
seonghobae Aug 15, 2026
9e33c5c
style(http): apply canonical MIME formatting
seonghobae Aug 15, 2026
43a4b0c
test(http): delimit short HTML region fixtures
seonghobae Aug 15, 2026
e86d1be
test(http): preserve trailer field size diagnostics
seonghobae Aug 15, 2026
fe324f7
fix(http): preserve trailer field size diagnostics
seonghobae Aug 15, 2026
d6b104f
Merge branch 'main' into feat/http11-semantics-main
seonghobae Aug 16, 2026
ff51473
test(http): reject differently spelled duplicate content lengths
seonghobae Aug 17, 2026
0c11908
fix(http): require exact duplicate content-length spelling
seonghobae Aug 17, 2026
87bffae
docs(http): record strict duplicate content-length contract
seonghobae Aug 17, 2026
89b7610
docs(http): note strict duplicate content-length handling
seonghobae Aug 17, 2026
8e03621
test(http): distinguish invalid nosniff metadata
seonghobae Aug 18, 2026
058ead1
fix(http): type invalid nosniff metadata
seonghobae Aug 18, 2026
24a4f32
fix(http): return typed nosniff metadata errors
seonghobae Aug 18, 2026
e26021b
test(http): cover typed nosniff error contract
seonghobae Aug 18, 2026
19ed901
test(http): assert typed nosniff integration failure
seonghobae Aug 18, 2026
fb2cfa3
docs(changelog): record typed nosniff failure
seonghobae Aug 18, 2026
b686685
test(http): align coverage contract with typed nosniff error
seonghobae Aug 18, 2026
4d68918
test(http): reject forbidden 1xx and 204 framing metadata
seonghobae Aug 18, 2026
dbac25f
test(http): wire status-specific framing regressions
seonghobae Aug 18, 2026
e5cd216
fix(http): enforce status-specific framing metadata
seonghobae Aug 18, 2026
fd067eb
fix(http): route final heads through status-aware parser
seonghobae Aug 18, 2026
e259054
test(http): register status-aware response parser module
seonghobae Aug 18, 2026
dba667d
style(http): apply canonical rustfmt to status framing guard
seonghobae Aug 18, 2026
0e1e078
fix(http): preserve raw response-head parser test surface
seonghobae Aug 18, 2026
c95542a
fix(http): preserve raw final parser as assembly authority
seonghobae Aug 18, 2026
85387f2
test(http): cover checked response-head parser edges
seonghobae Aug 18, 2026
85e4867
test(http): reject unterminated HTML tag signatures
seonghobae Aug 18, 2026
24062b7
test(http): enforce HTML tag termination
seonghobae Aug 18, 2026
a6c856b
test(http): format tag-termination regression
seonghobae Aug 18, 2026
db86a57
test(http): cover exact and BOM-prefixed pseudo-tags
seonghobae Aug 18, 2026
dab354b
fix(http): guard HTML tag signature boundaries
seonghobae Aug 18, 2026
e20de06
fix(http): activate tag-boundary MIME facade
seonghobae Aug 18, 2026
2a47bde
test(http): pin WHATWG HTML tag terminators
seonghobae Aug 18, 2026
94849f6
fix(http): enforce MIME tag terminators at classifier
seonghobae Aug 18, 2026
2ac59cb
style(http): apply canonical rustfmt
seonghobae Aug 18, 2026
097e51e
style(http): satisfy strict clippy
seonghobae Aug 18, 2026
36c1e95
test(http): require canonical doctoring standards
seonghobae Aug 19, 2026
13c9dde
docs(http): restore canonical standards doctoring
seonghobae Aug 19, 2026
ec6e0fc
test(http): reject trailing zlib-deflate octets
seonghobae Aug 20, 2026
d790ae1
test(http): reach zlib trailing-byte boundary
seonghobae Aug 20, 2026
bc925c7
fix(http): reject trailing zlib-deflate bytes
seonghobae Aug 20, 2026
09cb8e0
test(http): require named policy limit inputs
seonghobae Aug 20, 2026
9d0e24a
test(http): format named policy limit regression
seonghobae Aug 20, 2026
c6e8dec
fix(http): add named policy limit constructor
seonghobae Aug 20, 2026
69fc223
test(http): register named policy module
seonghobae Aug 20, 2026
bd0ffae
fix(http): apply canonical Rust formatting
seonghobae Aug 20, 2026
bf2bcf4
fix(http): make named limits canonical
seonghobae Aug 20, 2026
ba8c0f7
style(http): apply canonical rustfmt to named policy tests
seonghobae Aug 20, 2026
b226210
test(http): reproduce WHATWG high-byte text sniffing
seonghobae Aug 20, 2026
e811c07
fix(http): follow WHATWG binary-byte text classification
seonghobae Aug 20, 2026
807becf
docs(http): record WHATWG text binary sniffing contract
seonghobae Aug 20, 2026
12aea71
docs(http): record MIME text binary correction
seonghobae Aug 20, 2026
69ebe91
docs(http): add WHATWG MIME doctoring reference
seonghobae Aug 20, 2026
59b07d8
test(http): reject raw non-attr chars in RFC 8187 filename
seonghobae Aug 20, 2026
6f01a5f
fix(http): enforce RFC 8187 extended value syntax
seonghobae Aug 20, 2026
a41614b
test(http): preserve WHATWG XML MIME evidence
seonghobae Aug 20, 2026
e334f45
fix(http): align XML sniff evidence with WHATWG
seonghobae Aug 20, 2026
6b502f2
test(http): update XML signature contract
seonghobae Aug 20, 2026
9bb380f
docs(http): record WHATWG XML sniff evidence
seonghobae Aug 20, 2026
3dea8a7
docs(http): record XML MIME evidence version
seonghobae Aug 20, 2026
da9b63e
docs(http): canonicalize XML sniff evidence
seonghobae Aug 20, 2026
b34a7e6
test(http): align coverage XML signature evidence
seonghobae Aug 20, 2026
a9ef0af
test(http): restore rustfmt-clean coverage contract
seonghobae Aug 20, 2026
d591a76
test(http): redact request target debug output
seonghobae Aug 20, 2026
4e93459
fix(http): redact request target debug data
seonghobae Aug 20, 2026
f1d21ea
docs(http): record request-target debug redaction
seonghobae Aug 20, 2026
3d3a2a0
docs(changelog): note request-target debug redaction
seonghobae Aug 20, 2026
5c090d1
test(http): reject raw path retention in exchange evidence
seonghobae Aug 23, 2026
e2b1645
test(http): apply canonical rustfmt to evidence privacy regression
seonghobae Aug 23, 2026
2b03f55
fix(http): redact request paths before evidence retention
seonghobae Aug 23, 2026
49dc46e
test(http): require credential-safe path evidence
seonghobae Aug 23, 2026
c712e57
test(http): verify exchange evidence redacts credential-shaped paths
seonghobae Aug 23, 2026
ddf9779
docs(http): record credential-safe request-target evidence
seonghobae Aug 23, 2026
ad9eeda
docs(http): record request-path evidence redaction
seonghobae Aug 23, 2026
d7467f7
fix(http): retain only root path evidence
seonghobae Aug 23, 2026
04418a7
test(http): require root-only path evidence
seonghobae Aug 23, 2026
6ace217
test(http): verify root-only exchange path evidence
seonghobae Aug 23, 2026
8770736
docs(http): record root-only request path evidence
seonghobae Aug 23, 2026
0d6fdde
docs(http): record root-only request path evidence
seonghobae Aug 23, 2026
53621bd
docs(http): align redirect statuses with strict policy
seonghobae Aug 23, 2026
92e3d44
test(http): reproduce segmented Content-Length surplus
seonghobae Aug 23, 2026
086f7c1
test(http): format segmented surplus regression
seonghobae Aug 23, 2026
3a860ec
test(http): keep surplus regression warning-free
seonghobae Aug 23, 2026
d7102ec
fix(http): reject segmented Content-Length surplus
seonghobae Aug 23, 2026
8de5d9c
test(http): remove panic from segmented surplus harness
seonghobae Aug 23, 2026
0a1a463
test(http): keep terminator classifier panic-free
seonghobae Aug 23, 2026
a08ce27
docs(http): record Content-Length termination contract
seonghobae Aug 23, 2026
e026792
test(http): require eager accept-encoding rejection
seonghobae Aug 23, 2026
d08f031
fix(http): reject caller Accept-Encoding at field construction
seonghobae Aug 23, 2026
c8e0f1d
refactor(http): centralize fixed request-field authority
seonghobae Aug 23, 2026
27f6acd
Merge remote-tracking branch 'origin/main' into pr-37
seonghobae Aug 26, 2026
7ac2fbb
test(http): pin authoritative RFC citation metadata
seonghobae Aug 26, 2026
464502e
docs(http): correct binding RFC metadata
seonghobae Aug 26, 2026
725c0f6
test(http): enforce canonical doctoring reference order
seonghobae Aug 26, 2026
34b825f
docs(http): normalize doctoring reference order
seonghobae Aug 26, 2026
e1fca7c
Merge remote-tracking branch 'origin/main' into feat/http11-semantics…
seonghobae Aug 27, 2026
acab530
test(http): cover zero-length expansion ratio floor
seonghobae Aug 27, 2026
e668e01
fix(http): honor expansion ratio denominator floor
seonghobae Aug 27, 2026
c4a27b7
merge(main): refresh HTTP/1.1 authority base
seonghobae Aug 27, 2026
7bd1ed9
test(http): pin platform-sized framing contract
seonghobae Aug 27, 2026
d8aed53
docs(http): correct Content-Length framing width
seonghobae Aug 27, 2026
2aafc98
test(http): accept explicit normative framing erratum
seonghobae Aug 27, 2026
c4165b7
test(http): reject ambiguous underscore field names
seonghobae Aug 27, 2026
92d84a7
fix(http): reject ambiguous underscore field names
seonghobae Aug 27, 2026
57be527
fix(http): preserve underscore tchar support
seonghobae Aug 27, 2026
1ebe85b
test(http): reject synthetic MIME for empty bodies
seonghobae Aug 27, 2026
616cdac
fix(http): treat empty MIME observations as binary fallback
seonghobae Aug 27, 2026
4d7bce4
test(http): reproduce raw deflate interoperability failure
seonghobae Aug 28, 2026
fc062da
fix(http): bound raw deflate compatibility fallback
seonghobae Aug 28, 2026
4dde00c
docs(http): record bounded raw deflate fallback
seonghobae Aug 28, 2026
4ff865c
test(http): derive chunk wire budget expectation
seonghobae Aug 28, 2026
498962f
test(http): pin malformed response error contracts
seonghobae Aug 28, 2026
8a367dd
test(http): widen segmented loopback timing margin
seonghobae Aug 28, 2026
942482d
test(http): account for terminal chunk wire overhead
seonghobae Aug 28, 2026
7189ccb
style(http): apply rustfmt to coverage contract
seonghobae Aug 28, 2026
3910463
style(http): preserve rustfmt newline
seonghobae Aug 28, 2026
6e7445e
fix(http): guard quoted value slicing
seonghobae Aug 28, 2026
5423803
docs: record HTTP parser hardening
seonghobae Aug 28, 2026
1c9b446
test(http): require one verified response digest
seonghobae Aug 28, 2026
fc353c0
test(http): format digest requirement regression
seonghobae Aug 28, 2026
076efe8
fix(http): enforce digest requirement per response
seonghobae Aug 28, 2026
a0862dd
test(http): cover missing required digest
seonghobae Aug 28, 2026
2221130
test(http): cover malformed no-content digest exchange
seonghobae Aug 28, 2026
5e3dfcb
style(http): restore rustfmt on digest requirement check
seonghobae Aug 28, 2026
f0cf2fa
chore(http): adopt current protected main without tree changes
seonghobae Sep 3, 2026
f9fdcb2
chore(http): adopt protected main workflow generation
seonghobae Sep 4, 2026
3d5c752
test(http): preserve current CI contracts in HTTP restack
seonghobae Sep 4, 2026
8a4f2d8
Merge remote-tracking branch 'origin/main' into codex/adopt-current-m…
seonghobae Sep 4, 2026
357fa97
fix(http): suppress reset-content bodies
seonghobae Sep 5, 2026
dbff45d
fix(http): frame 205 before rejecting content
seonghobae Sep 5, 2026
f70a81d
test(http): require persistent content-length completion
seonghobae Sep 5, 2026
e645df9
docs(http): trace persistent content-length boundary
seonghobae Sep 5, 2026
b21bfd6
fix(http): complete Content-Length at declared boundary
seonghobae Sep 5, 2026
fa34a69
docs(http): record Content-Length persistence repair
seonghobae Sep 5, 2026
5f33908
test(http): align segmented bytes with self-delimited response
seonghobae Sep 5, 2026
6e2c7b9
test(http): require Content-Length persistence release note
seonghobae Sep 5, 2026
28721ed
docs(http): record Content-Length persistence repair
seonghobae Sep 5, 2026
1e2f410
style(http): format persistence regression
seonghobae Sep 5, 2026
f6171d1
test(http): reject mutated committed chunk prefixes
seonghobae Sep 22, 2026
d6593e1
fix(http): bind incremental chunk parsing to committed bytes
seonghobae Sep 22, 2026
fef66f9
fix(http): keep committed-prefix invariant branch-free
seonghobae Sep 22, 2026
24313b8
fix(http): preserve workspace MSRV metadata
seonghobae Sep 22, 2026
5eca738
docs(http): record committed chunk-prefix invariant
seonghobae Sep 22, 2026
da736d4
test(http): require RFC 1952 multi-member gzip decoding
seonghobae Sep 22, 2026
5994aca
fix(http): decode complete RFC 1952 gzip representations
seonghobae Sep 22, 2026
28321de
docs(http): align framing and gzip evidence with standards
seonghobae Sep 22, 2026
2f9ab91
docs(changelog): record RFC 1952 multi-member gzip repair
seonghobae Sep 22, 2026
4869038
style(changelog): preserve final newline
seonghobae Sep 22, 2026
1b3d569
test(http): bind content-coding docs to decoder behavior
seonghobae Sep 22, 2026
fdbdad4
docs(http): align content-coding design with decoder
seonghobae Sep 22, 2026
6d6e8c0
test(http): bind ADR to decoder compatibility
seonghobae Sep 22, 2026
367e9f6
docs(http): align ADR with decoder compatibility
seonghobae Sep 22, 2026
15e7c97
test(http): avoid case-coupled content-coding contract
seonghobae Sep 22, 2026
7007140
style(http): apply canonical rustfmt diagnostics
seonghobae Sep 23, 2026
da7ffb2
test(http): satisfy strict clippy in chunk prefix contract
seonghobae Sep 23, 2026
219b43b
test(http): preserve parse result after strict assertion
seonghobae Sep 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,14 @@ jobs:
--json
--output-path coverage.json
- name: Record uncovered production lines
run: >-
cargo +nightly-2026-08-01 llvm-cov report
--branch
--text
--show-missing-lines
> missing-lines.txt
shell: bash
run: |
set -o pipefail
cargo +nightly-2026-08-01 llvm-cov report \
--branch \
--text \
--show-missing-lines \
| tee missing-lines.txt
Comment thread
opencode-agent[bot] marked this conversation as resolved.
Outdated
Comment thread
devin-ai-integration[bot] marked this conversation as resolved.
Outdated
Comment thread
devin-ai-integration[bot] marked this conversation as resolved.
Outdated
- name: Upload exact coverage diagnostics
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
Expand Down
18 changes: 16 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ All notable changes to OriginWeave are documented in this file. The format follo
- Authenticated `originweave-tls` service-identity boundary that consumes an existing verified TCP stream, requires exact TLS-origin and transport-origin equality, derives RFC 9525 DNS or literal-IP reference identity only from the canonical HTTPS origin, validates WebPKI with explicit roots and fixed time, permits only TLS 1.2 and TLS 1.3, and never reconnects or resolves.
- Bounded TLS policy for total handshake time, ALPN identifiers, trust-root count and bytes, and server-presented certificate count and bytes, with explicit optional-versus-required ALPN behavior and `NotConfigured` revocation evidence.
- Credential-free TLS evidence containing canonical origin, requested and observed peer, DNS/IP reference identity, TLS version, cipher-suite identifier, selected ALPN or explicit absence, leaf certificate and SPKI hashes, server-presented certificate hashes and bounds, trust-bundle identity and hash, validity interval, fixed verification time, revocation configuration, and measured handshake duration.
- Bounded single-use `originweave-http` HTTP/1.1 `GET`/`HEAD` authority over the already authenticated TLS stream, with strict RFC 9110/9112 framing, one monotonic exchange deadline, encoded/decoded/chunk/trailer budgets, RFC 9530 digest validation, conservative MIME/disposition handling, redirect metadata without automatic follow, and immutable credential-free evidence.
- Exact HTTP/1.1 reason-phrase octets retained separately on `AuthenticatedHttpResponse` for bounded diagnostics, including obs-text, while remaining excluded from credential-free evidence and all semantic decisions.
- Credential-free connection and redirect evidence containing canonical addresses, destination classes, target digests, hop numbers, and approved-address counts.
- Credential-free verified TCP evidence containing the logical origin, requested socket, observed peer, destination class, successful attempt number, and per-attempt timeout.
- Standard `Display` and `std::error::Error` contracts for destination, redirect, digest, direct-network, and TLS failures, including preserved destination-policy, rustls, and operating-system sources where applicable.
Expand All @@ -36,9 +38,18 @@ All notable changes to OriginWeave are documented in this file. The format follo
- Separated logical origin authority from resolved network destination authority; an origin grant no longer implies permission to connect to every resolver result.
- Separated resolved-address authorization from direct transport evidence; an approved IP now becomes a usable stream only after the operating system reports the exact requested IP and port.
- Separated exact TCP peer proof from authenticated TLS service identity; an observed peer becomes an authenticated HTTPS stream only after explicit-root, fixed-time, SAN-bound WebPKI verification over that same stream.
- Reserved HTTP response-coding negotiation to the serializer that owns the gzip and zlib-deflate decoder set; caller `Accept-Encoding` fields now fail closed instead of combining with the fixed negotiation and advertising unsupported codings.
- Tightened HTTP/1.1 duplicate `Content-Length` handling so comma-separated or repeated decimal members must be byte-identical after optional whitespace is trimmed; numerically equal but differently spelled members such as `042` and `42` now fail closed as conflicting framing evidence.
- Restricted raw ASCII in HTTP origin-form request targets to RFC 3986 path/query characters; disallowed delimiters and unsafe punctuation now fail closed unless supplied through a valid percent escape, while non-ASCII UTF-8 remains percent-encoded.
- Chunked HTTP/1.1 responses now complete at the terminal zero chunk plus bounded trailer terminator instead of waiting for peer TLS closure; close-delimited responses still require authenticated TLS EOF, and the stream remains single-use.
- Overlong chunked trailer lines now fail as `TrailerSectionTooLarge` against the trailer-section budget, while malformed trailer line endings retain their chunked-syntax error classification.
- MIME essence construction now enforces its parameter-free contract: reviewed type/subtype inputs that introduce MIME parameters fail closed instead of manufacturing a parameterized `MimeType`.
- Observed HTTP MIME text/binary fallback now follows the WHATWG byte-level binary-data definition: nonbinary high bytes remain passive `text/plain` even when the sniff prefix is not valid UTF-8, while binary control bytes still fall back to `application/octet-stream`.
- Observed HTTP XML signature evidence now records the WHATWG-computed `text/xml` essence so a supplied `text/xml` value produces an exact MIME match instead of a false mismatch; the evidence-bearing classifier version is now `originweave-mime-signatures-2`.
- Invalid `X-Content-Type-Options` metadata now fails with the dedicated `InvalidNoSniffDirective` error instead of being misclassified as malformed `Content-Type` MIME syntax.
- Replaced single resource-pressure directives with a cumulative mitigation plan so simultaneous RAM, VRAM, frame, model, and admission pressure cannot discard required actions.
- Changed generic network capture from finite deny-lists or safe-name allow-lists to unconditional value redaction. Typed metadata values and bodies now require a separate schema-specific capture contract.
- Updated the first Chromium slice to distinguish implemented origin, destination, direct TCP, and TLS identity kernels from the remaining trusted DNS adapter, proxy/PAC, HTTP budget, MIME, download, and Chromium integration required before safe navigation can be claimed.
- Updated the first Chromium slice to distinguish implemented origin, destination, direct TCP, TLS identity, and bounded HTTP/MIME kernels from the remaining trusted DNS adapter, proxy/PAC execution, browser download handoff, and Chromium integration required before safe navigation can be claimed.
- Separated hourly product PR publication authority from the organization review and merge system, and added live default-branch and release-blocker rechecks immediately before publication.
- Made the agent-development contract work-conserving: completing one bounded slice, RCA, review request, check, merge, or documentation change is an intermediate state; maintenance must return to the live queue, treat waits as item-local, and perform a mandatory exit sweep before terminating while executable OriginWeave work remains.
- Moved autonomous-agent Cargo targets and Python bytecode caches outside the proposed source tree and prefetched locked Cargo dependencies for offline verification.
Expand Down Expand Up @@ -69,10 +80,13 @@ All notable changes to OriginWeave are documented in this file. The format follo
- The operating-system peer is rechecked before, during, and after the deadline-bound TLS handshake.
- ALPN selection is restricted to the caller's bounded allow-list, while absence is either explicitly recorded or rejected by policy.
- Revocation is reported as not configured; the product makes no OCSP or CRL validation claim without supplied revocation evidence.
- HTTP/1.1 status, framing, content coding, integrity, MIME, disposition, and redirect decisions never depend on the untrusted reason phrase; exact reason bytes are available only as bounded diagnostics and are not copied into credential-free evidence.
- HTTP request-target diagnostics and immutable exchange evidence omit raw path and query bytes; the exact target remains bound by its domain-separated SHA-256 digest, while evidence retains only query presence and the constant root path prefix `/`.
- Safe `Content-Disposition` filename metadata rejects Windows reserved device names using both ASCII digits and the Windows-recognized ISO/IEC 8859-1 superscript digits in `COM`/`LPT` names before any later download handoff.
- Every generic network header and query value is redacted before evidence leaves the trusted boundary, including conventionally benign field names containing attacker-controlled bytes.
- Evidence capture enforces count and byte bounds and rejects credential-bearing source URLs, query strings, fragments, controls, whitespace, malformed percent escapes, encoded separators, dot segments, and backslash paths.
- Hard RAM and VRAM pressure pauses the active agent and rejects new admission; hard VRAM pressure also offloads a resident local model.
- The hourly product agent has no Git metadata or repository authority. A separate post-verification publisher opens one PR and cannot approve or merge it.
- The unprivileged OpenCode user is restricted to loopback egress during model execution, preventing runner-wide allow-listed endpoints from becoming direct source-exfiltration channels.

[Unreleased]: https://github.com/ContextualWisdomLab/OriginWeave/compare/main...HEAD
[Unreleased]: https://github.com/ContextualWisdomLab/OriginWeave/compare/main...HEAD
56 changes: 56 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,22 @@ members = [
"crates/originweave-destination",
"crates/originweave-network",
"crates/originweave-tls",
"crates/originweave-http",
]
resolver = "3"

[workspace.package]
version = "0.1.0"
edition = "2024"
rust-version = "1.97"
rust-version = "1.97.1"
license = "Apache-2.0"
authors = ["Contextual Wisdom Lab"]
repository = "https://github.com/ContextualWisdomLab/OriginWeave"
homepage = "https://github.com/ContextualWisdomLab/OriginWeave"

[workspace.lints.rust]
unsafe_code = "forbid"
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(coverage_nightly)"] }

[workspace.lints.clippy]
dbg_macro = "deny"
Expand Down
25 changes: 25 additions & 0 deletions crates/originweave-http/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[package]
name = "originweave-http"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true

[dependencies]
base64 = "=0.22.1"
flate2 = { version = "=1.1.9", default-features = false, features = ["rust_backend"] }
originweave-core = { path = "../originweave-core" }
originweave-tls = { path = "../originweave-tls" }
sha2 = "=0.10.9"

[dev-dependencies]
originweave-destination = { path = "../originweave-destination" }
originweave-network = { path = "../originweave-network" }
rcgen = "=0.14.8"
rustls = { version = "=0.23.42", default-features = false, features = ["ring", "std", "tls12"] }

[lints]
workspace = true
Loading
Loading