@sayoriqwq/effect-harness 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/bin/effect-harness.js +0 -0
  2. package/dist/src/harness/ProviderDiscovery.d.ts +5 -2
  3. package/dist/src/harness/ProviderDiscovery.js +11 -7
  4. package/dist/src/harness/ProviderDiscovery.js.map +1 -1
  5. package/dist/src/harness/verify/ProviderProfile.js +29 -9
  6. package/dist/src/harness/verify/ProviderProfile.js.map +1 -1
  7. package/dist/src/harness/verify/TsgoPolicy.d.ts +3 -0
  8. package/dist/src/harness/verify/TsgoPolicy.js +3 -0
  9. package/dist/src/harness/verify/TsgoPolicy.js.map +1 -1
  10. package/harness/diagnostic-layers.md +1 -1
  11. package/package.json +18 -21
  12. package/provider/docs/package-config.md +16 -0
  13. package/provider/docs/quality-policy.md +14 -4
  14. package/provider/effect-harness.provider.json +43 -7
  15. package/provider/index.md +4 -0
  16. package/repos/effect/packages/platform-node-shared/test/fixtures/bash/parent-exits-early.sh +0 -0
  17. package/repos/effect/packages/platform-node-shared/test/fixtures/bash/spawn-children.sh +0 -0
  18. package/repos/effect/packages/tools/ai-docgen/src/main.ts +0 -0
  19. package/repos/effect/packages/tools/bundle/src/bin.ts +0 -0
  20. package/repos/effect/packages/tools/jsdocs/src/bin.ts +0 -0
  21. package/repos/effect/packages/tools/openapi-generator/src/bin.ts +0 -0
  22. package/repos/effect/packages/tools/utils/src/bin.ts +0 -0
  23. package/repos/effect/scripts/bundle-analyze.sh +0 -0
  24. package/repos/effect/scripts/bundle-compare-selected.sh +0 -0
  25. package/repos/effect/scripts/bundle-compare.sh +0 -0
  26. package/repos/effect/scripts/worktree-setup.sh +0 -0
  27. package/repos/tsgo/_tools/perf-check-tsgo.sh +0 -0
  28. package/repos/tsgo/_tools/release-prepare.sh +0 -0
  29. package/repos/tsgo/_tools/setup-repo.sh +0 -0
  30. package/repos/tsgo/_tools/update-flake-vendor-hash.sh +0 -0
  31. package/repos/tsgo/_tools/version-prepare.sh +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"TsgoPolicy.js","sourceRoot":"","sources":["../../../../src/harness/verify/TsgoPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["export type TsgoDiagnosticSeverity = 'error' | 'message' | 'suggestion' | 'warning'\n\nexport const expectedPackageBaseline = {\n 'effect': '4.0.0-beta.92',\n '@effect/platform-node': '4.0.0-beta.92',\n '@effect/vitest': '4.0.0-beta.92',\n '@effect/tsgo': '0.15.0',\n '@effect/language-service': '0.86.2',\n '@typescript/native-preview': '7.0.0-dev.20260630.1',\n} as const\n\nexport const expectedEffectTsgoVersion = '0.15.0'\nexport const expectedPrepareCommand = 'effect-tsgo patch'\nexport const expectedTypecheckCommand = 'tsgo --noEmit'\n\nexport const strictDiagnosticSeverity = {\n anyUnknownInErrorContext: 'error',\n asyncFunction: 'warning',\n catchAllToMapError: 'suggestion',\n catchToOrElseSucceed: 'suggestion',\n catchUnfailableEffect: 'suggestion',\n classSelfMismatch: 'error',\n cryptoRandomUUID: 'warning',\n cryptoRandomUUIDInEffect: 'warning',\n deterministicKeys: 'warning',\n duplicatePackage: 'warning',\n effectDoNotation: 'warning',\n effectFnIife: 'warning',\n effectFnImplicitAny: 'error',\n effectFnOpportunity: 'suggestion',\n effectGenUsesAdapter: 'warning',\n effectInFailure: 'warning',\n effectInVoidSuccess: 'warning',\n effectMapFlatten: 'suggestion',\n effectMapVoid: 'suggestion',\n effectSucceedWithVoid: 'suggestion',\n extendsNativeError: 'warning',\n floatingEffect: 'error',\n genericEffectServices: 'warning',\n globalConsole: 'warning',\n globalConsoleInEffect: 'warning',\n globalDate: 'warning',\n globalDateInEffect: 'warning',\n globalErrorInEffectCatch: 'warning',\n globalErrorInEffectFailure: 'warning',\n globalFetch: 'warning',\n globalFetchInEffect: 'warning',\n globalRandom: 'warning',\n globalRandomInEffect: 'warning',\n globalTimers: 'warning',\n globalTimersInEffect: 'warning',\n instanceOfSchema: 'warning',\n layerMergeAllWithDependencies: 'warning',\n lazyEffect: 'suggestion',\n lazyPromiseInEffectSync: 'warning',\n leakingRequirements: 'suggestion',\n missedPipeableOpportunity: 'warning',\n missingEffectContext: 'error',\n missingEffectError: 'error',\n missingLayerContext: 'error',\n missingReturnYieldStar: 'error',\n missingStarInYieldEffectGen: 'error',\n multipleCatchTag: 'suggestion',\n multipleEffectProvide: 'warning',\n nestedEffectGenYield: 'warning',\n newPromise: 'warning',\n newSchemaClass: 'warning',\n nodeBuiltinImport: 'warning',\n outdatedApi: 'warning',\n overriddenSchemaConstructor: 'error',\n preferSchemaOverJson: 'warning',\n processEnv: 'warning',\n processEnvInEffect: 'warning',\n redundantMapError: 'suggestion',\n redundantOrDie: 'suggestion',\n redundantSchemaTagIdentifier: 'suggestion',\n returnEffectInGen: 'suggestion',\n runEffectInsideEffect: 'suggestion',\n schemaNumber: 'suggestion',\n schemaStructWithTag: 'suggestion',\n serviceNotAsClass: 'warning',\n strictBooleanExpressions: 'warning',\n strictEffectProvide: 'warning',\n tryCatchInEffectGen: 'suggestion',\n unknownInEffectCatch: 'warning',\n unnecessaryArrowBlock: 'warning',\n unnecessaryEffectGen: 'suggestion',\n unnecessaryFailYieldableError: 'suggestion',\n unnecessaryPipe: 'suggestion',\n unnecessaryPipeChain: 'suggestion',\n unnecessaryTypeofType: 'suggestion',\n unsafeEffectTypeAssertion: 'warning',\n} as const satisfies Readonly<Record<string, TsgoDiagnosticSeverity>>\n\nexport const strictDiagnosticGate = {\n includeSuggestionsInTsc: true,\n ignoreEffectSuggestionsInTscExitCode: false,\n ignoreEffectWarningsInTscExitCode: false,\n ignoreEffectErrorsInTscExitCode: false,\n} as const\n\nexport const strictLanguageServicePlugin = {\n name: '@effect/language-service',\n diagnostics: true,\n ...strictDiagnosticGate,\n diagnosticSeverity: strictDiagnosticSeverity,\n barrelImportPackages: ['effect'],\n topLevelNamedReexports: 'follow',\n effectFn: ['span'],\n keyPatterns: [\n {\n target: 'service',\n pattern: 'default',\n skipLeadingPath: ['src/'],\n },\n {\n target: 'error',\n pattern: 'default',\n skipLeadingPath: ['src/'],\n },\n {\n target: 'custom',\n pattern: 'default',\n skipLeadingPath: ['src/'],\n },\n ],\n extendedKeyDetection: true,\n layerGraphFollowDepth: 1,\n noExternal: true,\n inlays: true,\n allowedDuplicatedPackages: [],\n pipeableMinArgCount: 2,\n} as const\n\nexport const requiredTsgoPolicyKeywords = [\n 'POLICY_NATIVE_BACKEND',\n 'POLICY_DIAGNOSTIC_GATE',\n 'POLICY_RULE_MAP',\n 'POLICY_IMPORT_STYLE',\n 'POLICY_OVERRIDES',\n 'POLICY_SUPPRESSIONS',\n 'POLICY_KEY_PATTERNS',\n 'POLICY_LAYER_GRAPH',\n 'POLICY_UPGRADE_LOOP',\n 'VERIFIER_CONTRACT',\n] as const\n"]}
1
+ {"version":3,"file":"TsgoPolicy.js","sourceRoot":"","sources":["../../../../src/harness/verify/TsgoPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["export type TsgoDiagnosticSeverity = 'error' | 'message' | 'suggestion' | 'warning'\n\nexport const expectedPackageBaseline = {\n 'effect': '4.0.0-beta.92',\n '@effect/platform-node': '4.0.0-beta.92',\n '@effect/vitest': '4.0.0-beta.92',\n '@effect/tsgo': '0.15.0',\n '@effect/language-service': '0.86.2',\n '@typescript/native-preview': '7.0.0-dev.20260630.1',\n '@antfu/eslint-config': '^9.0.0',\n 'eslint': '^10.3.0',\n 'vitest': '^4.1.8',\n} as const\n\nexport const expectedEffectTsgoVersion = '0.15.0'\nexport const expectedPrepareCommand = 'effect-tsgo patch'\nexport const expectedTypecheckCommand = 'tsgo --noEmit'\n\nexport const strictDiagnosticSeverity = {\n anyUnknownInErrorContext: 'error',\n asyncFunction: 'warning',\n catchAllToMapError: 'suggestion',\n catchToOrElseSucceed: 'suggestion',\n catchUnfailableEffect: 'suggestion',\n classSelfMismatch: 'error',\n cryptoRandomUUID: 'warning',\n cryptoRandomUUIDInEffect: 'warning',\n deterministicKeys: 'warning',\n duplicatePackage: 'warning',\n effectDoNotation: 'warning',\n effectFnIife: 'warning',\n effectFnImplicitAny: 'error',\n effectFnOpportunity: 'suggestion',\n effectGenUsesAdapter: 'warning',\n effectInFailure: 'warning',\n effectInVoidSuccess: 'warning',\n effectMapFlatten: 'suggestion',\n effectMapVoid: 'suggestion',\n effectSucceedWithVoid: 'suggestion',\n extendsNativeError: 'warning',\n floatingEffect: 'error',\n genericEffectServices: 'warning',\n globalConsole: 'warning',\n globalConsoleInEffect: 'warning',\n globalDate: 'warning',\n globalDateInEffect: 'warning',\n globalErrorInEffectCatch: 'warning',\n globalErrorInEffectFailure: 'warning',\n globalFetch: 'warning',\n globalFetchInEffect: 'warning',\n globalRandom: 'warning',\n globalRandomInEffect: 'warning',\n globalTimers: 'warning',\n globalTimersInEffect: 'warning',\n instanceOfSchema: 'warning',\n layerMergeAllWithDependencies: 'warning',\n lazyEffect: 'suggestion',\n lazyPromiseInEffectSync: 'warning',\n leakingRequirements: 'suggestion',\n missedPipeableOpportunity: 'warning',\n missingEffectContext: 'error',\n missingEffectError: 'error',\n missingLayerContext: 'error',\n missingReturnYieldStar: 'error',\n missingStarInYieldEffectGen: 'error',\n multipleCatchTag: 'suggestion',\n multipleEffectProvide: 'warning',\n nestedEffectGenYield: 'warning',\n newPromise: 'warning',\n newSchemaClass: 'warning',\n nodeBuiltinImport: 'warning',\n outdatedApi: 'warning',\n overriddenSchemaConstructor: 'error',\n preferSchemaOverJson: 'warning',\n processEnv: 'warning',\n processEnvInEffect: 'warning',\n redundantMapError: 'suggestion',\n redundantOrDie: 'suggestion',\n redundantSchemaTagIdentifier: 'suggestion',\n returnEffectInGen: 'suggestion',\n runEffectInsideEffect: 'suggestion',\n schemaNumber: 'suggestion',\n schemaStructWithTag: 'suggestion',\n serviceNotAsClass: 'warning',\n strictBooleanExpressions: 'warning',\n strictEffectProvide: 'warning',\n tryCatchInEffectGen: 'suggestion',\n unknownInEffectCatch: 'warning',\n unnecessaryArrowBlock: 'warning',\n unnecessaryEffectGen: 'suggestion',\n unnecessaryFailYieldableError: 'suggestion',\n unnecessaryPipe: 'suggestion',\n unnecessaryPipeChain: 'suggestion',\n unnecessaryTypeofType: 'suggestion',\n unsafeEffectTypeAssertion: 'warning',\n} as const satisfies Readonly<Record<string, TsgoDiagnosticSeverity>>\n\nexport const strictDiagnosticGate = {\n includeSuggestionsInTsc: true,\n ignoreEffectSuggestionsInTscExitCode: false,\n ignoreEffectWarningsInTscExitCode: false,\n ignoreEffectErrorsInTscExitCode: false,\n} as const\n\nexport const strictLanguageServicePlugin = {\n name: '@effect/language-service',\n diagnostics: true,\n ...strictDiagnosticGate,\n diagnosticSeverity: strictDiagnosticSeverity,\n barrelImportPackages: ['effect'],\n topLevelNamedReexports: 'follow',\n effectFn: ['span'],\n keyPatterns: [\n {\n target: 'service',\n pattern: 'default',\n skipLeadingPath: ['src/'],\n },\n {\n target: 'error',\n pattern: 'default',\n skipLeadingPath: ['src/'],\n },\n {\n target: 'custom',\n pattern: 'default',\n skipLeadingPath: ['src/'],\n },\n ],\n extendedKeyDetection: true,\n layerGraphFollowDepth: 1,\n noExternal: true,\n inlays: true,\n allowedDuplicatedPackages: [],\n pipeableMinArgCount: 2,\n} as const\n\nexport const requiredTsgoPolicyKeywords = [\n 'POLICY_NATIVE_BACKEND',\n 'POLICY_DIAGNOSTIC_GATE',\n 'POLICY_RULE_MAP',\n 'POLICY_IMPORT_STYLE',\n 'POLICY_OVERRIDES',\n 'POLICY_SUPPRESSIONS',\n 'POLICY_KEY_PATTERNS',\n 'POLICY_LAYER_GRAPH',\n 'POLICY_UPGRADE_LOOP',\n 'VERIFIER_CONTRACT',\n] as const\n"]}
@@ -59,7 +59,7 @@ ESLint 是 lint stage 的入口。它只负责不需要 tsgo 类型语义、但
59
59
 
60
60
  - import boundary:应用代码和测试代码不能从 `repos/effect` 或 `repos/tsgo` import。
61
61
  - package baseline:不使用 `@effect/cli`,CLI 代码使用 `effect/unstable/cli`。
62
- - test entry:本仓测试使用 `@effect/vitest`,不使用 `node:test` 或普通 `vitest` import。
62
+ - test entry:本仓测试使用 `@effect/vitest`,不使用 `node:test` 或从 `vitest` 导入普通测试入口。
63
63
  - harness baseline:当前 service definition baseline 不新增 `Context.Tag` service definition。
64
64
  - syntax-level bans:只有当 tsgo 没有对应 rule,且规则是本仓制度时才放进 ESLint。例如
65
65
  `{ disableValidation: true }` 禁令属于 lint 层。
package/package.json CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "name": "@sayoriqwq/effect-harness",
3
3
  "type": "module",
4
- "version": "0.0.2",
4
+ "version": "0.0.4",
5
5
  "private": false,
6
6
  "publishConfig": {
7
7
  "access": "public",
8
8
  "registry": "https://registry.npmjs.org/"
9
9
  },
10
- "packageManager": "pnpm@10.33.2",
11
10
  "description": "Effect v4 beta provider profile and source route package.",
12
11
  "license": "MIT",
13
12
  "repository": {
@@ -31,15 +30,29 @@
31
30
  "engines": {
32
31
  "node": ">=22.22.1"
33
32
  },
33
+ "dependencies": {
34
+ "@effect/platform-node": "4.0.0-beta.92",
35
+ "effect": "4.0.0-beta.92",
36
+ "typescript": "^6.0.3"
37
+ },
38
+ "devDependencies": {
39
+ "@antfu/eslint-config": "^9.0.0",
40
+ "@effect/language-service": "0.86.2",
41
+ "@effect/tsgo": "0.15.0",
42
+ "@effect/vitest": "4.0.0-beta.92",
43
+ "@types/node": "^25.6.0",
44
+ "@typescript/native-preview": "7.0.0-dev.20260630.1",
45
+ "eslint": "^10.3.0",
46
+ "knip": "^6.12.0",
47
+ "vitest": "^4.1.8"
48
+ },
34
49
  "scripts": {
35
50
  "build": "tsc --project tsconfig.build.json",
36
- "prepack": "pnpm build",
37
51
  "dev": "pnpm build && node dist/bin/effect-harness.js --help",
38
52
  "effect:verify": "node bin/effect-harness.ts provider-verify --harness .",
39
53
  "knip": "knip",
40
54
  "lint": "eslint",
41
55
  "lint:fix": "eslint --fix",
42
- "prepare": "effect-tsgo patch",
43
56
  "source:status": "npx --yes @sayoriqwq/partita pin status --root . --contract repos/effect.subtree.json --name effect --prefix repos/effect && npx --yes @sayoriqwq/partita pin status --root . --contract repos/tsgo.subtree.json --name tsgo --prefix repos/tsgo",
44
57
  "source:update": "npx --yes @sayoriqwq/partita pin update --root . --contract repos/effect.subtree.json --name effect --prefix repos/effect --dry-run && npx --yes @sayoriqwq/partita pin update --root . --contract repos/tsgo.subtree.json --name tsgo --prefix repos/tsgo --dry-run",
45
58
  "source:verify": "npx --yes @sayoriqwq/partita pin verify --root . --contract repos/effect.subtree.json --name effect --prefix repos/effect && npx --yes @sayoriqwq/partita pin verify --root . --contract repos/tsgo.subtree.json --name tsgo --prefix repos/tsgo",
@@ -47,21 +60,5 @@
47
60
  "typecheck": "tsgo --noEmit",
48
61
  "typecheck:tsc": "tsc --noEmit",
49
62
  "verify": "node bin/effect-harness.ts verify --harness ."
50
- },
51
- "dependencies": {
52
- "@effect/platform-node": "catalog:",
53
- "effect": "catalog:",
54
- "typescript": "catalog:"
55
- },
56
- "devDependencies": {
57
- "@antfu/eslint-config": "catalog:",
58
- "@effect/language-service": "catalog:",
59
- "@effect/tsgo": "catalog:",
60
- "@effect/vitest": "catalog:",
61
- "@types/node": "catalog:",
62
- "@typescript/native-preview": "catalog:",
63
- "eslint": "catalog:",
64
- "knip": "catalog:",
65
- "vitest": "catalog:"
66
63
  }
67
- }
64
+ }
@@ -19,10 +19,14 @@ target 的 runtime dependencies MUST 包含 `effect` 和 `@effect/platform-node`
19
19
 
20
20
  target 的 Effect testing dependency MUST 包含 `@effect/vitest`。
21
21
 
22
+ target 的 test runner dependency MUST 包含 `vitest`。
23
+
22
24
  target 的 diagnostics dependencies MUST 包含 `@effect/tsgo` 和 `@effect/language-service`。
23
25
 
24
26
  target 的 native backend dependency MUST 包含 `@typescript/native-preview`。
25
27
 
28
+ target 的 lint dependencies MUST 包含 `eslint` 和 `@antfu/eslint-config`。
29
+
26
30
  版本基线由 provider profile 管理。target 不应该用局部版本覆盖降低 Effect v4 beta、tsgo 或
27
31
  language-service baseline。
28
32
 
@@ -40,6 +44,18 @@ target 的 primary diagnostics script SHOULD 指向:
40
44
  tsgo --noEmit
41
45
  ```
42
46
 
47
+ target 的 test script SHOULD 指向:
48
+
49
+ ```bash
50
+ vitest run
51
+ ```
52
+
53
+ target 的 lint script SHOULD 指向:
54
+
55
+ ```bash
56
+ eslint
57
+ ```
58
+
43
59
  这些 script 是 provider-managed 指针。Prelude materialization 和 maintain 应按 provider record
44
60
  判断本地 drift。
45
61
 
@@ -19,9 +19,15 @@ updated: 2026-07-02
19
19
 
20
20
  lint policy 负责 repository boundary 和 syntax-level guardrails。
21
21
 
22
- lint policy SHOULD block provider-internal source imports、`@effect/cli` imports、普通 `vitest` imports、
23
- `node:test` imports、`Context.Tag` service definitions、指定 Effect member,以及关闭 Schema validation
24
- 的写法。
22
+ target 的 lint entry provider package contribution 暴露为 `pnpm lint`,底层脚本是 `eslint`。
23
+ 需要 hard gate 时,verification policy 使用 `pnpm lint --max-warnings 0`。
24
+
25
+ lint policy SHOULD block provider-internal source imports、`@effect/cli` imports、`node:test` imports、
26
+ 从 `vitest` 导入测试入口(`describe`、`it`、`test`)、`Context.Tag` service definitions、指定 Effect
27
+ member,以及关闭 Schema validation 的写法。
28
+
29
+ lint policy SHOULD allow Vitest mock/lifecycle API(例如 `vi`、`beforeEach`)直接从 `vitest` 导入,因为
30
+ Vitest 的 mock transformer 依赖直接导入。
25
31
 
26
32
  lint policy MUST NOT 替代 tsgo diagnostics。Effect semantic diagnostics、type requirement diagnostics 和
27
33
  strict rule severity map 由 tsgo policy 负责。
@@ -30,6 +36,9 @@ strict rule severity map 由 tsgo policy 负责。
30
36
 
31
37
  test policy 使用 `@effect/vitest`。
32
38
 
39
+ target 的 test entry 由 provider package contribution 暴露为 `pnpm test`,底层脚本是
40
+ `vitest run`。
41
+
33
42
  Effect tests SHOULD 使用 `it.effect`、`it.live` 或 layer 组织。
34
43
 
35
44
  target SHOULD 保留 provider record 中声明的 test entry pattern,并通过 package script 执行测试。
@@ -41,7 +50,8 @@ target SHOULD 保留 provider record 中声明的 test entry pattern,并通过
41
50
  verification policy 描述 local diagnostic commands 和 stage semantics,但不实现 Prelude target lifecycle。
42
51
 
43
52
  Prelude 仍负责 target materialization、provider record maintain、drift handling 和 target-level verify
44
- orchestration。
53
+ orchestration。target 的总 `pnpm verify` MAY include build、knip 或 release gates;effect-harness
54
+ 必须至少把 `pnpm typecheck`、`pnpm test` 和 `pnpm lint --max-warnings 0` 组合进 target verify。
45
55
 
46
56
  ## Stages
47
57
 
@@ -221,7 +221,10 @@
221
221
  "@effect/vitest": "4.0.0-beta.92",
222
222
  "@effect/tsgo": "0.15.0",
223
223
  "@effect/language-service": "0.86.2",
224
- "@typescript/native-preview": "7.0.0-dev.20260630.1"
224
+ "@typescript/native-preview": "7.0.0-dev.20260630.1",
225
+ "@antfu/eslint-config": "^9.0.0",
226
+ "eslint": "^10.3.0",
227
+ "vitest": "^4.1.8"
225
228
  },
226
229
  "managedSurfaces": {
227
230
  "targetReceives": [
@@ -229,6 +232,8 @@
229
232
  "package.json dependency and devDependency structured pointers",
230
233
  "tsconfig.json @effect/language-service plugin structured pointer",
231
234
  "editor policy structured pointer for target editor settings",
235
+ "eslint package baseline and lint script structured pointers",
236
+ "test package baseline and test script structured pointers",
232
237
  "lint, test, and verification policy records",
233
238
  "provider-managed docs bundle at .prelude/providers/effect-harness/docs",
234
239
  "provider-managed snippets at .prelude/providers/effect-harness/snippets"
@@ -264,7 +269,8 @@
264
269
  "testing": {
265
270
  "field": "devDependencies",
266
271
  "packages": {
267
- "@effect/vitest": "4.0.0-beta.92"
272
+ "@effect/vitest": "4.0.0-beta.92",
273
+ "vitest": "^4.1.8"
268
274
  }
269
275
  },
270
276
  "diagnostics": {
@@ -279,6 +285,13 @@
279
285
  "packages": {
280
286
  "@typescript/native-preview": "7.0.0-dev.20260630.1"
281
287
  }
288
+ },
289
+ "linting": {
290
+ "field": "devDependencies",
291
+ "packages": {
292
+ "@antfu/eslint-config": "^9.0.0",
293
+ "eslint": "^10.3.0"
294
+ }
282
295
  }
283
296
  },
284
297
  "scripts": {
@@ -289,6 +302,14 @@
289
302
  "typecheck": {
290
303
  "semantic": "primary Effect diagnostics",
291
304
  "defaultCommand": "tsgo --noEmit"
305
+ },
306
+ "test": {
307
+ "semantic": "run Effect tests",
308
+ "defaultCommand": "vitest run"
309
+ },
310
+ "lint": {
311
+ "semantic": "run ESLint guardrails",
312
+ "defaultCommand": "eslint"
292
313
  }
293
314
  }
294
315
  },
@@ -573,12 +594,23 @@
573
594
  "rules": {
574
595
  "restrictedImports": [
575
596
  "node:test",
576
- "vitest",
577
597
  "@effect/cli",
578
598
  "@effect/cli/*",
579
599
  "repos/effect/**",
580
600
  "repos/tsgo/**"
581
601
  ],
602
+ "restrictedVitestImports": [
603
+ "describe",
604
+ "it",
605
+ "test"
606
+ ],
607
+ "allowedVitestImports": [
608
+ "vi",
609
+ "beforeEach",
610
+ "afterEach",
611
+ "beforeAll",
612
+ "afterAll"
613
+ ],
582
614
  "restrictedSyntax": [
583
615
  "Context.Tag",
584
616
  "Effect.catchAllCause",
@@ -598,10 +630,10 @@
598
630
  "mode": "command-policy",
599
631
  "stage": "tests",
600
632
  "command": "pnpm test",
601
- "packageScript": "vitest run tests/*.test.ts",
633
+ "packageScript": "vitest run",
602
634
  "framework": "@effect/vitest",
603
635
  "expectedEntries": [
604
- "tests/*.test.ts"
636
+ "tests/**/*.test.ts"
605
637
  ],
606
638
  "effectEntrypoints": [
607
639
  "it.effect",
@@ -609,8 +641,12 @@
609
641
  "layer"
610
642
  ],
611
643
  "disallowedImports": [
612
- "node:test",
613
- "vitest"
644
+ "node:test"
645
+ ],
646
+ "disallowedVitestImports": [
647
+ "describe",
648
+ "it",
649
+ "test"
614
650
  ]
615
651
  },
616
652
  "verificationPolicy": {
package/provider/index.md CHANGED
@@ -77,8 +77,11 @@ provider 当前暴露以下能力:
77
77
  | Effect testing baseline | `contributions.packageJson.dependencyGroups.testing` | `package.json` devDependencies |
78
78
  | Effect diagnostics packages | `contributions.packageJson.dependencyGroups.diagnostics` | `package.json` devDependencies |
79
79
  | Native tsgo backend package | `contributions.packageJson.dependencyGroups.nativeBackend` | `package.json` devDependencies |
80
+ | ESLint baseline | `contributions.packageJson.dependencyGroups.linting` | `package.json` devDependencies |
80
81
  | Effect diagnostics | `contributions.packageJson.scripts.typecheck` | `tsgo --noEmit` |
81
82
  | Native tsgo backend setup | `contributions.packageJson.scripts.prepare` | `effect-tsgo patch` |
83
+ | Effect tests | `contributions.packageJson.scripts.test` | `vitest run` |
84
+ | ESLint guardrail entry | `contributions.packageJson.scripts.lint` | `eslint` |
82
85
  | Strict language-service policy | `contributions.tsconfig.compilerOptions.plugins[]` | `tsconfig.json` plugin |
83
86
  | Strict tsgo execution policy | `contributions.tsconfig.tsgo` | `tsconfig.json` projection and package scripts |
84
87
  | Editor policy | `contributions.editorPolicy` | editor settings projection |
@@ -103,6 +106,7 @@ Target 应该接收:
103
106
  - `package.json` dependencies and scripts
104
107
  - `tsconfig.json` strict language-service plugin
105
108
  - editor settings projection
109
+ - ESLint package baseline and guardrail config projection
106
110
  - lint/test/verification policy records
107
111
  - `.prelude/providers/effect-harness/provider.json` provider record
108
112
  - `.prelude/providers/effect-harness/docs/**` docs bundle
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes