@namewta/speculo 0.7.4 → 0.7.5

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 (157) hide show
  1. package/README.md +2 -2
  2. package/package.json +1 -1
  3. package/template/canonical/README.md +208 -63
  4. package/template/canonical/canonical-person-steelman-deliberation.md +518 -0
  5. package/template/skills/engineering-standards-builder/README.md +43 -0
  6. package/template/skills/engineering-standards-builder/SKILL.md +233 -0
  7. package/template/skills/engineering-standards-builder/examples/README.md +15 -0
  8. package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/build.gradle.kts +5 -0
  9. package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/expected.json +12 -0
  10. package/template/skills/engineering-standards-builder/examples/fallback/kotlin-gradle/src/main/kotlin/example/App.kt +2 -0
  11. package/template/skills/engineering-standards-builder/examples/go/service/.golangci.yml +3 -0
  12. package/template/skills/engineering-standards-builder/examples/go/service/cmd/api/main.go +3 -0
  13. package/template/skills/engineering-standards-builder/examples/go/service/expected.json +23 -0
  14. package/template/skills/engineering-standards-builder/examples/go/service/go.mod +3 -0
  15. package/template/skills/engineering-standards-builder/examples/go/service/internal/service/service.go +2 -0
  16. package/template/skills/engineering-standards-builder/examples/go/service/internal/service/service_test.go +3 -0
  17. package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/expected.json +22 -0
  18. package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/pom.xml +12 -0
  19. package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/src/main/java/dev/speculo/orders/OrdersApplication.java +7 -0
  20. package/template/skills/engineering-standards-builder/examples/java/spring-boot-maven/src/test/java/dev/speculo/orders/OrdersApplicationTest.java +3 -0
  21. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/.github/workflows/ci.yml +11 -0
  22. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/package.json +11 -0
  23. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/src/App.vue +2 -0
  24. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/apps/web/tsconfig.json +8 -0
  25. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/expected.json +22 -0
  26. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/package.json +11 -0
  27. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/pnpm-workspace.yaml +2 -0
  28. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/orders/pom.xml +12 -0
  29. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/orders/src/main/java/dev/speculo/orders/OrdersApplication.java +7 -0
  30. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/worker/go.mod +3 -0
  31. package/template/skills/engineering-standards-builder/examples/polyglot/monorepo/services/worker/main.go +2 -0
  32. package/template/skills/engineering-standards-builder/examples/rust/workspace/Cargo.toml +7 -0
  33. package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/cli/Cargo.toml +8 -0
  34. package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/cli/src/main.rs +1 -0
  35. package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/core/Cargo.toml +5 -0
  36. package/template/skills/engineering-standards-builder/examples/rust/workspace/crates/core/src/lib.rs +3 -0
  37. package/template/skills/engineering-standards-builder/examples/rust/workspace/expected.json +14 -0
  38. package/template/skills/engineering-standards-builder/examples/rust/workspace/rust-toolchain.toml +3 -0
  39. package/template/skills/engineering-standards-builder/examples/typescript/react-vite/expected.json +21 -0
  40. package/template/skills/engineering-standards-builder/examples/typescript/react-vite/package.json +20 -0
  41. package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/App.test.tsx +2 -0
  42. package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/App.tsx +1 -0
  43. package/template/skills/engineering-standards-builder/examples/typescript/react-vite/src/main.tsx +3 -0
  44. package/template/skills/engineering-standards-builder/examples/typescript/react-vite/tsconfig.json +10 -0
  45. package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/expected.json +22 -0
  46. package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/package.json +21 -0
  47. package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/App.test.ts +2 -0
  48. package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/App.vue +7 -0
  49. package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/src/main.ts +4 -0
  50. package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/tsconfig.json +11 -0
  51. package/template/skills/engineering-standards-builder/examples/typescript/vue-vite/vite.config.ts +2 -0
  52. package/template/skills/engineering-standards-builder/manifest.txt +112 -0
  53. package/template/skills/engineering-standards-builder/references/go/00-detection-and-scope.md +37 -0
  54. package/template/skills/engineering-standards-builder/references/go/01-language-and-idioms.md +34 -0
  55. package/template/skills/engineering-standards-builder/references/go/02-modules-packages-and-layout.md +34 -0
  56. package/template/skills/engineering-standards-builder/references/go/03-errors-context-and-concurrency.md +38 -0
  57. package/template/skills/engineering-standards-builder/references/go/04-testing-tooling-quality-gates.md +46 -0
  58. package/template/skills/engineering-standards-builder/references/go/README.md +9 -0
  59. package/template/skills/engineering-standards-builder/references/java/00-detection-and-scope.md +40 -0
  60. package/template/skills/engineering-standards-builder/references/java/01-language-packages-and-api.md +35 -0
  61. package/template/skills/engineering-standards-builder/references/java/02-build-modules-and-dependencies.md +39 -0
  62. package/template/skills/engineering-standards-builder/references/java/03-errors-nullability-resources-concurrency.md +36 -0
  63. package/template/skills/engineering-standards-builder/references/java/04-testing-tooling-quality-gates.md +36 -0
  64. package/template/skills/engineering-standards-builder/references/java/README.md +10 -0
  65. package/template/skills/engineering-standards-builder/references/java/frameworks/spring-boot.md +74 -0
  66. package/template/skills/engineering-standards-builder/references/rules/00-governance-and-precedence.md +52 -0
  67. package/template/skills/engineering-standards-builder/references/rules/01-project-discovery.md +79 -0
  68. package/template/skills/engineering-standards-builder/references/rules/02-evidence-topology-and-scope.md +87 -0
  69. package/template/skills/engineering-standards-builder/references/rules/03-interview-and-decisions.md +77 -0
  70. package/template/skills/engineering-standards-builder/references/rules/04-architecture-and-dependency-boundaries.md +58 -0
  71. package/template/skills/engineering-standards-builder/references/rules/05-files-directories-and-naming.md +53 -0
  72. package/template/skills/engineering-standards-builder/references/rules/06-apis-errors-resources-and-concurrency.md +53 -0
  73. package/template/skills/engineering-standards-builder/references/rules/07-documentation-and-comments.md +46 -0
  74. package/template/skills/engineering-standards-builder/references/rules/08-testing-strategy.md +45 -0
  75. package/template/skills/engineering-standards-builder/references/rules/09-security-configuration-and-data.md +44 -0
  76. package/template/skills/engineering-standards-builder/references/rules/10-performance-observability-and-i18n.md +36 -0
  77. package/template/skills/engineering-standards-builder/references/rules/11-tooling-quality-gates-and-ci.md +69 -0
  78. package/template/skills/engineering-standards-builder/references/rules/12-git-review-and-delivery.md +46 -0
  79. package/template/skills/engineering-standards-builder/references/rules/13-adoption-exceptions-and-ratchets.md +60 -0
  80. package/template/skills/engineering-standards-builder/references/rules/14-generation-contract.md +105 -0
  81. package/template/skills/engineering-standards-builder/references/rules/15-validation-contract.md +65 -0
  82. package/template/skills/engineering-standards-builder/references/rules/16-language-adapter-contract.md +55 -0
  83. package/template/skills/engineering-standards-builder/references/rules/README.md +23 -0
  84. package/template/skills/engineering-standards-builder/references/rust/00-detection-and-scope.md +38 -0
  85. package/template/skills/engineering-standards-builder/references/rust/01-language-api-and-safety.md +35 -0
  86. package/template/skills/engineering-standards-builder/references/rust/02-crates-workspaces-and-layout.md +36 -0
  87. package/template/skills/engineering-standards-builder/references/rust/03-errors-ownership-and-concurrency.md +37 -0
  88. package/template/skills/engineering-standards-builder/references/rust/04-testing-tooling-quality-gates.md +44 -0
  89. package/template/skills/engineering-standards-builder/references/rust/README.md +9 -0
  90. package/template/skills/engineering-standards-builder/references/typescript/00-detection-and-scope.md +58 -0
  91. package/template/skills/engineering-standards-builder/references/typescript/01-language-and-type-system.md +49 -0
  92. package/template/skills/engineering-standards-builder/references/typescript/02-modules-packages-and-runtime-boundaries.md +49 -0
  93. package/template/skills/engineering-standards-builder/references/typescript/03-functions-async-errors-resources.md +42 -0
  94. package/template/skills/engineering-standards-builder/references/typescript/04-testing-tooling-quality-gates.md +51 -0
  95. package/template/skills/engineering-standards-builder/references/typescript/README.md +27 -0
  96. package/template/skills/engineering-standards-builder/references/typescript/app-types/cli.md +11 -0
  97. package/template/skills/engineering-standards-builder/references/typescript/app-types/library.md +11 -0
  98. package/template/skills/engineering-standards-builder/references/typescript/frameworks/react.md +71 -0
  99. package/template/skills/engineering-standards-builder/references/typescript/frameworks/vue.md +131 -0
  100. package/template/skills/engineering-standards-builder/references/typescript/runtimes/browser.md +15 -0
  101. package/template/skills/engineering-standards-builder/references/typescript/runtimes/electron.md +25 -0
  102. package/template/skills/engineering-standards-builder/references/typescript/runtimes/node.md +13 -0
  103. package/template/skills/engineering-standards-builder/scripts/discover-project.mjs +957 -0
  104. package/template/skills/engineering-standards-builder/scripts/self-test.mjs +203 -0
  105. package/template/skills/engineering-standards-builder/scripts/sync-manifest.mjs +105 -0
  106. package/template/skills/engineering-standards-builder/scripts/validate-builder.mjs +255 -0
  107. package/template/skills/engineering-standards-builder/scripts/validate-generated-skill.mjs +286 -0
  108. package/template/skills/engineering-standards-builder/templates/README.md +18 -0
  109. package/template/skills/engineering-standards-builder/templates/compatibility/agents-typescript--standards.md +6 -0
  110. package/template/skills/engineering-standards-builder/templates/compatibility/agents-typescript-standards.md +6 -0
  111. package/template/skills/engineering-standards-builder/templates/compatibility/claude-engineering-standards.md +6 -0
  112. package/template/skills/engineering-standards-builder/templates/compatibility/claude-typescript-standards.md +6 -0
  113. package/template/skills/engineering-standards-builder/templates/project-skill/SKILL.md.template +26 -0
  114. package/template/skills/engineering-standards-builder/templates/project-skill/references/project/00-project-profile.md.template +26 -0
  115. package/template/skills/engineering-standards-builder/templates/project-skill/references/project/01-module-map.md.template +27 -0
  116. package/template/skills/engineering-standards-builder/templates/project-skill/references/project/02-decisions-and-exceptions.md.template +31 -0
  117. package/template/skills/engineering-standards-builder/templates/project-skill/references/project/review-checklist.md.template +14 -0
  118. package/template/skills/source-code-zip-skill/SKILL.md +343 -0
  119. package/template/skills/source-code-zip-skill/scripts/zip_source_code.py +638 -0
  120. package/template/workflows/person/INDEX.md +1 -0
  121. package/template/workflows/person/S-steelman-deliberation/S-steelman-deliberation.md +218 -0
  122. package/template/workflows/person/S-steelman-deliberation/_templates/decision-template.md +51 -0
  123. package/template/workflows/person/S-steelman-deliberation/_templates/steelman-dossier-template.md +96 -0
  124. package/template/workflows/person/S-steelman-deliberation/deliberate.md +127 -0
  125. package/template/workflows/person/S-steelman-deliberation/evidence-gate.md +37 -0
  126. package/template/workflows/person/S-steelman-deliberation/judge.md +69 -0
  127. package/template/workflows/person/S-steelman-deliberation/tools/validate-steelman-change.mjs +697 -0
  128. package/template/skills/typescript-standards-builder/README.md +0 -53
  129. package/template/skills/typescript-standards-builder/SKILL.md +0 -245
  130. package/template/skills/typescript-standards-builder/examples/sample-generated-tree.md +0 -30
  131. package/template/skills/typescript-standards-builder/examples/sample-interview-decisions.md +0 -26
  132. package/template/skills/typescript-standards-builder/manifest.txt +0 -29
  133. package/template/skills/typescript-standards-builder/references/00-governance-and-fixed-defaults.md +0 -77
  134. package/template/skills/typescript-standards-builder/references/01-project-discovery.md +0 -100
  135. package/template/skills/typescript-standards-builder/references/02-interview-workflow.md +0 -129
  136. package/template/skills/typescript-standards-builder/references/03-project-architecture-and-directory-layout.md +0 -84
  137. package/template/skills/typescript-standards-builder/references/04-file-directory-and-symbol-naming.md +0 -92
  138. package/template/skills/typescript-standards-builder/references/05-modules-imports-exports-and-dependencies.md +0 -63
  139. package/template/skills/typescript-standards-builder/references/06-typescript-type-system.md +0 -64
  140. package/template/skills/typescript-standards-builder/references/07-functions-async-errors-and-resources.md +0 -42
  141. package/template/skills/typescript-standards-builder/references/08-comments-jsdoc-and-documentation.md +0 -51
  142. package/template/skills/typescript-standards-builder/references/09-testing-strategy.md +0 -58
  143. package/template/skills/typescript-standards-builder/references/10-react-and-frontend.md +0 -39
  144. package/template/skills/typescript-standards-builder/references/11-node-cli-and-cross-platform.md +0 -31
  145. package/template/skills/typescript-standards-builder/references/12-formatting-lint-and-complexity.md +0 -58
  146. package/template/skills/typescript-standards-builder/references/13-configuration-dependencies-and-ci.md +0 -71
  147. package/template/skills/typescript-standards-builder/references/14-security-performance-and-i18n.md +0 -32
  148. package/template/skills/typescript-standards-builder/references/15-git-review-and-delivery.md +0 -28
  149. package/template/skills/typescript-standards-builder/references/16-adoption-exceptions-and-migration.md +0 -61
  150. package/template/skills/typescript-standards-builder/references/17-generation-contract.md +0 -104
  151. package/template/skills/typescript-standards-builder/references/README.md +0 -37
  152. package/template/skills/typescript-standards-builder/templates/agents-compat-skill/SKILL.md +0 -1
  153. package/template/skills/typescript-standards-builder/templates/claude-skill/SKILL.md +0 -1
  154. package/template/skills/typescript-standards-builder/templates/project-skill/SKILL.md.template +0 -34
  155. package/template/skills/typescript-standards-builder/templates/project-skill/references/00-project-profile.md.template +0 -17
  156. package/template/skills/typescript-standards-builder/templates/project-skill/references/10-review-checklist.md +0 -23
  157. package/template/skills/typescript-standards-builder/templates/project-skill/references/11-decisions-and-exceptions.md.template +0 -19
@@ -0,0 +1,2 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ describe('fixture', () => { it('works', () => expect(true).toBe(true)) })
@@ -0,0 +1,7 @@
1
+ <script setup lang="ts">
2
+ import { computed, ref } from 'vue'
3
+ const props = defineProps<{ title: string }>()
4
+ const count = ref(0)
5
+ const label = computed(() => `${props.title}: ${count.value}`)
6
+ </script>
7
+ <template><button type="button" @click="count++">{{ label }}</button></template>
@@ -0,0 +1,4 @@
1
+ import { createApp } from 'vue'
2
+ import { createPinia } from 'pinia'
3
+ import App from './App.vue'
4
+ createApp(App).use(createPinia()).mount('#app')
@@ -0,0 +1,11 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "module": "ESNext",
5
+ "target": "ES2022"
6
+ },
7
+ "include": [
8
+ "src/**/*.ts",
9
+ "src/**/*.vue"
10
+ ]
11
+ }
@@ -0,0 +1,2 @@
1
+ import { defineConfig } from 'vite'
2
+ export default defineConfig({})
@@ -0,0 +1,112 @@
1
+ examples/fallback/kotlin-gradle/build.gradle.kts
2
+ examples/fallback/kotlin-gradle/expected.json
3
+ examples/fallback/kotlin-gradle/src/main/kotlin/example/App.kt
4
+ examples/go/service/.golangci.yml
5
+ examples/go/service/cmd/api/main.go
6
+ examples/go/service/expected.json
7
+ examples/go/service/go.mod
8
+ examples/go/service/internal/service/service_test.go
9
+ examples/go/service/internal/service/service.go
10
+ examples/java/spring-boot-maven/expected.json
11
+ examples/java/spring-boot-maven/pom.xml
12
+ examples/java/spring-boot-maven/src/main/java/dev/speculo/orders/OrdersApplication.java
13
+ examples/java/spring-boot-maven/src/test/java/dev/speculo/orders/OrdersApplicationTest.java
14
+ examples/polyglot/monorepo/.github/workflows/ci.yml
15
+ examples/polyglot/monorepo/apps/web/package.json
16
+ examples/polyglot/monorepo/apps/web/src/App.vue
17
+ examples/polyglot/monorepo/apps/web/tsconfig.json
18
+ examples/polyglot/monorepo/expected.json
19
+ examples/polyglot/monorepo/package.json
20
+ examples/polyglot/monorepo/pnpm-workspace.yaml
21
+ examples/polyglot/monorepo/services/orders/pom.xml
22
+ examples/polyglot/monorepo/services/orders/src/main/java/dev/speculo/orders/OrdersApplication.java
23
+ examples/polyglot/monorepo/services/worker/go.mod
24
+ examples/polyglot/monorepo/services/worker/main.go
25
+ examples/README.md
26
+ examples/rust/workspace/Cargo.toml
27
+ examples/rust/workspace/crates/cli/Cargo.toml
28
+ examples/rust/workspace/crates/cli/src/main.rs
29
+ examples/rust/workspace/crates/core/Cargo.toml
30
+ examples/rust/workspace/crates/core/src/lib.rs
31
+ examples/rust/workspace/expected.json
32
+ examples/rust/workspace/rust-toolchain.toml
33
+ examples/typescript/react-vite/expected.json
34
+ examples/typescript/react-vite/package.json
35
+ examples/typescript/react-vite/src/App.test.tsx
36
+ examples/typescript/react-vite/src/App.tsx
37
+ examples/typescript/react-vite/src/main.tsx
38
+ examples/typescript/react-vite/tsconfig.json
39
+ examples/typescript/vue-vite/expected.json
40
+ examples/typescript/vue-vite/package.json
41
+ examples/typescript/vue-vite/src/App.test.ts
42
+ examples/typescript/vue-vite/src/App.vue
43
+ examples/typescript/vue-vite/src/main.ts
44
+ examples/typescript/vue-vite/tsconfig.json
45
+ examples/typescript/vue-vite/vite.config.ts
46
+ README.md
47
+ references/go/00-detection-and-scope.md
48
+ references/go/01-language-and-idioms.md
49
+ references/go/02-modules-packages-and-layout.md
50
+ references/go/03-errors-context-and-concurrency.md
51
+ references/go/04-testing-tooling-quality-gates.md
52
+ references/go/README.md
53
+ references/java/00-detection-and-scope.md
54
+ references/java/01-language-packages-and-api.md
55
+ references/java/02-build-modules-and-dependencies.md
56
+ references/java/03-errors-nullability-resources-concurrency.md
57
+ references/java/04-testing-tooling-quality-gates.md
58
+ references/java/frameworks/spring-boot.md
59
+ references/java/README.md
60
+ references/rules/00-governance-and-precedence.md
61
+ references/rules/01-project-discovery.md
62
+ references/rules/02-evidence-topology-and-scope.md
63
+ references/rules/03-interview-and-decisions.md
64
+ references/rules/04-architecture-and-dependency-boundaries.md
65
+ references/rules/05-files-directories-and-naming.md
66
+ references/rules/06-apis-errors-resources-and-concurrency.md
67
+ references/rules/07-documentation-and-comments.md
68
+ references/rules/08-testing-strategy.md
69
+ references/rules/09-security-configuration-and-data.md
70
+ references/rules/10-performance-observability-and-i18n.md
71
+ references/rules/11-tooling-quality-gates-and-ci.md
72
+ references/rules/12-git-review-and-delivery.md
73
+ references/rules/13-adoption-exceptions-and-ratchets.md
74
+ references/rules/14-generation-contract.md
75
+ references/rules/15-validation-contract.md
76
+ references/rules/16-language-adapter-contract.md
77
+ references/rules/README.md
78
+ references/rust/00-detection-and-scope.md
79
+ references/rust/01-language-api-and-safety.md
80
+ references/rust/02-crates-workspaces-and-layout.md
81
+ references/rust/03-errors-ownership-and-concurrency.md
82
+ references/rust/04-testing-tooling-quality-gates.md
83
+ references/rust/README.md
84
+ references/typescript/00-detection-and-scope.md
85
+ references/typescript/01-language-and-type-system.md
86
+ references/typescript/02-modules-packages-and-runtime-boundaries.md
87
+ references/typescript/03-functions-async-errors-resources.md
88
+ references/typescript/04-testing-tooling-quality-gates.md
89
+ references/typescript/app-types/cli.md
90
+ references/typescript/app-types/library.md
91
+ references/typescript/frameworks/react.md
92
+ references/typescript/frameworks/vue.md
93
+ references/typescript/README.md
94
+ references/typescript/runtimes/browser.md
95
+ references/typescript/runtimes/electron.md
96
+ references/typescript/runtimes/node.md
97
+ scripts/discover-project.mjs
98
+ scripts/self-test.mjs
99
+ scripts/sync-manifest.mjs
100
+ scripts/validate-builder.mjs
101
+ scripts/validate-generated-skill.mjs
102
+ SKILL.md
103
+ templates/compatibility/agents-typescript--standards.md
104
+ templates/compatibility/agents-typescript-standards.md
105
+ templates/compatibility/claude-engineering-standards.md
106
+ templates/compatibility/claude-typescript-standards.md
107
+ templates/project-skill/references/project/00-project-profile.md.template
108
+ templates/project-skill/references/project/01-module-map.md.template
109
+ templates/project-skill/references/project/02-decisions-and-exceptions.md.template
110
+ templates/project-skill/references/project/review-checklist.md.template
111
+ templates/project-skill/SKILL.md.template
112
+ templates/README.md
@@ -0,0 +1,37 @@
1
+ # Go:检测、版本与作用域
2
+
3
+ ## 信号
4
+
5
+ - `go.mod`、`go.work`、`go.sum`;
6
+ - `.go` 源码和 package 声明;
7
+ - `cmd/`、`internal/`、可执行 `package main`;
8
+ - CI 中 `go test`、`go vet`、race、fuzz、lint、build;
9
+ - `golangci-lint`、staticcheck、govulncheck 等配置;
10
+ - code generation 指令与生成标记。
11
+
12
+ `go.work` 是 Workspace 事实,不等于发布时依赖合同;每个 `go.mod` 是独立 module scope。
13
+
14
+ ## 版本
15
+
16
+ 记录 `go`/`toolchain` directive、CI Go 版本和最低支持范围。不得根据 Builder 环境升级 directive 或自动执行 `go mod tidy`。
17
+
18
+ ## Module scope
19
+
20
+ - 每个 `go.mod` 建立 module;
21
+ - `go.work` 建立 Workspace 关系;
22
+ - package 由目录和 package clause 交叉验证;
23
+ - command 由 `package main` 和入口确认;
24
+ - generated/vendor/testdata 排除或单独标记。
25
+
26
+ ## 访谈触发
27
+
28
+ - 多 module 是否共同治理;
29
+ - 哪些 package 属于外部 public API;
30
+ - `internal` 迁移和消费者兼容;
31
+ - `cmd`/应用布局冲突;
32
+ - context、goroutine、error wrapping 与 lint 基线。
33
+
34
+ ## 官方依据
35
+
36
+ - [Go module layout](https://go.dev/doc/modules/layout)
37
+ - [Go workspaces](https://go.dev/ref/mod#workspaces)
@@ -0,0 +1,34 @@
1
+ # Go:语言与惯用法
2
+
3
+ ## 清晰与零值
4
+
5
+ - 优先简单控制流、早返回和有用零值;不为模拟其他语言层次引入抽象。
6
+ - package 名短、小写、表达能力;调用点 `package.Symbol` 可读,不重复 stutter。
7
+ - exported identifier、package 和重要约束使用 Go doc 完整句。
8
+ - 小接口由消费者定义;不要为每个 concrete type 预先创建接口。
9
+ - 接口返回 concrete type 在可行时更易演进;只有调用者需要替换行为时暴露接口。
10
+
11
+ ## 数据与 API
12
+
13
+ - struct 字段和构造器表达不变量;零值不可用时提供构造并文档化。
14
+ - slice/map/channel 的 nil 与 empty 语义在 public API、JSON 和数据库边界明确。
15
+ - 复制含 mutex 或资源 owner 的值会破坏语义;选择 pointer/value receiver 时考虑 identity、大小和一致性。
16
+ - 不把 `interface{}`/`any` 当默认数据模型;在外部边界验证并转换。
17
+ - 泛型用于真实跨类型算法/容器,不取代清晰 domain types 或小接口。
18
+
19
+ ## 控制流
20
+
21
+ - `defer` 用于成对清理并关注循环中的生命周期;
22
+ - type assertion/check、comma-ok 和 exhaustive-ish switch 处理未知值;
23
+ - `init` 最小化,避免隐式 I/O、goroutine 和注册顺序;
24
+ - package global mutable state 仅在有明确同步、生命周期和测试重置时。
25
+
26
+ ## 生成代码
27
+
28
+ - `go generate` 不是自动构建步骤;记录 generator、输入和运行方式。
29
+ - 生成文件包含标准标记、与手写代码分离并由 freshness 检查验证(若提交)。
30
+
31
+ ## 官方依据
32
+
33
+ - [Effective Go](https://go.dev/doc/effective_go)
34
+ - [Go Code Review Comments](https://go.dev/wiki/CodeReviewComments)
@@ -0,0 +1,34 @@
1
+ # Go:Module、Package 与目录
2
+
3
+ ## Module
4
+
5
+ - module path 是 public import contract;变更需要消费者和版本迁移。
6
+ - 应用、可发布库和独立生命周期可以拆 module,不因目录数量随意多 module。
7
+ - `replace` 记录本地开发/迁移目的;发布前验证不会依赖不可用本地路径。
8
+ - major version module path、tags 和 package compatibility 按 Go module 规则。
9
+
10
+ ## Package
11
+
12
+ - package 围绕单一能力和共同变化组织;避免 `util`、`common`、`models` 垃圾场。
13
+ - 导入方向无循环;需要共享时先判断能力归属,再提取稳定合同。
14
+ - `internal` 用于编译器可执行的私有边界;只有确认外部消费者后迁移现有 public package。
15
+ - `cmd/<name>` 保存薄入口,业务逻辑进入可测试 package。
16
+ - `pkg/` 不是官方强制目录;只在仓库明确用它表达可复用 public package 时保留。
17
+ - `testdata`、`embed` 资源和平台文件命名遵循 Go tool 语义。
18
+
19
+ ## 多平台与 Build Tags
20
+
21
+ - 文件后缀和 build tags 的目标平台、feature 和测试矩阵明确。
22
+ - 平台实现共享接口但不隐藏不可测试差异;至少在支持平台 CI 编译。
23
+ - cgo 使用范围、交叉编译和资源所有权单独记录。
24
+
25
+ ## 依赖
26
+
27
+ - 标准库优先但不以“零依赖”为目的;新模块评估 API、维护、安全和 transitive graph。
28
+ - `go mod tidy` 只在有意修改依赖时执行并审查 diff。
29
+ - public package 不暴露不必要第三方类型,避免锁定消费者。
30
+
31
+ ## 官方依据
32
+
33
+ - [Organizing a Go module](https://go.dev/doc/modules/layout)
34
+ - [Go Modules Reference](https://go.dev/ref/mod)
@@ -0,0 +1,38 @@
1
+ # Go:错误、Context 与并发
2
+
3
+ ## Error
4
+
5
+ - error 是普通返回值;调用者检查并处理,不用 panic 表达可预期失败。
6
+ - 使用 `%w` 包装保留 cause;`errors.Is/As` 检查语义,不依赖字符串匹配。
7
+ - sentinel、typed error 和 opaque error 依据调用者真正需要的分支选择。
8
+ - 增加操作/对象上下文但避免每层重复同一信息。
9
+ - 只记录一次;库通常返回,应用边界决定日志/协议/退出码。
10
+ - panic 仅用于无法继续的不变量或程序员错误;服务边界 recovery 不得假装状态仍安全。
11
+
12
+ ## Context
13
+
14
+ - `context.Context` 作为第一个参数传入请求范围函数;不存入 struct,不传 nil。
15
+ - 不用 context 传普通可选参数;value 只承载请求范围、跨 API 边界的数据。
16
+ - 派生 context 的 cancel function 必须调用;deadline/cancellation 传播到 I/O 和 goroutine。
17
+ - 不在后台工作中盲目继承已取消 request context;显式定义任务 owner 和生命周期。
18
+
19
+ ## Goroutine 与 Channel
20
+
21
+ - 每个 goroutine 的启动点能说明何时退出、谁等待、如何取消、错误去向。
22
+ - 不启动 fire-and-forget goroutine,除非由进程级 supervisor 管理并可观测。
23
+ - channel ownership 和 close 责任清楚;通常由发送方/拥有方关闭,不靠 receiver 猜测。
24
+ - buffered channel 容量是 backpressure 设计,不是掩盖死锁的补丁。
25
+ - `select` 处理取消、关闭和默认分支;避免 busy loop。
26
+ - shared map/state 使用 mutex、channel ownership 或 immutable snapshot;规则基于简洁和测量。
27
+
28
+ ## 资源与 Shutdown
29
+
30
+ - HTTP body、file、rows、ticker、listener、server、worker pool 都关闭;处理 close error 的业务意义。
31
+ - server shutdown 定义停止接收、等待 in-flight、deadline 和强制终止。
32
+ - `sync.Once`、WaitGroup、errgroup 等只在语义匹配时使用;Add/Wait 生命周期可证明。
33
+
34
+ ## 官方依据
35
+
36
+ - [Go `context` package](https://pkg.go.dev/context)
37
+ - [Go Code Review Comments: Goroutine Lifetimes](https://go.dev/wiki/CodeReviewComments#goroutine-lifetimes)
38
+ - [Go errors](https://go.dev/blog/go1.13-errors)
@@ -0,0 +1,46 @@
1
+ # Go:测试、工具链与质量门禁
2
+
3
+ ## 格式与静态检查
4
+
5
+ - `gofmt` 是基础格式合同;imports 使用项目当前工具。
6
+ - `go vet`、staticcheck、golangci-lint 等按仓库配置运行,不无差别启用所有规则。
7
+ - lint exclude 最小化且有原因和删除条件。
8
+ - `govulncheck` 或依赖安全工具仅在项目已采用/确认时成为门禁。
9
+
10
+ ## 测试
11
+
12
+ - `*_test.go` 与被测 package 同目录;选择 same-package 或 external-package 测试表达白盒/消费者视角。
13
+ - table-driven test 用于输入矩阵,不为了模板化牺牲可读失败信息。
14
+ - helper 使用 `t.Helper()`,资源使用 `t.Cleanup()`;并行测试不共享无保护状态。
15
+ - integration test 的 build tags、环境、容器和超时明确。
16
+ - HTTP、文件、数据库和并发测试覆盖取消、错误和清理。
17
+ - example test 用于可执行文档和 public API。
18
+
19
+ ## Race、Fuzz 与 Benchmark
20
+
21
+ - 并发代码和高风险模块使用 `go test -race`,按资源成本配置 PR/夜间范围。
22
+ - parser、协议和边界转换使用 fuzz;失败 corpus 保留为回归输入。
23
+ - benchmark 只在有性能合同或优化决策时添加,记录环境和比较方法。
24
+ - 不用 coverage 数字替代行为和竞争测试。
25
+
26
+ ## 门禁
27
+
28
+ 记录真实 module/workspace 工作目录和命令,例如:
29
+
30
+ ```text
31
+ gofmt check
32
+ go vet ./...
33
+ go test ./...
34
+ go test -race ./... # 若项目门禁存在
35
+ go test -fuzz=... # 按专门任务
36
+ staticcheck/golangci-lint
37
+ go build ./...
38
+ ```
39
+
40
+ 不得假定每个仓库都支持 `./...` 或相同 tags。
41
+
42
+ ## 官方依据
43
+
44
+ - [Go testing package](https://pkg.go.dev/testing)
45
+ - [Go fuzzing](https://go.dev/doc/security/fuzz/)
46
+ - [Go race detector](https://go.dev/doc/articles/race_detector)
@@ -0,0 +1,9 @@
1
+ # Go 适配器
2
+
3
+ 当 Project Inventory 识别到 Go module/workspace 或 Go 源码时读取:
4
+
5
+ - [检测、版本与作用域](00-detection-and-scope.md)
6
+ - [语言与惯用法](01-language-and-idioms.md)
7
+ - [Module、Package 与目录](02-modules-packages-and-layout.md)
8
+ - [错误、Context 与并发](03-errors-context-and-concurrency.md)
9
+ - [测试、工具链与质量门禁](04-testing-tooling-quality-gates.md)
@@ -0,0 +1,40 @@
1
+ # Java:检测、版本与作用域
2
+
3
+ ## 信号
4
+
5
+ - `pom.xml`、`.mvn/`、Maven Wrapper;
6
+ - `settings.gradle*`、`build.gradle*`、`gradle.properties`、Gradle Wrapper;
7
+ - `src/*/java`、`module-info.java`;
8
+ - toolchain、compiler release/source/target、CI JDK;
9
+ - Spring Boot plugin/starter 与应用注解;
10
+ - formatter、Checkstyle、Spotless、PMD、Error Prone、JaCoCo、ArchUnit 等配置。
11
+
12
+ 只看到 `.java` 文件可判定语言,但构建模块、JDK 和框架必须由构建文件/源码入口交叉确认。
13
+
14
+ ## 版本与构建事实
15
+
16
+ 记录:
17
+
18
+ - JDK/toolchain 和目标 bytecode;
19
+ - Maven/Gradle 及 Wrapper 版本;
20
+ - parent/BOM/version catalog;
21
+ - 多模块图与 source sets;
22
+ - JPMS 是否启用;
23
+ - 测试平台和 CI lifecycle;
24
+ - Spring Boot 大版本与 Java 基线。
25
+
26
+ 不得根据本机 JDK 推断项目版本,也不得同时生成 Maven 与 Gradle 命令,除非 scope 确实分别使用。
27
+
28
+ ## 访谈触发
29
+
30
+ - Maven/Gradle 共存边界不清;
31
+ - JDK 升级目标影响 API、虚拟线程、records 或 module;
32
+ - package-by-feature 与既有分层发生真实冲突;
33
+ - nullability/exception/public API 策略不一致;
34
+ - formatter/style profile 或质量插件准备统一。
35
+
36
+ ## 官方依据
37
+
38
+ - [Maven standard directory layout](https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html)
39
+ - [Gradle multi-project builds](https://docs.gradle.org/current/userguide/multi_project_builds.html)
40
+ - [Java language and API documentation](https://docs.oracle.com/en/java/)
@@ -0,0 +1,35 @@
1
+ # Java:语言、包与公开 API
2
+
3
+ ## Package 与目录
4
+
5
+ - package 名小写、稳定并与源码路径一致;模块根遵循实际 build source set。
6
+ - 顶层 package 反映组织/产品所有权;Spring scanning 等框架约束由适配器处理。
7
+ - 在模块内部优先按稳定业务能力组织;controller/service/repository 的层次不是所有 Java 项目的强制目录。
8
+ - package-private、protected、public 使用最小可见性;内部实现不因测试便利而公开。
9
+ - JPMS 项目显式 exports/opens/requires;反射框架所需 `opens` 限定最小范围。
10
+
11
+ ## 类型与 API
12
+
13
+ - public API 使用领域类型、不可变值和明确泛型;不泄漏 persistence/framework internals。
14
+ - records、sealed types、pattern matching 等仅在项目 JDK 和兼容范围支持时使用。
15
+ - collection 返回值明确所有权和可变性;避免返回内部可变集合。
16
+ - `Optional` 主要用于可能缺失的返回值,是否用于字段/参数遵循项目和框架兼容事实。
17
+ - equals/hashCode/toString 与 identity/value 语义一致;实体和代理类型特别验证。
18
+ - 构造器、工厂和 builder 依据不变量与可读性选择,不为每个简单对象自动生成 builder。
19
+
20
+ ## 命名与文档
21
+
22
+ - class/interface/record、method、constant、test 遵循现有 formatter/style profile。
23
+ - public package/type/method 的 Javadoc 记录失败、线程安全、nullability、副作用和兼容性。
24
+ - 缩写、DTO/entity/value object 的命名表达边界,不把所有传输对象泛称 `Data` 或 `Model`。
25
+
26
+ ## DTO、领域与持久化
27
+
28
+ - 外部 transport、领域模型和持久化实体在耦合成本出现时分离。
29
+ - 映射集中在边界,可测试且不静默丢字段。
30
+ - annotation 不应让核心领域依赖不必要的 Web/数据库框架;是否接受框架耦合由模块目标决定。
31
+
32
+ ## 官方依据
33
+
34
+ - [Java API design guidance in JDK documentation](https://docs.oracle.com/en/java/javase/)
35
+ - [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)(可选 style profile,不是 Java 唯一官方规范)
@@ -0,0 +1,39 @@
1
+ # Java:构建、模块与依赖
2
+
3
+ ## Maven
4
+
5
+ - 使用 Wrapper 时以 Wrapper 为 canonical;CI 与本地命令一致。
6
+ - parent、dependencyManagement/BOM 与 pluginManagement 职责清楚;子模块不重复漂移版本。
7
+ - lifecycle phase 与 plugin execution 可追溯;不把需要执行的验证只放在手工 profile。
8
+ - scope(compile/runtime/test/provided/annotation processor)反映真实所有权。
9
+ - 聚合模块和可发布模块区分;module graph 不形成循环。
10
+
11
+ ## Gradle
12
+
13
+ - 使用 Wrapper;settings 定义参与构建的项目。
14
+ - convention plugin/version catalog 用于稳定共享逻辑,避免根脚本复制所有子项目配置。
15
+ - API/implementation/runtimeOnly/testImplementation 等 configuration 准确表达暴露边界。
16
+ - task 输入、输出与缓存正确;不要依赖 task 执行顺序副作用。
17
+ - composite build、included build 和多项目边界按仓库事实生成。
18
+
19
+ ## 依赖
20
+
21
+ - 新依赖评估维护、许可证、安全、启动/包体和已有替代;
22
+ - 禁止未使用或重复功能依赖;
23
+ - 依赖版本冲突通过 BOM/platform/resolution evidence 处理,不随意 force 最新;
24
+ - annotation processor、agent 和 build plugin 属于供应链边界;
25
+ - 公开库避免把内部实现依赖泄漏给消费者。
26
+
27
+ ## 生成代码
28
+
29
+ - generated source root 与手写源码分离;
30
+ - 生成器版本和输入锁定;
31
+ - CI 验证 freshness(若提交生成物);
32
+ - 不手改生成文件;例外在生成器边界解决。
33
+
34
+ ## 官方依据
35
+
36
+ - [Maven POM reference](https://maven.apache.org/pom.html)
37
+ - [Maven lifecycle](https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html)
38
+ - [Gradle multi-project builds](https://docs.gradle.org/current/userguide/multi_project_builds.html)
39
+ - [Gradle dependency management](https://docs.gradle.org/current/userguide/core_dependency_management.html)
@@ -0,0 +1,36 @@
1
+ # Java:错误、空值、资源与并发
2
+
3
+ ## Exception
4
+
5
+ - checked/unchecked 选择遵循模块现有 public contract;不要把所有异常统一包装为无信息 RuntimeException。
6
+ - 只在可恢复、映射协议或增加边界上下文时 catch;保留 cause。
7
+ - 领域错误、HTTP/RPC 映射、用户消息和日志分层。
8
+ - 不 catch `Throwable` 或吞掉中断/取消;确需边界捕获时恢复 interrupt 状态并安全终止。
9
+ - public API 文档化可观察失败和 retry/idempotency 语义。
10
+
11
+ ## Nullability
12
+
13
+ - 在 module/package 层采用一致 annotation/analysis 体系;工具不一致时不要混合多套含义。
14
+ - 外部/反射/ORM 边界验证 null;内部模型优先用构造不变量和精确类型。
15
+ - 不通过到处 `Objects.requireNonNull` 掩盖边界设计问题。
16
+ - `Optional`、nullable annotation、空集合按语义使用,不用 sentinel 值。
17
+
18
+ ## 资源与事务
19
+
20
+ - `AutoCloseable` 资源使用 try-with-resources 或结构化 owner;关注 close failure 和 suppressed exception。
21
+ - stream、JDBC、HTTP client response、file channel、executor 和临时文件有关闭策略。
22
+ - transaction 边界位于用例/服务边界,明确 rollback 和外部副作用顺序;不要跨慢网络调用长期持有事务。
23
+ - 锁、线程池和 scheduler 不在每次请求临时创建且忘记关闭。
24
+
25
+ ## 并发
26
+
27
+ - 共享状态明确同步、不可变或 confinement 策略。
28
+ - executor/线程/虚拟线程由应用边界管理;虚拟线程只有在项目 JDK、框架和阻塞模型适用时生成规则。
29
+ - Future/CompletionStage 定义失败、超时、取消和执行器;不在 common pool 隐式执行阻塞工作。
30
+ - 中断是取消信号,不静默清除。
31
+ - 并发测试覆盖 race、超时、重复提交和 shutdown。
32
+
33
+ ## 官方依据
34
+
35
+ - [Java try-with-resources](https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)
36
+ - [Java concurrency APIs](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/package-summary.html)
@@ -0,0 +1,36 @@
1
+ # Java:测试、工具链与质量门禁
2
+
3
+ ## 测试布局
4
+
5
+ - 使用构建系统真实 source sets;典型 Maven/Gradle Java 项目将 production 与 test 源分离。
6
+ - 单元测试不启动完整容器;framework slice、集成、契约和 E2E 按风险选择。
7
+ - 数据库、消息和外部协议高风险路径优先真实兼容实现或 Testcontainers,而不是过度 mock。
8
+ - 测试拥有并清理文件、端口、容器、executor 和数据库数据;并行执行不共享无保护状态。
9
+ - parameterized/property tests 用于边界组合;缺陷修复有回归用例。
10
+
11
+ ## 工具链
12
+
13
+ 从构建事实选择:
14
+
15
+ - formatter:Spotless、google-java-format、项目 formatter;
16
+ - style/static:Checkstyle、PMD、SpotBugs、Error Prone、NullAway 等;
17
+ - test:JUnit Platform、Mockito、AssertJ、Testcontainers 等;
18
+ - coverage:JaCoCo 或项目工具;
19
+ - architecture:ArchUnit/JPMS/build graph;
20
+ - dependency/security:项目已有插件。
21
+
22
+ 不要同时引入功能重叠工具;style profile 必须与 formatter 一致。
23
+
24
+ ## 门禁
25
+
26
+ - Maven 记录 Wrapper 命令和 lifecycle/profile;
27
+ - Gradle 记录 Wrapper task;
28
+ - PR 与发布门禁区分;
29
+ - integration test 需要的服务、容器和环境明确;
30
+ - flaky quarantine 有 owner 和到期;
31
+ - 新规则对存量采用模块/错误数量 Ratchet。
32
+
33
+ ## 官方依据
34
+
35
+ - [JUnit 5 User Guide](https://junit.org/junit5/docs/current/user-guide/)
36
+ - [Testcontainers for Java](https://java.testcontainers.org/)
@@ -0,0 +1,10 @@
1
+ # Java 适配器
2
+
3
+ 当 Project Inventory 在某个 scope 识别到 Java 时读取:
4
+
5
+ - [检测、版本与作用域](00-detection-and-scope.md)
6
+ - [语言、包与公开 API](01-language-packages-and-api.md)
7
+ - [构建、模块与依赖](02-build-modules-and-dependencies.md)
8
+ - [错误、空值、资源与并发](03-errors-nullability-resources-concurrency.md)
9
+ - [测试、工具链与质量门禁](04-testing-tooling-quality-gates.md)
10
+ - [Spring Boot](frameworks/spring-boot.md)(仅识别到时)
@@ -0,0 +1,74 @@
1
+ # Spring Boot 规范适配器
2
+
3
+ 只对明确使用 Spring Boot 的 Java scope 生成。先识别 Boot 大版本、Servlet/Reactive、Maven/Gradle、Web/Data/Messaging/Security 技术和部署模型。
4
+
5
+ ## 应用与 package
6
+
7
+ - 主应用类放在能覆盖 intended component/entity scanning 的根 package;避免 default package。
8
+ - 多应用或模块化系统显式限定 scan/import,不依赖过宽 classpath 扫描。
9
+ - 目录可按 feature 或稳定模块组织;controller/service/repository 分层只作为局部角色,不强制整个仓库按技术层平铺。
10
+ - configuration、adapter、domain 和 application 边界由依赖方向和测试验证。
11
+
12
+ ## 配置
13
+
14
+ - 使用 Boot externalized configuration;记录 property source 优先级和环境覆盖方式。
15
+ - 相关配置聚合为类型安全 `@ConfigurationProperties`,启动时验证必填、范围和格式。
16
+ - secret 不进入默认配置或日志;profile 不复制业务逻辑。
17
+ - 条件化 bean 和 auto-configuration 写明触发条件、back-off 和测试。
18
+
19
+ ## Web/API
20
+
21
+ - controller 负责 transport、验证、认证上下文和错误映射,不承载核心业务流程。
22
+ - request/response DTO 与领域/实体的耦合按 API 生命周期决定。
23
+ - Bean Validation 在边界使用;跨字段/领域不变量由领域服务或明确 validator 处理。
24
+ - `@ControllerAdvice`/problem details 等错误合同统一且不泄露内部信息。
25
+ - Servlet 与 WebFlux 模型不混用阻塞/非阻塞假设;线程上下文和 backpressure 按实际 stack。
26
+
27
+ ## Service、事务与数据
28
+
29
+ - transaction 边界围绕用例;明确 propagation、rollback 和 read-only 语义。
30
+ - 不在事务中无界等待远程 I/O;跨系统一致性使用项目确认的 outbox/saga/idempotency 策略。
31
+ - repository 暴露领域需要的查询,而非让上层依赖 ORM 细节。
32
+ - lazy loading、N+1、分页、锁和 batch 用真实集成测试/指标验证。
33
+ - migration 工具和 schema 变更按 expand/migrate/contract 或项目策略执行。
34
+
35
+ ## 依赖注入与生命周期
36
+
37
+ - 优先构造器注入;依赖显式且便于测试。
38
+ - Bean scope、线程安全和可变状态一致;singleton bean 不保存请求可变状态。
39
+ - scheduler、listener、executor、client 和连接池配置 owner、超时、关闭和 observability。
40
+ - application event 不作为隐藏业务事务保证;跨进程事件使用明确协议。
41
+
42
+ ## 测试
43
+
44
+ - 纯领域/服务单元测试不启动 Spring。
45
+ - MVC/WebFlux/Data/Security 等使用适用 test slice;slice 选择来自实际依赖,不复制固定清单。
46
+ - `@SpringBootTest` 用于需要完整上下文的集成路径,不作为所有测试默认。
47
+ - 数据库、消息、缓存等兼容性重要时使用 Testcontainers 或项目真实环境。
48
+ - 随机端口、动态属性、上下文缓存和测试数据隔离明确。
49
+ - 配置绑定、条件 Bean、错误映射、事务和安全边界有测试。
50
+
51
+ ## Actuator 与可观测性
52
+
53
+ 仅在项目采用时生成:
54
+
55
+ - health/readiness 不泄露敏感信息;
56
+ - metrics/traces/log correlation 使用项目观测体系;
57
+ - endpoint 暴露最小化并受认证/网络边界保护;
58
+ - 自定义 health indicator 不进行无界慢调用。
59
+
60
+ ## 访谈触发
61
+
62
+ - package-by-feature 与当前分层迁移;
63
+ - MVC/WebFlux 或阻塞/非阻塞边界;
64
+ - transaction/outbox/error contract;
65
+ - test slice 与 Testcontainers 门禁;
66
+ - profile/configuration properties 统一;
67
+ - Boot/JDK 大版本升级。
68
+
69
+ ## 官方依据
70
+
71
+ - [Spring Boot: Structuring Your Code](https://docs.spring.io/spring-boot/reference/using/structuring-your-code.html)
72
+ - [Spring Boot: Externalized Configuration](https://docs.spring.io/spring-boot/reference/features/external-config.html)
73
+ - [Spring Boot: Testing](https://docs.spring.io/spring-boot/reference/testing/index.html)
74
+ - [Spring Boot: Testcontainers](https://docs.spring.io/spring-boot/reference/testing/testcontainers.html)