@guanlin4924/devflow-pi 0.1.93 → 0.1.95

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 (369) hide show
  1. package/README.md +10 -10
  2. package/node_modules/@playwright/test/LICENSE +202 -0
  3. package/node_modules/@playwright/test/NOTICE +5 -0
  4. package/node_modules/@playwright/test/README.md +318 -0
  5. package/node_modules/@playwright/test/cli.js +19 -0
  6. package/node_modules/@playwright/test/index.d.ts +18 -0
  7. package/node_modules/@playwright/test/index.js +17 -0
  8. package/node_modules/@playwright/test/index.mjs +18 -0
  9. package/node_modules/@playwright/test/package.json +35 -0
  10. package/node_modules/@playwright/test/reporter.d.ts +17 -0
  11. package/node_modules/@playwright/test/reporter.js +17 -0
  12. package/node_modules/@playwright/test/reporter.mjs +17 -0
  13. package/node_modules/playwright/LICENSE +202 -0
  14. package/node_modules/playwright/NOTICE +5 -0
  15. package/node_modules/playwright/README.md +318 -0
  16. package/node_modules/playwright/ThirdPartyNotices.txt +14 -0
  17. package/node_modules/playwright/cli.js +19 -0
  18. package/node_modules/playwright/index.d.ts +17 -0
  19. package/node_modules/playwright/index.js +17 -0
  20. package/node_modules/playwright/index.mjs +18 -0
  21. package/node_modules/playwright/jsx-runtime.js +42 -0
  22. package/node_modules/playwright/jsx-runtime.mjs +21 -0
  23. package/node_modules/playwright/lib/agents/agentParser.js +89 -0
  24. package/node_modules/playwright/lib/agents/copilot-setup-steps.yml +34 -0
  25. package/node_modules/playwright/lib/agents/generateAgents.js +395 -0
  26. package/node_modules/playwright/lib/agents/playwright-test-coverage.prompt.md +31 -0
  27. package/node_modules/playwright/lib/agents/playwright-test-generate.prompt.md +8 -0
  28. package/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +88 -0
  29. package/node_modules/playwright/lib/agents/playwright-test-heal.prompt.md +6 -0
  30. package/node_modules/playwright/lib/agents/playwright-test-healer.agent.md +56 -0
  31. package/node_modules/playwright/lib/agents/playwright-test-plan.prompt.md +9 -0
  32. package/node_modules/playwright/lib/agents/playwright-test-planner.agent.md +74 -0
  33. package/node_modules/playwright/lib/cli/reportActions.js +78 -0
  34. package/node_modules/playwright/lib/cli/testActions.js +214 -0
  35. package/node_modules/playwright/lib/common/index.js +2923 -0
  36. package/node_modules/playwright/lib/common/index.js.txt +34 -0
  37. package/node_modules/playwright/lib/errorContext.js +129 -0
  38. package/node_modules/playwright/lib/globals.js +58 -0
  39. package/node_modules/playwright/lib/index.js +815 -0
  40. package/node_modules/playwright/lib/isomorphic.js +260 -0
  41. package/node_modules/playwright/lib/isomorphic.js.txt +9 -0
  42. package/node_modules/playwright/lib/loader/loaderProcessEntry.js +34 -0
  43. package/node_modules/playwright/lib/loader/loaderProcessEntry.js.txt +9 -0
  44. package/node_modules/playwright/lib/matchers/expect.js +13490 -0
  45. package/node_modules/playwright/lib/matchers/expect.js.LICENSE +640 -0
  46. package/node_modules/playwright/lib/matchers/expect.js.txt +67 -0
  47. package/node_modules/playwright/lib/mcp/test/browserBackend.js +135 -0
  48. package/node_modules/playwright/lib/mcp/test/generatorTools.js +122 -0
  49. package/node_modules/playwright/lib/mcp/test/plannerTools.js +150 -0
  50. package/node_modules/playwright/lib/mcp/test/seed.js +82 -0
  51. package/node_modules/playwright/lib/mcp/test/streams.js +44 -0
  52. package/node_modules/playwright/lib/mcp/test/testBackend.js +99 -0
  53. package/node_modules/playwright/lib/mcp/test/testContext.js +306 -0
  54. package/node_modules/playwright/lib/mcp/test/testTool.js +30 -0
  55. package/node_modules/playwright/lib/mcp/test/testTools.js +98 -0
  56. package/node_modules/playwright/lib/package.js +47 -0
  57. package/node_modules/playwright/lib/program.js +241 -0
  58. package/node_modules/playwright/lib/runner/index.js +8527 -0
  59. package/node_modules/playwright/lib/runner/index.js.txt +61 -0
  60. package/node_modules/playwright/lib/transform/babelBundle.js +72274 -0
  61. package/node_modules/playwright/lib/transform/babelBundle.js.LICENSE +2384 -0
  62. package/node_modules/playwright/lib/transform/babelBundle.js.txt +325 -0
  63. package/node_modules/playwright/lib/transform/esmLoader.js +8054 -0
  64. package/node_modules/playwright/lib/transform/esmLoader.js.LICENSE +355 -0
  65. package/node_modules/playwright/lib/transform/esmLoader.js.txt +60 -0
  66. package/node_modules/playwright/lib/util.js +373 -0
  67. package/node_modules/playwright/lib/worker/workerProcessEntry.js +1861 -0
  68. package/node_modules/playwright/lib/worker/workerProcessEntry.js.txt +19 -0
  69. package/node_modules/playwright/package.json +55 -0
  70. package/node_modules/playwright/test.d.ts +18 -0
  71. package/node_modules/playwright/test.js +24 -0
  72. package/node_modules/playwright/test.mjs +35 -0
  73. package/node_modules/playwright/types/test.d.ts +11074 -0
  74. package/node_modules/playwright/types/testReporter.d.ts +950 -0
  75. package/node_modules/playwright-core/LICENSE +202 -0
  76. package/node_modules/playwright-core/NOTICE +5 -0
  77. package/node_modules/playwright-core/README.md +3 -0
  78. package/node_modules/playwright-core/ThirdPartyNotices.txt +13 -0
  79. package/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
  80. package/node_modules/playwright-core/bin/install_webkit_wsl.ps1 +33 -0
  81. package/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
  82. package/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
  83. package/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
  84. package/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
  85. package/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
  86. package/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
  87. package/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
  88. package/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
  89. package/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
  90. package/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
  91. package/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
  92. package/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
  93. package/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
  94. package/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
  95. package/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
  96. package/node_modules/playwright-core/browsers.json +52 -0
  97. package/node_modules/playwright-core/cli.js +21 -0
  98. package/node_modules/playwright-core/index.d.ts +17 -0
  99. package/node_modules/playwright-core/index.js +17 -0
  100. package/node_modules/playwright-core/index.mjs +28 -0
  101. package/node_modules/playwright-core/lib/bootstrap.js +88 -0
  102. package/node_modules/playwright-core/lib/coreBundle.js +75813 -0
  103. package/node_modules/playwright-core/lib/entry/cliDaemon.js +5 -0
  104. package/node_modules/playwright-core/lib/entry/dashboardApp.js +3 -0
  105. package/node_modules/playwright-core/lib/entry/mcp.js +10 -0
  106. package/node_modules/playwright-core/lib/entry/oopBrowserDownload.js +3 -0
  107. package/node_modules/playwright-core/lib/package.js +50 -0
  108. package/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
  109. package/node_modules/playwright-core/lib/server/electron/loader.js +116 -0
  110. package/node_modules/playwright-core/lib/serverRegistry.js +1939 -0
  111. package/node_modules/playwright-core/lib/serverRegistry.js.LICENSE +65 -0
  112. package/node_modules/playwright-core/lib/tools/cli-client/channelSessions.js +141 -0
  113. package/node_modules/playwright-core/lib/tools/cli-client/cli.js +6 -0
  114. package/node_modules/playwright-core/lib/tools/cli-client/help.json +721 -0
  115. package/node_modules/playwright-core/lib/tools/cli-client/minimist.js +128 -0
  116. package/node_modules/playwright-core/lib/tools/cli-client/output.js +351 -0
  117. package/node_modules/playwright-core/lib/tools/cli-client/program.js +418 -0
  118. package/node_modules/playwright-core/lib/tools/cli-client/registry.js +180 -0
  119. package/node_modules/playwright-core/lib/tools/cli-client/session.js +259 -0
  120. package/node_modules/playwright-core/lib/tools/dashboard/appIcon.png +0 -0
  121. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/SKILL.md +425 -0
  122. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/element-attributes.md +23 -0
  123. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/playwright-tests.md +39 -0
  124. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/request-mocking.md +87 -0
  125. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/running-code.md +241 -0
  126. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/session-management.md +225 -0
  127. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/storage-state.md +275 -0
  128. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/test-generation.md +433 -0
  129. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/tracing.md +139 -0
  130. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/video-recording.md +143 -0
  131. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/SKILL.md +136 -0
  132. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/gallery-spec.md +144 -0
  133. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/migration.md +89 -0
  134. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/react.md +69 -0
  135. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/typing.md +173 -0
  136. package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/vue.md +77 -0
  137. package/node_modules/playwright-core/lib/tools/skills/playwright-trace/SKILL.md +174 -0
  138. package/node_modules/playwright-core/lib/tools/utils/extension.js +112 -0
  139. package/node_modules/playwright-core/lib/tools/utils/socketConnection.js +108 -0
  140. package/node_modules/playwright-core/lib/utilsBundle.js +85357 -0
  141. package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +1890 -0
  142. package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule--QdMvsKi.css +1 -0
  143. package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule-CQ8RZGBm.js +32 -0
  144. package/node_modules/playwright-core/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
  145. package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
  146. package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
  147. package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
  148. package/node_modules/playwright-core/lib/vite/dashboard/assets/index-AwgwcYie.css +1 -0
  149. package/node_modules/playwright-core/lib/vite/dashboard/assets/index-hRvO4yU2.js +12 -0
  150. package/node_modules/playwright-core/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
  151. package/node_modules/playwright-core/lib/vite/dashboard/index.html +29 -0
  152. package/node_modules/playwright-core/lib/vite/dashboard/playwright-logo.svg +24 -0
  153. package/node_modules/playwright-core/lib/vite/htmlReport/index.html +16 -0
  154. package/node_modules/playwright-core/lib/vite/htmlReport/report.css +2 -0
  155. package/node_modules/playwright-core/lib/vite/htmlReport/report.js +32 -0
  156. package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule--QdMvsKi.css +1 -0
  157. package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-CVQWJZAA.js +32 -0
  158. package/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  159. package/node_modules/playwright-core/lib/vite/recorder/assets/index-BZpYJZ-P.css +1 -0
  160. package/node_modules/playwright-core/lib/vite/recorder/assets/index-hrlLqLtq.js +129 -0
  161. package/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
  162. package/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
  163. package/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-BbkfBe3n.js +32 -0
  164. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js +182 -0
  165. package/node_modules/playwright-core/lib/vite/traceViewer/assets/urlMatch-L3liM589.js +1 -0
  166. package/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-DywYcAf8.js +7 -0
  167. package/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.-QdMvsKi.css +1 -0
  168. package/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  169. package/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.Bqk9acqE.css +1 -0
  170. package/node_modules/playwright-core/lib/vite/traceViewer/index.B4cLoZK3.js +1 -0
  171. package/node_modules/playwright-core/lib/vite/traceViewer/index.B_TqY17P.css +1 -0
  172. package/node_modules/playwright-core/lib/vite/traceViewer/index.html +44 -0
  173. package/node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
  174. package/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
  175. package/node_modules/playwright-core/lib/vite/traceViewer/snapshot.B_Jk1wbt.js +1 -0
  176. package/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +10 -0
  177. package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +4 -0
  178. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CU5KtEkS.js +5 -0
  179. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CyMfwkXJ.css +1 -0
  180. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +18 -0
  181. package/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.kHJ-D0s7.css +1 -0
  182. package/node_modules/playwright-core/lib/webp_codec.LICENSE +173 -0
  183. package/node_modules/playwright-core/lib/webp_codec.wasm +0 -0
  184. package/node_modules/playwright-core/lib/xdg-open +1267 -0
  185. package/node_modules/playwright-core/package.json +34 -0
  186. package/node_modules/playwright-core/types/protocol.d.ts +24645 -0
  187. package/node_modules/playwright-core/types/structs.d.ts +52 -0
  188. package/node_modules/playwright-core/types/types.d.ts +26632 -0
  189. package/package.json +12 -2
  190. package/plugins/devflow-core/extensions/devflow-core.ts +518 -40
  191. package/plugins/devflow-core/runtime/hooks/context_sync_gate.py +3 -3
  192. package/plugins/devflow-core/runtime/hooks/hook_common.py +334 -11
  193. package/plugins/devflow-core/runtime/hooks/index_gate.py +29 -16
  194. package/plugins/devflow-core/runtime/hooks/start.py +13 -13
  195. package/plugins/devflow-core/skills/wireframe-proposal/SKILL.md +2 -2
  196. package/plugins/devflow-core/skills/wireframe-validate/SKILL.md +4 -4
  197. package/plugins/devflow-core/skills/workflow-orchestrator/SKILL.md +19 -19
  198. package/plugins/devflow-core/skills/workflow-orchestrator/agents/openai.yaml +2 -2
  199. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/acceptance_test_runner.py +412 -76
  200. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/advance_state.rb +60 -9
  201. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/api_test_matrix.py +2 -2
  202. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/approval_pins.py +433 -0
  203. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/approval_store.py +137 -0
  204. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_assessment.rb +1 -1
  205. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_brief.rb +1 -1
  206. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_feasibility.rb +1 -1
  207. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_invalidation.rb +5 -5
  208. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_model_commit.rb +4 -4
  209. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_model_validate.py +1 -1
  210. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_source_resolver.rb +4 -4
  211. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/checker_adapter.rb +7 -7
  212. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/control_io.rb +51 -7
  213. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/cross_track_consistency_check.rb +1 -1
  214. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/dsl_coverage.py +87 -0
  215. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/dsl_v1.py +318 -0
  216. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/environment_profile.py +134 -0
  217. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/execution_contract.rb +7 -6
  218. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/execution_surface.py +138 -0
  219. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/gate_runtime.rb +3 -3
  220. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_state.rb +5 -5
  221. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_workflow.rb +5 -5
  222. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/inspect_state.rb +13 -13
  223. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/machine_evidence.rb +3 -3
  224. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/manage_lessons.rb +7 -7
  225. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/parallel_recover.rb +2 -2
  226. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/parallel_run.rb +3 -3
  227. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/phase_ownership.rb +6 -6
  228. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/playwright_adapter.py +515 -0
  229. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/repair_control_plane.rb +1 -1
  230. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/requirement_coverage.rb +1 -1
  231. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/requirement_graph.rb +3 -3
  232. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/review_preflight.py +3 -3
  233. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/review_run.py +18 -18
  234. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/runtime_context_collector.rb +3 -3
  235. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/session_rollover.rb +4 -4
  236. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/static_runtime_context_collector.rb +2 -2
  237. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/sync_artifacts.rb +5 -5
  238. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/tc_hash.py +132 -0
  239. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/tdd_evidence.py +3 -3
  240. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/test_command_policy.py +104 -10
  241. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/test_task_binding_check.py +3 -3
  242. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/update_triage_route.rb +3 -3
  243. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/validate_state.rb +19 -6
  244. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/wireframe_commit.rb +5 -5
  245. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/wireframe_validate.py +1 -1
  246. package/plugins/devflow-core/skills/workflow-orchestrator/templates/acceptance-remediation.yaml +12 -12
  247. package/plugins/devflow-core/skills/workflow-orchestrator/templates/feature-development.yaml +201 -222
  248. package/plugins/devflow-core/skills/workflow-pipeline/SKILL.md +6 -4
  249. package/plugins/devflow-core/skills/workflow-pipeline/references/pipeline-flow.md +68 -140
  250. package/plugins/devflow-core/skills/workflow-project-context/SKILL.md +14 -14
  251. package/plugins/devflow-core/skills/workflow-project-context/assets/agents-md-template.md +7 -7
  252. package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-backend-spec-template.md +4 -4
  253. package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-frontend-spec-template.md +4 -4
  254. package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-navigation-template.md +1 -1
  255. package/plugins/devflow-core/skills/workflow-project-context/assets/context-domain-index-template.md +4 -4
  256. package/plugins/devflow-core/skills/workflow-project-context/assets/context-spec-index-template.md +10 -10
  257. package/plugins/devflow-core/skills/workflow-project-context/assets/execution-contract-template.md +2 -2
  258. package/plugins/devflow-core/skills/workflow-project-context/assets/navigation-index-template.md +18 -18
  259. package/plugins/devflow-core/skills/workflow-project-context/assets/project-initialization-template.md +32 -32
  260. package/plugins/devflow-core/skills/workflow-project-context/assets/rules-index-template.md +30 -30
  261. package/plugins/devflow-core/skills/workflow-project-context/assets/state-template.md +7 -7
  262. package/plugins/devflow-core/skills/workflow-project-context/references/navigation-guide.md +37 -37
  263. package/plugins/devflow-core/skills/workflow-project-context/scripts/validate_initialization.py +16 -16
  264. package/plugins/devflow-core/skills/workflow-project-context/scripts/validate_initialization_database.py +1 -1
  265. package/plugins/devflow-design/skills/workflow-api-call-guide/SKILL.md +4 -4
  266. package/plugins/devflow-design/skills/workflow-api-contract/SKILL.md +8 -8
  267. package/plugins/devflow-design/skills/workflow-api-supplement/SKILL.md +5 -5
  268. package/plugins/devflow-design/skills/workflow-architecture-feasibility/SKILL.md +1 -1
  269. package/plugins/devflow-design/skills/workflow-backend-tech-spec/SKILL.md +39 -39
  270. package/plugins/devflow-design/skills/workflow-backend-tech-spec/assets/backend-spec-template.md +10 -10
  271. package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/affected-module-exploration.md +2 -2
  272. package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/code-explore-guide.md +1 -1
  273. package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/project-rule-contract.md +20 -20
  274. package/plugins/devflow-design/skills/workflow-design-rule-pack/SKILL.md +8 -8
  275. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/index.md +3 -3
  276. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/accessibility.md +2 -2
  277. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/component-library.md +2 -2
  278. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/design-systems.md +1 -1
  279. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/responsive-grid.md +2 -2
  280. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/stack-guidelines.md +6 -6
  281. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/ux-patterns.md +2 -2
  282. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tokens/project-tokens.md +1 -1
  283. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/SKILL.md +12 -12
  284. package/plugins/devflow-design/skills/workflow-design-rule-pack/scripts/install.py +2 -2
  285. package/plugins/devflow-design/skills/workflow-feature-breakdown/SKILL.md +30 -30
  286. package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/output-template.md +2 -2
  287. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/SKILL.md +41 -41
  288. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/assets/frontend-spec-template.md +15 -15
  289. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/affected-module-exploration.md +2 -2
  290. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/project-rule-contract.md +25 -25
  291. package/plugins/devflow-design/skills/workflow-integration-verify/SKILL.md +13 -13
  292. package/plugins/devflow-design/skills/workflow-ui-spec/SKILL.md +23 -23
  293. package/plugins/devflow-design/skills/workflow-ui-spec/assets/ui-spec-template.md +3 -3
  294. package/plugins/devflow-implementation/agents/implementation-worker.md +2 -2
  295. package/plugins/devflow-implementation/skills/workflow-bug-fix/SKILL.md +9 -9
  296. package/plugins/devflow-implementation/skills/workflow-bug-fix/references/lesson-format.md +2 -2
  297. package/plugins/devflow-implementation/skills/workflow-bug-fix/references/root-cause-ladder.md +1 -1
  298. package/plugins/devflow-implementation/skills/workflow-change-plan/SKILL.md +17 -17
  299. package/plugins/devflow-implementation/skills/workflow-change-plan/references/code-conventions.md +1 -1
  300. package/plugins/devflow-implementation/skills/workflow-change-plan/references/output-template.md +3 -3
  301. package/plugins/devflow-implementation/skills/workflow-change-plan/references/project-rule-contract.md +16 -16
  302. package/plugins/devflow-implementation/skills/workflow-execute-phase/SKILL.md +38 -38
  303. package/plugins/devflow-implementation/skills/workflow-execute-phase/references/execute-phase.md +4 -2
  304. package/plugins/devflow-intel/agents/project-scout.md +1 -1
  305. package/plugins/devflow-intel/extensions/devflow-intel.ts +20 -19
  306. package/plugins/devflow-intel/skills/code-index-query/SKILL.md +6 -6
  307. package/plugins/devflow-intel/skills/workflow-code-index/SKILL.md +12 -12
  308. package/plugins/devflow-intel/skills/workflow-code-index/references/discovery.md +2 -2
  309. package/plugins/devflow-intel/skills/workflow-code-index/references/query-guide.md +1 -1
  310. package/plugins/devflow-intel/skills/workflow-code-index/scripts/code_index.py +31 -12
  311. package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/discovery.py +2 -2
  312. package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/scanner.py +4 -1
  313. package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/project_binding_check.py +4 -4
  314. package/plugins/devflow-intel/skills/workflow-context-sync/SKILL.md +14 -14
  315. package/plugins/devflow-intel/skills/workflow-context-sync/scripts/context_sync_cursor.py +2 -2
  316. package/plugins/devflow-intel/skills/workflow-update-navigation/SKILL.md +26 -26
  317. package/plugins/devflow-intel/skills/workflow-update-navigation/references/incremental-update-guide.md +2 -2
  318. package/plugins/devflow-quality/runtime/playwright/devflow-test-dsl-v1.schema.json +872 -0
  319. package/plugins/devflow-quality/runtime/playwright/playwright.config.mjs +46 -0
  320. package/plugins/devflow-quality/runtime/playwright/reporter.mjs +311 -0
  321. package/plugins/devflow-quality/runtime/playwright/runner.spec.mjs +1308 -0
  322. package/plugins/devflow-quality/runtime/playwright/runtime-manifest.json +11 -0
  323. package/plugins/devflow-quality/skills/code-review/SKILL.md +12 -12
  324. package/plugins/devflow-quality/skills/code-review/references/spec-checklist.md +1 -1
  325. package/plugins/devflow-quality/skills/workflow-acceptance-test-design/SKILL.md +11 -8
  326. package/plugins/devflow-quality/skills/workflow-gen-test-guide/SKILL.md +6 -6
  327. package/plugins/devflow-quality/skills/workflow-gen-test-guide/legacy/SKILL.md +14 -14
  328. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/SKILL.md +82 -69
  329. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/api-mainflow-rules.md +20 -15
  330. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/codebase-discovery.md +12 -10
  331. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/intermediate-format.md +115 -192
  332. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/mainflow-selection.md +27 -23
  333. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/project-dsl-contract.md +78 -153
  334. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/ui-mainflow-rules.md +36 -83
  335. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/compile_dsl.py +497 -556
  336. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/discover_codebases.py +2 -2
  337. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/export_legacy_testagent.py +647 -0
  338. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/normalize_case_payloads.py +10 -3
  339. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/validate_case_payloads.py +165 -275
  340. package/plugins/devflow-quality/skills/workflow-human-acceptance/SKILL.md +61 -0
  341. package/plugins/devflow-quality/skills/workflow-release-closeout/SKILL.md +18 -18
  342. package/plugins/devflow-quality/skills/workflow-run-acceptance-tests/SKILL.md +20 -14
  343. package/plugins/devflow-requirements/skills/requirement-feasibility-review/SKILL.md +1 -1
  344. package/plugins/devflow-requirements/skills/workflow-demand-clarify/SKILL.md +10 -10
  345. package/plugins/devflow-requirements/skills/workflow-domain-modeling/SKILL.md +25 -25
  346. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/SKILL.md +49 -49
  347. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/assets/baseline-template.md +22 -22
  348. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/antipatterns.md +3 -3
  349. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/challenge-review-guide.md +3 -3
  350. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/project-context-guide.md +11 -11
  351. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/questioning.md +1 -1
  352. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/requirement-review-checklist.md +4 -4
  353. package/plugins/devflow-requirements/skills/workflow-requirement-triage/SKILL.md +16 -16
  354. package/plugins/devflow-requirements/skills/workflow-wayfinder/SKILL.md +6 -6
  355. package/src/approval-store.ts +340 -0
  356. package/src/cli.ts +15 -0
  357. package/src/constants.ts +1 -1
  358. package/src/doctor.ts +259 -2
  359. package/src/initialization-store.ts +51 -3
  360. package/src/paths.ts +12 -1
  361. package/src/project-context.ts +60 -15
  362. package/src/project-documents.ts +61 -61
  363. package/src/project-initializer.ts +9 -8
  364. package/src/project-layout.ts +217 -0
  365. package/src/runtime.ts +3 -3
  366. package/templates/commands/start.md +4 -4
  367. package/templates/omp/AGENTS.md +1 -1
  368. package/templates/omp/hook-config.json +13 -7
  369. package/templates/omp/index-policy.json +8 -8
@@ -1,29 +1,29 @@
1
1
  ---
2
2
  name: code-index-query
3
- description: Query a generated .planning/code-index machine index to answer code structure questions. Use when the OMP development agent needs callers, callees, entrypoint flows, imports, resource reads/writes, tested_by links, or symbol locations before reading source evidence.
3
+ description: Query a generated .devflow/planning/code-index machine index to answer code structure questions. Use when the OMP development agent needs callers, callees, entrypoint flows, imports, resource reads/writes, tested_by links, or symbol locations before reading source evidence.
4
4
  ---
5
5
 
6
6
  # Code Index Query
7
7
 
8
- Use this skill to answer source-structure questions from `.planning/code-index/`.
8
+ Use this skill to answer source-structure questions from `.devflow/planning/code-index/`.
9
9
 
10
10
  ## Project-root resolution
11
11
 
12
12
  The runtime directory may be a nested codebase such as `drama-ad/backend`. Before checking the index, resolve the project root from the runtime directory using the same rule as project initialization:
13
13
 
14
14
  1. Walk upward from the runtime directory and select the nearest ancestor containing `.devflow/project.json`.
15
- 2. If no manifest exists, select the nearest ancestor containing `.planning/code-index/index.sqlite` or `.planning/PROJECT.md`.
15
+ 2. If no manifest exists, select the nearest ancestor containing `.devflow/planning/code-index/index.sqlite` or `.devflow/planning/PROJECT.md`.
16
16
  3. Only if neither exists, use the runtime directory and report that the project root is uninitialized.
17
17
 
18
- All index checks and `devflow_code_index` calls must run with that resolved root as the working directory. Source paths remain relative to the resolved root, so a source file may be `drama-ad/backend/...` while the index remains `.planning/code-index/...`. Never append `.planning` to a selected source/codebase directory.
18
+ All index checks and `devflow_code_index` calls must run with that resolved root as the working directory. Source paths remain relative to the resolved root, so a source file may be `drama-ad/backend/...` while the index remains `.devflow/planning/code-index/...`. Never append `.devflow/planning` to a selected source/codebase directory.
19
19
 
20
- The tool returns the resolved `projectRoot` in its details. If the root cannot be resolved, stop and report the exact check command/path instead of probing `<source-dir>/.planning`.
20
+ The tool returns the resolved `projectRoot` in its details. If the root cannot be resolved, stop and report the exact check command/path instead of probing `<source-dir>/.devflow/planning`.
21
21
 
22
22
  If the index is missing, stale, fails validation, or returns no useful hit, do not block the source question. Record the machine failure and use a bounded `rg`/`grep` or LSP search within the registered codebase roots. Mark the result `degraded_index_coverage` and include the exact fallback scope; do not claim index-derived relations or complete impact coverage.
23
23
 
24
24
  ## Required Flow
25
25
 
26
- 1. Check that `.planning/code-index/index.sqlite` or JSONL sidecars exist.
26
+ 1. Check that `.devflow/planning/code-index/index.sqlite` or JSONL sidecars exist.
27
27
  2. Search symbols or relations using the machine index.
28
28
  3. Expand relation edges as needed.
29
29
  4. Read source files at `evidence_path`.
@@ -11,17 +11,17 @@ Build a generic code intelligence index for the current project. This skill is p
11
11
 
12
12
  Write generated artifacts to the target project:
13
13
 
14
- - `.planning/code-index/files.jsonl`
15
- - `.planning/code-index/symbols.jsonl`
16
- - `.planning/code-index/relations.jsonl`
17
- - `.planning/code-index/diagnostics.jsonl`
18
- - `.planning/code-index/index.sqlite`
19
- - `.planning/code-index/INDEX.md`
20
- - `.planning/code-index/SYMBOLS.md`
21
- - `.planning/code-index/RELATIONS.md`
22
- - `.planning/code-index/ENTRYPOINTS.md`
23
- - `.planning/code-index/DATAFLOW.md`
24
- - `.planning/code-index/AUDIT.md` when auditing
14
+ - `.devflow/planning/code-index/files.jsonl`
15
+ - `.devflow/planning/code-index/symbols.jsonl`
16
+ - `.devflow/planning/code-index/relations.jsonl`
17
+ - `.devflow/planning/code-index/diagnostics.jsonl`
18
+ - `.devflow/planning/code-index/index.sqlite`
19
+ - `.devflow/planning/code-index/INDEX.md`
20
+ - `.devflow/planning/code-index/SYMBOLS.md`
21
+ - `.devflow/planning/code-index/RELATIONS.md`
22
+ - `.devflow/planning/code-index/ENTRYPOINTS.md`
23
+ - `.devflow/planning/code-index/DATAFLOW.md`
24
+ - `.devflow/planning/code-index/AUDIT.md` when auditing
25
25
 
26
26
  Markdown is a display layer only. JSONL/SQLite is the machine fact layer.
27
27
 
@@ -69,7 +69,7 @@ devflow_code_index(action="scan", changedFiles=["path/to/file.ext"])
69
69
 
70
70
  ## Audit Gate
71
71
 
72
- `audit` is part of this skill's normal lifecycle, not a separate workflow. Run `validate` before `audit` whenever index files were edited or refreshed, then review `.planning/code-index/AUDIT.md` against `references/audit-checklist.md`.
72
+ `audit` is part of this skill's normal lifecycle, not a separate workflow. Run `validate` before `audit` whenever index files were edited or refreshed, then review `.devflow/planning/code-index/AUDIT.md` against `references/audit-checklist.md`.
73
73
 
74
74
  Blocking findings are stale file hashes, missing indexed files, dangling `to_id` relations, missing relation evidence, and invalid schema. Unresolved heuristic calls, low-confidence diagnostics, and possible project-bound examples in generic skills are non-blocking but must be reported.
75
75
 
@@ -3,8 +3,8 @@
3
3
  Discover codebases in this order:
4
4
 
5
5
  1. Explicit CLI arguments: `--codebase name:path[:type]`.
6
- 2. `.planning/navigation/INDEX.md` Codebase Registry.
7
- 3. `.context/spec/index.md` codebase mapping.
6
+ 2. `.devflow/planning/navigation/INDEX.md` Codebase Registry.
7
+ 3. `.devflow/context/spec/index.md` codebase mapping.
8
8
  4. Current working directory fallback.
9
9
 
10
10
  Normalize each codebase to:
@@ -3,7 +3,7 @@
3
3
  Query flow:
4
4
 
5
5
  1. Load project rules and navigation if present.
6
- 2. Check `.planning/code-index/index.sqlite` or JSONL sidecars.
6
+ 2. Check `.devflow/planning/code-index/index.sqlite` or JSONL sidecars.
7
7
  3. Search symbols using exact name, qualified name, path, or FTS.
8
8
  4. Expand relations by type and depth.
9
9
  5. Read source files at `evidence_path`.
@@ -150,7 +150,7 @@ def _worktree_signature(root: Path) -> str:
150
150
  kept = []
151
151
  for line in proc.stdout.splitlines():
152
152
  path = line[3:].strip() if len(line) > 3 else ""
153
- if path.startswith(".planning/code-index/"):
153
+ if path.startswith(".devflow/planning/code-index/"):
154
154
  continue
155
155
  kept.append(line)
156
156
  return "\n".join(kept)
@@ -198,7 +198,7 @@ def main(argv=None) -> int:
198
198
 
199
199
  scan = sub.add_parser("scan", help="Build or refresh the code index.")
200
200
  scan.add_argument("--root", default=".", help="Project root. Defaults to current directory.")
201
- scan.add_argument("--output", default=".planning/code-index", help="Index output directory.")
201
+ scan.add_argument("--output", default=".devflow/planning/code-index", help="Index output directory.")
202
202
  scan.add_argument("--codebase", action="append", default=[], help="Explicit codebase: name:path[:type]. Can repeat.")
203
203
  scan.add_argument("--changed-files", nargs="*", default=[], help="Optional changed files for incremental refresh.")
204
204
  scan.add_argument("--include", action="append", default=[], help="Repository-relative include glob. Can repeat.")
@@ -206,7 +206,7 @@ def main(argv=None) -> int:
206
206
  scan.add_argument("--exclude", action="append", default=[], help="Additional directory names to exclude.")
207
207
 
208
208
  validate = sub.add_parser("validate", help="Validate an index in staged levels.")
209
- validate.add_argument("--index", default=".planning/code-index", help="Index directory.")
209
+ validate.add_argument("--index", default=".devflow/planning/code-index", help="Index directory.")
210
210
  validate.add_argument("--snapshot", help="Immutable generation id.")
211
211
  validate.add_argument(
212
212
  "--level",
@@ -217,19 +217,19 @@ def main(argv=None) -> int:
217
217
 
218
218
  audit = sub.add_parser("audit", help="Audit stale files and relation integrity.")
219
219
  audit.add_argument("--root", default=".", help="Project root.")
220
- audit.add_argument("--index", default=".planning/code-index", help="Index directory.")
220
+ audit.add_argument("--index", default=".devflow/planning/code-index", help="Index directory.")
221
221
  audit.add_argument("--skill-root", default=".skills", help="Optional skill root for project-binding checks.")
222
222
  audit.add_argument("--snapshot", help="Immutable generation id.")
223
223
  audit.add_argument("--level", choices=("publish", "full"), default="publish")
224
224
 
225
225
  query = sub.add_parser("query", help="Search symbols using SQLite FTS or LIKE fallback.")
226
- query.add_argument("--index", default=".planning/code-index", help="Index directory.")
226
+ query.add_argument("--index", default=".devflow/planning/code-index", help="Index directory.")
227
227
  query.add_argument("--term", required=True, help="Search term.")
228
228
  query.add_argument("--limit", type=int, default=20)
229
229
  query.add_argument("--snapshot", help="Immutable generation id. Historical queries do not require current workspace freshness.")
230
230
 
231
231
  relations = sub.add_parser("relations", help="Traverse resolved relations in a fixed snapshot.")
232
- relations.add_argument("--index", default=".planning/code-index")
232
+ relations.add_argument("--index", default=".devflow/planning/code-index")
233
233
  relations.add_argument("--object", required=True, help="Source symbol id.")
234
234
  relations.add_argument("--depth", type=int, default=3)
235
235
  relations.add_argument("--limit", type=int, default=100)
@@ -238,7 +238,7 @@ def main(argv=None) -> int:
238
238
  relations.add_argument("--direction", choices=["incoming", "outgoing", "both"], default="outgoing")
239
239
 
240
240
  impact = sub.add_parser("impact", help="Traverse cross-layer semantic facts in a fixed snapshot.")
241
- impact.add_argument("--index", default=".planning/code-index")
241
+ impact.add_argument("--index", default=".devflow/planning/code-index")
242
242
  impact.add_argument("--entity", required=True, help="Logical entity id, feature id, API id, or symbol id.")
243
243
  impact.add_argument("--depth", type=int, default=5)
244
244
  impact.add_argument("--limit", type=int, default=200)
@@ -247,7 +247,7 @@ def main(argv=None) -> int:
247
247
 
248
248
  for action in ("search-content", "resolve-domain", "query-plan", "domain-import"):
249
249
  operation = sub.add_parser(action)
250
- operation.add_argument("--index", default=".planning/code-index")
250
+ operation.add_argument("--index", default=".devflow/planning/code-index")
251
251
  operation.add_argument("--snapshot")
252
252
  operation.add_argument("--project-id", default="")
253
253
  operation.add_argument("--limit", type=int, default=20)
@@ -615,7 +615,7 @@ def command_structured(args) -> int:
615
615
  errors = _validate_snapshot_bundle(selected, snapshot)
616
616
  if errors:
617
617
  raise ValueError(errors[0])
618
- if not requested and not _query_is_fresh(Path(snapshot.get("workspace", {}).get("root", output.parent.parent)), snapshot, read_jsonl(selected / INDEX_FILES["files"])):
618
+ if not requested and not _snapshot_is_fresh(snapshot, read_jsonl(selected / INDEX_FILES["files"])):
619
619
  print(json.dumps({"_meta": {"status": "stale_index", "snapshot": snapshot.get("generation")}}))
620
620
  return 1
621
621
  conn = read_connection(selected / "index.sqlite")
@@ -662,7 +662,7 @@ def command_query(args) -> int:
662
662
  return 1
663
663
  limit = _bounded_limit(getattr(args, "limit", 20), 1000)
664
664
  files = read_jsonl(selected / INDEX_FILES["files"])
665
- if not getattr(args, "snapshot", None) and not _query_is_fresh(output.parent.parent, snapshot, files):
665
+ if not getattr(args, "snapshot", None) and not _snapshot_is_fresh(snapshot, files):
666
666
  print("Stale code index: refresh required before query.", file=sys.stderr)
667
667
  return 1
668
668
  conn = read_connection(index)
@@ -717,7 +717,7 @@ def command_relations(args) -> int:
717
717
  bundle_errors = _validate_snapshot_bundle(selected, snapshot)
718
718
  if bundle_errors:
719
719
  print(bundle_errors[0], file=sys.stderr); return 1
720
- if not getattr(args, "snapshot", None) and not _query_is_fresh(output.parent.parent, snapshot, files):
720
+ if not getattr(args, "snapshot", None) and not _snapshot_is_fresh(snapshot, files):
721
721
  print("Stale code index: refresh required before query.", file=sys.stderr); return 1
722
722
  conn = read_connection(selected / "index.sqlite")
723
723
  try:
@@ -785,7 +785,7 @@ def command_impact(args) -> int:
785
785
  print(bundle_errors[0], file=sys.stderr); return 1
786
786
  if not getattr(args, "snapshot", None):
787
787
  files = read_jsonl(selected / INDEX_FILES["files"])
788
- if not _query_is_fresh(output.parent.parent, snapshot, files):
788
+ if not _snapshot_is_fresh(snapshot, files):
789
789
  print("Stale code index: refresh required before impact query.", file=sys.stderr)
790
790
  return 1
791
791
  conn = read_connection(selected / "index.sqlite")
@@ -905,6 +905,25 @@ def _validate_snapshot_bundle(selected: Path, snapshot: Dict[str, object]) -> Li
905
905
  return errors
906
906
 
907
907
 
908
+ def _snapshot_workspace_root(snapshot: Dict[str, object]) -> Path | None:
909
+ """The scan root recorded by command_scan, or None when the snapshot has no usable workspace.root.
910
+
911
+ Never guessed from the index location: a missing, non-string, blank, relative or non-directory root
912
+ means freshness cannot be verified, so callers must treat the snapshot as stale.
913
+ """
914
+ workspace = snapshot.get("workspace") if isinstance(snapshot, dict) else None
915
+ raw = workspace.get("root") if isinstance(workspace, dict) else None
916
+ if not isinstance(raw, str) or not raw.strip() or "\x00" in raw:
917
+ return None
918
+ root = Path(raw)
919
+ return root if root.is_absolute() and root.is_dir() else None
920
+
921
+
922
+ def _snapshot_is_fresh(snapshot: Dict[str, object], files: List[dict]) -> bool:
923
+ root = _snapshot_workspace_root(snapshot)
924
+ return root is not None and _query_is_fresh(root, snapshot, files)
925
+
926
+
908
927
  def _query_is_fresh(root: Path, snapshot: Dict[str, object], files: List[dict]) -> bool:
909
928
  workspace = snapshot.get("workspace") if isinstance(snapshot, dict) else None
910
929
  if not isinstance(workspace, dict):
@@ -45,7 +45,7 @@ def _parse_explicit(root: Path, value: str) -> Optional[Codebase]:
45
45
 
46
46
 
47
47
  def _from_navigation(root: Path) -> List[Codebase]:
48
- index = root / ".planning/navigation/INDEX.md"
48
+ index = root / ".devflow/planning/navigation/INDEX.md"
49
49
  if not index.exists():
50
50
  return []
51
51
  rows = _read_markdown_table(index)
@@ -72,7 +72,7 @@ def _from_navigation(root: Path) -> List[Codebase]:
72
72
 
73
73
 
74
74
  def _from_spec_index(root: Path) -> List[Codebase]:
75
- index = root / ".context/spec/index.md"
75
+ index = root / ".devflow/context/spec/index.md"
76
76
  if not index.exists():
77
77
  return []
78
78
  rows = _read_markdown_table(index)
@@ -7,7 +7,11 @@ from typing import Iterable, List, Sequence
7
7
 
8
8
  DEFAULT_EXCLUDES = {
9
9
  ".git",
10
+ ".devflow",
11
+ # Old protocol directories are excluded as source even after the new
12
+ # namespaced layout becomes authoritative.
10
13
  ".planning",
14
+ ".context",
11
15
  "node_modules",
12
16
  "vendor",
13
17
  "dist",
@@ -139,4 +143,3 @@ def _is_excluded(path: Path, root: Path, excluded: Sequence[str]) -> bool:
139
143
  if any(fnmatch.fnmatch(relative, pattern) or fnmatch.fnmatch(relative + "/", pattern.rstrip("/") + "/") for pattern in excluded):
140
144
  return True
141
145
  return any(part in excluded for part in parts) or any("/" in pattern and ("/" + "/".join(parts) + "/").find("/" + pattern.strip("/") + "/") >= 0 for pattern in excluded)
142
-
@@ -5,8 +5,8 @@ from pathlib import Path
5
5
  PLACEHOLDER_OK = re.compile(r"\{[A-Za-z0-9_:-]+\}")
6
6
 
7
7
  GENERIC_TOKENS = (
8
- ".planning/",
9
- ".context/",
8
+ ".devflow/planning/",
9
+ ".devflow/context/",
10
10
  ".skills/",
11
11
  "references/",
12
12
  "scripts/",
@@ -40,8 +40,8 @@ def audit_project_binding(paths):
40
40
  stripped = PLACEHOLDER_OK.sub("", line)
41
41
  if (
42
42
  path_like.search(stripped)
43
- and ".planning/" not in stripped
44
- and ".context/" not in stripped
43
+ and ".devflow/planning/" not in stripped
44
+ and ".devflow/context/" not in stripped
45
45
  and ".skills/" not in stripped
46
46
  ):
47
47
  findings.append(
@@ -28,7 +28,7 @@ code facts changed -> project context must remain trustworthy
28
28
 
29
29
  Preserve these properties:
30
30
 
31
- - **Freshness**: `.planning/code-index/`, `.planning/navigation/`, and `.context/spec/` must not describe old routes, APIs, entries, services, commands, or codebase roots.
31
+ - **Freshness**: `.devflow/planning/code-index/`, `.devflow/planning/navigation/`, and `.devflow/context/spec/` must not describe old routes, APIs, entries, services, commands, or codebase roots.
32
32
  - **Minimality**: do not run a full project initialization when changed-file indexing is enough.
33
33
  - **Evidence**: do not update navigation/spec from memory or inference alone; read the changed source or manifest evidence first.
34
34
  - **Non-destruction**: do not overwrite user-authored business context; append logs or update machine-derived sections only.
@@ -40,7 +40,7 @@ Preserve these properties:
40
40
  |---|---|---|
41
41
  | project indexes | Accelerate rule/spec/navigation discovery; fall back to LSP/search/source when stale | Advisory evidence, never a source-read blocker |
42
42
  | `workflow-code-index` | Refresh, validate, and audit machine facts | Light, Medium, Full; audit/staleness problems |
43
- | `workflow-update-navigation` | Update `.planning/navigation/*.md` | Medium route/API/page/service/command changes |
43
+ | `workflow-update-navigation` | Update `.devflow/planning/navigation/*.md` | Medium route/API/page/service/command changes |
44
44
  | `workflow-project-context` | Full reinitialization | Full only |
45
45
  | `workflow-bug-fix` | Bug-fix main workflow | Must call this skill after verification and lesson capture |
46
46
  | `workflow-execute-phase` | Feature implementation workflow | Must call this skill after implementation verification |
@@ -63,9 +63,9 @@ If no flag is provided, default to `--dry-run` and infer changed files from git.
63
63
 
64
64
  ```text
65
65
  workflow-context-sync
66
- -> read .planning/rules/INDEX.md
67
- -> read .context/spec/index.md
68
- -> read .planning/navigation/INDEX.md
66
+ -> read .devflow/planning/rules/INDEX.md
67
+ -> read .devflow/context/spec/index.md
68
+ -> read .devflow/planning/navigation/INDEX.md
69
69
  -> collect changed files with per-repo cursor
70
70
  -> classify files and affected codebases
71
71
  -> choose Light / Medium / Full
@@ -81,7 +81,7 @@ workflow-context-sync
81
81
  Maintain pull synchronization state in:
82
82
 
83
83
  ```text
84
- .planning/context-sync-state.json
84
+ .devflow/planning/context-sync-state.json
85
85
  ```
86
86
 
87
87
  This file is workflow-owned machine state. It stores one cursor per independently discovered Git repository:
@@ -104,7 +104,7 @@ This file is workflow-owned machine state. It stores one cursor per independentl
104
104
 
105
105
  Rules:
106
106
 
107
- - Discover repositories from `.planning/navigation/INDEX.md` Codebase Registry, then deduplicate by `git rev-parse --show-toplevel`.
107
+ - Discover repositories from `.devflow/planning/navigation/INDEX.md` Codebase Registry, then deduplicate by `git rev-parse --show-toplevel`.
108
108
  - For `--after-pull`, diff `last_synced_head..HEAD` per repo.
109
109
  - If a repo has no cursor yet, fall back to `ORIG_HEAD..HEAD` for that repo.
110
110
  - If the stored cursor is unavailable or not an ancestor of `HEAD`, use the script-reported fallback/warning and prefer a broader sync level.
@@ -150,7 +150,7 @@ Map paths to codebases:
150
150
  | skit-admin | `skit/frontend/admin/**` |
151
151
  | skit-h5 | `skit/frontend/h5/**` |
152
152
  | skit-backend | `skit/internal/**`, `skit/ioc/**`, `skit/pkg/**`, `skit/backend/migrations/**`, `skit/go.mod`, `skit/Makefile`, `skit/main.go` |
153
- | project context | `.planning/**`, `.context/spec/**`, `.omp/**`, `AGENTS.md` |
153
+ | project context | `.devflow/planning/**`, `.devflow/context/spec/**`, `.omp/**`, `AGENTS.md` |
154
154
 
155
155
  Classify impact:
156
156
 
@@ -162,7 +162,7 @@ Classify impact:
162
162
  | backend boundary | `internal/web/*handler.go`, `ioc/web.go`, `internal/job/**`, public service interfaces | Medium |
163
163
  | toolchain/manifest | `package.json`, `go.mod`, `Makefile`, vite/router config | Medium or Full |
164
164
  | structure | codebase roots, large directory moves, new top-level/second-level directories | Full |
165
- | context docs | `.planning/**`, `.context/spec/**` | validate consistency; avoid blind overwrite |
165
+ | context docs | `.devflow/planning/**`, `.devflow/context/spec/**` | validate consistency; avoid blind overwrite |
166
166
 
167
167
  ## Sync Levels
168
168
 
@@ -178,7 +178,7 @@ devflow_code_index(action="validate")
178
178
  devflow_code_index(action="audit")
179
179
  ```
180
180
 
181
- Then append a concise `.planning/STATE.md` change-log line if this skill modified files.
181
+ Then append a concise `.devflow/planning/STATE.md` change-log line if this skill modified files.
182
182
 
183
183
  ### Medium
184
184
 
@@ -190,10 +190,10 @@ Actions:
190
190
  2. Read relevant changed source files.
191
191
  3. Read matching navigation/spec entry for each affected codebase.
192
192
  4. Update only stale sections, usually:
193
- - `.planning/navigation/{codebase}.md`
194
- - `.context/spec/frontend|backend/{codebase}.md` only when a codebase rule or stack fact changed
195
- - `.planning/toolchain.md` only when commands/manifests changed
196
- - `.planning/STATE.md` change log
193
+ - `.devflow/planning/navigation/{codebase}.md`
194
+ - `.devflow/context/spec/frontend|backend/{codebase}.md` only when a codebase rule or stack fact changed
195
+ - `.devflow/planning/toolchain.md` only when commands/manifests changed
196
+ - `.devflow/planning/STATE.md` change log
197
197
  5. Validate and audit code-index again if navigation/spec edits introduce new files or references.
198
198
 
199
199
  ### Full
@@ -13,8 +13,8 @@ from pathlib import Path
13
13
  from typing import Any
14
14
 
15
15
 
16
- DEFAULT_STATE = ".planning/context-sync-state.json"
17
- NAVIGATION_INDEX = ".planning/navigation/INDEX.md"
16
+ DEFAULT_STATE = ".devflow/planning/context-sync-state.json"
17
+ NAVIGATION_INDEX = ".devflow/planning/navigation/INDEX.md"
18
18
 
19
19
 
20
20
  def run_git(repo: Path, args: list[str], check: bool = True) -> subprocess.CompletedProcess[str]:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: workflow-update-navigation
3
- description: "Use when code changes require incremental updates to .planning/navigation files before audit, archive, or future workflow steps."
3
+ description: "Use when code changes require incremental updates to .devflow/planning/navigation files before audit, archive, or future workflow steps."
4
4
  ---
5
5
 
6
6
  ## Legacy Command Metadata
@@ -11,9 +11,9 @@ Original slash-command metadata retained only as workflow invocation guidance.
11
11
  user-invocable: true
12
12
  pattern: generator+reviewer
13
13
  inputs:
14
- - .planning/features/{功能名}/变更清单.md
15
- - .planning/navigation/
16
- output: .planning/navigation/{name}.md (updated)
14
+ - .devflow/planning/features/{功能名}/变更清单.md
15
+ - .devflow/planning/navigation/
16
+ output: .devflow/planning/navigation/{name}.md (updated)
17
17
  phase-gate:
18
18
  step1: 加载变更清单和当前 navigation
19
19
  step2: 识别受影响的代码库和模块
@@ -36,22 +36,22 @@ Incrementally update navigation files after code changes. Do not re-scan the ent
36
36
 
37
37
  Always update:
38
38
 
39
- - `.planning/navigation/{name}.md` — affected codebase navigation files
40
- - `.planning/navigation/INDEX.md` — Codebase Registry scan status timestamps
39
+ - `.devflow/planning/navigation/{name}.md` — affected codebase navigation files
40
+ - `.devflow/planning/navigation/INDEX.md` — Codebase Registry scan status timestamps
41
41
 
42
- When `.planning/code-index/` exists or code-index support is part of the project workflow, also refresh and audit the machine index before editing Markdown navigation:
42
+ When `.devflow/planning/code-index/` exists or code-index support is part of the project workflow, also refresh and audit the machine index before editing Markdown navigation:
43
43
 
44
- - `.planning/code-index/files.jsonl`
45
- - `.planning/code-index/symbols.jsonl`
46
- - `.planning/code-index/relations.jsonl`
47
- - `.planning/code-index/diagnostics.jsonl`
48
- - `.planning/code-index/index.sqlite`
49
- - `.planning/code-index/AUDIT.md`
44
+ - `.devflow/planning/code-index/files.jsonl`
45
+ - `.devflow/planning/code-index/symbols.jsonl`
46
+ - `.devflow/planning/code-index/relations.jsonl`
47
+ - `.devflow/planning/code-index/diagnostics.jsonl`
48
+ - `.devflow/planning/code-index/index.sqlite`
49
+ - `.devflow/planning/code-index/AUDIT.md`
50
50
 
51
51
  Do not create by default:
52
52
 
53
53
  - New navigation files (only update existing ones)
54
- - New `.planning/` directories
54
+ - New `.devflow/planning/` directories
55
55
 
56
56
  ## Resource Loading
57
57
 
@@ -59,10 +59,10 @@ Do not create by default:
59
59
 
60
60
  ## Phase 1 — Load Change List And Current Navigation
61
61
 
62
- 1. Read `.planning/features/{功能名}/变更清单.md` — extract all code-level changes (new/modified/deleted/renamed files).
63
- 2. Read `.planning/navigation/INDEX.md` — identify which codebases are affected by the changes.
64
- 3. For each affected codebase, read its `.planning/navigation/{name}.md`.
65
- 4. If `.planning/code-index/` exists, collect changed file paths and run an incremental code-index refresh before updating Markdown navigation:
62
+ 1. Read `.devflow/planning/features/{功能名}/变更清单.md` — extract all code-level changes (new/modified/deleted/renamed files).
63
+ 2. Read `.devflow/planning/navigation/INDEX.md` — identify which codebases are affected by the changes.
64
+ 3. For each affected codebase, read its `.devflow/planning/navigation/{name}.md`.
65
+ 4. If `.devflow/planning/code-index/` exists, collect changed file paths and run an incremental code-index refresh before updating Markdown navigation:
66
66
 
67
67
  ```text
68
68
  devflow_code_index(action="scan", changedFiles=["<changed-file>", "..."])
@@ -130,7 +130,7 @@ For affected handlers, routes, components, jobs, or integrations identified in P
130
130
 
131
131
  Use the same call chain tracing method as `workflow-project-context` Step 3b, but limited to changed modules only.
132
132
 
133
- If code-index is available, use `.planning/code-index/relations.jsonl` or `index.sqlite` as the first source for fine-grained call relationships, then read the changed source files to confirm evidence before updating navigation. Navigation remains a human-readable summary; do not copy unverified low-confidence relations into navigation as facts.
133
+ If code-index is available, use `.devflow/planning/code-index/relations.jsonl` or `index.sqlite` as the first source for fine-grained call relationships, then read the changed source files to confirm evidence before updating navigation. Navigation remains a human-readable summary; do not copy unverified low-confidence relations into navigation as facts.
134
134
 
135
135
  Gate: every changed handler/route/component/job from the change list has its corresponding row updated in the navigation file.
136
136
 
@@ -150,7 +150,7 @@ If conventions haven't changed, skip this phase.
150
150
  1. For each updated codebase navigation file:
151
151
  - Update `Identity → Scan Status` to the current date
152
152
  - Add a note: "Updated after 变更清单 execution, {日期}"
153
- 2. Update `.planning/navigation/INDEX.md`:
153
+ 2. Update `.devflow/planning/navigation/INDEX.md`:
154
154
  - Sync the `Scan Status` column in the Codebase Registry for affected codebases
155
155
  3. Run the review checklist:
156
156
 
@@ -169,18 +169,18 @@ Fix gaps before reporting completion.
169
169
  Run these commands after all navigation edits. Replace `<affected-navigation-file>` with every navigation file selected in Phase 1.
170
170
 
171
171
  ```bash
172
- test -s .planning/navigation/INDEX.md
173
- test -s .planning/navigation/<affected-navigation-file>
174
- test -s .planning/code-index/AUDIT.md # when the code index exists
172
+ test -s .devflow/planning/navigation/INDEX.md
173
+ test -s .devflow/planning/navigation/<affected-navigation-file>
174
+ test -s .devflow/planning/code-index/AUDIT.md # when the code index exists
175
175
  ```
176
176
 
177
- When `.planning/code-index/` exists, call `devflow_code_index(action="validate")` and
177
+ When `.devflow/planning/code-index/` exists, call `devflow_code_index(action="validate")` and
178
178
  `devflow_code_index(action="audit")` before the shell artifact checks.
179
179
 
180
- The code-index commands are required only when `.planning/code-index/` exists or this workflow refreshed it. Pass only when every selected navigation file and `INDEX.md` is non-empty, `validate` and `audit` exit with code 0, and `AUDIT.md` contains no blocking finding. Also complete every Phase 6 checklist item; commands validate artifact integrity, while the checklist validates change-list coverage. If any check fails, do not advance to audit or archive: correct the navigation/index discrepancy and rerun the failed checks.
180
+ The code-index commands are required only when `.devflow/planning/code-index/` exists or this workflow refreshed it. Pass only when every selected navigation file and `INDEX.md` is non-empty, `validate` and `audit` exit with code 0, and `AUDIT.md` contains no blocking finding. Also complete every Phase 6 checklist item; commands validate artifact integrity, while the checklist validates change-list coverage. If any check fails, do not advance to audit or archive: correct the navigation/index discrepancy and rerun the failed checks.
181
181
 
182
182
  ## Downstream Read Contract
183
183
 
184
184
  - `workflow-release-closeout` should verify that navigation `Scan Status` is not older than the last commit before archiving.
185
185
  - Future `workflow-requirement-baseline` invocations will read the updated navigation for conflict and reuse detection.
186
- - Future source-tracing tasks should use `.planning/code-index/` for fine-grained relation facts when available, with source readback before answering.
186
+ - Future source-tracing tasks should use `.devflow/planning/code-index/` for fine-grained relation facts when available, with source readback before answering.
@@ -4,7 +4,7 @@
4
4
 
5
5
  只重新扫描变更清单中涉及的模块。变更清单外的代码库和模块不做任何扫描或写入。
6
6
 
7
- 如果项目存在 `.planning/code-index/`,先按变更文件刷新机器索引,再更新 Markdown navigation:
7
+ 如果项目存在 `.devflow/planning/code-index/`,先按变更文件刷新机器索引,再更新 Markdown navigation:
8
8
 
9
9
  ```text
10
10
  devflow_code_index(action="scan", changedFiles=["<changed-file>", "..."])
@@ -34,7 +34,7 @@ devflow_code_index(action="audit")
34
34
 
35
35
  当 code-index 可用时:
36
36
 
37
- 1. 先从 `.planning/code-index/index.sqlite` 或 `relations.jsonl` 查 changed files 对应 symbols/relations。
37
+ 1. 先从 `.devflow/planning/code-index/index.sqlite` 或 `relations.jsonl` 查 changed files 对应 symbols/relations。
38
38
  2. 按 `routes_to`、`calls`、`imports`、`reads`、`writes` 扩展相关边。
39
39
  3. 回读 `evidence_path` 源码。
40
40
  4. 只把已确认且适合人读摘要的链路写入 navigation。