@sayoriqwq/effect-harness 0.0.4 → 0.1.1

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 (105) hide show
  1. package/README.md +9 -77
  2. package/diagnostics/effect-routes.md +6 -0
  3. package/diagnostics/index.md +10 -0
  4. package/diagnostics/tsgo-routes.md +5 -0
  5. package/dist/src/eslint.d.ts +57 -0
  6. package/dist/src/eslint.js +42 -0
  7. package/dist/src/eslint.js.map +1 -0
  8. package/dist/src/index.d.ts +2 -0
  9. package/dist/src/index.js +3 -0
  10. package/dist/src/index.js.map +1 -0
  11. package/dist/src/prelude.d.ts +6 -0
  12. package/dist/src/prelude.js +161 -0
  13. package/dist/src/prelude.js.map +1 -0
  14. package/package.json +25 -17
  15. package/prelude-assets/effect/managed/docs/diagnostics.md +6 -0
  16. package/prelude-assets/effect/managed/docs/editor-policy.md +5 -0
  17. package/prelude-assets/effect/managed/docs/effect-code.md +5 -0
  18. package/prelude-assets/effect/managed/docs/index.md +14 -0
  19. package/prelude-assets/effect/managed/docs/managed-surfaces.md +5 -0
  20. package/prelude-assets/effect/managed/docs/package-config.md +20 -0
  21. package/prelude-assets/effect/managed/docs/quality-policy.md +5 -0
  22. package/prelude-assets/effect/managed/docs/source-identity.md +5 -0
  23. package/prelude-assets/guidance/eslint.md +15 -0
  24. package/repos/effect.subtree.json +2 -2
  25. package/repos/tsgo.subtree.json +2 -2
  26. package/HARNESS.md +0 -66
  27. package/dist/bin/effect-harness.d.ts +0 -2
  28. package/dist/bin/effect-harness.js +0 -34
  29. package/dist/bin/effect-harness.js.map +0 -1
  30. package/dist/src/cli/Main.d.ts +0 -7
  31. package/dist/src/cli/Main.js +0 -45
  32. package/dist/src/cli/Main.js.map +0 -1
  33. package/dist/src/harness/Errors.d.ts +0 -24
  34. package/dist/src/harness/Errors.js +0 -26
  35. package/dist/src/harness/Errors.js.map +0 -1
  36. package/dist/src/harness/Guardrails.d.ts +0 -7
  37. package/dist/src/harness/Guardrails.js +0 -50
  38. package/dist/src/harness/Guardrails.js.map +0 -1
  39. package/dist/src/harness/Model.d.ts +0 -52
  40. package/dist/src/harness/Model.js +0 -170
  41. package/dist/src/harness/Model.js.map +0 -1
  42. package/dist/src/harness/ModuleSources.d.ts +0 -5
  43. package/dist/src/harness/ModuleSources.js +0 -47
  44. package/dist/src/harness/ModuleSources.js.map +0 -1
  45. package/dist/src/harness/ProviderDiscovery.d.ts +0 -172
  46. package/dist/src/harness/ProviderDiscovery.js +0 -157
  47. package/dist/src/harness/ProviderDiscovery.js.map +0 -1
  48. package/dist/src/harness/SourcePin.d.ts +0 -4
  49. package/dist/src/harness/SourcePin.js +0 -214
  50. package/dist/src/harness/SourcePin.js.map +0 -1
  51. package/dist/src/harness/verify/JsonFields.d.ts +0 -1
  52. package/dist/src/harness/verify/JsonFields.js +0 -4
  53. package/dist/src/harness/verify/JsonFields.js.map +0 -1
  54. package/dist/src/harness/verify/Pipeline.d.ts +0 -7
  55. package/dist/src/harness/verify/Pipeline.js +0 -55
  56. package/dist/src/harness/verify/Pipeline.js.map +0 -1
  57. package/dist/src/harness/verify/ProviderProfile.d.ts +0 -3
  58. package/dist/src/harness/verify/ProviderProfile.js +0 -726
  59. package/dist/src/harness/verify/ProviderProfile.js.map +0 -1
  60. package/dist/src/harness/verify/ProviderRepository.d.ts +0 -4
  61. package/dist/src/harness/verify/ProviderRepository.js +0 -127
  62. package/dist/src/harness/verify/ProviderRepository.js.map +0 -1
  63. package/dist/src/harness/verify/Tsgo.d.ts +0 -3
  64. package/dist/src/harness/verify/Tsgo.js +0 -166
  65. package/dist/src/harness/verify/Tsgo.js.map +0 -1
  66. package/dist/src/harness/verify/TsgoMetadata.d.ts +0 -4
  67. package/dist/src/harness/verify/TsgoMetadata.js +0 -50
  68. package/dist/src/harness/verify/TsgoMetadata.js.map +0 -1
  69. package/dist/src/harness/verify/TsgoPolicy.d.ts +0 -208
  70. package/dist/src/harness/verify/TsgoPolicy.js +0 -143
  71. package/dist/src/harness/verify/TsgoPolicy.js.map +0 -1
  72. package/dist/src/harness/verify/TsgoSuppressions.d.ts +0 -2
  73. package/dist/src/harness/verify/TsgoSuppressions.js +0 -24
  74. package/dist/src/harness/verify/TsgoSuppressions.js.map +0 -1
  75. package/dist/src/harness/verify/VerifyStage.d.ts +0 -62
  76. package/dist/src/harness/verify/VerifyStage.js +0 -85
  77. package/dist/src/harness/verify/VerifyStage.js.map +0 -1
  78. package/dist/src/platform/Json.d.ts +0 -4
  79. package/dist/src/platform/Json.js +0 -16
  80. package/dist/src/platform/Json.js.map +0 -1
  81. package/dist/src/platform/Process.d.ts +0 -6
  82. package/dist/src/platform/Process.js +0 -35
  83. package/dist/src/platform/Process.js.map +0 -1
  84. package/harness/code.md +0 -83
  85. package/harness/diagnostic-layers.md +0 -94
  86. package/harness/effect-routes.md +0 -50
  87. package/harness/feedback-loop.md +0 -156
  88. package/harness/index.md +0 -83
  89. package/harness/offcial-guide.md +0 -50
  90. package/harness/offcial-migrate.md +0 -220
  91. package/harness/source.md +0 -91
  92. package/harness/tsgo-routes.md +0 -58
  93. package/harness/tsgo.md +0 -241
  94. package/provider/docs/diagnostics.md +0 -48
  95. package/provider/docs/discovery.md +0 -104
  96. package/provider/docs/editor-policy.md +0 -55
  97. package/provider/docs/effect-code.md +0 -41
  98. package/provider/docs/index.md +0 -48
  99. package/provider/docs/managed-surfaces.md +0 -51
  100. package/provider/docs/package-config.md +0 -71
  101. package/provider/docs/quality-policy.md +0 -68
  102. package/provider/docs/source-identity.md +0 -48
  103. package/provider/effect-harness.provider.json +0 -1020
  104. package/provider/index.md +0 -189
  105. package/provider/snippets/agents.md +0 -34
package/harness/tsgo.md DELETED
@@ -1,241 +0,0 @@
1
- ---
2
- audience: [agent, human]
3
- authors:
4
- - codex
5
- reviewed_by: []
6
- purpose: 记录 effect-harness strict tsgo policy、ADR 决策和升级闭环。
7
- status: active
8
- sources:
9
- - repos/tsgo/README.md
10
- - repos/tsgo/_packages/tsgo/src/metadata.json
11
- - repos/tsgo/_packages/tsgo/src/setup/consts.ts
12
- - repos/tsgo/_packages/tsgo/src/setup/changes.ts
13
- - repos/tsgo/etscore/options.go
14
- - repos/tsgo/internal/rulerunner/diagnostics.go
15
- - provider/effect-harness.provider.json
16
- - tsconfig.json
17
- updated: 2026-07-01
18
- ---
19
-
20
- # Tsgo Policy
21
-
22
- ## Decisions
23
-
24
- 当前第三阶段采用 strict tsgo policy。目标不是“只要没有 TypeScript error 就通过”,而是
25
- `tsgo --noEmit` 对 Effect diagnostics 达到 0 error、0 warning、0 suggestion、0 message。
26
-
27
- `effect-tsgo patch` 只负责准备 native backend。类型检查和 Effect 语义诊断入口固定为:
28
-
29
- ```bash
30
- tsgo --noEmit
31
- ```
32
-
33
- ## POLICY_NATIVE_BACKEND
34
-
35
- 当前 native backend 固定为 `@typescript/native-preview@7.0.0-dev.20260630.1`。
36
-
37
- `@effect/tsgo@0.15.0` 可以识别 `@typescript/native-preview`,也可以识别 `typescript >= 7`。
38
- 本仓 provider 默认只投影 `@typescript/native-preview`。
39
-
40
- `effect-tsgo` 是 setup/patch CLI。`tsgo` 是被 patch 后执行 `--noEmit` 的诊断 binary。
41
-
42
- `repos/tsgo` pin 到 `Effect-TS/tsgo` commit
43
- `43ed476270fb3cf78fe7afac2086d67340ca0486`,该 commit 对应当前 `@effect/tsgo@0.15.0`
44
- package baseline。
45
-
46
- ## POLICY_DIAGNOSTIC_GATE
47
-
48
- provider strict profile 固定以下 gate:
49
-
50
- ```json
51
- {
52
- "diagnostics": true,
53
- "includeSuggestionsInTsc": true,
54
- "ignoreEffectSuggestionsInTscExitCode": false,
55
- "ignoreEffectWarningsInTscExitCode": false,
56
- "ignoreEffectErrorsInTscExitCode": false
57
- }
58
- ```
59
-
60
- `diagnosticSeverity` MUST 是显式 object。`diagnosticSeverity: null` 表示关闭 Effect diagnostics,
61
- 在本仓和 provider projection 中都不允许。
62
-
63
- ## POLICY_RULE_MAP
64
-
65
- strict rule map 只覆盖 `supportedEffect` 包含 `v4` 的规则。当前 `@effect/tsgo@0.15.0`
66
- metadata 派生出 76 条 v4 规则。
67
-
68
- v4 correctness 规则中官方默认 `off` 的规则提升为 `error`。
69
-
70
- `effectNative` 规则全部提升为 `warning`。
71
-
72
- `antipattern` 和 `style` 里官方默认 `off` 的 v4 规则提升为 `warning`。
73
-
74
- 官方默认为 `suggestion` 的规则保持 `suggestion`,由 diagnostic gate 让 suggestion 也参与
75
- exit-code hard gate。
76
-
77
- | Rule | Severity |
78
- | --- | --- |
79
- | `anyUnknownInErrorContext` | `error` |
80
- | `asyncFunction` | `warning` |
81
- | `catchAllToMapError` | `suggestion` |
82
- | `catchToOrElseSucceed` | `suggestion` |
83
- | `catchUnfailableEffect` | `suggestion` |
84
- | `classSelfMismatch` | `error` |
85
- | `cryptoRandomUUID` | `warning` |
86
- | `cryptoRandomUUIDInEffect` | `warning` |
87
- | `deterministicKeys` | `warning` |
88
- | `duplicatePackage` | `warning` |
89
- | `effectDoNotation` | `warning` |
90
- | `effectFnIife` | `warning` |
91
- | `effectFnImplicitAny` | `error` |
92
- | `effectFnOpportunity` | `suggestion` |
93
- | `effectGenUsesAdapter` | `warning` |
94
- | `effectInFailure` | `warning` |
95
- | `effectInVoidSuccess` | `warning` |
96
- | `effectMapFlatten` | `suggestion` |
97
- | `effectMapVoid` | `suggestion` |
98
- | `effectSucceedWithVoid` | `suggestion` |
99
- | `extendsNativeError` | `warning` |
100
- | `floatingEffect` | `error` |
101
- | `genericEffectServices` | `warning` |
102
- | `globalConsole` | `warning` |
103
- | `globalConsoleInEffect` | `warning` |
104
- | `globalDate` | `warning` |
105
- | `globalDateInEffect` | `warning` |
106
- | `globalErrorInEffectCatch` | `warning` |
107
- | `globalErrorInEffectFailure` | `warning` |
108
- | `globalFetch` | `warning` |
109
- | `globalFetchInEffect` | `warning` |
110
- | `globalRandom` | `warning` |
111
- | `globalRandomInEffect` | `warning` |
112
- | `globalTimers` | `warning` |
113
- | `globalTimersInEffect` | `warning` |
114
- | `instanceOfSchema` | `warning` |
115
- | `layerMergeAllWithDependencies` | `warning` |
116
- | `lazyEffect` | `suggestion` |
117
- | `lazyPromiseInEffectSync` | `warning` |
118
- | `leakingRequirements` | `suggestion` |
119
- | `missedPipeableOpportunity` | `warning` |
120
- | `missingEffectContext` | `error` |
121
- | `missingEffectError` | `error` |
122
- | `missingLayerContext` | `error` |
123
- | `missingReturnYieldStar` | `error` |
124
- | `missingStarInYieldEffectGen` | `error` |
125
- | `multipleCatchTag` | `suggestion` |
126
- | `multipleEffectProvide` | `warning` |
127
- | `nestedEffectGenYield` | `warning` |
128
- | `newPromise` | `warning` |
129
- | `newSchemaClass` | `warning` |
130
- | `nodeBuiltinImport` | `warning` |
131
- | `outdatedApi` | `warning` |
132
- | `overriddenSchemaConstructor` | `error` |
133
- | `preferSchemaOverJson` | `warning` |
134
- | `processEnv` | `warning` |
135
- | `processEnvInEffect` | `warning` |
136
- | `redundantMapError` | `suggestion` |
137
- | `redundantOrDie` | `suggestion` |
138
- | `redundantSchemaTagIdentifier` | `suggestion` |
139
- | `returnEffectInGen` | `suggestion` |
140
- | `runEffectInsideEffect` | `suggestion` |
141
- | `schemaNumber` | `suggestion` |
142
- | `schemaStructWithTag` | `suggestion` |
143
- | `serviceNotAsClass` | `warning` |
144
- | `strictBooleanExpressions` | `warning` |
145
- | `strictEffectProvide` | `warning` |
146
- | `tryCatchInEffectGen` | `suggestion` |
147
- | `unknownInEffectCatch` | `warning` |
148
- | `unnecessaryArrowBlock` | `warning` |
149
- | `unnecessaryEffectGen` | `suggestion` |
150
- | `unnecessaryFailYieldableError` | `suggestion` |
151
- | `unnecessaryPipe` | `suggestion` |
152
- | `unnecessaryPipeChain` | `suggestion` |
153
- | `unnecessaryTypeofType` | `suggestion` |
154
- | `unsafeEffectTypeAssertion` | `warning` |
155
-
156
- ## POLICY_IMPORT_STYLE
157
-
158
- Effect import style 跟随官方用户文档。provider strict profile 固定:
159
-
160
- ```json
161
- {
162
- "barrelImportPackages": ["effect"],
163
- "topLevelNamedReexports": "follow"
164
- }
165
- ```
166
-
167
- 本仓代码优先使用 `import { Effect, FileSystem, Path } from "effect"` 这一类 top-level named
168
- import。只有官方 package 仍要求不稳定子路径时,才使用 `effect/unstable/**`。
169
-
170
- ## POLICY_OVERRIDES
171
-
172
- provider 默认不生成 `overrides`。
173
-
174
- 普通源码和普通测试不得使用 `overrides` 降低 strict policy。
175
-
176
- generated code、fixture、vendored source 等明确 scope 可以在后续申请例外。例外不是默认 capability;
177
- 必须先更新本 ADR,再更新 provider profile、`tsconfig.json` 和 verifier。
178
-
179
- ## POLICY_SUPPRESSIONS
180
-
181
- `src/**`、`bin/**` 和普通 `tests/**` 禁止使用 `@effect-diagnostics ...:off` 或
182
- `@effect-diagnostics-next-line ...:off`。
183
-
184
- 诊断通过修代码解决,不通过注释关闭。
185
-
186
- ## POLICY_KEY_PATTERNS
187
-
188
- provider strict profile 固定以下 key policy:
189
-
190
- ```json
191
- {
192
- "keyPatterns": [
193
- { "target": "service", "pattern": "default", "skipLeadingPath": ["src/"] },
194
- { "target": "error", "pattern": "default", "skipLeadingPath": ["src/"] },
195
- { "target": "custom", "pattern": "default", "skipLeadingPath": ["src/"] }
196
- ],
197
- "extendedKeyDetection": true
198
- }
199
- ```
200
-
201
- ## POLICY_LAYER_GRAPH
202
-
203
- provider strict profile 固定:
204
-
205
- ```json
206
- {
207
- "layerGraphFollowDepth": 1,
208
- "noExternal": true,
209
- "inlays": true,
210
- "allowedDuplicatedPackages": [],
211
- "pipeableMinArgCount": 2,
212
- "effectFn": ["span"]
213
- }
214
- ```
215
-
216
- 需要 Mermaid 图时,由 harness 维护本地可读文档或 artifact。provider 默认不依赖外部 Mermaid 链接。
217
-
218
- ## POLICY_UPGRADE_LOOP
219
-
220
- 升级 `@effect/tsgo` 或 `@effect/language-service` 时,先读取 pinned `repos/tsgo` metadata。
221
-
222
- 如果只是字段、版本或 commit 迁移,可以按当前 policy 直接迁移。
223
-
224
- 如果规则语义发生改变,迁移必须 block,让用户 decide。
225
-
226
- 如果新增 v4 rule 或新增影响 provider projection 的 capability,迁移必须 block,让用户 decide
227
- 是否引入。用户确认后,先更新本 ADR,再更新 provider profile、`tsconfig.json` 和 verifier。
228
-
229
- ## VERIFIER_CONTRACT
230
-
231
- `pnpm verify` MUST 通过 `harness-contract` 和 `tsgo-diagnostics` stages 检查:
232
-
233
- - `harness/tsgo.md` 包含所有稳定 policy keyword。
234
- - `harness/tsgo.md` 包含当前 strict v4 rule map 的所有 rule name。
235
- - `repos/tsgo/_packages/tsgo/src/metadata.json` 派生出的 v4 rule map 与
236
- `src/harness/verify/TsgoPolicy.ts` 一致。
237
- - `tsconfig.json` 与 provider profile 的 `@effect/language-service` plugin policy 一致。
238
- - provider profile 的 `tsgoPolicy` 指向 `tsgo-official-source`。
239
- - `package.json` 使用 `effect-tsgo patch` 和 `tsgo --noEmit`。
240
- - 普通源码没有 Effect diagnostic suppress 注释。
241
- - `effect-tsgo --version` 与 `tsgo --version` 都能确认当前 `@effect/tsgo` baseline。
@@ -1,48 +0,0 @@
1
- ---
2
- audience: [agent, human]
3
- authors:
4
- - codex
5
- reviewed_by: []
6
- purpose: 说明接入 effect-harness 后 target 内 strict tsgo diagnostic gate 的受管口径。
7
- status: active
8
- sources:
9
- - provider/effect-harness.provider.json
10
- - harness/tsgo.md
11
- - repos/tsgo/README.md
12
- updated: 2026-07-02
13
- ---
14
-
15
- # Diagnostics
16
-
17
- ## Commands
18
-
19
- target 的 Effect diagnostics 主路径是:
20
-
21
- ```bash
22
- tsgo --noEmit
23
- ```
24
-
25
- target 的 native backend 准备命令是:
26
-
27
- ```bash
28
- effect-tsgo patch
29
- ```
30
-
31
- Prelude materialization 应通过 provider profile 维护这些 script 指针。
32
-
33
- ## Gate
34
-
35
- strict profile 要求 `tsgo --noEmit` 达到 0 error、0 warning、0 suggestion、0 message。
36
-
37
- `@effect/language-service` plugin MUST 保持 provider profile 声明的 strict v4 policy。
38
-
39
- target SHOULD 修复 diagnostics。target SHOULD NOT 用 local override、diagnostic suppress 注释或
40
- 降级 rule map 绕过 provider gate。
41
-
42
- ## Drift
43
-
44
- `package.json`、`tsconfig.json`、provider record、docs bundle 和 snippets 都是 provider-managed
45
- surface。
46
-
47
- target 修改这些 surface 后,Prelude maintain 应区分本地 drift、provider update 和可自动更新的
48
- base match。
@@ -1,104 +0,0 @@
1
- ---
2
- audience: [agent, human]
3
- authors:
4
- - codex
5
- reviewed_by: []
6
- purpose: 说明 Prelude 如何通过 provider discovery 消费 effect-harness provider artifact。
7
- status: active
8
- sources:
9
- - provider/effect-harness.provider.json
10
- - src/harness/ProviderDiscovery.ts
11
- - src/cli/Main.ts
12
- updated: 2026-07-02
13
- ---
14
-
15
- # Provider Discovery
16
-
17
- ## Interface
18
-
19
- Prelude SHOULD 通过 package artifact 执行 discovery,而不是复制
20
- `provider/effect-harness.provider.json` 到 Prelude 源码中维护。
21
-
22
- 稳定入口是:
23
-
24
- ```bash
25
- npx --yes @sayoriqwq/effect-harness provider-discover
26
- ```
27
-
28
- 本仓 self-conformance 或本地调试 MAY 显式传入 artifact root:
29
-
30
- ```bash
31
- node bin/effect-harness.ts provider-discover --harness .
32
- ```
33
-
34
- discovery 输出是 machine-readable JSON。它从 provider profile 和 package manifest 派生,不是第二份
35
- profile 真源。
36
-
37
- ## Shape
38
-
39
- discovery envelope MUST 暴露 provider identity:
40
-
41
- - provider id
42
- - contract version
43
- - provider version
44
- - default profile
45
- - selected profile
46
-
47
- discovery envelope MUST 暴露 package locator:
48
-
49
- - package name
50
- - package version
51
- - provider artifact root
52
- - provider profile path
53
- - package files
54
- - discovery command
55
-
56
- discovery envelope MUST 暴露 target-managed surfaces:
57
-
58
- - provider record surface
59
- - `package.json` contribution
60
- - `tsconfig.json` contribution
61
- - editor policy contribution
62
- - lint policy contribution
63
- - test policy contribution
64
- - verification policy contribution
65
- - docs bundle contribution
66
- - snippets contribution
67
-
68
- discovery envelope MUST 暴露 artifact-only references:
69
-
70
- - Effect source tree identity
71
- - Effect source contract identity
72
- - Effect anchor doc identity
73
- - Effect route doc identity
74
- - tsgo source tree identity
75
- - tsgo source contract identity
76
- - tsgo anchor doc identity
77
- - tsgo route doc identity
78
-
79
- discovery envelope MUST 暴露 internal harness surfaces,使 Prelude 能明确这些内容只服务
80
- effect-harness 本仓维护和 self-conformance。
81
-
82
- ## Prelude
83
-
84
- Prelude 是 target lifecycle owner。Prelude SHOULD 把 discovery 输出转成自己的 provider record、
85
- materialization plan、drift record 和 maintain/update 流程。
86
-
87
- Prelude MUST NOT 把 provider profile 复制进 Prelude 代码并手写保持同步。
88
-
89
- Prelude MUST NOT 把 artifact-only references 当作 target-managed files 投递。`repos/effect/`、
90
- `repos/tsgo/`、subtree contracts、route docs 和 anchor docs 只随 provider artifact 保留,target record
91
- 只记录 source identity。
92
-
93
- Prelude SHOULD materialize docs bundle 和 snippets,因为它们是 provider-managed contributions。
94
-
95
- Prelude SHOULD materialize package、tsconfig、editor、lint、test 和 verification contributions,
96
- 并把它们纳入 target drift detection。
97
-
98
- ## Boundary
99
-
100
- `provider-discover` 只做发现和声明。它不创建 `.prelude/**`,不修改 target 仓库,不运行
101
- maintain lifecycle,也不替 Prelude 决定 conflict policy。
102
-
103
- effect-harness 继续维护 provider artifact、source identity、strict tsgo policy、docs bundle 和
104
- snippets。Prelude 继续维护 target lifecycle。
@@ -1,55 +0,0 @@
1
- ---
2
- audience: [agent, human]
3
- authors:
4
- - codex
5
- reviewed_by: []
6
- purpose: 说明 target 接入 effect-harness 后 editor policy contribution 的层级和边界。
7
- status: active
8
- sources:
9
- - provider/effect-harness.provider.json
10
- - harness/source.md
11
- - repos/effect.subtree.json
12
- - repos/tsgo.subtree.json
13
- updated: 2026-07-02
14
- ---
15
-
16
- # Editor Policy
17
-
18
- ## Boundary
19
-
20
- editor policy 服务于 provider-internal source identity。
21
-
22
- target SHOULD 接收 editor settings contribution,但 target MUST NOT 接收 provider source tree 本体。
23
-
24
- `repos/**` 表示 provider artifact 内的 pinned source reference,不表示 target root 需要维护同名目录。
25
-
26
- ## Levels
27
-
28
- auto-import exclusion 是 hard boundary。target editor SHOULD 排除 provider-internal source references,避免
29
- 应用代码从 pinned source tree 自动 import。
30
-
31
- watch exclusion 是 recommended policy。target 可以按编辑器能力关闭 provider-internal source reference 的
32
- file watching。
33
-
34
- search exclusion 是 recommended policy。target 可以按编辑器能力关闭 provider-internal source reference 的
35
- default search。
36
-
37
- file visibility 是 preference。provider profile 只表达建议,不要求 target 隐藏所有 source identity。
38
-
39
- ## VSCode
40
-
41
- VSCode projection SHOULD 设置 TypeScript 和 JavaScript auto-import exclude patterns。
42
-
43
- VSCode projection SHOULD 设置 watcher 与 search exclusion。
44
-
45
- VSCode projection MAY 设置 file visibility preference。
46
-
47
- Effect source identity 当前 file visibility preference 是 enabled。
48
-
49
- tsgo source identity 当前 file visibility preference 是 disabled。
50
-
51
- ## Zed
52
-
53
- Zed projection SHOULD 使用 Zed 的 LSP settings shape 表达 auto-import exclusion。
54
-
55
- Zed projection MAY 使用 file scan exclusions 表达 watch、search 或 visibility preference。
@@ -1,41 +0,0 @@
1
- ---
2
- audience: [agent, human]
3
- authors:
4
- - codex
5
- reviewed_by: []
6
- purpose: 说明接入 effect-harness 后 target 内 Effect 代码应遵守的编码基线。
7
- status: active
8
- sources:
9
- - provider/effect-harness.provider.json
10
- - repos/effect/LLMS.md
11
- updated: 2026-07-02
12
- ---
13
-
14
- # Effect Code
15
-
16
- ## Baseline
17
-
18
- target 接入 effect-harness 后,Effect 代码应以 provider profile 声明的 v4 beta package baseline
19
- 为准。
20
-
21
- 代码从已安装 package import。普通应用代码和测试代码 MUST NOT 从 provider-internal
22
- `repos/effect` 或 `repos/tsgo` import。
23
-
24
- ## Patterns
25
-
26
- Effect 程序 SHOULD 优先使用 `Effect.gen` 和 `Effect.fn` 组织可读流程。
27
-
28
- Effect service definition 当前 SHOULD 使用 `Context.Service`。
29
-
30
- Node 入口 SHOULD 使用 `NodeRuntime.runMain`。
31
-
32
- Effect 测试 SHOULD 使用 `@effect/vitest` 的 `it.effect`、`it.live` 或 layer 组织。
33
-
34
- CLI 代码 SHOULD 使用 `effect/unstable/cli`。target 不应引入旧的 `@effect/cli` 口径。
35
-
36
- ## Errors
37
-
38
- 错误建模 SHOULD 使用 Effect v4 baseline 下的 typed error pattern,例如
39
- `Schema.TaggedErrorClass`。
40
-
41
- 在 `Effect.gen` 中抛出终止性 Effect 时,SHOULD 使用 `return yield*` 让 TypeScript 正确理解控制流。
@@ -1,48 +0,0 @@
1
- ---
2
- audience: [agent, human]
3
- authors:
4
- - codex
5
- reviewed_by: []
6
- purpose: 定义 effect-harness provider 投递给 target 的 docs bundle 文件清单和边界。
7
- status: active
8
- sources:
9
- - provider/effect-harness.provider.json
10
- - provider/docs/effect-code.md
11
- - provider/docs/diagnostics.md
12
- - provider/docs/discovery.md
13
- - provider/docs/editor-policy.md
14
- - provider/docs/managed-surfaces.md
15
- - provider/docs/package-config.md
16
- - provider/docs/quality-policy.md
17
- - provider/docs/source-identity.md
18
- updated: 2026-07-02
19
- ---
20
-
21
- # Docs Bundle
22
-
23
- `provider/docs/**` 是 provider-managed target docs bundle 的 source。Prelude materialization
24
- 应该把这些文件投递到 `.prelude/providers/effect-harness/docs/**`。
25
-
26
- ## Files
27
-
28
- | Source | Target | Purpose |
29
- | --- | --- | --- |
30
- | `provider/docs/effect-code.md` | `.prelude/providers/effect-harness/docs/effect-code.md` | 说明 target 内 Effect 代码的编码基线。 |
31
- | `provider/docs/diagnostics.md` | `.prelude/providers/effect-harness/docs/diagnostics.md` | 说明 target 内 strict tsgo diagnostic gate。 |
32
- | `provider/docs/discovery.md` | `.prelude/providers/effect-harness/docs/discovery.md` | 说明 Prelude 如何通过 provider discovery 消费 package artifact。 |
33
- | `provider/docs/editor-policy.md` | `.prelude/providers/effect-harness/docs/editor-policy.md` | 说明 target 内 editor policy 的 hard、recommended 和 preference 层级。 |
34
- | `provider/docs/managed-surfaces.md` | `.prelude/providers/effect-harness/docs/managed-surfaces.md` | 说明 target 内受管 surface、artifact-only reference 和 feedback loop 边界。 |
35
- | `provider/docs/package-config.md` | `.prelude/providers/effect-harness/docs/package-config.md` | 说明 target 内 package baseline、script baseline 和 `tsconfig.json` projection。 |
36
- | `provider/docs/quality-policy.md` | `.prelude/providers/effect-harness/docs/quality-policy.md` | 说明 target 内 lint、test 和 verify policy。 |
37
- | `provider/docs/source-identity.md` | `.prelude/providers/effect-harness/docs/source-identity.md` | 说明 provider-internal source pin 如何以 identity 形式出现在 target record 中。 |
38
-
39
- ## Boundary
40
-
41
- docs bundle MUST 面向 target 使用者说明受管能力。
42
-
43
- docs bundle MUST NOT 要求 target 拥有 `repos/effect/`、`repos/tsgo/`、subtree contracts、Codex
44
- runtime 资产、feedback intake、`.effect-harness.json` 或 effect-harness 管理的 `AGENTS.md`
45
- block。
46
-
47
- docs bundle SHOULD 只引用 target 可见 surface:provider record、package baseline、`tsconfig.json`
48
- projection、diagnostic scripts、docs bundle 和 snippets。
@@ -1,51 +0,0 @@
1
- ---
2
- audience: [agent, human]
3
- authors:
4
- - codex
5
- reviewed_by: []
6
- purpose: 说明 target 接入 effect-harness 后哪些 surface 受管、哪些只是 artifact reference。
7
- status: active
8
- sources:
9
- - provider/effect-harness.provider.json
10
- - provider/docs/index.md
11
- - harness/feedback-loop.md
12
- updated: 2026-07-02
13
- ---
14
-
15
- # Managed Surfaces
16
-
17
- ## Target-Managed
18
-
19
- target-managed surfaces 是 exported harness 的本地投影。
20
-
21
- provider record、package baseline、`tsconfig.json` projection、editor settings projection、docs bundle、
22
- snippets、lint policy、test policy 和 verification policy 都属于 target 应记录的 provider-managed
23
- 能力。
24
-
25
- target 修改这些 surface 后,Prelude maintain SHOULD 区分 local drift、provider update 和 base match。
26
-
27
- ## Artifact-Only
28
-
29
- source identity、source pin contract、route docs 和 upstream source references 是 provider artifact
30
- reference。
31
-
32
- target 可以通过 provider record 读取 source identity,但 target MUST NOT 接收 provider-internal source
33
- tree、subtree contract 或 route docs 本体。
34
-
35
- ## Snippets
36
-
37
- snippet 是 provider-managed source content。
38
-
39
- effect-harness 可以提供 snippet contribution,但 effect-harness MUST NOT 直接管理 target `AGENTS.md`
40
- block。
41
-
42
- target-local agent policy 可以 include、copy 或改写 snippet,并由 target owner 决定本地落点。
43
-
44
- ## Feedback Loop
45
-
46
- verification policy 的 completion gate 是 `pnpm verify`。
47
-
48
- provider docs bundle 说明如何定位失败 stage、diagnostic layer 和受管 surface。
49
-
50
- feedback loop semantics 用于判断下一步读哪个 provider doc,不表示 effect-harness 接管 Prelude
51
- target lifecycle。
@@ -1,71 +0,0 @@
1
- ---
2
- audience: [agent, human]
3
- authors:
4
- - codex
5
- reviewed_by: []
6
- purpose: 说明 target 接入 effect-harness 后 package 与 TypeScript 配置的受管口径。
7
- status: active
8
- sources:
9
- - provider/effect-harness.provider.json
10
- - harness/tsgo.md
11
- updated: 2026-07-02
12
- ---
13
-
14
- # Package Config
15
-
16
- ## Package
17
-
18
- target 的 runtime dependencies MUST 包含 `effect` 和 `@effect/platform-node`。
19
-
20
- target 的 Effect testing dependency MUST 包含 `@effect/vitest`。
21
-
22
- target 的 test runner dependency MUST 包含 `vitest`。
23
-
24
- target 的 diagnostics dependencies MUST 包含 `@effect/tsgo` 和 `@effect/language-service`。
25
-
26
- target 的 native backend dependency MUST 包含 `@typescript/native-preview`。
27
-
28
- target 的 lint dependencies MUST 包含 `eslint` 和 `@antfu/eslint-config`。
29
-
30
- 版本基线由 provider profile 管理。target 不应该用局部版本覆盖降低 Effect v4 beta、tsgo 或
31
- language-service baseline。
32
-
33
- ## Scripts
34
-
35
- target 的 native backend setup script SHOULD 指向:
36
-
37
- ```bash
38
- effect-tsgo patch
39
- ```
40
-
41
- target 的 primary diagnostics script SHOULD 指向:
42
-
43
- ```bash
44
- tsgo --noEmit
45
- ```
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
-
59
- 这些 script 是 provider-managed 指针。Prelude materialization 和 maintain 应按 provider record
60
- 判断本地 drift。
61
-
62
- ## Tsconfig
63
-
64
- target 的 `tsconfig.json` MUST 包含 `@effect/language-service` plugin。
65
-
66
- plugin fields MUST 保持 provider profile 声明的 strict v4 policy。
67
-
68
- `diagnosticSeverity` MUST 是 provider profile 投影出的显式 rule map。
69
-
70
- target SHOULD 修复 diagnostics,而不是在 `tsconfig.json` 里添加 local override、关闭
71
- `diagnosticSeverity` 或降低 diagnostic gate。