# Astrale Linter

Astrale Linter is the SDK-owned authoring system that turns stable Astrale domain conventions into
type constraints and static diagnostics.

Domain authors use the ordinary project commands:

```sh
pnpm lint
pnpm lint:fix
pnpm typecheck
pnpm test
```

Generated domains contain the compatible dependencies and Oxlint bridge. Authors should not need to
assemble parser services, plugins, or analyzer configuration themselves.

## Reference

- [PRINCIPLES.md](./PRINCIPLES.md) defines the enforcement philosophy and rule-admission bar.
- [JUDGMENT.md](./JUDGMENT.md) defines what must remain human or agent judgment.
- [RULE-AUTHORING.md](./RULE-AUTHORING.md) defines identifiers, metadata, lifecycle, and testing.
- [RULES.md](./RULES.md) is the canonical policy registry and implementation-status record.
- [DIAGNOSTICS.md](./DIAGNOSTICS.md) defines output, tool failures, and suppressions.

## Scope

The implementation is authoring-only and is exposed through `@astrale-os/sdk/linter`. It is not
re-exported from the isomorphic SDK root and must never enter a worker or browser bundle.

Each executable policy has one owner:

- `sdk` prevents invalid states through public types and authoring contracts.
- `oxlint` detects reliable file-local syntax and control-flow violations.
- `analyzer` detects project shape, import-graph, and cross-file violations.

Generic JavaScript and TypeScript rules remain owned by `@astrale-os/ox`. Astrale rules retain stable
`astrale/<slug>` identifiers regardless of their execution engine.
