Skip to content

Commit 8dd5699

Browse files
authored
Merge branch 'main' into armory-node-engines-sweep
2 parents 0605d99 + 9c32733 commit 8dd5699

5 files changed

Lines changed: 68 additions & 3 deletions

File tree

.github/workflows/publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
node-version: 24
3939
registry-url: "https://registry.npmjs.org"
4040
scope: "@script-development"
41-
- uses: actions/download-artifact@v4
41+
- uses: actions/download-artifact@v8
4242
with:
4343
name: build-output
4444
path: packages

.oxlintrc.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"$schema": "./node_modules/oxlint/configuration_schema.json",
3+
"plugins": ["typescript", "unicorn", "oxc"],
4+
"categories": {
5+
"correctness": "error"
6+
},
7+
"rules": {},
8+
"env": {
9+
"builtin": true
10+
}
11+
}

CLAUDE.md

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Shared frontend service packages monorepo under the `@script-development` npm sc
77
- **Language:** TypeScript 5.9+ (strict mode, `verbatimModuleSyntax`)
88
- **Build:** tsdown (Rolldown/oxc) — dual ESM + CJS output
99
- **Test:** vitest 4 (100% coverage threshold) + Stryker (90% mutation threshold)
10-
- **Lint:** oxlint
10+
- **Lint:** oxlint (explicit config at `.oxlintrc.json`)
1111
- **Format:** oxfmt
1212
- **Package lint:** publint + attw (Are The Types Wrong)
1313
- **Publish:** OIDC Trusted Publishing to public npm registry (no stored tokens)
@@ -54,10 +54,63 @@ Shared frontend service packages monorepo under the `@script-development` npm sc
5454

5555
**Build before typecheck.** Cross-package type resolution requires built `.d.mts` files. The CI pipeline enforces this order.
5656

57+
## Lint Rules
58+
59+
Lint configuration lives at `.oxlintrc.json` (repo-root, no per-package overrides). The explicit config declares three defaults so rule additions/removals land as a deliberate diff rather than silent upstream drift when oxlint bumps:
60+
61+
- **Plugins:** `typescript`, `unicorn`, `oxc` — the three plugins enabled by oxlint's own defaults.
62+
- **Categories:** `correctness: "error"` — all 107 Correctness rules fail CI (was `warn`, so violations were silently tolerated pre-config).
63+
- **`perf`, `suspicious`, `pedantic`, `style`, `restriction`, `nursery`:** unset — library posture is Correctness-only, opt-in per-rule for anything else.
64+
65+
To add a rule, set it in the `rules` object (e.g. `"perf/no-accumulating-spread": "error"`). To disable a default, set it to `"off"`. To opt into a whole category, add it to `categories` (be deliberate — `pedantic` has false positives, `nursery` is unstable). See `npx oxlint --rules` for the full catalog with default-on/off markers.
66+
5767
## Adding a Package
5868

5969
1. Create `packages/{name}/` with `package.json`, `tsconfig.json`, `tsdown.config.ts`, `vitest.config.ts`
6070
2. Name it `@script-development/fs-{name}`
6171
3. Use `defineProject` from `vitest/config` in the vitest config
6272
4. Add 100% coverage threshold and 90% mutation threshold
6373
5. Bump version in the new package's `package.json` (manual — no changeset `.md` files)
74+
75+
## War Room ADR Projections
76+
77+
Distilled operational rules from cross-project Architecture Decision Records. Canonical source: [adrs.script.nl](https://adrs.script.nl). This section is maintained by the War Room — do not edit directly.
78+
Last synced: 2026-04-17
79+
80+
### Applicable
81+
82+
#### ADR-0013: Adapter-Store Pattern
83+
84+
- Published here as `fs-adapter-store`. This territory is the canonical home of the pattern.
85+
- Preserve the reactive adapter-store contract: `createAdapterStoreModule()` factory returning a module with `resourceAdapter` for CRUD plus typed `Adapted<T>` / `NewAdapted<T>` records.
86+
- Changes to the pattern's surface (function signatures, exported types) are breaking for every consumer — treat them as major version decisions and coordinate with consumer territories (kendo, BIO).
87+
88+
#### ADR-0015: ADR Governance
89+
90+
- War Room ADRs are canonical at `adrs.script.nl`. Projections (this section) are distilled into territory CLAUDE.md by the War Room.
91+
- Do not amend projections in this file directly. Propose amendments through the war room; the update propagates here.
92+
- fs-packages is a full territory under the war room (not exempt like BIO).
93+
94+
#### ADR-0017: Page Integration Tests
95+
96+
- Kendo, BIO, and Entreezuil mock only `@script-development/fs-http` when running page integration tests. fs-http is the mock target; its public API (`createHttpService`, middleware hooks, `isAxiosError`) is the contract consumers depend on.
97+
- Do not introduce breaking changes to fs-http's public API without coordinating with consumer territories' mock-server infrastructure.
98+
99+
### Not Applicable (Library Territory Rationale)
100+
101+
The following cross-project ADRs do not apply to fs-packages because it has no Laravel/PHP backend, no HTTP API surface, no database, and no app-UI:
102+
103+
- **ADR-0001** Audit Logging — Laravel/DB-backed; N/A.
104+
- **ADR-0002** Cascade Deletion & Selective Soft Deletes — Laravel/DB-backed; N/A.
105+
- **ADR-0009** Unified ResourceData Pattern — Laravel JSON response shape; N/A.
106+
- **ADR-0011** Action Class Architecture — PHP `final readonly` action classes; N/A.
107+
- **ADR-0012** FormRequest → DTO Flow — Laravel request pipeline; N/A.
108+
- **ADR-0014** Domain-Driven Frontend Structure — App-level vertical slices by business domain; fs-packages is horizontal library infrastructure, not an app. N/A.
109+
- **ADR-0016** Config Attribute Injection — PHP `#[Config]` attribute; N/A.
110+
- **ADR-0019** Explicit Model Hydration — Eloquent model hydration; N/A.
111+
112+
Kendo-only or territory-scoped ADRs (0003, 0004, 0006, 0008, 0018) do not apply cross-territory.
113+
114+
### Internal / War-Room-Only
115+
116+
ADR-0005 (Spy System), ADR-0007 (Soldiers + Briefings), ADR-0010 (Squad System) govern war room operations, not territory code. No projection required.

packages/adapter-store/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@script-development/fs-adapter-store",
3-
"version": "0.1.3",
3+
"version": "0.1.4",
44
"description": "Reactive adapter-store pattern with domain state management and CRUD resource adapters",
55
"homepage": "https://packages.script.nl/packages/adapter-store",
66
"license": "MIT",

packages/adapter-store/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ export type {
99
Adapter,
1010
AdapterStoreModule,
1111
AdapterStoreConfig,
12+
AdapterStoreBroadcast,
1213
StoreModuleForAdapter,
1314
} from "./types";

0 commit comments

Comments
 (0)