Skip to content

[Repo] Effect-row v1 name list: define IO/Async/Partial/Throws[E]/Mut early #59

Closed

Description

@hyperpolymath

Proposal

Pin a v1 effect-name list (even if incomplete) so real migration can begin. AI.a2ml names "effect tracking" as in-scope; the concrete effect names aren't pinned, which blocks real translation.

Real translation needed (from one .res file: Main.res)

  • {IO} — standard
  • {Async} — promise-equivalent, suspend semantics
  • {Partial} — short-circuit failure (? operator on Result)
  • {Throws[E]} — typed exception (separate from Partial because it carries a type)
  • {Mut} — internal mutation (vs ambient global)
  • Plus eventually: {Random}, {Time}, {Net}

Pinning all six in v1 unblocks real translation. The effect-handler design (out-of-scope per AI.a2ml) doesn't have to be solved first; effect tracking alone gives most of the value.

Source observation

The pilot's Main.affine and Boot.affine use /{IO, Async} and would have used /{Partial} for ?-on-Result. Without pinned names every contributor invents their own.


Filed from idaptik Wave 3 pilot. See LESSONS.md and PILOT.md. Idaptik commit hyperpolymath/idaptik@aef38db.

Activity

  1. hyperpolymath commented on May 18, 2026

    @hyperpolymath
    OwnerAuthor

    Closing — effect-row v1 name list defined and enforced (STAGE-B).

    The v1 effect registry is shipped and enforcing on main:

    Effects are tracked, not enforced at the body level by deliberate migration-stance decision (tracking alone delivers most of the value; strict checking/handlers explicitly deferred to a later stage).

    Closed on owner approval (joint close, 2026-05-18).

  2. hyperpolymath commented on May 18, 2026

    @hyperpolymath
    OwnerAuthor

    Closing as delivered. The v1 effect-row goal — pin the names so migration can begin; effect tracking, not handling — is complete:

    Deliberately deferred (not regressions — consistent with this issue's own scope): accumulation of IO/Async from call sites, and effect handler design — out of scope per AI.a2ml. Async-extern ABI is tracked separately in #103. Future effect sources plug into the accumulate→subsume path #207 established.

    Closing per joint-close agreement.

  3. hyperpolymath commented on Jun 1, 2026

    @hyperpolymath
    OwnerAuthor

    Status update — AS stdlib codegen pattern now established (2026-06-01) 📌

    For ticket coordinators / anyone tracking this gap:

    What this means for the gap tracked in this ticket:

    • The codegen pattern is now a known repeatable shape: declare in stdlib/*.affine → wire in deno_builtins table + prelude → smoke-test in tests/codegen-deno/*.
    • This ticket remains open as a tracked gap; no new mass-port is being kicked off from this post.
    • Surfacing status so the broader picture stays accurate as more sub-tickets / dependent campaigns reference it.

    🤖 Cross-estate AS-status sweep on 2026-06-01.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions