pz-cli 5.0.0__py3-none-any.whl

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 (399) hide show
  1. pz_cli-5.0.0.dist-info/METADATA +51 -0
  2. pz_cli-5.0.0.dist-info/RECORD +399 -0
  3. pz_cli-5.0.0.dist-info/WHEEL +4 -0
  4. pz_cli-5.0.0.dist-info/entry_points.txt +5 -0
  5. pz_core/__init__.py +64 -0
  6. pz_core/__main__.py +7 -0
  7. pz_core/app.py +45 -0
  8. pz_core/assembly/__init__.py +17 -0
  9. pz_core/assembly/app_discovery.py +1240 -0
  10. pz_core/assembly/apps/__init__.py +25 -0
  11. pz_core/assembly/apps/compiler.py +824 -0
  12. pz_core/assembly/apps/providers.py +188 -0
  13. pz_core/assembly/cli/__init__.py +9 -0
  14. pz_core/assembly/cli/compiler.py +166 -0
  15. pz_core/assembly/diagnostics/__init__.py +21 -0
  16. pz_core/assembly/diagnostics/checks.py +257 -0
  17. pz_core/assembly/diagnostics/dev_sources.py +569 -0
  18. pz_core/assembly/events/__init__.py +5 -0
  19. pz_core/assembly/events/compiler.py +219 -0
  20. pz_core/assembly/extensions/__init__.py +5 -0
  21. pz_core/assembly/extensions/compiler.py +696 -0
  22. pz_core/assembly/infra/__init__.py +6 -0
  23. pz_core/assembly/infra/compiler.py +272 -0
  24. pz_core/assembly/lifecycle/__init__.py +5 -0
  25. pz_core/assembly/lifecycle/compiler.py +95 -0
  26. pz_core/assembly/middlewares/__init__.py +19 -0
  27. pz_core/assembly/middlewares/compiler.py +508 -0
  28. pz_core/assembly/project/__init__.py +7 -0
  29. pz_core/assembly/project/compiler.py +9 -0
  30. pz_core/assembly/project/context.py +17 -0
  31. pz_core/assembly/project/discovery.py +227 -0
  32. pz_core/assembly/resources/__init__.py +19 -0
  33. pz_core/assembly/resources/compiler.py +310 -0
  34. pz_core/assembly/resources/settings.py +129 -0
  35. pz_core/assembly/routes/__init__.py +7 -0
  36. pz_core/assembly/routes/compiler.py +400 -0
  37. pz_core/assembly/runtime_manifests/__init__.py +13 -0
  38. pz_core/assembly/runtime_manifests/compiler.py +159 -0
  39. pz_core/assembly/settings/__init__.py +17 -0
  40. pz_core/assembly/settings/compiler.py +786 -0
  41. pz_core/assembly/settings/host_project_overrides.py +82 -0
  42. pz_core/assembly/settings/host_runtime_endpoint.py +207 -0
  43. pz_core/authoring/__init__.py +79 -0
  44. pz_core/authoring/app_init_service.py +946 -0
  45. pz_core/authoring/app_versions.py +814 -0
  46. pz_core/authoring/cli.py +192 -0
  47. pz_core/authoring/commands.py +1810 -0
  48. pz_core/authoring/conflicts.py +180 -0
  49. pz_core/authoring/dev_bindings.py +916 -0
  50. pz_core/authoring/dev_git.py +1087 -0
  51. pz_core/authoring/dev_import.py +1061 -0
  52. pz_core/authoring/dev_manifest.py +522 -0
  53. pz_core/authoring/dev_sources.py +1638 -0
  54. pz_core/authoring/env_cli.py +454 -0
  55. pz_core/authoring/files.py +109 -0
  56. pz_core/authoring/ide_projection.py +1129 -0
  57. pz_core/authoring/naming.py +58 -0
  58. pz_core/authoring/official_dev_sources.py +432 -0
  59. pz_core/authoring/official_sources.json +156 -0
  60. pz_core/authoring/orchestration_service.py +558 -0
  61. pz_core/authoring/project_default.jsonc +53 -0
  62. pz_core/authoring/project_defaults.py +88 -0
  63. pz_core/authoring/project_metadata_service.py +199 -0
  64. pz_core/authoring/project_settings_checks.py +51 -0
  65. pz_core/authoring/project_settings_cli.py +299 -0
  66. pz_core/authoring/project_settings_service.py +1700 -0
  67. pz_core/authoring/project_state.py +399 -0
  68. pz_core/authoring/publish_git.py +423 -0
  69. pz_core/authoring/publish_lock.py +188 -0
  70. pz_core/authoring/publish_source.py +195 -0
  71. pz_core/authoring/release.py +1382 -0
  72. pz_core/authoring/repo_keys.py +29 -0
  73. pz_core/authoring/root_cli.py +28 -0
  74. pz_core/authoring/scaffold_service.py +325 -0
  75. pz_core/authoring/sync_service.py +787 -0
  76. pz_core/authoring/templates/app/__init__.py +1 -0
  77. pz_core/authoring/templates/app/api.py +25 -0
  78. pz_core/authoring/templates/app/apps.py +31 -0
  79. pz_core/authoring/templates/app/auth_package_init.py +14 -0
  80. pz_core/authoring/templates/app/auth_readme.py +29 -0
  81. pz_core/authoring/templates/app/configs_package_init.py +14 -0
  82. pz_core/authoring/templates/app/default_env.py +18 -0
  83. pz_core/authoring/templates/app/default_jsonc.py +25 -0
  84. pz_core/authoring/templates/app/locales_readme.py +25 -0
  85. pz_core/authoring/templates/app/migrations_readme.py +19 -0
  86. pz_core/authoring/templates/app/models.py +14 -0
  87. pz_core/authoring/templates/app/package_init.py +8 -0
  88. pz_core/authoring/templates/app/pages_base.py +161 -0
  89. pz_core/authoring/templates/app/pages_readme.py +25 -0
  90. pz_core/authoring/templates/app/public.py +31 -0
  91. pz_core/authoring/templates/app/pyproject.py +77 -0
  92. pz_core/authoring/templates/app/readme.py +74 -0
  93. pz_core/authoring/templates/app/settings.py +46 -0
  94. pz_core/authoring/templates/app/static_app_js.py +24 -0
  95. pz_core/authoring/templates/app/static_readme.py +31 -0
  96. pz_core/authoring/templates/app/template_config_page.py +23 -0
  97. pz_core/authoring/templates/app/template_index_html.py +28 -0
  98. pz_core/authoring/templates/app/templates_readme.py +32 -0
  99. pz_core/authoring/templates/app/urls.py +36 -0
  100. pz_core/authoring/templates/app/views.py +36 -0
  101. pz_core/authoring/templates/project/__init__.py +1 -0
  102. pz_core/authoring/templates/project/agents.py +51 -0
  103. pz_core/authoring/templates/project/apps_container_readme.py +37 -0
  104. pz_core/authoring/templates/project/main_py.py +59 -0
  105. pz_core/authoring/templates/project/project_env.py +19 -0
  106. pz_core/authoring/templates/project/pyproject.py +26 -0
  107. pz_core/authoring/templates/project/pz_env_env.py +65 -0
  108. pz_core/authoring/templates/project/pz_env_jsonc.py +69 -0
  109. pz_core/authoring/templates/project/pz_jsonc.py +12 -0
  110. pz_core/authoring/templates/project/readme.py +94 -0
  111. pz_core/authoring/templates/project/root_gitkeep.py +8 -0
  112. pz_core/authoring/templates/shared/__init__.py +5 -0
  113. pz_core/authoring/templates/shared/text.py +10 -0
  114. pz_core/authoring/venv_service.py +87 -0
  115. pz_core/authoring/workspace.py +167 -0
  116. pz_core/cli.py +291 -0
  117. pz_core/cli_options.py +74 -0
  118. pz_core/core/__init__.py +3 -0
  119. pz_core/core/errors/__init__.py +5 -0
  120. pz_core/core/errors/models.py +117 -0
  121. pz_core/core/events/__init__.py +5 -0
  122. pz_core/core/events/registry.py +54 -0
  123. pz_core/core/extensions/__init__.py +51 -0
  124. pz_core/core/extensions/registry.py +790 -0
  125. pz_core/core/health/__init__.py +6 -0
  126. pz_core/core/health/contracts.py +10 -0
  127. pz_core/core/middlewares/__init__.py +6 -0
  128. pz_core/core/middlewares/models.py +24 -0
  129. pz_core/core/routing/__init__.py +5 -0
  130. pz_core/core/routing/models.py +21 -0
  131. pz_core/core/settings_contracts.py +25 -0
  132. pz_core/docs/README.md +20 -0
  133. pz_core/docs/distribution-README.md +438 -0
  134. pz_core/docs/pz/345/221/275/344/273/244/346/200/273/350/247/210.md +1011 -0
  135. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/00-pz/346/236/266/346/236/204/346/200/273/347/272/262.md +240 -0
  136. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/01-/347/233/256/345/275/225/344/270/216/345/210/206/345/261/202/350/247/204/350/214/203.md +216 -0
  137. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/02-/345/214/205/344/270/216/345/210/206/345/217/221/350/247/204/350/214/203.md +403 -0
  138. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/03-App/346/234/200/345/260/217/345/255/220/345/214/205/350/247/204/350/214/203.md +571 -0
  139. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/04-Settings/344/270/216/351/205/215/347/275/256/350/247/204/350/214/203.md +1177 -0
  140. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/05-/350/265/204/346/272/220/344/270/216/350/277/220/350/241/214/347/233/256/345/275/225/350/247/204/350/214/203.md +575 -0
  141. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/06-/346/225/260/346/215/256/345/272/223/344/270/216/345/217/257/351/200/211/345/237/272/347/241/200/350/256/276/346/226/275/350/247/204/350/214/203.md +499 -0
  142. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/07-App/346/233/277/346/215/242/350/247/204/350/214/203.md +206 -0
  143. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/08-/345/271/263/345/217/260/347/272/247App/344/270/216/350/277/220/350/241/214/346/227/266/345/215/225/344/276/213/350/247/204/350/214/203.md +445 -0
  144. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/09-CLI/344/270/216Worker/345/205/245/345/217/243/350/247/204/350/214/203.md +950 -0
  145. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/10-/346/265/213/350/257/225/344/270/216/345/245/221/347/272/246/350/247/204/350/214/203.md +1001 -0
  146. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/11-/344/273/223/345/272/223/347/234/237/347/233/270/346/272/220/345/234/260/345/233/276.md +102 -0
  147. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/12-/346/236/204/345/273/272/344/270/216/345/217/221/345/270/203/346/243/200/346/237/245/346/270/205/345/215/225.md +171 -0
  148. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/13-/346/255/243/345/274/217Facade/346/200/273/350/241/250.md +402 -0
  149. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/14-/345/210/206/345/261/202/344/270/216/346/211/251/345/261/225/350/247/204/350/214/203.md +550 -0
  150. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/15-/345/255/220/345/214/205/345/274/200/345/217/221/344/275/277/347/224/250/346/211/213/345/206/214.md +1004 -0
  151. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/16-/346/211/251/345/261/225/347/202/271/346/255/243/345/274/217/345/215/217/350/256/256/346/270/205/345/215/225.md +352 -0
  152. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/17-pz.protocols.v1/346/255/243/345/274/217/345/215/217/350/256/256.md +266 -0
  153. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/18-/346/211/251/345/261/225/347/202/271/345/206/262/347/252/201/350/243/201/345/206/263/346/200/273/350/241/250.md +131 -0
  154. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/19-/351/224/231/350/257/257/347/240/201/344/270/216/350/257/212/346/226/255/345/215/217/350/256/256.md +176 -0
  155. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/20-/347/247/201/346/234/211/345/214/205/344/273/223/344/270/216/347/273/237/344/270/200/350/256/244/350/257/201/351/203/250/347/275/262/350/247/204/350/214/203.md +243 -0
  156. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/21-contrib/347/272/246/345/256/232/344/270/216Provider/346/216/245/345/205/245/350/247/204/350/214/203.md +365 -0
  157. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/22-/345/244/232/345/233/275/350/257/255/350/250/200/350/265/204/346/272/220/346/262/273/347/220/206/344/270/216/346/214/211/351/234/200/345/212/240/350/275/275/350/247/204/350/214/203.md +912 -0
  158. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/23-/351/246/226/345/261/217/345/261/225/347/244/272/344/270/216/351/246/226/345/270/247/347/250/263/345/256/232/350/247/204/350/214/203.md +269 -0
  159. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/24-pz/345/220/257/345/212/250/344/270/216/350/277/220/350/241/214/346/227/266/347/274/226/350/257/221/346/265/201/347/250/213.md +245 -0
  160. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/25-/351/235/242/345/220/221/345/257/271/350/261/241/345/274/200/345/217/221/350/247/204/350/214/203.md +300 -0
  161. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/README.md +98 -0
  162. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/00-legacy_core/346/240/207/345/207/206pip/345/214/205/345/214/226/351/207/215/346/236/204/346/200/273/347/272/262.md +1073 -0
  163. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/01-/347/233/256/345/275/225/344/270/216/345/210/206/345/261/202/351/207/215/346/236/204/346/211/247/350/241/214/346/226/271/346/241/210.md +224 -0
  164. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/02-/345/214/205/344/270/216/345/210/206/345/217/221/350/247/204/350/214/203-/345/220/253/345/216/206/345/217/262/345/217/243/345/276/204.md +671 -0
  165. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/13-/344/270/200/346/254/241/346/200/247/345/256/236/346/226/275/346/270/205/345/215/225.md +387 -0
  166. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/14-/345/255/220/345/214/205/351/200/202/351/205/215/346/224/271/351/200/240/346/270/205/345/215/225.md +592 -0
  167. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/15-infra/350/243/201/345/211/252/344/270/216/350/220/275/344/275/215/346/270/205/345/215/225.md +81 -0
  168. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/19-core/345/215/225/344/270/200/346/255/243/345/274/217/346/226/271/346/241/210/346/224/266/346/225/233/346/211/247/350/241/214/346/270/205/345/215/225.md +161 -0
  169. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/25-/345/215/217/350/256/256/345/210/260/346/272/220/347/240/201/345/267/256/350/267/235/346/270/205/345/215/225.md +377 -0
  170. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/26-cutover/345/256/214/345/267/245/346/243/200/346/237/245/346/270/205/345/215/225.md +117 -0
  171. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/29-/345/244/232/345/233/275/350/257/255/350/250/200/350/265/204/346/272/220/346/262/273/347/220/206/344/270/216/346/214/211/351/234/200/345/212/240/350/275/275/350/247/204/350/214/203-/345/220/253/350/277/201/347/247/273/347/255/226/347/225/245.md +956 -0
  172. pz_core/docs/pz/350/247/204/350/214/203/344/270/216/344/275/277/347/224/250/archive//344/270/255/351/227/264/346/200/201/99-/350/265/204/346/272/220/346/224/266/345/217/243/345/220/216/347/273/255TODO.md +84 -0
  173. pz_core/docs//345/217/221/347/211/210/345/211/215/346/270/205/345/215/225-4.0.11.md +84 -0
  174. pz_core/docs//346/226/260/346/211/213/346/214/207/345/215/227.md +422 -0
  175. pz_core/infra/__init__.py +17 -0
  176. pz_core/infra/db/__init__.py +23 -0
  177. pz_core/infra/db/contracts.py +73 -0
  178. pz_core/infra/health/__init__.py +5 -0
  179. pz_core/infra/health/contracts.py +8 -0
  180. pz_core/infra/kv/__init__.py +5 -0
  181. pz_core/infra/kv/contracts.py +17 -0
  182. pz_core/infra/observability/__init__.py +23 -0
  183. pz_core/infra/observability/contracts.py +142 -0
  184. pz_core/infra/resilience/__init__.py +5 -0
  185. pz_core/infra/resilience/contracts.py +17 -0
  186. pz_core/infra/resources/__init__.py +5 -0
  187. pz_core/infra/resources/contracts.py +16 -0
  188. pz_core/infra/settings/__init__.py +17 -0
  189. pz_core/infra/settings/models.py +81 -0
  190. pz_core/infra/storage/__init__.py +5 -0
  191. pz_core/infra/storage/ports.py +27 -0
  192. pz_core/project_root_commands.py +282 -0
  193. pz_core/project_runtime_cli.py +344 -0
  194. pz_core/project_sources.py +253 -0
  195. pz_core/pz_launcher.py +209 -0
  196. pz_core/root_cli.py +70 -0
  197. pz_core/runtime/__init__.py +229 -0
  198. pz_core/runtime/access.py +86 -0
  199. pz_core/runtime/adapters/__init__.py +5 -0
  200. pz_core/runtime/adapters/base.py +18 -0
  201. pz_core/runtime/asyncio_bridge.py +18 -0
  202. pz_core/runtime/bindings/__init__.py +5 -0
  203. pz_core/runtime/bindings/container.py +50 -0
  204. pz_core/runtime/cli/__init__.py +5 -0
  205. pz_core/runtime/cli/_args.py +67 -0
  206. pz_core/runtime/cli/app_commands.py +417 -0
  207. pz_core/runtime/cli/check.py +214 -0
  208. pz_core/runtime/cli/db.py +297 -0
  209. pz_core/runtime/cli/main.py +89 -0
  210. pz_core/runtime/cli/resources.py +280 -0
  211. pz_core/runtime/discovery.py +23 -0
  212. pz_core/runtime/environment_integrity.py +157 -0
  213. pz_core/runtime/errors.py +5 -0
  214. pz_core/runtime/events.py +87 -0
  215. pz_core/runtime/facades/__init__.py +38 -0
  216. pz_core/runtime/facades/_capabilities.py +46 -0
  217. pz_core/runtime/facades/cache.py +103 -0
  218. pz_core/runtime/facades/database.py +71 -0
  219. pz_core/runtime/facades/events.py +380 -0
  220. pz_core/runtime/facades/health.py +101 -0
  221. pz_core/runtime/facades/mail.py +121 -0
  222. pz_core/runtime/facades/observability.py +102 -0
  223. pz_core/runtime/facades/providers.py +75 -0
  224. pz_core/runtime/facades/resources.py +52 -0
  225. pz_core/runtime/facades/storage.py +296 -0
  226. pz_core/runtime/health/__init__.py +5 -0
  227. pz_core/runtime/health/service.py +102 -0
  228. pz_core/runtime/host.py +188 -0
  229. pz_core/runtime/host_runner.py +282 -0
  230. pz_core/runtime/http/__init__.py +20 -0
  231. pz_core/runtime/http/app.py +576 -0
  232. pz_core/runtime/http_timing.py +173 -0
  233. pz_core/runtime/invocation.py +29 -0
  234. pz_core/runtime/json_safe.py +47 -0
  235. pz_core/runtime/lifecycle/__init__.py +25 -0
  236. pz_core/runtime/lifecycle/manager.py +533 -0
  237. pz_core/runtime/plan.py +214 -0
  238. pz_core/runtime/plan_context.py +33 -0
  239. pz_core/runtime/plan_snapshot.py +177 -0
  240. pz_core/runtime/registries/__init__.py +27 -0
  241. pz_core/runtime/registries/capabilities.py +101 -0
  242. pz_core/runtime/registries/providers.py +396 -0
  243. pz_core/runtime/resource_assets.py +344 -0
  244. pz_core/runtime/run_cli.py +211 -0
  245. pz_core/runtime/settings.py +888 -0
  246. pz_core/runtime/worker/__init__.py +21 -0
  247. pz_core/runtime/worker/engine.py +921 -0
  248. pz_core/runtime/worker/runtime.py +25 -0
  249. pz_core/testing/__init__.py +15 -0
  250. pz_core/testing/doc_route_contracts.py +305 -0
  251. pz_core/utils/__init__.py +44 -0
  252. pz_core/utils/env.py +65 -0
  253. pz_core/utils/project_jsonc/__init__.py +29 -0
  254. pz_core/utils/project_jsonc/document.py +420 -0
  255. pz_core/utils/project_settings.py +99 -0
  256. pz_foundation/__init__.py +50 -0
  257. pz_foundation/_contracts.py +81 -0
  258. pz_foundation/_errors.py +34 -0
  259. pz_foundation/api.py +14 -0
  260. pz_foundation/apps.py +127 -0
  261. pz_foundation/auth/__init__.py +1 -0
  262. pz_foundation/cache_control.py +233 -0
  263. pz_foundation/cli/__init__.py +2 -0
  264. pz_foundation/cli/workers.py +565 -0
  265. pz_foundation/configs/__init__.py +0 -0
  266. pz_foundation/configs/default.env +15 -0
  267. pz_foundation/configs/default.jsonc +452 -0
  268. pz_foundation/db/__init__.py +94 -0
  269. pz_foundation/db/aerich_executor.py +664 -0
  270. pz_foundation/db/config.py +358 -0
  271. pz_foundation/db/connection_manager.py +689 -0
  272. pz_foundation/db/connection_probe.py +204 -0
  273. pz_foundation/db/database.py +1291 -0
  274. pz_foundation/db/deps.py +47 -0
  275. pz_foundation/db/lifecycle_status.py +85 -0
  276. pz_foundation/db/migrations.py +477 -0
  277. pz_foundation/db/mysql.py +57 -0
  278. pz_foundation/db/postgresql.py +409 -0
  279. pz_foundation/db/production_pool_fallback.py +143 -0
  280. pz_foundation/db/public.py +45 -0
  281. pz_foundation/db/session.py +369 -0
  282. pz_foundation/db/sqlite.py +15 -0
  283. pz_foundation/db/tortoise_manager.py +724 -0
  284. pz_foundation/db/tortoise_psycopg.py +148 -0
  285. pz_foundation/docs/README.md +18 -0
  286. pz_foundation/docs/distribution-README.md +319 -0
  287. pz_foundation/docs/infra/350/243/201/345/211/252/344/270/216/350/220/275/344/275/215/350/257/264/346/230/216.md +39 -0
  288. pz_foundation/docs//345/205/254/345/274/200/345/205/215/350/264/271/346/216/245/345/217/243/351/230/262/346/273/245/347/224/250/344/270/216/344/272/272/346/234/272/346/240/241/351/252/214.md +680 -0
  289. pz_foundation/docs//350/256/276/350/256/241/346/226/207/346/241/243.md +288 -0
  290. pz_foundation/docs//350/267/257/347/224/261/344/270/216URL/345/244/204/347/220/206/350/247/204/350/214/203.md +119 -0
  291. pz_foundation/health.py +105 -0
  292. pz_foundation/host/__init__.py +11 -0
  293. pz_foundation/host/builder.py +34 -0
  294. pz_foundation/host/cache_runtime.py +44 -0
  295. pz_foundation/host/db/__init__.py +17 -0
  296. pz_foundation/host/db/aerich_config.py +36 -0
  297. pz_foundation/host/db/config.py +106 -0
  298. pz_foundation/host/db/connection_manager.py +48 -0
  299. pz_foundation/host/db/deps.py +5 -0
  300. pz_foundation/host/db/orm_retry_patch.py +566 -0
  301. pz_foundation/host/db/request_adapter.py +325 -0
  302. pz_foundation/host/db/router.py +28 -0
  303. pz_foundation/host/db/session.py +284 -0
  304. pz_foundation/host/db/tortoise_manager.py +10 -0
  305. pz_foundation/host/idempotency.py +132 -0
  306. pz_foundation/host/lifespan.py +247 -0
  307. pz_foundation/host/redis_runtime.py +100 -0
  308. pz_foundation/host/web.py +790 -0
  309. pz_foundation/infra_provider.py +236 -0
  310. pz_foundation/kv/__init__.py +25 -0
  311. pz_foundation/kv/cache.py +1166 -0
  312. pz_foundation/kv/deps.py +84 -0
  313. pz_foundation/kv/public.py +25 -0
  314. pz_foundation/kv/redis_manager.py +1531 -0
  315. pz_foundation/lazy_exports.py +43 -0
  316. pz_foundation/lazy_imports.py +124 -0
  317. pz_foundation/lifecycle.py +392 -0
  318. pz_foundation/managed_workers.py +1117 -0
  319. pz_foundation/middlewares/__init__.py +26 -0
  320. pz_foundation/middlewares/_settings.py +250 -0
  321. pz_foundation/middlewares/analytics.py +124 -0
  322. pz_foundation/middlewares/cache_control.py +156 -0
  323. pz_foundation/middlewares/compression.py +202 -0
  324. pz_foundation/middlewares/cors.py +62 -0
  325. pz_foundation/middlewares/geo_country.py +44 -0
  326. pz_foundation/middlewares/inner_router.py +50 -0
  327. pz_foundation/middlewares/rate_limited/__init__.py +3 -0
  328. pz_foundation/middlewares/rate_limited/key_limiter.py +115 -0
  329. pz_foundation/middlewares/request_logging.py +104 -0
  330. pz_foundation/middlewares/route_owner.py +309 -0
  331. pz_foundation/middlewares/security_csrf.py +44 -0
  332. pz_foundation/middlewares/security_headers/__init__.py +4 -0
  333. pz_foundation/middlewares/security_headers/conflicts.py +44 -0
  334. pz_foundation/middlewares/security_headers/csp_nonce.py +200 -0
  335. pz_foundation/middlewares/security_headers/security_headers.py +44 -0
  336. pz_foundation/migrations/__init__.py +1 -0
  337. pz_foundation/migrations/pz_foundation/__init__.py +1 -0
  338. pz_foundation/models.py +22 -0
  339. pz_foundation/notifications/__init__.py +23 -0
  340. pz_foundation/notifications/email.py +542 -0
  341. pz_foundation/notifications/public.py +31 -0
  342. pz_foundation/observability/__init__.py +71 -0
  343. pz_foundation/observability/http.py +34 -0
  344. pz_foundation/observability/logger/__init__.py +49 -0
  345. pz_foundation/observability/logger/_bot_settings.py +126 -0
  346. pz_foundation/observability/logger/bot_message.py +592 -0
  347. pz_foundation/observability/logger/core.py +385 -0
  348. pz_foundation/observability/logger/delivery_audit.py +84 -0
  349. pz_foundation/observability/logger/feishu_bot.py +199 -0
  350. pz_foundation/observability/logger/telegram_bot.py +194 -0
  351. pz_foundation/observability/metrics.py +365 -0
  352. pz_foundation/observability/runtime.py +68 -0
  353. pz_foundation/public.py +405 -0
  354. pz_foundation/resources/__init__.py +12 -0
  355. pz_foundation/resources/builder.py +900 -0
  356. pz_foundation/resources/images.py +363 -0
  357. pz_foundation/root_cli.py +20 -0
  358. pz_foundation/routing/__init__.py +203 -0
  359. pz_foundation/routing/canonical.py +486 -0
  360. pz_foundation/routing/convertors.py +82 -0
  361. pz_foundation/routing/declarations.py +843 -0
  362. pz_foundation/routing/exports.py +148 -0
  363. pz_foundation/routing/loaders.py +138 -0
  364. pz_foundation/routing/manifest.py +215 -0
  365. pz_foundation/routing/manifest_provider.py +47 -0
  366. pz_foundation/routing/mounts.py +101 -0
  367. pz_foundation/routing/ordering.py +172 -0
  368. pz_foundation/routing/registry.py +133 -0
  369. pz_foundation/routing/utils.py +28 -0
  370. pz_foundation/runtime.py +234 -0
  371. pz_foundation/settings.py +253 -0
  372. pz_foundation/settings_normalization.py +130 -0
  373. pz_foundation/storage/__init__.py +25 -0
  374. pz_foundation/storage/local.py +209 -0
  375. pz_foundation/storage/public.py +106 -0
  376. pz_foundation/storage/s3.py +116 -0
  377. pz_foundation/storage/service.py +234 -0
  378. pz_foundation/urls.py +19 -0
  379. pz_foundation/utils/__init__.py +6 -0
  380. pz_foundation/utils/merge.py +160 -0
  381. pz_foundation/worker_replicas.py +55 -0
  382. pz_settings_center/__init__.py +5 -0
  383. pz_settings_center/api/__init__.py +5 -0
  384. pz_settings_center/api/runtime_overrides.py +360 -0
  385. pz_settings_center/apps.py +28 -0
  386. pz_settings_center/configs/__init__.py +0 -0
  387. pz_settings_center/configs/default.env +2 -0
  388. pz_settings_center/configs/default.jsonc +1 -0
  389. pz_settings_center/docs/01-settings_center/350/203/275/345/212/233/350/276/271/347/225/214.md +124 -0
  390. pz_settings_center/docs/README.md +12 -0
  391. pz_settings_center/docs/distribution-README.md +150 -0
  392. pz_settings_center/docs//350/256/276/350/256/241/346/226/207/346/241/243.md +48 -0
  393. pz_settings_center/integration_payload.py +18 -0
  394. pz_settings_center/project_helpers.py +405 -0
  395. pz_settings_center/public.py +139 -0
  396. pz_settings_center/routing_helpers.py +73 -0
  397. pz_settings_center/runtime_override_provider.py +61 -0
  398. pz_settings_center/typed_settings.py +324 -0
  399. pz_settings_center/urls.py +9 -0
@@ -0,0 +1,161 @@
1
+ # 19-legacy_core 并入 pz 迁移执行清单
2
+
3
+ > 历史说明:本文本身就是 `legacy_core -> pz` 的迁移执行记录,因此会保留大量 `legacy_core` 字样;当前正式基础包统一为 `pz`。
4
+
5
+ 本文档只定义一件事:
6
+
7
+ - 把 `legacy_core` 作为历史过渡基础包并入 `pz`,完成单一基础包 cutover。
8
+
9
+ 适用边界:
10
+
11
+ - 只处理基础层迁移、公开面迁移、命令迁移与契约治理
12
+ - 不在 `legacy_core` 内继续补长期兼容层
13
+ - 需要迁移的消费侧,迁到 `pz` 正式公开面,不保留双轨
14
+
15
+ ## 目标
16
+
17
+ 迁移完成后,系统必须满足:
18
+
19
+ - 只有 `pz` 是正式基础包与唯一可独立启动的包
20
+ - `legacy_core` 不再作为长期独立 distribution / import 面 / CLI 主入口
21
+ - 正式命令、正式 Python API、正式 RuntimePlan 编译链全部收敛到 `pz`
22
+ - 共享子包只依赖 `pz` 正式公开面
23
+
24
+ ## 总顺序
25
+
26
+ 按下面顺序执行,禁止跳步:
27
+
28
+ 1. 收 `pz` / `legacy_core` 基础层边界与目标公开面
29
+ 2. 收命令入口与 Python API 到 `pz`
30
+ 3. 收 import surface、distribution 与共享子包依赖
31
+ 4. 收扩展点合同与配置合同
32
+ 5. 清理 `legacy_core` 历史兼容别名与桥接入口
33
+ 6. 重跑契约、重装受影响共享包、重启宿主、跑宿主验证
34
+
35
+ 原则:
36
+
37
+ - 先收正式公开面,再收消费侧
38
+ - 每一步完成后都补契约测试
39
+ - 不保留长期双轨
40
+ - cutover 必须是一次性切换,不接受“先都支持着”
41
+
42
+ ## 阶段一:基础层目标公开面收口
43
+
44
+ 目标:
45
+
46
+ - 明确 `pz` 是唯一正式基础包
47
+ - 明确 `legacy_core` 仅作为短期迁移桥接
48
+
49
+ 范围:
50
+
51
+ - 冻结 `pz` 最终必须保留的基础层协议模块
52
+ - 冻结 `legacy_core` 最终不应继续承载的具体实现
53
+ - 冻结 `pz` 的正式 CLI、正式 Python API、正式扩展点合同
54
+
55
+ 完成标志:
56
+
57
+ - `pz` 成为文档、CLI、契约测试中的唯一基础包名
58
+ - `legacy_core` 不再出现在新设计的正式示例里
59
+ - `pz` 公开面清单稳定冻结
60
+
61
+ ## 阶段二:命令入口与 Python API cutover
62
+
63
+ 目标:
64
+
65
+ - 所有正式命令与 Python API 收敛到 `pz`
66
+
67
+ 范围:
68
+
69
+ - `legacy_core` CLI -> `pz`
70
+ - `legacy_core check` -> `pz check`
71
+ - `legacy_core db` -> `pz db`
72
+ - `legacy_core <app_id> <tool>` -> `pz <app_id> <tool>`
73
+ - `legacy_core.app:create_app` / `register_pz` -> `pz.app:*`
74
+
75
+ 完成标志:
76
+
77
+ - 帮助文案、README、测试、宿主入口只使用 `pz`
78
+ - CLI 与 Python API 共用同一条编译链
79
+ - `legacy_core` 旧命令不再是正式主路径
80
+
81
+ ## 阶段三:import surface 与 distribution cutover
82
+
83
+ 目标:
84
+
85
+ - 共享子包与宿主项目改为依赖 `pz`
86
+
87
+ 范围:
88
+
89
+ - `pyproject.toml` 依赖切到 `pz`
90
+ - import 面从 `legacy_core.*` 迁到 `pz.*`
91
+ - 收 distribution、entrypoint、安装校验脚本
92
+
93
+ 完成标志:
94
+
95
+ - 新增代码不再直接依赖 `legacy_core`
96
+ - 宿主和共享包以 `pz` 为唯一基础依赖
97
+ - `legacy_core` 不再是正式依赖链关键节点
98
+
99
+ ## 阶段四:扩展点与配置合同 cutover
100
+
101
+ 目标:
102
+
103
+ - 扩展点与配置协议全面切到新合同
104
+
105
+ 范围:
106
+
107
+ - `host.builder`
108
+ - `settings.provider`
109
+ - `cli.tool`
110
+ - module config owner / settings surface owner / settings runtime owner 协作链
111
+ - `required_pz` 字段与 app 元数据校验
112
+
113
+ 完成标志:
114
+
115
+ - 运行时与编译期都只认新扩展点对象形状
116
+ - 配置体系只保留单一运行时读取入口
117
+ - 契约测试锁死新对象协议与冲突策略
118
+
119
+ ## 阶段五:清理 `legacy_core` 历史桥接
120
+
121
+ 目标:
122
+
123
+ - 删除 `legacy_core` 中仍残留的历史兼容入口与桥接别名
124
+
125
+ 范围:
126
+
127
+ - 删除历史命令入口
128
+ - 删除历史 import shim
129
+ - 删除历史别名与宽松兼容逻辑
130
+ - 将 `legacy_core` 收敛为迁移期最小桥接壳,直至彻底下线
131
+
132
+ 完成标志:
133
+
134
+ - `legacy_core` 不再是正式公开主路径
135
+ - 历史桥接不再进入正式主链
136
+ - 旧入口回流会被契约测试直接拦截
137
+
138
+ ## 验证要求
139
+
140
+ 每个阶段都要执行:
141
+
142
+ 1. source repo 本地契约测试
143
+ 2. `pz env sync --project-dir <host-project-dir>`
144
+ 3. 若 public surface 影响到共享包,再补宿主 `pz run` / `/health` 验证
145
+
146
+ 宿主最终要求:
147
+
148
+ - 重启完成
149
+ - `/health` 返回 `200`
150
+ - 对应 host integration contract 通过
151
+
152
+ ## 当前执行决议
153
+
154
+ 阶段一处于文档冻结中。
155
+
156
+ 本轮优先执行:
157
+
158
+ - 冻结 `pz` 基础层协议模块
159
+ - 冻结扩展点对象合同
160
+ - 冻结配置三层协作链
161
+ - 为 `legacy_core -> pz` cutover 准备契约测试与宿主 smoke 要求
@@ -0,0 +1,377 @@
1
+ # 25-协议到源码差距清单
2
+
3
+ > 历史说明:本文里保留的 `legacy_core` 只用于差距追踪、旧 owner package 记录与迁移尾项描述;当前正式基础包统一为 `pz`。
4
+
5
+ 本文档只做一件事:
6
+
7
+ - 对照 `22-pz.protocols.v1 草案`、`23-扩展点冲突裁决总表`、`24-错误码与诊断协议`,记录源码差距的收口结果与剩余治理尾项。
8
+
9
+ 适用边界:
10
+
11
+ - 不重复定义新协议
12
+ - 不把迁移语境重新写回正式规则
13
+ - 只记录“当前源码是否已经完成正式 cutover”
14
+
15
+ ## 1. 当前结论
16
+
17
+ 当前正式运行主链已经完成 cutover:
18
+
19
+ - `required_core -> required_pz` 已完成
20
+ - `settings.provider` 已成为正式主链
21
+ - `host.builder`、`route`、`middleware`、`lifecycle`、`resource` contribution 已完成对象化
22
+ - 正式 CLI 已收敛到 `pz`
23
+ - 正式 Python API 已收敛到 `pz.*`
24
+ - 宿主重装、重启、健康检查与关键契约测试已通过
25
+
26
+ 当前剩余事项只保留两类治理尾项:
27
+
28
+ 1. `workspace_packages.toml` 仍保留 `legacy-core` 的 migration-only source-repo 条目
29
+ 2. 少量迁移文档与仓库说明仍保留旧口径,用于记录 cutover 过程,而不是定义当前正式规则
30
+ 3. 多国语言资源治理仍停留在历史 `base + namespace` 约定,尚未完全映射到正式 locale bundle / consumer binding 协议
31
+
32
+ 本文档每条差距统一补充下面 5 类执行信息:
33
+
34
+ - `owner repo`
35
+ - `owner package`
36
+ - `status`
37
+ - `DoD ref`
38
+ - `tests`
39
+
40
+ ## 2. 配置链差距
41
+
42
+ 本节差距已全部关闭。
43
+
44
+ ### 2.1 `settings.provider` 正式主链
45
+
46
+ 处理结果:
47
+
48
+ - `SettingsProviderSpec` 已成为正式声明对象
49
+ - `RuntimePlan` 已直接编译 provider manifest
50
+ - provider 正式输出已统一为 `SettingsPatch`
51
+ - settings surface owner 的 `public.py` 不再把命令式注册 API 作为稳定公开面
52
+ - settings surface owner 不再公开 `load_app_settings()` / `load_typed_app_settings()` 这类第二读取 helper
53
+
54
+ 执行信息:
55
+
56
+ - `owner repo`
57
+ - `pz_framework/legacy_core`
58
+ - `pz_framework/pz_contrib`
59
+ - `owner package`
60
+ - `pz`
61
+ - settings surface owner
62
+ - `status`
63
+ - `done`
64
+ - `DoD ref`
65
+ - `C1`
66
+ - `C2`
67
+ - `tests`
68
+ - 现有:settings provider 编译与 settings surface 契约测试
69
+ - 现有:宿主 settings smoke、runtime override smoke
70
+
71
+ ### 2.2 settings runtime owner 接入方式
72
+
73
+ 处理结果:
74
+
75
+ - settings runtime owner 已通过正式 `SettingsProviderSpec` 接入
76
+ - 不再依赖命令式 provider 注册作为主链
77
+
78
+ 执行信息:
79
+
80
+ - `owner repo`
81
+ - `pz_framework/pz_contrib`
82
+ - `owner package`
83
+ - settings runtime owner
84
+ - `status`
85
+ - `done`
86
+ - `DoD ref`
87
+ - `C1`
88
+ - `C2`
89
+ - `tests`
90
+ - 现有:settings operator import smoke
91
+ - 现有:runtime override 与 provider 共存测试
92
+
93
+ ### 2.3 check / preflight owner import-time provider 注册
94
+
95
+ 处理结果:
96
+
97
+ - import-time provider 注册已删除
98
+ - check / preflight settings 注入已改为正式 `extensions()` 输出的 `settings.provider`
99
+
100
+ 执行信息:
101
+
102
+ - `owner repo`
103
+ - `pz_framework/pz_contrib`
104
+ - `owner package`
105
+ - check / preflight owner
106
+ - `status`
107
+ - `done`
108
+ - `DoD ref`
109
+ - `C2`
110
+ - `tests`
111
+ - 现有:preflight import smoke
112
+ - 现有:无 import-time 副作用测试
113
+
114
+ ## 3. 扩展点差距
115
+
116
+ 本节差距已全部关闭。
117
+
118
+ ### 3.1 `host.builder`
119
+
120
+ 处理结果:
121
+
122
+ - `foundation` 已输出结构化 `HostBuilderSpec`
123
+ - `RuntimePlan` 已直接挂结构化 host manifest
124
+ - `runtime.host` 已直接消费 `HostBuilderSpec`
125
+ - 冲突裁决只认 `priority`
126
+
127
+ 执行信息:
128
+
129
+ - `owner repo`
130
+ - `pz_framework/pz_contrib`
131
+ - `pz_framework/legacy_core`
132
+ - `owner package`
133
+ - official infra owner
134
+ - `pz`
135
+ - `status`
136
+ - `done`
137
+ - `DoD ref`
138
+ - `D1`
139
+ - `tests`
140
+ - 现有:host runtime 契约测试
141
+ - 现有:host integration 契约测试
142
+ - 现有:宿主 `/health`
143
+
144
+ ### 3.2 其它 contribution
145
+
146
+ 处理结果:
147
+
148
+ - `route`、`middleware`、`lifecycle`、`resource` contribution 已全部对象化
149
+ - `extensions()` 正式返回值已只保留协议对象
150
+ - 旧 dict 声明已退出正式主链
151
+
152
+ 执行信息:
153
+
154
+ - `owner repo`
155
+ - `pz_framework/legacy_core`
156
+ - `pz_framework/pz_contrib`
157
+ - `pz_apps`
158
+ - `pz_apps`
159
+ - `owner package`
160
+ - 受影响最小子包
161
+ - `status`
162
+ - `done`
163
+ - `DoD ref`
164
+ - `D2`
165
+ - `tests`
166
+ - 现有:`RuntimePlan` 结构测试
167
+ - 现有:各 contribution 契约测试
168
+
169
+ ## 4. App 元数据与编译器差距
170
+
171
+ 本节差距已全部关闭。
172
+
173
+ ### 4.1 `required_pz`
174
+
175
+ 处理结果:
176
+
177
+ - 编译器与 `AppDecl` 已统一到 `required_pz`
178
+ - 错误码与错误消息已围绕 `required_pz` 收口
179
+ - app 声明、测试、模板已同步切换
180
+
181
+ 执行信息:
182
+
183
+ - `owner repo`
184
+ - `pz_framework/legacy_core`
185
+ - `pz_framework/pz_contrib`
186
+ - `pz_apps`
187
+ - `pz_apps`
188
+ - `owner package`
189
+ - 受影响最小子包
190
+ - `status`
191
+ - `done`
192
+ - `DoD ref`
193
+ - `A1`
194
+ - `B1`
195
+ - `tests`
196
+ - 现有:app registry 契约测试
197
+ - 现有:apps.py 元数据契约测试
198
+
199
+ ## 5. 脚手架与顶层包差距
200
+
201
+ 本节差距已全部关闭。
202
+
203
+ ### 5.1 `pz startapp`
204
+
205
+ 处理结果:
206
+
207
+ - 脚手架模板已输出 `pz` 正式依赖
208
+ - `apps.py` 模板已输出 `required_pz`
209
+ - 新生成代码不再扩散旧字段与旧依赖
210
+
211
+ 执行信息:
212
+
213
+ - `owner repo`
214
+ - `pz_framework/pz`
215
+ - `owner package`
216
+ - `pz`
217
+ - `status`
218
+ - `done`
219
+ - `DoD ref`
220
+ - `A1`
221
+ - `A2`
222
+ - `tests`
223
+ - 现有:`pz` CLI 契约测试
224
+
225
+ ### 5.2 `pz` 顶层 README 与正式入口
226
+
227
+ 处理结果:
228
+
229
+ - `pz` 顶层 README 已改为单一基础包叙述
230
+ - 正式 CLI 与正式 Python API 已收敛到 `pz`
231
+
232
+ 执行信息:
233
+
234
+ - `owner repo`
235
+ - `pz_framework/pz`
236
+ - `owner package`
237
+ - `pz`
238
+ - `status`
239
+ - `done`
240
+ - `DoD ref`
241
+ - `A2`
242
+ - `E1`
243
+ - `E2`
244
+ - `tests`
245
+ - 现有:CLI 契约测试
246
+ - 现有:Python API smoke
247
+
248
+ ## 6. 仓库元数据与工作区尾项
249
+
250
+ ### 6.1 workspace migration-only 条目
251
+
252
+ 当前状态:
253
+
254
+ - `workspace_packages.toml` 仍存在 `[packages."legacy-core"]`
255
+ - 该条目已明确标注为 migration-only source-repo entry
256
+
257
+ 说明:
258
+
259
+ - 该条目对应的是真相源仓库位置,而不是终端用户正式 CLI/安装口径
260
+ - 正式基础包、正式 CLI、正式 Python API 已经收敛到 `pz`
261
+
262
+ 执行信息:
263
+
264
+ - `owner repo`
265
+ - `mt` workspace root
266
+ - `owner package`
267
+ - workspace metadata
268
+ - `status`
269
+ - `accepted_migration_context`
270
+ - `DoD ref`
271
+ - `B2`
272
+ - `tests`
273
+ - 现有:`pz env sync` 宿主依赖刷新验证
274
+ - 现有:宿主 `pz run` 与 `/health` 验证
275
+
276
+ ## 7. 文档尾项
277
+
278
+ 当前状态:
279
+
280
+ - `22/23/24/25/26` 主协议与执行文档已收口到新口径
281
+ - 少量迁移文档与仓库说明仍保留旧口径,用于记录迁移过程
282
+
283
+ 说明:
284
+
285
+ - 这些残留不再定义当前正式规则
286
+ - 它们属于治理尾项,不再阻塞正式运行主链完工
287
+
288
+ 执行信息:
289
+
290
+ - `owner repo`
291
+ - `pz_framework/legacy_core`
292
+ - `pz_framework/pz`
293
+ - `owner package`
294
+ - docs
295
+ - readmes
296
+ - `status`
297
+ - `accepted_migration_context`
298
+ - `DoD ref`
299
+ - `F1`
300
+ - `tests`
301
+ - 现有:文档 `rg` 扫描
302
+ - 现有:`compileall docs`
303
+
304
+ ## 8. 多国语言资源治理差距
305
+
306
+ ### 8.1 locale bundle / consumer binding 正式协议
307
+
308
+ 当前状态:
309
+
310
+ - `29-多国语言资源治理与按需加载规范` 已定义 locale governance 方向
311
+ - `22-pz.protocols.v1 草案` 已补 `LocaleBundleSpec`、`LocaleDependencySpec`、`LocaleConsumerBinding`、`LocaleCompositionProfile`、`LocaleOverridePatch`
312
+ - 源码主链尚未把 `resource.contribution` 的 locale governance metadata 编译为正式 locale bundle manifest
313
+
314
+ 说明:
315
+
316
+ - 当前运行时仍主要停留在历史 namespace/base 回退模型
317
+ - bundle、dependency、consumer binding、composition profile、page-local override 尚未成为可执行正式主链
318
+ - `locales/config.json` 已在实现层退出 `module_config` 正式主链;当前遗留点主要在 locale governance manifest 尚未完全编译落地,而不是 `module_config` 继续依赖它
319
+ - `page_supported_language` / `page_language_alternates` 也尚未完整进入旧清单所描述的主链,因此页面语言切换、hreflang 与 sitemap 还未统一消费同一份页面语言事实投影
320
+
321
+ 执行信息:
322
+
323
+ - `owner repo`
324
+ - `pz_framework/pz`
325
+ - `pz_framework/pz_contrib`
326
+ - `owner package`
327
+ - `pz`
328
+ - 共享 i18n owner 子包
329
+ - `status`
330
+ - `planned`
331
+ - `DoD ref`
332
+ - `I1`
333
+ - `I2`
334
+ - `tests`
335
+ - 待补:resource manifest locale metadata 契约测试
336
+ - 待补:bundle dependency / consumer binding 契约测试
337
+ - 待补:SEO keyword page composition profile 契约测试
338
+ - 待补:`page_supported_language` / `page_language_alternates` 到语言切换 / hreflang / sitemap 的一致性契约测试
339
+ - 待补:page-local override 白名单与体积预算测试
340
+ - 待补:按 bundle 按需加载与体积预算测试
341
+
342
+ ## 9. 当前收口顺序回顾
343
+
344
+ 本轮已按下面顺序完成源码收口:
345
+
346
+ 1. `required_core -> required_pz`
347
+ 2. `settings.provider` 主链对象化
348
+ 3. `host.builder` 与其它 contribution 对象化
349
+ 4. `pz` 顶层 README、脚手架模板与正式入口切换
350
+ 5. 文档与 workspace 元数据收口
351
+
352
+ ## 10. 本轮非目标
353
+
354
+ 为避免任务继续膨胀,本轮明确不做:
355
+
356
+ - 全仓 `legacy_core.* -> pz.*` 机械重命名
357
+ - 全量重写所有 `uv.lock`
358
+ - 重写与本轮协议无关的业务实现
359
+ - 在宿主内补影子包、桥接包或本地装配 hack
360
+
361
+ ## 11. 验证要求
362
+
363
+ 本轮收口已覆盖下列验证:
364
+
365
+ 1. 对应 source repo 契约测试
366
+ 2. `pz` CLI smoke
367
+ 3. 受影响共享包 import smoke
368
+ 4. `pz env sync --project-dir <host-project-dir>`
369
+ 5. 宿主重启后 `/health`
370
+
371
+ ## 12. 当前执行决议
372
+
373
+ 当前正式决议如下:
374
+
375
+ - 协议层不再继续加新概念
376
+ - 运行时主链 cutover 已完成
377
+ - 后续只继续处理迁移文档与 source-repo 元数据的治理尾项
@@ -0,0 +1,117 @@
1
+ # 26-cutover 完工检查清单
2
+
3
+ > 历史说明:本文保留 `legacy_core -> pz` 字样,仅用于 cutover 完工判定与历史任务闭环;当前正式基础包统一为 `pz`。
4
+
5
+ 本文档用于确认 `legacy_core -> pz`、旧扩展协议 -> 新扩展协议、旧配置主链 -> 新配置主链这批任务是否已经按单一路径完成收口。
6
+
7
+ 它不是迁移愿景文档,也不是差距盘点文档。
8
+
9
+ ## 1. 使用规则
10
+
11
+ - 只按正式协议判断是否完成
12
+ - 不允许靠 shim、alias、双轨兼容层把“未完成”伪装成“已完成”
13
+ - 若后续再发现协议缺位,应先回到协议文档补正式合同,再继续施工
14
+
15
+ ## 2. 总体完工定义
16
+
17
+ 本轮任务在同时满足下面全部条件后,视为已完成:
18
+
19
+ - `pz` 成为唯一正式基础包、唯一正式 CLI、唯一正式 Python API 主入口
20
+ - 新 app 脚手架不再生成 `legacy-core`、`required_core`、旧 dict 扩展声明
21
+ - app 编译器、扩展编译器、settings 编译链只认新协议
22
+ - `settings.provider`、`host.builder`、其它 contribution 全部走结构化协议对象
23
+ - 运行主链不再依赖 import-time 注册和全局 provider 主路径
24
+ - `workspace_packages.toml`、README、主要规范文档不再把 `legacy-core` 当正式长期口径
25
+ - 宿主重装、重启、健康检查、关键契约测试全部通过
26
+
27
+ ## 3. 阶段 A:止血项
28
+
29
+ ### A1. app 元数据止血
30
+
31
+ - [x] `required_core` 不再作为新增代码和模板字段出现
32
+
33
+ ### A2. 基础依赖止血
34
+
35
+ - [x] 新生成代码不再把 `legacy-core` 写入正式依赖
36
+
37
+ ## 4. 阶段 B:编译器与元数据切换
38
+
39
+ ### B1. app 编译器切到 `required_pz`
40
+
41
+ - [x] `AppDecl` 与编译器校验逻辑切到 `required_pz`
42
+
43
+ ### B2. workspace 与分发真相源收口
44
+
45
+ - [x] 工作区与分发说明不再把 `legacy-core` 作为长期正式包
46
+
47
+ 补充说明:
48
+
49
+ - `workspace_packages.toml` 中的 `legacy-core` 条目仍保留,但已明确标注为 migration-only source-repo entry,不再代表终端用户正式入口。
50
+
51
+ ## 5. 阶段 C:settings 主链切换
52
+
53
+ ### C1. `settings.provider` 成为正式主链
54
+
55
+ - [x] settings 注入统一改为结构化 `SettingsProviderSpec`
56
+
57
+ ### C2. 清退命令式 provider 注册入口
58
+
59
+ - [x] `register_app_settings_provider(...)` 退出正式公开面
60
+
61
+ ## 6. 阶段 D:扩展点对象化切换
62
+
63
+ ### D1. `host.builder` 切换到结构化对象
64
+
65
+ - [x] `host.builder` 不再使用旧 dict + payload 声明
66
+
67
+ ### D2. 其它 contribution 切换到结构化对象
68
+
69
+ - [x] route / middleware / lifecycle / resource contribution 全部完成对象化
70
+
71
+ ## 7. 阶段 E:CLI 与运行入口切换
72
+
73
+ ### E1. `pz` 成为唯一正式 CLI
74
+
75
+ - [x] 正式命令全部收敛到 `pz`
76
+
77
+ ### E2. Python API 主链切换
78
+
79
+ - [x] 正式 Python API 只认 `pz.*`
80
+
81
+ ## 8. 阶段 F:全局清扫
82
+
83
+ ### F1. 文档清扫
84
+
85
+ - [x] 正式文档不再混用新旧口径
86
+
87
+ 补充说明:
88
+
89
+ - 旧口径仅允许留在明确历史说明或迁移说明中;不再作为当前正式规则出现。
90
+
91
+ ### F2. 旧桥接清理
92
+
93
+ - [x] 长期不需要的 shim、alias、fallback 全部删除
94
+
95
+ ## 9. 最终宿主验收
96
+
97
+ - [x] source repo 契约测试通过
98
+ - [x] `pz` CLI smoke 通过
99
+ - [x] 受影响共享包 import smoke 通过
100
+ - [x] `pz env sync --project-dir <host-project-dir>` 通过
101
+ - [x] 宿主重启完成
102
+ - [x] `http://127.0.0.1:8000/health` 返回 `200`
103
+ - [x] 关键 host integration contract 通过
104
+
105
+ ## 10. 最终交付前复核
106
+
107
+ 下面问题现在的答案都应为“否”:
108
+
109
+ - [x] 现在是否仍存在第二套正式配置读取入口
110
+ - [x] 现在是否仍存在第二套正式扩展声明格式
111
+ - [x] 现在是否仍存在第二套正式 CLI 名称
112
+ - [x] 现在是否仍存在第二套正式基础包名字
113
+ - [x] 现在是否仍存在新脚手架继续输出旧口径
114
+ - [x] 现在是否仍依赖 import-time 副作用完成主链装配
115
+ - [x] 现在是否仍有关键验证只靠宿主偶然环境成立
116
+
117
+ 只有全部答案都是“否”,这轮任务才算真正收口。