chore(release): v0.4.4 — apply kiln.resource_limits manifest on-target (AD-WCMC-001 capstone) - #465
Merged
Merged
Conversation
…t (AD-WCMC-001 capstone) 1 verified artifact. SR-45 (#415/#421) A module carrying a signed `kiln.resource_limits` custom section is now bounded ON-TARGET at load, with NO `--memory` CLI flag — completing the AD-WCMC-001 embedded trust chain that v0.4.2/v0.4.3 built the enforcement primitives for. This closes the last "control that exists but never runs" in the resource-limits story: `extract_resource_limits_from_binary` was a stub that ignored the binary, the decoder skipped custom sections, and `load_module` discarded the extracted config behind `.unwrap_or(None)` + a `// TODO: Apply resource limits`. Now the decoder really reads the section (absent -> None, malformed -> Err, fail loud), and load_module feeds the manifest bound through the SAME pre-instantiate gate + runtime caps the CLI path uses. CLI and manifest combine most-restrictive (min): an operator cannot loosen a module's signed bound, a module cannot loosen the operator's cap. Workspace 0.4.3 -> 0.4.4 (+16 path-dep pins + Cargo.lock; `cargo build --workspace --locked` verified green). Re-verified on the binary at this commit (35a573b): manifest-bounded module, NO --memory -> ✗ [Resource][E0BB9] rejected before allocation plain module, no manifest, no --memory -> runs (no over-rejection) 12 gate tests + 4 decoder extraction tests pass rivet release status v0.4.4: cuttable (1/1 verified). Scope: only `max_memory_usage` (the WCMC memory attack surface) is enforced; `max_call_depth`/fuel are not yet expressible by EngineResourceLimits (follow-up). Statuses are prose-verified (typed `verifies` links remain structurally impossible for `type: requirement` — pulseengine/rivet#721). Trace: skip Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FcTUZgts331Z1TK3q8YBQj
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
🔍 Build Diagnostics ReportSummary
🎯 Impact AnalysisIssues in Files You Modified
Cascading Issues (Your Changes Breaking Other Files)
✅ No Issues DetectedPerfect! Your changes don't introduce any new errors or warnings, and don't break any existing code. 📊 Full diagnostic data available in workflow artifacts 🔧 To reproduce locally: # Install cargo-kiln
cargo install --path cargo-kiln
# Analyze your changes
cargo-kiln build --output json --filter-severity error
cargo-kiln check --output json --filter-severity warning |
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.
1 verified artifact. Completes the AD-WCMC-001 embedded trust chain.
kiln.resource_limitssection is now bounded on-target at load, with no--memoryCLI flag — the enforcement point the whole v0.4.2/v0.4.3 memory-bounding arc was building toward.Closes the last "control that exists but never runs":
extract_resource_limits_from_binarywas a stub that ignored the binary, the decoder skipped custom sections, andload_modulediscarded the config behind.unwrap_or(None)+ a// TODO: Apply resource limits. Now the decoder really reads the section (absent → None, malformed → Err, fail loud), andload_modulefeeds the manifest bound through the same pre-instantiate gate + runtime caps the CLI path uses. CLI and manifest combine most-restrictive (min) — an operator can't loosen a module's signed bound, a module can't loosen the operator's cap.Workspace
0.4.3 → 0.4.4(+16 pins +Cargo.lock;cargo build --workspace --lockedgreen).Re-verified on the binary at this commit (35a573b)
Falsification — this release is wrong if any of these is observed
kiln.resource_limitsbound is smaller than its declared memory min is allocated (peak RSS scaling with the declared min) instead of rejected at load, with no--memoryflag;--memoryflag loosens a tighter signed manifest bound (or vice-versa) — precedence must be most-restrictive;kiln.resource_limitssection is silently treated as absent instead of failing the load;cargo build --workspace --lockedfails on a clean checkout.Scope
Only
max_memory_usage(the WCMC memory attack surface) is enforced;max_call_depth/fuel aren't yet expressible byEngineResourceLimits(follow-up). Statuses prose-verified (rivet#721).🤖 Generated with Claude Code