spec: async-over-WasmGC convergence ABI + ADR-005 (Ephapax review, #31)#32
Merged
Conversation
Records the shared async boundary protocol surfaced by AffineScript #225 /
ADR-013 as a typed-wasm convergence-ABI spec section, with the Ephapax
co-stakeholder review (typed-wasm#31).
- spec/async-convergence-abi.adoc: Thenable handle (sync i32 return),
thenableThen continuation in the shared closure ABI
[fnId/table_idx@0, envPtr@4] via the indirect-call table, host
re-entry on settle, thenableResultJson / fixed-shape typed reader,
{ "__error" } host-boundary reject envelope, once-settle guarantee.
- Convergence review: NO DIVERGENCE. Ephapax has no async lowering yet
(perform/handle emit unreachable) so adoption is additive; its closure
cell [table_idx@0, env_ptr@4] / call_indirect (env_ptr,param)->i32 is
byte-identical to AffineScript #199; planned one-shot resume(once)
aligns with once-settle; {__error} is a boundary convention that does
not constrain Ephapax's native sum-type error model.
- ADR-005 added to .machine_readable/6a2/META.a2ml (status: proposed,
pending co-stakeholder sign-off).
- AGGREGATE-LIBRARY-VISION.adoc cross-references the new spec + ADR.
Refs #31
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3 tasks
Co-stakeholder sign-off given (typed-wasm#31). Promote the async convergence ABI from proposed to accepted: - spec/async-convergence-abi.adoc status -> ACCEPTED 2026-05-18. - ADR-005 status -> accepted; consequence note updated. AffineScript #225 PR 2-4 (the transparent CPS transform proper) are now unblocked. Refs #31 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…formance (#31) ADR-005 / async-convergence-abi.adoc had an internal ambiguity: the continuation was specified both as (env_ptr, settled)->i32 AND as a value read via the thenableResultJson accessor. Ratify the accessor model: continuation signature is (env_ptr)->i32; the settled value is obtained via thenableResultJson / a fixed-shape typed reader keyed by the Thenable handle captured in env_ptr. Matches the proven #205 re-entry primitive and AffineScript #225 PR 2; Ephapax conclusion unchanged (closure cell still byte-identical; continuation is the no-extra-arg case of its general (env_ptr,param)->i32). Adds a Conformance — AffineScript section (the cross-repo marry-up table) and records the amendment in ADR-005 + Status. Refs typed-wasm#31
🔍 Hypatia Security ScanFindings: 25 issues detected
View findings[
{
"reason": "Issue in quality.yml",
"type": "missing_workflow",
"file": "quality.yml",
"action": "create",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Issue in security-policy.yml",
"type": "missing_workflow",
"file": "security-policy.yml",
"action": "create",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action actions/setup-node@v4 needs attention",
"type": "unpinned_action",
"file": "e2e.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action actions/setup-node@v4 needs attention",
"type": "unpinned_action",
"file": "e2e.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "governance.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action actions/upload-artifact@v4 needs attention",
"type": "unpinned_action",
"file": "release.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action actions/download-artifact@v4 needs attention",
"type": "unpinned_action",
"file": "release.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "believe_me undermines formal verification (1 occurrences, CWE-704)",
"type": "believe_me",
"file": "/home/runner/work/typed-wasm/typed-wasm/src/abi/TypedWasm/ABI/SessionProtocol.idr",
"action": "flag",
"rule_module": "code_safety",
"severity": "critical"
},
{
"reason": "assert_total bypasses totality checker (1 occurrences, CWE-704)",
"type": "assert_total",
"file": "/home/runner/work/typed-wasm/typed-wasm/src/abi/TypedWasm/ABI/SessionProtocol.idr",
"action": "flag",
"rule_module": "code_safety",
"severity": "high"
},
{
"reason": "believe_me undermines formal verification (1 occurrences, CWE-704)",
"type": "believe_me",
"file": "/home/runner/work/typed-wasm/typed-wasm/src/abi/TypedWasm/ABI/Echo.idr",
"action": "flag",
"rule_module": "code_safety",
"severity": "critical"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
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.
Records the shared async-over-WasmGC boundary protocol — surfaced by AffineScript #225 / ADR-013 and tracked by typed-wasm#31 — as a convergence-ABI spec section, plus the Ephapax co-stakeholder review.
What this adds
spec/async-convergence-abi.adoc— the agreed protocol:Thenablehandle (synchronous i32 return),thenableThen(handle, closure)continuation in the shared closure ABI[fnId/table_idx@0, envPtr@4]via the module indirect-call table, host re-entry on settle,thenableResultJson/ fixed-shape typed reader,{ "__error" }host-boundary reject envelope, once-settle guarantee, and composition up the call chain (the basis of AffineScript ADR-013's transparent CPS surface, no JSPI)..machine_readable/6a2/META.a2ml(status:proposed).AGGREGATE-LIBRARY-VISION.adoc.Ephapax convergence review (the typed-wasm#31 asks)
ephapax-wasmlowering + effect system (ADR-007..ADR-010).spec/async-convergence-abi.adoc+ ADR-005.perform/handleemitunreachable), so adoption is purely additive. Its closure cell[table_idx@0, env_ptr@4]/call_indirect (env_ptr,param)->i32is byte-identical to AffineScript #199. Planned one-shotresume(once)aligns with the once-settle guarantee. The{__error}envelope is a host-boundary convention and does not constrain Ephapax's native sum-type error model.Status / not closing #31
Refs #31, notCloses— #31 is the co-stakeholder review issue. ADR-005 isproposed; on explicit joint sign-off it becomesacceptedand AffineScript #225 PR 2–4 (the CPS transform proper) are unblocked. Does not couple AffineScript to typed-wasm nor constrain Ephapax — binary-level convention only.🤖 Generated with Claude Code