Proposed (STA-779 remainder). It amends how the house rules of
0129 are loaded in this repo.
Context
Thefeature-flags/no-plan-targeting rule (ADR 0213 decision 7) ships as the ./lint entry of
@stackra/feature-flags. Loading it through the package export needs a built dist; the root lint task has no build
dependency, and a tier:config preset may take no library dependency, so wiring it broke lint on every unbuilt
checkout.
Decision
- Source path.
packages/tooling/oxlint/src/base.jsoncloads the plugin from its source file by a path relative to the preset. Node strips the types, so a lint run needs no build and no^builddependency. - Loadable files. A plugin loaded this way imports values only by relative
.tspaths; types may use subpath imports. A test of each plugin file checks it. - Other repos load the built
@stackra/feature-flags/lintentry as before.
Consequences
- The rule is an error in every member’s lint run.
- A future house plugin follows the same rule or is not added to the base preset.
Enforcement
planned —packages/tooling/oxlint/src/__tests__/presets.test.ts and
packages/state/feature-flags/src/lint/constants/__tests__/feature-flags-lint-plugin.constant.test.ts.