Skip to content

id: design: pure-package import policy — package classes per tier, with compile-fail fixtures #5994

Open

Description

@dezren39

Part of the worlds design program: #5955. Wave-2 follow-up from the prior-art research (Lane B item 2); parent topic issue: #5956. Research source: workspace/scratch/worlds-capabilities-brief-2026-11-04/prior-art-research.md.

Scope

Define which package classes a world/library may import at each tier, and pin the policy with fixtures:

  • Pure packages (parsers, unicode, random — no effects) compose freely; effect-referencing packages work only where the platform exposes the operations they call. Roc's model already enforces this by construction: if a library calls Stdout.line and the platform doesn't expose Stdout, it does not compile — there is no ambient I/O to fall back to (Roc FAQ: https://www.roc-lang.org/faq).
  • The policy table states, per tier: which classes are allowed, what the author must declare, and what the import checker verifies against the platform catalog (pkgs/id/crates/id-core/src/world_caps.rs).
  • One compile-fail fixture per class (a package in the class, a platform that must reject it), wired so the fixtures cannot silently rot — distinct from the single demo pair in the demo task under id: design program: worlds — advanced Roc libraries, capabilities, permissions, dynamic user functions, licensing (2026-11-04 brief) #5955, which proves the mechanism end-to-end.

Done looks like

A policy table (class × tier → allowed/declared/checked) plus the per-class compile-fail fixtures specified or landed.

Activity

  1. added
    priority/normalOrdinary priority (the default)
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    on Nov 5, 2026
  2. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor
  3. added
    kind/designA design proposal (design-architect): multi-step, phased, decision-bearing
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 5, 2026
  4. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    Triage — task 10360 (lane code-s)

    Verdict: live design+fixtures issue, correctly scoped, nothing landed yet. Stays OPEN.

    Evidence checked fresh 2026-11-05:

    Ordering recorded:

    1. The per-tier columns depend on the tier definitions in the capability model id: design: capability model — requested vs discovered-used sets, registry listing, custom-compiled platforms #5958 (triaged today, task 10327) — including Drew's C2 ruling (default isolated tier unchanged; file/network capabilities are a new opt-in tier). The policy table should be written against those tiers, not invented locally.
    2. Distinct from the id: design program: worlds — advanced Roc libraries, capabilities, permissions, dynamic user functions, licensing (2026-11-04 brief) #5955 demo pair (mechanism proof) — this issue's fixtures are per-class policy pins; keep them separate as filed.

    No follow-up task enqueued — this issue is itself the work item and is in the queue system. Task 10360 completes as triaged.

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

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)kind/designA design proposal (design-architect): multi-step, phased, decision-bearingpriority/normalOrdinary priority (the default)task/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions