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).
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 shippeddist/Result.d.tsbecause tsgo's dts emitter drops anexport { ... } from '...'clause when the module is bundled — and no in-repo gate noticed:dts:checktypechecks shipped dts but never imports the names across a consumer boundary,attwchecks resolution not name completeness, and the test suite compiles againstsrcvia the@systemfsoftware/sourcecondition. 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).