soloforge 1.1.47 → 1.1.49
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.
- package/README.md +11 -7
- package/dist/cli/adapter_writers.d.ts +5 -0
- package/dist/cli/adapter_writers.d.ts.map +1 -1
- package/dist/cli/adapter_writers.js +25 -0
- package/dist/cli/adapter_writers.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +3 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/scope_check.d.ts +4 -0
- package/dist/cli/scope_check.d.ts.map +1 -0
- package/dist/cli/scope_check.js +51 -0
- package/dist/cli/scope_check.js.map +1 -0
- package/dist/context/adapters/claude_code/hooks.d.ts +5 -7
- package/dist/context/adapters/claude_code/hooks.d.ts.map +1 -1
- package/dist/context/adapters/claude_code/hooks.js +11 -9
- package/dist/context/adapters/claude_code/hooks.js.map +1 -1
- package/dist/context/adapters/shared/integration_guide.d.ts +3 -3
- package/dist/context/adapters/shared/integration_guide.js +18 -8
- package/dist/context/adapters/shared/integration_guide.js.map +1 -1
- package/dist/context/adapters/shared/workflow_template.js +1 -1
- package/dist/context/config/intent_schema.d.ts +793 -6
- package/dist/context/config/intent_schema.d.ts.map +1 -1
- package/dist/context/config/intent_schema.js +9 -0
- package/dist/context/config/intent_schema.js.map +1 -1
- package/dist/context/config/resolver.d.ts +9 -0
- package/dist/context/config/resolver.d.ts.map +1 -1
- package/dist/context/config/resolver.js +5 -0
- package/dist/context/config/resolver.js.map +1 -1
- package/dist/core/adversarial_review_store.d.ts +133 -0
- package/dist/core/adversarial_review_store.d.ts.map +1 -0
- package/dist/core/adversarial_review_store.js +161 -0
- package/dist/core/adversarial_review_store.js.map +1 -0
- package/dist/core/domain_transition.d.ts.map +1 -1
- package/dist/core/domain_transition.js +3 -0
- package/dist/core/domain_transition.js.map +1 -1
- package/dist/core/gate_record_store.d.ts +2 -0
- package/dist/core/gate_record_store.d.ts.map +1 -1
- package/dist/core/gate_record_store.js +17 -4
- package/dist/core/gate_record_store.js.map +1 -1
- package/dist/core/git_utils.d.ts +1 -1
- package/dist/core/git_utils.d.ts.map +1 -1
- package/dist/core/git_utils.js +8 -4
- package/dist/core/git_utils.js.map +1 -1
- package/dist/core/observer.d.ts.map +1 -1
- package/dist/core/observer.js +26 -2
- package/dist/core/observer.js.map +1 -1
- package/dist/core/task_context/constants.d.ts.map +1 -1
- package/dist/core/task_context/constants.js +4 -2
- package/dist/core/task_context/constants.js.map +1 -1
- package/dist/core/task_context/manager.d.ts +4 -4
- package/dist/core/task_context/manager.d.ts.map +1 -1
- package/dist/core/task_context/manager.js +69 -62
- package/dist/core/task_context/manager.js.map +1 -1
- package/dist/core/task_context/manager_setters.d.ts +2 -0
- package/dist/core/task_context/manager_setters.d.ts.map +1 -1
- package/dist/core/task_context/manager_setters.js +10 -0
- package/dist/core/task_context/manager_setters.js.map +1 -1
- package/dist/core/task_context/stage_fact_ownership.js +1 -1
- package/dist/core/task_context/stage_fact_ownership.js.map +1 -1
- package/dist/core/task_context/status_transitions.js +5 -5
- package/dist/core/task_context/status_transitions.js.map +1 -1
- package/dist/core/types.d.ts +29 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/waiver_store.d.ts +100 -0
- package/dist/core/waiver_store.d.ts.map +1 -0
- package/dist/core/waiver_store.js +185 -0
- package/dist/core/waiver_store.js.map +1 -0
- package/dist/domain/asset_registry/derived_registry.d.ts +10 -0
- package/dist/domain/asset_registry/derived_registry.d.ts.map +1 -1
- package/dist/domain/asset_registry/derived_registry.js +10 -0
- package/dist/domain/asset_registry/derived_registry.js.map +1 -1
- package/dist/domain/asset_registry/derived_types.d.ts +27 -0
- package/dist/domain/asset_registry/derived_types.d.ts.map +1 -1
- package/dist/domain/asset_registry/derived_types.js +10 -0
- package/dist/domain/asset_registry/derived_types.js.map +1 -1
- package/dist/domain/build/engine.d.ts +1 -0
- package/dist/domain/build/engine.d.ts.map +1 -1
- package/dist/domain/build/engine.js +34 -4
- package/dist/domain/build/engine.js.map +1 -1
- package/dist/domain/contracts/design_lifecycle_contract.d.ts.map +1 -1
- package/dist/domain/contracts/design_lifecycle_contract.js +11 -4
- package/dist/domain/contracts/design_lifecycle_contract.js.map +1 -1
- package/dist/domain/design/contract.d.ts.map +1 -1
- package/dist/domain/design/contract.js +11 -0
- package/dist/domain/design/contract.js.map +1 -1
- package/dist/domain/design/engine.d.ts +1 -0
- package/dist/domain/design/engine.d.ts.map +1 -1
- package/dist/domain/design/engine.js +35 -3
- package/dist/domain/design/engine.js.map +1 -1
- package/dist/domain/engine_helpers.d.ts +37 -0
- package/dist/domain/engine_helpers.d.ts.map +1 -1
- package/dist/domain/engine_helpers.js +86 -0
- package/dist/domain/engine_helpers.js.map +1 -1
- package/dist/domain/operate/engine.d.ts +1 -0
- package/dist/domain/operate/engine.d.ts.map +1 -1
- package/dist/domain/operate/engine.js +19 -2
- package/dist/domain/operate/engine.js.map +1 -1
- package/dist/domain/types.d.ts +6 -0
- package/dist/domain/types.d.ts.map +1 -1
- package/dist/domain/types.js.map +1 -1
- package/dist/domain/verify/engine.d.ts +1 -0
- package/dist/domain/verify/engine.d.ts.map +1 -1
- package/dist/domain/verify/engine.js +18 -1
- package/dist/domain/verify/engine.js.map +1 -1
- package/dist/gate/certainty_gate.d.ts +10 -0
- package/dist/gate/certainty_gate.d.ts.map +1 -1
- package/dist/gate/certainty_gate.js.map +1 -1
- package/dist/gate/contracts/tool_actions.d.ts +11 -2
- package/dist/gate/contracts/tool_actions.d.ts.map +1 -1
- package/dist/gate/contracts/tool_actions.js +12 -2
- package/dist/gate/contracts/tool_actions.js.map +1 -1
- package/dist/gate/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
- package/dist/gate/contracts/tool_invocation_contract_registry.js +11 -1
- package/dist/gate/contracts/tool_invocation_contract_registry.js.map +1 -1
- package/dist/gate/executors/executors_annotation.d.ts +33 -10
- package/dist/gate/executors/executors_annotation.d.ts.map +1 -1
- package/dist/gate/executors/executors_annotation.js +119 -64
- package/dist/gate/executors/executors_annotation.js.map +1 -1
- package/dist/gate/executors/executors_artifact.d.ts +20 -1
- package/dist/gate/executors/executors_artifact.d.ts.map +1 -1
- package/dist/gate/executors/executors_artifact.js +83 -123
- package/dist/gate/executors/executors_artifact.js.map +1 -1
- package/dist/gate/executors/executors_build.d.ts +2 -2
- package/dist/gate/executors/executors_build.d.ts.map +1 -1
- package/dist/gate/executors/executors_build.js +28 -126
- package/dist/gate/executors/executors_build.js.map +1 -1
- package/dist/gate/executors/executors_deploy.d.ts.map +1 -1
- package/dist/gate/executors/executors_deploy.js +35 -7
- package/dist/gate/executors/executors_deploy.js.map +1 -1
- package/dist/gate/executors/executors_external_command.d.ts.map +1 -1
- package/dist/gate/executors/executors_external_command.js +54 -2
- package/dist/gate/executors/executors_external_command.js.map +1 -1
- package/dist/gate/executors/executors_field_mapping.d.ts +7 -0
- package/dist/gate/executors/executors_field_mapping.d.ts.map +1 -0
- package/dist/gate/executors/executors_field_mapping.js +191 -0
- package/dist/gate/executors/executors_field_mapping.js.map +1 -0
- package/dist/gate/executors/executors_jacoco.d.ts +3 -0
- package/dist/gate/executors/executors_jacoco.d.ts.map +1 -0
- package/dist/gate/executors/executors_jacoco.js +70 -0
- package/dist/gate/executors/executors_jacoco.js.map +1 -0
- package/dist/gate/executors/executors_prerequisite.d.ts +1 -1
- package/dist/gate/executors/executors_prerequisite.d.ts.map +1 -1
- package/dist/gate/executors/executors_prerequisite.js +2 -62
- package/dist/gate/executors/executors_prerequisite.js.map +1 -1
- package/dist/gate/executors/executors_probe.d.ts +1 -0
- package/dist/gate/executors/executors_probe.d.ts.map +1 -1
- package/dist/gate/executors/executors_probe.js +1 -0
- package/dist/gate/executors/executors_probe.js.map +1 -1
- package/dist/gate/executors/executors_regex_scan.d.ts.map +1 -1
- package/dist/gate/executors/executors_regex_scan.js +34 -13
- package/dist/gate/executors/executors_regex_scan.js.map +1 -1
- package/dist/gate/executors/executors_scope.d.ts +7 -3
- package/dist/gate/executors/executors_scope.d.ts.map +1 -1
- package/dist/gate/executors/executors_scope.js +20 -173
- package/dist/gate/executors/executors_scope.js.map +1 -1
- package/dist/gate/executors/executors_trace.d.ts +5 -0
- package/dist/gate/executors/executors_trace.d.ts.map +1 -1
- package/dist/gate/executors/executors_trace.js +295 -4
- package/dist/gate/executors/executors_trace.js.map +1 -1
- package/dist/gate/executors/index.d.ts.map +1 -1
- package/dist/gate/executors/index.js +4 -2
- package/dist/gate/executors/index.js.map +1 -1
- package/dist/gate/gate_engine.d.ts +20 -0
- package/dist/gate/gate_engine.d.ts.map +1 -1
- package/dist/gate/gate_engine.js +58 -6
- package/dist/gate/gate_engine.js.map +1 -1
- package/dist/gate/gate_registry_bridge.d.ts +12 -2
- package/dist/gate/gate_registry_bridge.d.ts.map +1 -1
- package/dist/gate/gate_registry_bridge.js +7 -5
- package/dist/gate/gate_registry_bridge.js.map +1 -1
- package/dist/gate/middleware_gates.js +1 -1
- package/dist/gate/middleware_gates.js.map +1 -1
- package/dist/gate/release/gate_checks/checkAssetAntiBloat.d.ts.map +1 -1
- package/dist/gate/release/gate_checks/checkAssetAntiBloat.js +3 -0
- package/dist/gate/release/gate_checks/checkAssetAntiBloat.js.map +1 -1
- package/dist/gate/scope_resolver.d.ts +7 -0
- package/dist/gate/scope_resolver.d.ts.map +1 -1
- package/dist/gate/scope_resolver.js +1 -1
- package/dist/gate/scope_resolver.js.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/server/tools/index.d.ts.map +1 -1
- package/dist/server/tools/index.js +4 -2
- package/dist/server/tools/index.js.map +1 -1
- package/dist/server/tools/middleware.d.ts.map +1 -1
- package/dist/server/tools/middleware.js +1 -0
- package/dist/server/tools/middleware.js.map +1 -1
- package/dist/server/tools/schemas.d.ts +10 -0
- package/dist/server/tools/schemas.d.ts.map +1 -1
- package/dist/server/tools/schemas.js +10 -0
- package/dist/server/tools/schemas.js.map +1 -1
- package/dist/server/tools/sf_doctor.d.ts +8 -0
- package/dist/server/tools/sf_doctor.d.ts.map +1 -1
- package/dist/server/tools/sf_doctor.js +58 -2
- package/dist/server/tools/sf_doctor.js.map +1 -1
- package/dist/server/tools/sf_task.d.ts +83 -0
- package/dist/server/tools/sf_task.d.ts.map +1 -1
- package/dist/server/tools/sf_task.js +121 -4
- package/dist/server/tools/sf_task.js.map +1 -1
- package/dist/server/tools/sf_waiver.d.ts +31 -0
- package/dist/server/tools/sf_waiver.d.ts.map +1 -0
- package/dist/server/tools/sf_waiver.js +139 -0
- package/dist/server/tools/sf_waiver.js.map +1 -0
- package/dist/server/tools/sf_work.d.ts +194 -0
- package/dist/server/tools/sf_work.d.ts.map +1 -1
- package/dist/server/tools/sf_work.js +603 -40
- package/dist/server/tools/sf_work.js.map +1 -1
- package/dist/shared/paths.d.ts +4 -0
- package/dist/shared/paths.d.ts.map +1 -1
- package/dist/shared/paths.js +6 -0
- package/dist/shared/paths.js.map +1 -1
- package/dist/shared/traceability_id_utils.js +3 -3
- package/dist/shared/traceability_id_utils.js.map +1 -1
- package/dist/types/pipeline_types.d.ts +4 -1
- package/dist/types/pipeline_types.d.ts.map +1 -1
- package/dist/verify/audit/probe_executor.d.ts +4 -1
- package/dist/verify/audit/probe_executor.d.ts.map +1 -1
- package/dist/verify/audit/probe_executor.js +4 -1
- package/dist/verify/audit/probe_executor.js.map +1 -1
- package/dist/verify/audit/probe_rule.d.ts +3 -0
- package/dist/verify/audit/probe_rule.d.ts.map +1 -1
- package/dist/verify/audit/probe_rule.js +3 -0
- package/dist/verify/audit/probe_rule.js.map +1 -1
- package/dist/verify/contracts/decision_workshop.d.ts.map +1 -1
- package/dist/verify/contracts/decision_workshop.js +4 -3
- package/dist/verify/contracts/decision_workshop.js.map +1 -1
- package/dist/verify/contracts/runtime_state_recovery_registry.d.ts.map +1 -1
- package/dist/verify/contracts/runtime_state_recovery_registry.js +0 -1
- package/dist/verify/contracts/runtime_state_recovery_registry.js.map +1 -1
- package/package.json +1 -1
- package/templates/build/enforced.md +263 -68
- package/templates/build//346/263/250/351/207/212/347/272/252/345/276/213.md +48 -0
- package/templates/build//346/265/213/350/257/225/344/274/230/345/205/210/347/274/226/347/240/201.md +1 -0
- package/templates/build//346/265/213/350/257/225/350/256/241/345/210/222.md +9 -4
- package/templates/build//347/274/226/347/240/201/347/272/252/345/276/213.md +28 -1
- package/templates/design/API/346/216/245/345/217/243/350/247/204/346/240/274/346/226/207/346/241/243.md +7 -0
- package/templates/design/enforced.md +204 -14
- package/templates/design//345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201/345/257/274/350/210/252.md +9 -7
- package/templates/design//345/210/207/347/211/207/350/247/204/345/210/222.md +4 -0
- package/templates/design//345/274/200/345/217/221/345/210/207/347/211/207/350/256/241/345/210/222.md +76 -0
- package/templates/design//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/346/226/207/346/241/243.md +2 -0
- package/templates/design//346/236/266/346/236/204/350/256/276/350/256/241.md +24 -0
- package/templates/design//350/256/276/350/256/241/345/206/263/347/255/226/347/272/252/345/276/213.md +58 -0
- package/templates/design//350/256/276/350/256/241/350/264/250/351/207/217/350/246/201/347/202/271.md +58 -0
- package/templates/design//351/234/200/346/261/202/345/210/206/346/236/220.md +24 -0
- package/templates/operate/UI/350/247/206/350/247/211/351/252/214/346/224/266/347/272/252/345/276/213.md +85 -0
- package/templates/operate/enforced.md +42 -6
- package/templates/operate//345/217/221/345/270/203/350/257/264/346/230/216.md +19 -1
- package/templates/operate//351/203/250/347/275/262/351/205/215/347/275/256.md +10 -0
- package/templates/shared/enforced.md +37 -0
- package/templates/shared//345/267/245/344/275/234/346/265/201/345/257/274/350/210/252/345/245/221/347/272/246.md +1 -1
- package/templates/shared//345/267/245/344/275/234/346/265/201/347/241/254/350/247/204/345/210/231/345/245/221/347/272/246.md +2 -2
- package/templates/shared//347/240/224/350/256/250/350/256/260/345/275/225.md +54 -0
- package/templates/verify/enforced.md +92 -262
- package/templates/verify//344/272/244/344/273/230/345/256/214/345/244/207/346/200/247/345/256/241/346/237/245.md +1 -0
- package/templates/verify//344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +12 -2
- package/templates/verify//345/256/241/346/237/245/346/270/205/345/215/225.md +3 -1
- package/templates/verify//346/236/266/346/236/204/350/257/255/344/271/211/347/272/242/347/272/277.md +60 -0
- package/dist/core/scope_checker.d.ts +0 -29
- package/dist/core/scope_checker.d.ts.map +0 -1
- package/dist/core/scope_checker.js +0 -53
- package/dist/core/scope_checker.js.map +0 -1
- package/dist/gate/executors/executors_openapi_sync.d.ts +0 -23
- package/dist/gate/executors/executors_openapi_sync.d.ts.map +0 -1
- package/dist/gate/executors/executors_openapi_sync.js +0 -145
- package/dist/gate/executors/executors_openapi_sync.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime_state_recovery_registry.js","sourceRoot":"","sources":["../../../src/verify/contracts/runtime_state_recovery_registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAYH,wFAAwF;AACxF,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAuC;IAC3E,gCAAgC;IAChC,iBAAiB,EAAE,EAAE,KAAK,EAAE,kCAAkC,EAAE,KAAK,EAAE,cAAc,EAAE;IACvF,8BAA8B,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,cAAc,EAAE;IACtG,kBAAkB,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,cAAc,EAAE;IAE/F,uCAAuC;IACvC,aAAa,EAAE,EAAE,KAAK,EAAE,wDAAwD,EAAE;IAElF,iDAAiD;IACjD,wBAAwB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACnD,wBAAwB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACnD,kBAAkB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC7C,sBAAsB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACjD,4BAA4B,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACvD,0BAA0B,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACrD,0BAA0B,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACrD,gBAAgB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC3C,oBAAoB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC/C,sBAAsB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACjD,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACnC,iBAAiB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC5C,kBAAkB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC7C,mCAAmC,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC9D,+BAA+B,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC1D,+BAA+B,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC1D,2BAA2B,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACtD,oBAAoB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC/C,yBAAyB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAEpD,+CAA+C;IAC/C,SAAS,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACpC,YAAY,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACvC,mBAAmB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC9C,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACtC,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACnC,kBAAkB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC7C,cAAc,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACzC,eAAe,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC1C,aAAa,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACxC,kBAAkB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC7C,cAAc,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACzC,eAAe,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC1C,mBAAmB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC9C,oBAAoB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC/C,iBAAiB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAC5C,sBAAsB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACjD,yBAAyB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACpD,0BAA0B,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IACrD,
|
|
1
|
+
{"version":3,"file":"runtime_state_recovery_registry.js","sourceRoot":"","sources":["../../../src/verify/contracts/runtime_state_recovery_registry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -80,12 +80,15 @@ checks:
|
|
|
80
80
|
target: "self"
|
|
81
81
|
- id: SEC-04
|
|
82
82
|
executor: regex_pattern_scan
|
|
83
|
-
rule: "禁止硬编码密码/密钥/token"
|
|
83
|
+
rule: "禁止硬编码密码/密钥/token(引号包裹的≥12字符高熵字面量)"
|
|
84
84
|
severity: error
|
|
85
85
|
check_type: deterministic
|
|
86
|
-
|
|
86
|
+
# 收窄:原 `\S` 把 `password=request.getParameter()`、`password: true`、`password="${ENV}"` 也当硬编码(语义判断塞进正则)。
|
|
87
|
+
# 改为:① 必须引号包裹+≥12字符(只抓高熵字面量)② 负前瞻排除 "${...}" 环境变量占位符(${ENV} 化的真误报根因)
|
|
88
|
+
# ③ 关键词补 access[_-]?key / auth[_-]?token(对齐 shared-gate SEC-02)。severity 保持 error:收窄后只命中确定的硬编码长串。
|
|
89
|
+
pattern: "/(password|passwd|secret|api[_-]?key|access[_-]?key|private[_-]?key|auth[_-]?token)\\s*[:=]\\s*[\"'](?![$][{])[^\"'\\s]{12,}/i"
|
|
87
90
|
languages: [通用]
|
|
88
|
-
evidence_required: ["regex_pattern_scan 扫描结果(git diff
|
|
91
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无硬编码密钥命中;环境变量占位符 ${...} 已排除)"]
|
|
89
92
|
gate: build-gate
|
|
90
93
|
target: "self"
|
|
91
94
|
- id: SEC-05
|
|
@@ -111,7 +114,7 @@ checks:
|
|
|
111
114
|
- id: SEC-07
|
|
112
115
|
executor: regex_pattern_scan
|
|
113
116
|
rule: "禁止 ../ 路径遍历风险"
|
|
114
|
-
severity:
|
|
117
|
+
severity: warning
|
|
115
118
|
check_type: deterministic
|
|
116
119
|
pattern: '/\.\.[\\\/]/'
|
|
117
120
|
languages: [通用]
|
|
@@ -163,22 +166,23 @@ checks:
|
|
|
163
166
|
rule: "JWT 必须校验签名算法,禁止未校验直接 decode"
|
|
164
167
|
severity: error
|
|
165
168
|
check_type: deterministic
|
|
166
|
-
pattern: '/\bjwt\.decode\s*\(/'
|
|
169
|
+
pattern: '/\bjwt\.decode\s*\(/i'
|
|
167
170
|
languages: [通用]
|
|
168
171
|
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未校验 JWT 命中)"]
|
|
169
172
|
gate: build-gate
|
|
170
173
|
target: "self"
|
|
171
|
-
# ——
|
|
172
|
-
- id:
|
|
174
|
+
# —— 日志契约(LOG-ZH,regex 验证中文日志;原 BLD-G03 中文日志部分硬化)——
|
|
175
|
+
- id: LOG-ZH
|
|
173
176
|
executor: regex_pattern_scan
|
|
174
|
-
rule: "
|
|
175
|
-
severity:
|
|
177
|
+
rule: "业务日志须含中文事件名(方便调试观察);命中=日志字符串无中文字符(纯英文/符号)"
|
|
178
|
+
severity: warning
|
|
176
179
|
check_type: deterministic
|
|
177
|
-
pattern: '
|
|
178
|
-
languages: [
|
|
179
|
-
evidence_required: ["regex_pattern_scan 扫描结果(git diff
|
|
180
|
+
pattern: '/(console\.(log|info|warn|error)|logger?\.\w+)\s*\(\s*["''][^"''一-龥]*["'']/'
|
|
181
|
+
languages: [通用]
|
|
182
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无纯英文日志命中)"]
|
|
180
183
|
gate: build-gate
|
|
181
184
|
target: "self"
|
|
185
|
+
# —— 代码架构检查(从 design-gate 迁入,代码实现阶段归属)——
|
|
182
186
|
- id: ARC-02
|
|
183
187
|
executor: regex_pattern_scan
|
|
184
188
|
rule: "禁止 Entity 直接暴露给外部接口,必须用 DTO"
|
|
@@ -189,16 +193,6 @@ checks:
|
|
|
189
193
|
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 Entity 直接暴露命中)"]
|
|
190
194
|
gate: build-gate
|
|
191
195
|
target: "self"
|
|
192
|
-
- id: ARC-03
|
|
193
|
-
executor: regex_pattern_scan
|
|
194
|
-
rule: "写操作(save/create/update/delete)必须有 @Transactional"
|
|
195
|
-
severity: error
|
|
196
|
-
check_type: deterministic
|
|
197
|
-
pattern: '/\.(save|insert|update|delete|remove|create)\s*\(/'
|
|
198
|
-
languages: [java]
|
|
199
|
-
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无写操作缺事务命中)"]
|
|
200
|
-
gate: build-gate
|
|
201
|
-
target: "self"
|
|
202
196
|
- id: ARC-04
|
|
203
197
|
executor: regex_pattern_scan
|
|
204
198
|
rule: "禁止直接 new Service/Repository/Mapper/Manager,必须依赖注入"
|
|
@@ -212,31 +206,182 @@ checks:
|
|
|
212
206
|
- id: ARC-06
|
|
213
207
|
executor: regex_pattern_scan
|
|
214
208
|
rule: "前端 API 调用必须封装到 service 层,禁止组件内直接 fetch/axios"
|
|
215
|
-
severity:
|
|
209
|
+
severity: warning
|
|
216
210
|
check_type: deterministic
|
|
217
211
|
pattern: '/\b(fetch|axios)\s*\(/'
|
|
218
212
|
languages: [ts]
|
|
219
213
|
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无组件直接 API 调用命中)"]
|
|
220
214
|
gate: build-gate
|
|
221
215
|
target: "self"
|
|
222
|
-
- id: ARC-
|
|
216
|
+
- id: ARC-08
|
|
223
217
|
executor: regex_pattern_scan
|
|
224
|
-
rule: "
|
|
218
|
+
rule: "Service 层禁止直接操作 HttpServletRequest/Response"
|
|
225
219
|
severity: error
|
|
226
220
|
check_type: deterministic
|
|
227
|
-
pattern: '
|
|
221
|
+
pattern: '/\bHttpServletRequest\b|\bHttpServletResponse\b/'
|
|
228
222
|
languages: [java]
|
|
229
|
-
evidence_required: ["regex_pattern_scan 扫描结果(git diff
|
|
223
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 Service 操作 HttpServlet 命中)"]
|
|
230
224
|
gate: build-gate
|
|
231
225
|
target: "self"
|
|
232
|
-
|
|
226
|
+
# —— 并发安全(CON-*,从 verify/enforced.md 物理归位;gate 本就是 build-gate)——
|
|
227
|
+
- id: CON-01
|
|
233
228
|
executor: regex_pattern_scan
|
|
234
|
-
rule: "
|
|
229
|
+
rule: "共享可变状态必须有并发保护"
|
|
235
230
|
severity: error
|
|
236
231
|
check_type: deterministic
|
|
237
|
-
pattern: '/\
|
|
232
|
+
pattern: '/\b(public|private|protected)\s+static\s+[\w<>,\s]*\b(HashMap|ArrayList|HashSet|LinkedList)\b/'
|
|
238
233
|
languages: [java]
|
|
239
|
-
evidence_required: ["regex_pattern_scan 扫描结果(git diff
|
|
234
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未保护共享状态命中)"]
|
|
235
|
+
gate: build-gate
|
|
236
|
+
target: "self"
|
|
237
|
+
- id: CON-02
|
|
238
|
+
executor: regex_pattern_scan
|
|
239
|
+
rule: "分布式环境禁止使用 JVM 级锁"
|
|
240
|
+
severity: warning
|
|
241
|
+
check_type: deterministic
|
|
242
|
+
pattern: '/\bsynchronized\s*\(/'
|
|
243
|
+
languages: [java]
|
|
244
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 JVM 级锁误用命中)"]
|
|
245
|
+
gate: build-gate
|
|
246
|
+
target: "self"
|
|
247
|
+
- id: CON-03
|
|
248
|
+
executor: regex_pattern_scan
|
|
249
|
+
rule: "先查后改(如库存/计数)必须用原子操作"
|
|
250
|
+
severity: warning
|
|
251
|
+
check_type: deterministic
|
|
252
|
+
pattern: '/\.(findById|getById|getOne|selectById)\s*\([^)]*\)/'
|
|
253
|
+
languages: [java]
|
|
254
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非原子先查后改命中)"]
|
|
255
|
+
gate: build-gate
|
|
256
|
+
target: "self"
|
|
257
|
+
- id: CON-04
|
|
258
|
+
executor: regex_pattern_scan
|
|
259
|
+
rule: "禁止 @Transactional 同类内部调用导致事务失效"
|
|
260
|
+
severity: warning
|
|
261
|
+
check_type: deterministic
|
|
262
|
+
pattern: '/\bthis\.\w+\s*\(/'
|
|
263
|
+
languages: [java]
|
|
264
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无事务自调用命中)"]
|
|
265
|
+
gate: build-gate
|
|
266
|
+
target: "self"
|
|
267
|
+
- id: CON-05
|
|
268
|
+
executor: regex_pattern_scan
|
|
269
|
+
rule: "事务内禁止执行外部调用(HTTP/RPC)"
|
|
270
|
+
severity: warning
|
|
271
|
+
check_type: deterministic
|
|
272
|
+
pattern: '/\.(getForObject|postForObject|exchange|execute)\s*\(/'
|
|
273
|
+
languages: [java]
|
|
274
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无事务内外部调用命中)"]
|
|
275
|
+
gate: build-gate
|
|
276
|
+
target: "self"
|
|
277
|
+
- id: CON-06
|
|
278
|
+
executor: regex_pattern_scan
|
|
279
|
+
rule: "SimpleDateFormat 非线程安全,禁止作为共享成员"
|
|
280
|
+
severity: error
|
|
281
|
+
check_type: deterministic
|
|
282
|
+
pattern: '/\bstatic\s+[\w<>,\s]*SimpleDateFormat\b/'
|
|
283
|
+
languages: [java]
|
|
284
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 SimpleDateFormat 共享命中)"]
|
|
285
|
+
gate: build-gate
|
|
286
|
+
target: "self"
|
|
287
|
+
- id: CON-07
|
|
288
|
+
executor: regex_pattern_scan
|
|
289
|
+
rule: "ThreadLocal 必须清理避免内存泄漏"
|
|
290
|
+
severity: error
|
|
291
|
+
check_type: deterministic
|
|
292
|
+
pattern: '/\bnew\s+ThreadLocal\b/'
|
|
293
|
+
languages: [java]
|
|
294
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无 ThreadLocal 未清理命中)"]
|
|
295
|
+
gate: build-gate
|
|
296
|
+
target: "self"
|
|
297
|
+
- id: CON-08
|
|
298
|
+
executor: regex_pattern_scan
|
|
299
|
+
rule: "HashMap/ArrayList 等禁止作为共享可变类成员"
|
|
300
|
+
severity: error
|
|
301
|
+
check_type: deterministic
|
|
302
|
+
pattern: '/\b(private|protected|public)\s+(?!static)[\w<>,\s]*\b(HashMap|ArrayList|HashSet|LinkedList)\s*[=;]/'
|
|
303
|
+
languages: [java]
|
|
304
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非线程安全集合成员命中)"]
|
|
305
|
+
gate: build-gate
|
|
306
|
+
target: "self"
|
|
307
|
+
- id: CON-09
|
|
308
|
+
executor: regex_pattern_scan
|
|
309
|
+
rule: "CompletableFuture 链必须处理异常"
|
|
310
|
+
severity: error
|
|
311
|
+
check_type: deterministic
|
|
312
|
+
pattern: '/\.(runAsync|supplyAsync)\s*\(/'
|
|
313
|
+
languages: [java]
|
|
314
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未处理异常命中)"]
|
|
315
|
+
gate: build-gate
|
|
316
|
+
target: "self"
|
|
317
|
+
- id: CON-10
|
|
318
|
+
executor: regex_pattern_scan
|
|
319
|
+
rule: "线程池必须正确配置拒绝策略"
|
|
320
|
+
severity: error
|
|
321
|
+
check_type: deterministic
|
|
322
|
+
pattern: '/\bnew\s+ThreadPoolExecutor\s*\(/'
|
|
323
|
+
languages: [java]
|
|
324
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无未配置拒绝策略命中)"]
|
|
325
|
+
gate: build-gate
|
|
326
|
+
target: "self"
|
|
327
|
+
# —— API 规范(API-03/04/06/07/08/09,从 verify/enforced.md 归位;API-01/02 与 ARC-02 重复已删;ARC-03 已降级编码纪律 guidance)——
|
|
328
|
+
- id: API-03
|
|
329
|
+
executor: ast_annotation_check
|
|
330
|
+
rule: "写接口(POST/PUT/DELETE/PATCH)必须有权限注解(@PreAuthorize/@Secured/@RolesAllowed);类级(作用于所有方法)或方法级皆可;hasAnyRole/or/hasAuthority 多角色表达式同样识别(引擎只认 @PreAuthorize 存在,表达式语义由 Spring 运行时保障)"
|
|
331
|
+
severity: error
|
|
332
|
+
check_type: deterministic
|
|
333
|
+
languages: [java]
|
|
334
|
+
evidence_required: ["ast_annotation_check 扫描结果(git diff 写接口缺权限注解命中)"]
|
|
335
|
+
gate: build-gate
|
|
336
|
+
target: "self"
|
|
337
|
+
- id: API-04
|
|
338
|
+
executor: regex_pattern_scan
|
|
339
|
+
rule: "禁止硬编码分页参数,必须参数化"
|
|
340
|
+
severity: error
|
|
341
|
+
check_type: deterministic
|
|
342
|
+
pattern: '/\b(pageNum|pageSize)\s*=\s*\d/'
|
|
343
|
+
languages: [java]
|
|
344
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无硬编码分页命中)"]
|
|
345
|
+
gate: build-gate
|
|
346
|
+
target: "self"
|
|
347
|
+
- id: API-06
|
|
348
|
+
executor: regex_pattern_scan
|
|
349
|
+
rule: "接口路径须符合 RESTful 规范"
|
|
350
|
+
severity: warning
|
|
351
|
+
check_type: deterministic
|
|
352
|
+
pattern: '/@(Get|Post|Put|Delete)Mapping\s*\(\s*[^\)]*(get|list|create|delete|update)/i'
|
|
353
|
+
languages: [java]
|
|
354
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无路径违规命中)"]
|
|
355
|
+
gate: build-gate
|
|
356
|
+
target: "self"
|
|
357
|
+
- id: API-07
|
|
358
|
+
executor: regex_pattern_scan
|
|
359
|
+
rule: "接口必须使用统一响应包装(ApiResult/Result/R)"
|
|
360
|
+
severity: error
|
|
361
|
+
check_type: deterministic
|
|
362
|
+
pattern: '/\bResponseEntity\s*<\s*\w*Entity\b/'
|
|
363
|
+
languages: [java]
|
|
364
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无裸返回命中)"]
|
|
365
|
+
gate: build-gate
|
|
366
|
+
target: "self"
|
|
367
|
+
- id: API-08
|
|
368
|
+
executor: regex_pattern_scan
|
|
369
|
+
rule: "分页接口必须返回标准分页结构"
|
|
370
|
+
severity: error
|
|
371
|
+
check_type: deterministic
|
|
372
|
+
pattern: '/\.(findAll|listAll)\s*\(\s*\d/'
|
|
373
|
+
languages: [java]
|
|
374
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无非标准分页命中)"]
|
|
375
|
+
gate: build-gate
|
|
376
|
+
target: "self"
|
|
377
|
+
- id: API-09
|
|
378
|
+
executor: regex_pattern_scan
|
|
379
|
+
rule: "接口路径须含版本号"
|
|
380
|
+
severity: error
|
|
381
|
+
check_type: deterministic
|
|
382
|
+
pattern: '/@(Get|Post|Put|Delete|Request)Mapping\s*\(\s*"\/(?!api\/v\d)/i'
|
|
383
|
+
languages: [java]
|
|
384
|
+
evidence_required: ["regex_pattern_scan 扫描结果(git diff 变更文件无缺版本号命中)"]
|
|
240
385
|
gate: build-gate
|
|
241
386
|
target: "self"
|
|
242
387
|
- id: BLD-G01
|
|
@@ -255,14 +400,6 @@ checks:
|
|
|
255
400
|
evidence_required: ["lazy_pattern_detector 输出(hard_fail=0)","空函数体扫描结果(0 匹配)","空 catch 扫描结果(0 匹配)"]
|
|
256
401
|
gate: build-gate
|
|
257
402
|
target: "self"
|
|
258
|
-
- id: BLD-G03
|
|
259
|
-
executor: lazy_pattern_check
|
|
260
|
-
rule: "变更代码必须满足中文注释与日志契约:后端类/方法有中文 Javadoc,关键业务行有中文行注释,业务日志使用中文事件名"
|
|
261
|
-
severity: error
|
|
262
|
-
check_type: deterministic
|
|
263
|
-
evidence_required: ["non_chinese_comment 检测结果(须为 0)","non_chinese_log 检测结果(须为 0)"]
|
|
264
|
-
gate: build-gate
|
|
265
|
-
target: "self"
|
|
266
403
|
- id: BLD-G04
|
|
267
404
|
executor: tsc_compile
|
|
268
405
|
rule: "tsc --noEmit 零错误,项目构建成功"
|
|
@@ -273,46 +410,104 @@ checks:
|
|
|
273
410
|
target: "self"
|
|
274
411
|
- id: BLD-G05
|
|
275
412
|
executor: vitest_run
|
|
276
|
-
rule: "
|
|
413
|
+
rule: "全量测试通过,无失败用例(vitest_run 验测试通过;覆盖率阈值由 BLD-G07 coverage_threshold 独立 check 覆盖)"
|
|
277
414
|
severity: error
|
|
278
415
|
check_type: deterministic
|
|
279
|
-
evidence_required: ["测试报告(passed/failed/total)"
|
|
416
|
+
evidence_required: ["测试报告(passed/failed/total)"]
|
|
280
417
|
gate: build-gate
|
|
281
418
|
target: "self"
|
|
282
|
-
- id: BLD-
|
|
283
|
-
executor:
|
|
284
|
-
rule: "
|
|
419
|
+
- id: BLD-G07
|
|
420
|
+
executor: coverage_threshold
|
|
421
|
+
rule: "行覆盖率≥70%(vitest --coverage json-summary;激活原死代码 coverage_threshold。TS 项目生效:装 vitest 但未配 coverage/无 summary/覆盖率<70% → fail-closed;非 TS/无 vitest 跳过)"
|
|
422
|
+
severity: error
|
|
423
|
+
check_type: deterministic
|
|
424
|
+
evidence_required: ["coverage-summary.json 行覆盖率≥70%(仅 TS/vitest 项目)"]
|
|
425
|
+
gate: build-gate
|
|
426
|
+
target: "self"
|
|
427
|
+
- id: BLD-G08
|
|
428
|
+
executor: jacoco_threshold
|
|
429
|
+
rule: "Java 行覆盖率≥70%(解析 target/site/jacoco/jacoco.xml;Maven 项目生效:须配 jacoco-maven-plugin + mvn test 生成报告,<70% → fail-closed;非 Maven 跳过)"
|
|
430
|
+
severity: error
|
|
431
|
+
check_type: deterministic
|
|
432
|
+
evidence_required: ["jacoco.xml 行覆盖率≥70%(仅 Maven/Java 项目)"]
|
|
433
|
+
gate: build-gate
|
|
434
|
+
target: "self"
|
|
435
|
+
# —— 超大系统 build 前研讨兜底(BLD-DELIB:开发切片计划 SLC 切片数>=5 时须有 build 研讨记录,补下限防 AI 跳过研讨;切片计划不存在或<5 跳过)——
|
|
436
|
+
- id: BLD-DELIB
|
|
437
|
+
executor: slice_deliberation_gate
|
|
438
|
+
rule: "超大系统(开发切片计划 SLC 切片数>=5)build 写代码前须 deliberate 研讨实现策略(研讨记录 docs/研讨记录/构建/产物-研讨记录.md 存在);切片计划不存在或切片<5 则跳过"
|
|
439
|
+
severity: error
|
|
440
|
+
check_type: deterministic
|
|
441
|
+
evidence_required: ["docs/architecture/02-开发切片计划.md"]
|
|
442
|
+
gate: build-gate
|
|
443
|
+
target: "self"
|
|
444
|
+
# —— db/api 适用性兜底(③ build 兜底:design_doc 声明「适用」须产出,防 design 漏产致 build 缺地基)——
|
|
445
|
+
- id: BLD-DBAPI
|
|
446
|
+
executor: applicability_check
|
|
447
|
+
rule: "build 前置兜底(通用 check,所有 build verify 跑):design_doc「产物适用性声明」声明「适用」的 database_design/api_specification 须已产出(design_doc 不存在则跳过,兼容小改跳 design)"
|
|
285
448
|
severity: error
|
|
286
449
|
check_type: deterministic
|
|
287
|
-
evidence_required: ["
|
|
450
|
+
evidence_required: ["数据库设计文档模版", "API接口规格文档模版"]
|
|
451
|
+
gate: build-gate
|
|
452
|
+
target: "self"
|
|
453
|
+
# —— 多工程结构兜底(MULTI-ENGINE-STRUCT:intent projects 每端须有 src/ + 独立 .gitignore)——
|
|
454
|
+
- id: MULTI-ENGINE-STRUCT
|
|
455
|
+
executor: multi_engine_structure_check
|
|
456
|
+
rule: "多工程项目(intent projects 声明)每端工程须有 src/ + 独立 .gitignore(首个切片建工程骨架);单工程跳过"
|
|
457
|
+
severity: error
|
|
458
|
+
check_type: deterministic
|
|
459
|
+
evidence_required: ["intent.yaml projects"]
|
|
460
|
+
gate: build-gate
|
|
461
|
+
target: "self"
|
|
462
|
+
# —— 测试计划结构(TESTPLAN-STRUCT,test_plan 产物结构完整性)——
|
|
463
|
+
- id: TESTPLAN-STRUCT
|
|
464
|
+
executor: document_structure
|
|
465
|
+
rule: "测试计划须含「测试范围」「测试条目」「环境与数据」「执行顺序」「验收标准」「完成判定」章节"
|
|
466
|
+
severity: warning
|
|
467
|
+
check_type: deterministic
|
|
468
|
+
required_artifact: 测试计划模版
|
|
469
|
+
evidence_required: ["docs/build/测试计划.md"]
|
|
470
|
+
gate: build-gate
|
|
471
|
+
target: self
|
|
472
|
+
# —— 产物间一致性(cross_validation:测试覆盖需求)——
|
|
473
|
+
- id: XVAL-TEST-REQ
|
|
474
|
+
executor: cross_validation
|
|
475
|
+
rule: "REQ-* 一致性+覆盖率"
|
|
476
|
+
severity: warning
|
|
477
|
+
check_type: deterministic
|
|
478
|
+
required_artifact: 测试计划模版
|
|
479
|
+
evidence_required: ["需求分析模版"]
|
|
480
|
+
gate: build-gate
|
|
481
|
+
target: "self"
|
|
482
|
+
- id: TESTPLAN-BLOCK
|
|
483
|
+
executor: document_structure
|
|
484
|
+
check_type: deterministic
|
|
485
|
+
severity: error
|
|
288
486
|
gate: build-gate
|
|
487
|
+
required_artifact: 测试计划模版
|
|
488
|
+
rule: "测试条目章节须有表格行(反退化:禁只列前几行后省略/一句话概括代替)"
|
|
489
|
+
block_check:
|
|
490
|
+
item_pattern: '^##\s+2\.'
|
|
491
|
+
require_table: true
|
|
492
|
+
min_table_rows: 2
|
|
493
|
+
evidence_required: ["测试计划模版"]
|
|
289
494
|
target: "self"
|
|
290
495
|
---
|
|
291
496
|
|
|
292
497
|
# build-gate 强制检查清单
|
|
293
498
|
|
|
294
|
-
|
|
499
|
+
47 条确定性检查(3 agent 交叉验证修复:8 过宽 regex error→warning / 删 4 形同虚设 / 加 TESTPLAN-STRUCT / SEC-12 加 Java JWT / 加 BLD-DELIB 超大系统研讨兜底 / 加 MULTI-ENGINE-STRUCT 多工程骨架兜底)。注:verify 域 ARCH-DEP(external_command 缺 command → dependency-cruiser 从未真跑、永远 fail-closed)与 ARC-05(幽灵 check:注释/guidance 引用但 enforced checks 不存在)为假覆盖,待 verify 域修(详见 verify/enforced.md)。
|
|
295
500
|
|
|
296
501
|
对应工程经验:
|
|
297
|
-
- TS-Q01
|
|
298
|
-
-
|
|
299
|
-
-
|
|
300
|
-
-
|
|
301
|
-
-
|
|
302
|
-
-
|
|
303
|
-
-
|
|
304
|
-
-
|
|
305
|
-
-
|
|
306
|
-
-
|
|
307
|
-
- SEC-
|
|
308
|
-
-
|
|
309
|
-
- SEC-09
|
|
310
|
-
- SEC-10
|
|
311
|
-
- SEC-11
|
|
312
|
-
- SEC-12
|
|
313
|
-
- BLD-G01
|
|
314
|
-
- BLD-G02
|
|
315
|
-
- BLD-G03
|
|
316
|
-
- BLD-G04
|
|
317
|
-
- BLD-G05
|
|
318
|
-
- BLD-G06
|
|
502
|
+
- TS-Q01~04(TS 类型/相等/var)
|
|
503
|
+
- SEC-01~12(安全:注入/密钥/日志/重定向/路径/反序列化/SSRF/CORS/Cookie/JWT)
|
|
504
|
+
- ARC-02/04/06/08(架构:Controller/Entity/DI/前端fetch/循环依赖/HttpServlet;事务约定移 guidance 编码纪律,regex 判不了事务覆盖)
|
|
505
|
+
- CON-01~10(并发:共享状态/JVM锁/原子/事务自调用/ThreadLocal/线程池)—— 归位自 verify
|
|
506
|
+
- API-03/04/06/07/08/09(API:权限/分页/RESTful/响应包装/版本号)—— 归位自 verify
|
|
507
|
+
- BLD-G01/02/04/05(前置门禁/偷懒模式/tsc/vitest)
|
|
508
|
+
- BLD-DELIB(超大系统 build 前强制研讨实现策略:SLC≥5 须有 build 研讨记录)
|
|
509
|
+
- MULTI-ENGINE-STRUCT(多工程骨架兜底:intent projects 每端须有 src/ + 独立 .gitignore)
|
|
510
|
+
- LOG-ZH(中文日志 regex 验证;原 BLD-G03 中文日志部分硬化)
|
|
511
|
+
- 中文注释纪律 → guidance《注释纪律》(软,原 BLD-G03 non_chinese_comment 拆出)
|
|
512
|
+
- 原 BLD-G06(密钥/鉴权/注入/漏洞)已删:密钥由 SEC-04、注入由 SEC-01、漏洞由依赖扫描覆盖(重复+假声明)
|
|
513
|
+
- XVAL-TEST-REQ(测试↔需求覆盖)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ka-guidance-注释纪律
|
|
3
|
+
kind: guidance
|
|
4
|
+
title: 注释纪律
|
|
5
|
+
sync_policy: engine_only
|
|
6
|
+
status: active
|
|
7
|
+
triggers:
|
|
8
|
+
- 写代码
|
|
9
|
+
- 实现
|
|
10
|
+
- 编码
|
|
11
|
+
- 加类
|
|
12
|
+
- 加方法
|
|
13
|
+
- 注释
|
|
14
|
+
- Javadoc
|
|
15
|
+
- 文档注释
|
|
16
|
+
extra:
|
|
17
|
+
name: comment-discipline
|
|
18
|
+
scope:
|
|
19
|
+
- '*'
|
|
20
|
+
products:
|
|
21
|
+
- '*'
|
|
22
|
+
type: procedure
|
|
23
|
+
lifecycle_status: active
|
|
24
|
+
version: 1.0.0
|
|
25
|
+
domain: build
|
|
26
|
+
owner_mechanism: mc-backend-pattern
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# 注释纪律
|
|
30
|
+
|
|
31
|
+
> 代码注释中文契约(原 BLD-G03 的 `non_chinese_comment` 部分)。
|
|
32
|
+
> 为何软:判"类有无 doc""doc 是否含职责边界"需 AST + 语义,regex_pattern_scan(行扫)做不到精确。硬标会假覆盖(=原 BLD-G03 的坑)。靠 guidance 注入 + AI 自觉 + 对抗审查复核。中文**日志**由硬规则 LOG-ZH 验证(regex 可判)。
|
|
33
|
+
|
|
34
|
+
## 类必须有中文 doc
|
|
35
|
+
- 说明**职责 + 边界**:这个类管什么、不管什么、与谁协作
|
|
36
|
+
|
|
37
|
+
## 方法必须有中文 doc
|
|
38
|
+
- **职责**(做什么)+ **边界**(不做什么)+ **入参**(含义/约束)+ **出参**(含义)+ **异常**(何时抛)
|
|
39
|
+
|
|
40
|
+
## 重要业务行须中文行注释
|
|
41
|
+
- 判断 / 折中 / 绕过 / 业务规则 / 性能取舍 —— 这些"为什么这么写"的行须注释
|
|
42
|
+
- 显而易见的代码不需注释(避免噪音)
|
|
43
|
+
|
|
44
|
+
## 所有注释中文
|
|
45
|
+
- 与代码日志中文一致
|
|
46
|
+
|
|
47
|
+
## 关联
|
|
48
|
+
- [[编码纪律]] / [[证据驱动与反幻觉]]
|
package/templates/build//346/265/213/350/257/225/344/274/230/345/205/210/347/274/226/347/240/201.md
CHANGED
|
@@ -52,6 +52,7 @@ red(失败测试)→ green(最小实现通过)→ refactor(重构保
|
|
|
52
52
|
- 增量代码行覆盖率 ≥ 80%(build-gate BLD-G05 守护)
|
|
53
53
|
- 覆盖率是下限不是目标——覆盖关键路径比追数字重要
|
|
54
54
|
- 重点覆盖:正常路径 / 错误路径 / 边界 / 权限 / 并发
|
|
55
|
+
- 验收点锚定:每个 REQ-* 验收点须在测试标注 `@covers REQ-xxx`(verify-gate AC-COVERAGE 校验——覆盖率数字可糊弄,验收点锚定不可;Java `// @covers`、Python `# @covers`、Go `// @covers`)
|
|
55
56
|
|
|
56
57
|
## 测试质量(禁止伪满足)
|
|
57
58
|
|
|
@@ -24,6 +24,7 @@ extra:
|
|
|
24
24
|
|
|
25
25
|
> **产物定位**:build 阶段必出。定义"测什么、怎么测、什么证据算通过"。
|
|
26
26
|
> **核心纪律**:禁止假验证——E0(无运行时证据)不可接受([[证据驱动与反幻觉]] 第 5/10 条)。覆盖正常/异常/边界/权限/并发,不只 happy path。
|
|
27
|
+
> **反退化纪律**:每个测试条目(T-*)必须在「测试条目」表中逐行填写真实编号(REQ-*/SLC-*),禁止只列前几行后用「…」省略、禁止用一句话概括代替表格行。
|
|
27
28
|
|
|
28
29
|
## 1. 测试范围
|
|
29
30
|
- 关联任务/需求:
|
|
@@ -31,12 +32,15 @@ extra:
|
|
|
31
32
|
- 不在范围内的事项:
|
|
32
33
|
|
|
33
34
|
## 2. 测试条目
|
|
35
|
+
|
|
36
|
+
> 填**真实编号**:REQ-001(需求分析的真实 REQ)、SLC-用户-01(切片规划的真实切片)。build-gate cross_validation 校验测试↔需求的 REQ-* 一致性+覆盖率,占位符 REQ-NNN 会 fail-closed 阻断。
|
|
37
|
+
|
|
34
38
|
| 编号 | 功能点 | 测试类型 | 覆盖策略 | 关联需求 | 关联切片 | test_phase | 优先级 | Evidence 级别 |
|
|
35
39
|
|------|--------|---------|---------|---------|-----------|-----------|--------|--------------|
|
|
36
|
-
| T-01 | 正常流程 | 集成测试 | 正常路径 | REQ-
|
|
37
|
-
| T-02 | 参数缺失 | 单元测试 | 错误路径 | REQ-
|
|
38
|
-
| T-03 | 权限不足 | 集成测试 | 错误路径 | REQ-
|
|
39
|
-
| T-04 | 边界值 | 单元测试 | 边界场景 | REQ-
|
|
40
|
+
| T-01 | 正常流程 | 集成测试 | 正常路径 | REQ-001 | SLC-用户-01 | red→green | P0 | E1 |
|
|
41
|
+
| T-02 | 参数缺失 | 单元测试 | 错误路径 | REQ-001 | SLC-用户-01 | red→green | P0 | E1 |
|
|
42
|
+
| T-03 | 权限不足 | 集成测试 | 错误路径 | REQ-002 | SLC-用户-01 | red→green | P0 | E2 |
|
|
43
|
+
| T-04 | 边界值 | 单元测试 | 边界场景 | REQ-001 | SLC-用户-01 | combined | P1 | E1 |
|
|
40
44
|
|
|
41
45
|
> 覆盖策略必含:正常路径 / 错误路径 / 边界 / 权限 / 并发(适用时)。缺一类须说明理由。
|
|
42
46
|
|
|
@@ -69,3 +73,4 @@ extra:
|
|
|
69
73
|
- [ ] 每条标注 Evidence 级别,无 E0
|
|
70
74
|
- [ ] P0 项有验收标准且执行通过
|
|
71
75
|
- [ ] 失败用例有修复或明确说明
|
|
76
|
+
- [ ] 测试条目表逐行填真实编号,无「…」省略、无一句话概括代替
|
|
@@ -34,6 +34,32 @@ extra:
|
|
|
34
34
|
> 吸收旧的「编码阶段执行」「编码就绪审查」「编码质量」「切片执行纪律」「防御性编码」。
|
|
35
35
|
> 基本功(命名/注释/单一职责/错误处理)见 [[工程纪律]],不重复。
|
|
36
36
|
|
|
37
|
+
## 超大系统:先研讨实现策略再动手
|
|
38
|
+
|
|
39
|
+
开发切片计划 SLC 切片数 ≥ 5(超大系统)时,build 写代码前**必须**先 `sf_work action=deliberate target=code` 与用户研讨实现策略(头脑风暴 + 第一性原理),收敛后把结论总结留痕到 `docs/研讨记录/构建/产物-研讨记录.md`,再 act 写代码。
|
|
40
|
+
|
|
41
|
+
- 此规则由 build-gate `BLD-DELIB` 确定性门禁兜底——未研讨则 build 阻断,不是软建议
|
|
42
|
+
- 小任务(切片 < 5 或无切片计划)不强制,正常列改动清单即可
|
|
43
|
+
- 研讨重点:切片实现顺序、跨切片共享代码先沉淀、风险切片先行验证
|
|
44
|
+
|
|
45
|
+
## 工程骨架:首个切片建多工程目录(涉及多端时)
|
|
46
|
+
|
|
47
|
+
build 域第一个切片(首次 `act target=code`)时,按架构 §6.3 端清单 + intent.yaml `projects` 创建工程目录骨架——每个端一个独立工程目录(`backend/` `client-portal/` `admin-web/` `miniapp/` `shared/`),每个工程目录内建标准 `src/` + 独立 `.gitignore`(按技术栈)+ 各自构建配置(package.json/pom.xml 等)。
|
|
48
|
+
|
|
49
|
+
- 工程目录结构 = 架构 §6.3 端清单 + intent.yaml `projects`(build scope `allowed_paths` 据此放行)
|
|
50
|
+
- **每个工程独立 `.gitignore`**(不要只在根目录一个):前端 `node_modules/` `dist/`、Java `target/` `build/`、小程序 `miniprogram_npm/` 等
|
|
51
|
+
- 各工程独立构建配置(package.json/pom.xml/build.gradle),独立依赖、独立构建
|
|
52
|
+
- 单工程项目(纯后端 API)保持根 `src/`,不强制多工程
|
|
53
|
+
|
|
54
|
+
## 前端骨架先行(涉及 FE-* 端时)
|
|
55
|
+
|
|
56
|
+
涉及前端端(架构 §6.3 声明 FE-*)的项目,前端骨架切片先于业务页面:每个 FE-* 端先落地路由 / 状态管理 / API service 壳 / 认证拦截器 / 脱敏工具,再填充业务页面。
|
|
57
|
+
|
|
58
|
+
- 骨架切片须覆盖架构 §6.3 所有 FE-* 端(XVAL-SLC 校验 ARCH-*/FE-* 覆盖)
|
|
59
|
+
- 共享层(shared:类型/API client/工具)先于各端业务沉淀,避免散落
|
|
60
|
+
- 前端 API 调用封装到 service 层,禁止组件内直接 fetch/axios(build-gate ARC-06)
|
|
61
|
+
- Vue3/uni-app 等无内置脚手架的技术栈,配自定义模板合同(`config.scaffold.contracts`)
|
|
62
|
+
|
|
37
63
|
## 实现前:先列改动清单(精准修改)
|
|
38
64
|
|
|
39
65
|
动手前明确([[工程执行总纲]] 精准修改):
|
|
@@ -45,8 +71,9 @@ extra:
|
|
|
45
71
|
## 实现中:不写半成品
|
|
46
72
|
|
|
47
73
|
- 不留空函数体、空 catch、TODO 占位(build-gate BLD-G02 守护)
|
|
48
|
-
- 关键业务行有中文注释,业务日志用中文事件名(
|
|
74
|
+
- 关键业务行有中文注释,业务日志用中文事件名(LOG-ZH + 注释纪律)
|
|
49
75
|
- 错误处理:禁止静默吞异常,错误信息说清哪步失败+原因+下一步
|
|
76
|
+
- 事务:写操作(save/create/update/delete)方法须在 Service 层加 @Transactional(regex 判不了事务覆盖,靠编码纪律约定+人工确认;原 ARC-03 硬 check 已降级此软纪律)
|
|
50
77
|
- 边界:空数据、null、超长、并发、重复提交都要处理
|
|
51
78
|
|
|
52
79
|
## 类型安全(TS)
|
|
@@ -24,6 +24,12 @@ extra:
|
|
|
24
24
|
|
|
25
25
|
> **产物定位**:涉及前后端接口对接时产出(按需)。把接口契约先于实现定清楚,避免前端等后端。
|
|
26
26
|
> **核心纪律**:契约先行([[编码纪律]]);每个 endpoint 有验收场景 + 验证证据([[证据驱动与反幻觉]])。
|
|
27
|
+
> **反退化纪律**:每个 endpoint 必须完整重复其全部必填结构块,禁止退化——
|
|
28
|
+
> - 禁止「前详后废」(前几个 endpoint 完整、后面的退化成一行文字)
|
|
29
|
+
> - 禁止用一行文字 `**xxx**:…` 代替表格,或省略标 `[Always]` 的必填块(基本信息/响应体字段/错误与副作用/验收场景)
|
|
30
|
+
> - 章节标题必须用 `###`,禁止降级为 `**粗体**`
|
|
31
|
+
> - 禁止「同上格式」「见上文」「…」等偷懒占位
|
|
32
|
+
> 任一 endpoint 缺任一必填块 = 未完成,须补齐后再推进。
|
|
27
33
|
> **完成判定**:见文末,每个 endpoint 须满足。
|
|
28
34
|
|
|
29
35
|
OpenAPI 权威路径: `docs/api/openapi.yaml`
|
|
@@ -96,3 +102,4 @@ OpenAPI 权威路径: `docs/api/openapi.yaml`
|
|
|
96
102
|
- [ ] 每个验收场景有验证证据(不得为空)
|
|
97
103
|
- [ ] 枚举值定义覆盖所有枚举字段
|
|
98
104
|
- [ ] 涉及前端调用的接口有页面交互映射
|
|
105
|
+
- [ ] 每个 endpoint 都含全部必填表格块(基本信息/响应体字段/错误与副作用/验收场景),无一行文字替代、无偷懒占位
|