Version closed effect ABI as 0.4

This commit is contained in:
tmk241
2026-09-01 01:04:27 +02:00
parent 31a0f02211
commit ad0c8b316c
7 changed files with 20 additions and 26 deletions
Generated
+6 -6
View File
@@ -349,7 +349,7 @@ dependencies = [
[[package]] [[package]]
name = "hemx" name = "hemx"
version = "0.3.0" version = "0.4.0"
dependencies = [ dependencies = [
"hemplate", "hemplate",
"hemx-core", "hemx-core",
@@ -358,7 +358,7 @@ dependencies = [
[[package]] [[package]]
name = "hemx-axum" name = "hemx-axum"
version = "0.3.0" version = "0.4.0"
dependencies = [ dependencies = [
"axum", "axum",
"futures-util", "futures-util",
@@ -371,7 +371,7 @@ dependencies = [
[[package]] [[package]]
name = "hemx-build" name = "hemx-build"
version = "0.3.0" version = "0.4.0"
dependencies = [ dependencies = [
"hemplate-core", "hemplate-core",
"hemx-core", "hemx-core",
@@ -381,7 +381,7 @@ dependencies = [
[[package]] [[package]]
name = "hemx-core" name = "hemx-core"
version = "0.3.0" version = "0.4.0"
dependencies = [ dependencies = [
"postcard", "postcard",
"serde", "serde",
@@ -389,7 +389,7 @@ dependencies = [
[[package]] [[package]]
name = "hemx-derive" name = "hemx-derive"
version = "0.3.0" version = "0.4.0"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -398,7 +398,7 @@ dependencies = [
[[package]] [[package]]
name = "hemx-js" name = "hemx-js"
version = "0.3.0" version = "0.4.0"
dependencies = [ dependencies = [
"sha2", "sha2",
] ]
+1 -1
View File
@@ -3,7 +3,7 @@ resolver = "2"
members = ["hemx", "hemx-core", "hemx-derive", "hemx-js", "hemx-axum", "hemx-build", "hemx-test", "tests/server-wasm"] members = ["hemx", "hemx-core", "hemx-derive", "hemx-js", "hemx-axum", "hemx-build", "hemx-test", "tests/server-wasm"]
[workspace.package] [workspace.package]
version = "0.3.0" version = "0.4.0"
edition = "2021" edition = "2021"
rust-version = "1.88" rust-version = "1.88"
license = "MIT" license = "MIT"
+5 -11
View File
@@ -1,17 +1,11 @@
# Current plan # Current plan
## Slice HMX-001 — Closed typed effect path ## Closed receipt — HMX-001
Result: Commit `31a0f02` delivers the generated-resource -> canonical batch -> Axum -> owned browser-root path for all eight effects.
Proof: Focused Redgate script, workspace format/clippy/tests/deny, Wasm boundary, archive lists, and fresh-context review passed; HMX-001 IDs have no Redgate findings.
Release note: The breaking API is versioned 0.4.0; dependent archives require publishing 0.4.0 crates in dependency order and are outside this non-release slice.
Outcome: A handler can build the complete closed effect algebra with generated resource types, encode it canonically, and have one owned browser root apply it in order with defined failure behavior.
Delta: kernel/001–016, resource/001–004, resource/006, runtime/001, runtime/005, axum/001, axum/005.
Path: generated resource API -> typed effect batch -> canonical Axum response -> root-scoped browser decoder and executor -> DOM, focus, scroll, history, or dispatch result.
Build: Reconcile `hemx-core` effect/resource types and wire format, `hemx-build`/`hemx-derive` generated capabilities, `hemx-axum` response boundary, and `hemx-js` execution semantics as one compatibility break.
Risk: Partial migration can make server and browser disagree about opcodes, targets, ordering, or failure, causing wrong-root mutation or partial application.
Checks: Focused core round-trip/rejection tests; generated capability compile-pass/fail tests; Axum byte/status tests; browser scenarios for all eight effects, ordering, created-resource reuse, move identity, and stop-on-failure; `tests/redgate_test.sh`; `redgate check` for the slice IDs.
Non-goals: Request-policy attributes, optional transport adapters, islands, or public release publication.
Residual risk: Native interaction policy and adapter lifecycle remain in later slices.
State: Done
Blocked by: none
## Slice HMX-002 — Native interaction and recovery ## Slice HMX-002 — Native interaction and recovery
+2 -2
View File
@@ -16,8 +16,8 @@ path = "src/lib.rs"
[dependencies] [dependencies]
axum = { version = "0.8", default-features = false, features = ["multipart", "tokio"] } axum = { version = "0.8", default-features = false, features = ["multipart", "tokio"] }
futures-util = { version = "0.3", default-features = false } futures-util = { version = "0.3", default-features = false }
hemx-core = { version = "0.3.0", path = "../hemx-core" } hemx-core = { version = "0.4.0", path = "../hemx-core" }
hemx-js = { version = "0.3.0", path = "../hemx-js" } hemx-js = { version = "0.4.0", path = "../hemx-js" }
[dev-dependencies] [dev-dependencies]
scraper = "0.25" scraper = "0.25"
+1 -1
View File
@@ -15,6 +15,6 @@ path = "src/lib.rs"
[dependencies] [dependencies]
hemplate-core = { version = "0.2.0", features = ["surface"] } hemplate-core = { version = "0.2.0", features = ["surface"] }
hemx-core = { version = "0.3.0", path = "../hemx-core" } hemx-core = { version = "0.4.0", path = "../hemx-core" }
quote = "1" quote = "1"
syn = { version = "2", features = ["full"] } syn = { version = "2", features = ["full"] }
+3 -3
View File
@@ -16,11 +16,11 @@ axum = ["dep:axum", "dep:tower"]
[dependencies] [dependencies]
axum = { version = "0.8.8", optional = true, default-features = false } axum = { version = "0.8.8", optional = true, default-features = false }
hemx-core = { version = "0.3.0", path = "../hemx-core" } hemx-core = { version = "0.4.0", path = "../hemx-core" }
scraper = "0.25.0" scraper = "0.25.0"
tower = { version = "0.5.2", optional = true, features = ["util"] } tower = { version = "0.5.2", optional = true, features = ["util"] }
[dev-dependencies] [dev-dependencies]
hemx-axum = { version = "0.3.0", path = "../hemx-axum" } hemx-axum = { version = "0.4.0", path = "../hemx-axum" }
hemx-build = { version = "0.3.0", path = "../hemx-build" } hemx-build = { version = "0.4.0", path = "../hemx-build" }
tokio = { version = "1.48.0", features = ["macros", "rt"] } tokio = { version = "1.48.0", features = ["macros", "rt"] }
+2 -2
View File
@@ -21,7 +21,7 @@ harness = false
default = [] default = []
[dependencies] [dependencies]
hemx-core = { version = "0.3.0", path = "../hemx-core" } hemx-core = { version = "0.4.0", path = "../hemx-core" }
hemx-derive = { version = "0.3.0", path = "../hemx-derive" } hemx-derive = { version = "0.4.0", path = "../hemx-derive" }
hemplate = { version = "0.2.0", default-features = false } hemplate = { version = "0.2.0", default-features = false }