Skip to content

effect-atom: shipped dts named-export surface has no automated gate #177

Description

@younna-ai-opencode

Severity: P2 (testing gap, advisory)
Confidence: 75
Reviewer(s): project-standards, adversarial
Finding ID: dist/Result.d.ts-named-export-surface-unguarded

Problem

The 2026-08-16 cycle-break refactor temporarily dropped six public names (TypeId, failure, initial, success, isResult, isAsyncResult) from the shipped dist/Result.d.ts because tsgo's dts emitter drops an export { ... } from '...' clause when the module is bundled — and no in-repo gate noticed: dts:check typechecks shipped dts but never imports the names across a consumer boundary, attw checks resolution not name completeness, and the test suite compiles against src via the @systemfsoftware/source condition. The fix re-exports the already-imported local bindings instead, restoring the surface (consumer probe passes).

Suggested fix

Add an automated gate that imports every documented public name from the BUILT entry types (or a golden named-export comparison of dist/Result.d.ts) so a bundler/emitter regression fails CI instead of shipping silently. A strict-consumer compile (tsconfig without @systemfsoftware/source) exercising the public names would have caught this.

Source

Branch effect-atom-cycle (pull request pending), head commit 830671e. Original finding in ce-code-review run /tmp/compound-engineering-0/ce-code-review/20260816-192143-f31af405/ (standards P0, adversarial P1).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions