Effect4

Applicability decisionsapplicability

ConceptRowWhoExcludedReason
store-typing163ownerfunction values and closures in Val: Fits contains no arrow clausethe language cut, docs/research/history/language-cut.md section 1
store-typing96ownerraw subtyping in handle arms: comparisons use Equiv under Ty.subNchecker compares and joins in normalized order (decisions row 137, E4-TYPED-CE-009)
store-typing156ownerdangling scope handles: ScopeLive presence required at Ty.scopemachine halts on absent scope in prepareScopedExitR (E4-SCHED-CE-020)
residual-program-typing163ownerstored function values and closures: stored Eff syntax uses first-order program trees, while proof-side RProgram carries Lean function continuations at visible operationsthe language cut, docs/research/history/language-cut.md section 1; row 163 excludes stored function values, not functions in the semantic model
residual-program-typing117owneropen root requirement rows: M5, M6c and M7 take the premise rootTy.requires = emptyrc.112 runs closed root rows (Effect.ts:17494-17497), while retaining separate per-position obligations
residual-program-typing148coordinatorgeneral bind closure: sequencing is proved per construct via compatibility lemmasclosing marker unguard fixes exit type (E4-TYPED-CE-030)
scope-lifetime-finalization156ownerclosure or exit of absent scopes: ScopeLive requiredmachine halts on absent scope in prepareScopedExitR
scope-lifetime-finalization152ownerbadName and notImplemented defect transmission during close walkShapeFree exclusion on encoded causes in exit types (row 152)
reactive-scheduling106ownerunbounded token indices: QueueOk enforces GuardState.keysBelowfresh token bounds protect scheduler invariants (decisions row 106)
reactive-scheduling107ownerdefect-bearing exit boundaries: ExitOk requires NoShapeDefectbadName and notImplemented defects excluded from typed exits
reactive-scheduling134owneruntyped timer and race columns in configuration typingE4-TYPED-CE-024 through CE-029 separate timer, waiter, and race keys
exact-codecs128ownerarbitrary syntactic equality: embeddings are exact modulo normJ and normSJSON object key order and Schema AST annotations do not affect decoding
exact-codecs179coordinatorunconditional metadata preservation: normS erases only nine approved keysarbitrary effect4/* annotations cannot be silently discarded
subtyping-algebra137ownerraw subtyping for checker comparisons: subN normalizes both sides firstraw sub does not distribute products over unions (E4-TYPED-CE-009)
subtyping-algebra163ownerarrow subtyping: Ty contains no function constructorthe language cut, docs/research/history/language-cut.md section 1
initial-algebras-folds127ownerrecursive-type unfolding in inhabited: inhabited is a fold over finite syntaxTy is an inductive data type with no infinite equi-recursive unfolding
context-requirements117owneropen root requirement rows: M5, M6c and M7 require rootTy.requires = emptyrc.112 runs closed rows (Effect.ts:17494-17497)
context-requirements104ownerlexical environment capture in layers: layers build at closed pointsPoint.layerBuild prevents layer bodies from reading outer environments (E4-PROV-CE-005)
context-requirements105ownermismatched layer values: layer value must fit declared service typeLayerHasTy requires declared service carrier and value subtyping (E4-PROV-CE-006)
host-session-protocol122ownerin-engine boundary decoding: Decision 12 adopts Route A typed membershipboundary decode checks membership before runtime admission (host-boundary.md section 7)
host-session-protocol97ownerinternal handle kinds at host boundary: cells, promises, fibers, scopes refusedprevents leaking internal runtime capabilities across boundary (E4-HOST-CE-007)
translation-simulation138ownernon-empty host tables in M7: M7 is stated strictly on M7Fragment with root.table = []table-aware agreement is deferred to R6 (DI-57)
translation-simulation95ownerhost answers on decision tapes: M6 and M7 quantify over answer-free tapesreference machine has no host table and refuses every answer (emptyTable_refuses_every_answer)
translation-simulation117owneropen requirement rows: M7Fragment enforces rootTy.requires = emptyrc.112 runs closed rows (Effect.ts:17494-17497)