# Layer 1 First layer of the deep import chain. Each layer contributes substantive content so the chain is not trivially dismissable as "all short stubs". ## Section A Coding conventions for the fictitious project that exists solely to exercise the TOK scanner's import-depth detection logic. - Prefer async/await over raw Promises. - Annotate return types even when TypeScript can infer them. - Keep functions under 40 lines where practical. - Use `readonly` generously on types. - Dependency-inject side effects at module boundaries. - Validate inputs at system boundaries only. ## Section B Error handling patterns: - Subclass `Error` with typed messages. - Never swallow errors silently. - Prefer `Result` return types in business logic. - Log at boundaries, never inside pure functions. ## Section C Testing patterns: - Test fixtures live under `tests/fixtures/{name}/`. - Each fixture has a single shape it exercises. - Use `describe(...)` + `it(...)` from `node:test`. - Prefer table-driven tests for permutations. - Keep test setup idempotent. ## Section D CI/CD conventions: - Conventional Commits for every commit. - PR-free single-branch workflow on Forgejo. - Lint and typecheck on every push. - Release tags follow `{plugin}-v{semver}`. @layer2.md