# OSC 2026 Acceptance Matrix

This page maps the competition acceptance requirements and the committee's
rejection feedback to reproducible repository evidence.

Run the complete local gate from the repository root:

```bash
./scripts/acceptance.sh
```

## Requirement matrix

| Requirement | Evidence | Verification |
| --- | --- | --- |
| Valid MoonBit project | `moon.mod`, `moon.pkg` | `moon check --deny-warn` |
| Check, build, and test CI | `.github/workflows/check.yml` | Linux/macOS/Windows matrix runs check, test, and build |
| Formatting and generated interfaces | `.github/workflows/check.yml` | `moon fmt` / `moon info`, followed by `git diff --exit-code` |
| Runnable use cases | `examples/basic`, `examples/semantics`, `scripts/demo.sh` | `moon run examples/basic` and `moon run examples/semantics` |
| Core-path tests | blackbox, whitebox, and CLI test suites | `moon test --deny-warn` |
| Published package | `FidollarinLA/moon_api_guard` | <https://mooncakes.io/docs/FidollarinLA/moon_api_guard> |
| OSI license | root `LICENSE` and `moon.mod` | Apache-2.0 |
| Original/reference disclosure | README `References` section | upstream link, license, and reference scope per project |
| GitHub/GitLink mirrors | README `Repository` section | both public links and default branch `main` |

## Rejection-feedback regression

The fixture pair `fixtures/regression/acceptance_old.mbti` and
`fixtures/regression/acceptance_new.mbti` locks down the two comparator issues
called out during formal acceptance:

- `Foo::run` and `Bar::run` remain separate identities, so a signature change
  on `Bar::run` cannot be misattributed to `Foo::run`.
- Adding an enum variant is breaking by default because downstream exhaustive
  matches may stop compiling.
- Changing an existing variant payload is reported separately as the breaking
  detail `variant-changed`.

The acceptance script also runs this pair through the actual CLI and verifies
that it returns exit code `1`, not just that a library unit test passes.

## CI artifacts

The API guard workflow produces Markdown job summaries plus downloadable HTML
and SARIF 2.1.0 reports. SARIF results use `error` for breaking changes and
`note` for compatible changes, and directory comparisons preserve the source
`.mbti` path.
