Skip to content

test(self-hosting): add executable milestone validation #153

@graydeon

Description

@graydeon

Summary

The self-hosted compiler currently has structural smoke coverage, but not enough executable milestone coverage to make progress measurable with confidence.

There is also a known large-source validation gap: one of the self-hosted smoke tests is ignored because concatenating the self-hosted modules into one large source string triggers a parser/session failure path.

Why this matters

  • self-hosting is a core project goal
  • green test status can overstate maturity if the hardest self-hosted path is ignored
  • milestone progress is easier to trust when behavior tests exist, not only parse/typecheck shape checks

Current behavior

  • self-hosted smoke tests validate symbol presence and type-checking for staged concatenated modules
  • a larger all-modules validation path is currently ignored because large concatenated input is not stable enough
  • several self-hosted modules still expose placeholder behavior, so the test strategy needs to distinguish structural readiness from executable readiness

Expected behavior

  • the self-hosted test suite should include milestone-oriented behavioral checks
  • the large-source validation path should either work reliably or be replaced with a module-aware harness that exercises the same coverage without concatenation fragility

Suggested scope

  • investigate and fix the large-source Session::from_source() / parser-state failure mode, or replace it with a better validation harness
  • add milestone tests that verify actual self-hosted behavior for the earliest supported compiler stages
  • keep structural smoke tests, but supplement them with behavior-oriented checks

Acceptance criteria

  • no ignored test remains solely because the self-hosted source bundle is too large for the current session/parsing path
  • at least one self-hosted milestone is validated with behavior assertions rather than only symbol/typecheck checks
  • the test suite makes it clear which self-hosted stages are structural vs executable

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions