Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
6e0b888
test: expose source-function runtime and admission gaps
flyingrobots Oct 5, 2026
efb8222
feat: execute generic source functions in pure and read programs
flyingrobots Oct 5, 2026
cc0b062
test: reject source functions colliding with imported effects
flyingrobots Oct 5, 2026
afd37cc
test: challenge runtime effect and source function ownership
flyingrobots Oct 5, 2026
b02d76a
fix: reserve imported effect names in source function inventories
flyingrobots Oct 5, 2026
a64d1d7
test: preserve same-package imported pure call authority
flyingrobots Oct 5, 2026
b3e595e
fix: resolve imported pure calls by exact source membership
flyingrobots Oct 5, 2026
74bc0ec
test: retain nominal identities in source function signatures
flyingrobots Oct 5, 2026
20e380e
fix: preserve nominal authority in source function validation
flyingrobots Oct 5, 2026
7a09860
docs: distinguish frozen host and current compiler witnesses
flyingrobots Oct 5, 2026
fb1fde7
Merge remote-tracking branch 'origin/main' into feature/edict-source-…
flyingrobots Oct 8, 2026
024e844
Fix imported helper audits without source function declarations
flyingrobots Oct 8, 2026
382bc73
Fix bounded-read nominal identity without source declarations
flyingrobots Oct 8, 2026
e99d219
Fix public compilation repeatability witness output isolation
flyingrobots Oct 8, 2026
6d96380
Fix exact bounded final publication evidence accounting
flyingrobots Oct 8, 2026
91c5fba
Borrow program identifiers in deterministic helper scopes
flyingrobots Oct 8, 2026
0bcc95b
Publish reproducible source-function provider component identities
flyingrobots Oct 8, 2026
db91aea
Refresh exact current-package occurrence hash after component publica…
flyingrobots Oct 8, 2026
4997125
Fix named unsigned Int aliases in source helper judgments
flyingrobots Oct 8, 2026
4d8dc13
Refresh checked package root and exact manifest byte golden
flyingrobots Oct 8, 2026
bc51676
Publish Int-aware component pair and regenerated package identity
flyingrobots Oct 8, 2026
566493e
Merge remote-tracking branch 'origin/main' into feature/edict-source-…
flyingrobots Oct 8, 2026
187c666
test: execute provenance-bound public source-function artifacts
flyingrobots Oct 8, 2026
f69f560
test: satisfy strict public-witness Clippy gate
flyingrobots Oct 8, 2026
b8a7c4f
fix: resolve named integer types in shared runtime parser
flyingrobots Oct 8, 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
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ jobs:
cargo clippy -p warp-core --features native_rule_bootstrap,trusted_runtime,host_test --test executable_operation_pipeline_tests -- -D warnings -D missing_docs

- name: cargo clippy (compiler-produced pure evaluation)
run: cargo clippy -p warp-core --features trusted_runtime --lib --test edict_pure_evaluation_tests --test edict_pure_unsigned_subtraction_tests --test edict_pure_byte_length_tests --test edict_byte_equality_tests --test edict_byte_slice_tests --test edict_node_read_tests --test edict_byte_concat_tests -- -D warnings -D missing_docs
run: cargo clippy -p warp-core --features trusted_runtime --lib --test edict_pure_evaluation_tests --test edict_pure_unsigned_subtraction_tests --test edict_pure_byte_length_tests --test edict_byte_equality_tests --test edict_byte_slice_tests --test edict_node_read_tests --test edict_byte_concat_tests --test edict_source_functions_tests -- -D warnings -D missing_docs

clippy-det-fixed:
name: Clippy (det_fixed)
Expand Down Expand Up @@ -322,7 +322,7 @@ jobs:
cargo test -p warp-core --features native_rule_bootstrap,trusted_runtime,host_test --test executable_operation_pipeline_tests
- name: cargo test (compiler-produced pure evaluation)
run: |
cargo test -p warp-core --features trusted_runtime --test edict_pure_evaluation_tests --test edict_pure_unsigned_subtraction_tests --test edict_pure_byte_length_tests --test edict_byte_equality_tests --test edict_byte_slice_tests --test edict_node_read_tests --test edict_byte_concat_tests
cargo test -p warp-core --features trusted_runtime --test edict_pure_evaluation_tests --test edict_pure_unsigned_subtraction_tests --test edict_pure_byte_length_tests --test edict_byte_equality_tests --test edict_byte_slice_tests --test edict_node_read_tests --test edict_byte_concat_tests --test edict_source_functions_tests
cargo test -p warp-core --features trusted_runtime --lib edict_pure::
- name: cargo test --doc (warp-core)
run: cargo test -p warp-core --doc
Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

### Fixed

- Private Edict runtime decoding resolves named integer types through their declared width, matching source-function provider acceptance.

- Filesystem writer takeover preserves unused LSNs after empty epochs and refuses unreconciled tails before changing the epoch ledger.

- Incremental snapshot state roots now include the existing v1 domain separator and agree with canonical snapshot hashing. Previously emitted incorrect accumulator roots are not migrated.
Expand Down Expand Up @@ -111,6 +113,18 @@

### Added

- Generic source-owned Edict functions execute through both private pure and
bounded-read evaluation with fresh lexical frames, ordered argument evaluation,
ordered local bindings, and one cumulative budget. Independent provider
judgments validate the complete source/imported closure, supported types,
totality, combined runtime depth, and conservative whole-operation costs.
Providers and runtime reject source functions that shadow authenticated
imported effects, including otherwise valid unused definitions. Bounded-read
call lookup distinguishes source and imported functions by exact membership,
including disjoint names under one package prefix.
Independent provider checks retain nominal type identity for source-function
compatibility while deriving runtime costs from the underlying representation.

- Bounded pure evaluation supports generic `core.bytes.concat` with independent
operand byte bounds, checked maximum composition, and combined-byte work and
result storage charged before allocation/copy. Application names and text
Expand Down
4 changes: 2 additions & 2 deletions crates/echo-edict-provider-lowerer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@ proposal constructor supports mutations and refuses a `Query`; authored reads
remain a separate bounded observer/optic path and must never be represented as
synthetic mutations.

The refreshed 381,459-byte checked lowerer component has SHA-256
`4b594a8165079f0a973741b9e27b468cf041f4ad53108fccae641dc35355bd2a` and has
The refreshed 457,154-byte checked lowerer component has SHA-256
`dc3edc7c4f194bd2fdd2b5a1ecc79f8fb7a24a5a31294a1f1fc30369c053b8d4` and has
crossed the reproducible promotion boundary. The pinned Edict host admits its
generated envelope under the owning `generated-artifact` CDDL root, and the
isolated host fixture exercises the exact helper binding, typed codecs, EINT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
//! Generic data-only lowering into Echo's bounded executable-operation profile.

mod bounded_read;
mod source_functions;

use std::collections::BTreeSet;

Expand Down Expand Up @@ -227,6 +228,7 @@ fn lower_compiler_produced_pure(
intent,
)?;
validate_pure_target_ir(target_ir, request, closure.lawpack, intent_name, intent)?;
source_functions::validate(core, exports, false)?;
validate_pure_result_projection(
result_projection,
closure.result_projection,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,19 @@ pub(super) fn lower(
)?;
let source = validate_bound(&closure.source.artifact, SOURCE_DOMAIN)?;
let source = validate_source(&source, closure.source, &request.core)?;
require_exact_fields(
&core,
&[
"apiVersion",
"coordinate",
"imports",
"types",
"intents",
"requiredCoreCapabilities",
],
SUBJECT,
)?;
let mut core_fields = vec![
"apiVersion",
"coordinate",
"imports",
"types",
"intents",
"requiredCoreCapabilities",
];
if map_field(&core, "functions").is_some() {
core_fields.push("functions");
}
require_exact_fields(&core, &core_fields, SUBJECT)?;
super::source_functions::validate(&core, &exports, true)?;
require_exact_fields(
&configuration,
&["apiVersion", "programKind", "maxReads", "maxReadBytes"],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,17 @@ impl ReadRelation<'_> {
}
let body = field(intent, "body")?;
require_exact_fields(body, &["locals", "nodes", "result"], SUBJECT)?;
let mut scope = Scope::new(self.core, array(body, "locals")?, text(intent, "input")?)?;
if scope.expression(field(intent, "basis")?, 0)? != ReadType::Bytes(32, 32) {
let mut scope = Scope::new(
self.core,
self.exports,
array(body, "locals")?,
text(intent, "input")?,
)?;
if scope
.expression(field(intent, "basis")?, 0)?
.representation()
!= &ReadType::Bytes(32, 32)
{
return Err(invalid());
}
for constraint in array(intent, "inputConstraints")? {
Expand Down
Loading
Loading