@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.
- package/README.md +10 -10
- package/node_modules/@playwright/test/LICENSE +202 -0
- package/node_modules/@playwright/test/NOTICE +5 -0
- package/node_modules/@playwright/test/README.md +318 -0
- package/node_modules/@playwright/test/cli.js +19 -0
- package/node_modules/@playwright/test/index.d.ts +18 -0
- package/node_modules/@playwright/test/index.js +17 -0
- package/node_modules/@playwright/test/index.mjs +18 -0
- package/node_modules/@playwright/test/package.json +35 -0
- package/node_modules/@playwright/test/reporter.d.ts +17 -0
- package/node_modules/@playwright/test/reporter.js +17 -0
- package/node_modules/@playwright/test/reporter.mjs +17 -0
- package/node_modules/playwright/LICENSE +202 -0
- package/node_modules/playwright/NOTICE +5 -0
- package/node_modules/playwright/README.md +318 -0
- package/node_modules/playwright/ThirdPartyNotices.txt +14 -0
- package/node_modules/playwright/cli.js +19 -0
- package/node_modules/playwright/index.d.ts +17 -0
- package/node_modules/playwright/index.js +17 -0
- package/node_modules/playwright/index.mjs +18 -0
- package/node_modules/playwright/jsx-runtime.js +42 -0
- package/node_modules/playwright/jsx-runtime.mjs +21 -0
- package/node_modules/playwright/lib/agents/agentParser.js +89 -0
- package/node_modules/playwright/lib/agents/copilot-setup-steps.yml +34 -0
- package/node_modules/playwright/lib/agents/generateAgents.js +395 -0
- package/node_modules/playwright/lib/agents/playwright-test-coverage.prompt.md +31 -0
- package/node_modules/playwright/lib/agents/playwright-test-generate.prompt.md +8 -0
- package/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +88 -0
- package/node_modules/playwright/lib/agents/playwright-test-heal.prompt.md +6 -0
- package/node_modules/playwright/lib/agents/playwright-test-healer.agent.md +56 -0
- package/node_modules/playwright/lib/agents/playwright-test-plan.prompt.md +9 -0
- package/node_modules/playwright/lib/agents/playwright-test-planner.agent.md +74 -0
- package/node_modules/playwright/lib/cli/reportActions.js +78 -0
- package/node_modules/playwright/lib/cli/testActions.js +214 -0
- package/node_modules/playwright/lib/common/index.js +2923 -0
- package/node_modules/playwright/lib/common/index.js.txt +34 -0
- package/node_modules/playwright/lib/errorContext.js +129 -0
- package/node_modules/playwright/lib/globals.js +58 -0
- package/node_modules/playwright/lib/index.js +815 -0
- package/node_modules/playwright/lib/isomorphic.js +260 -0
- package/node_modules/playwright/lib/isomorphic.js.txt +9 -0
- package/node_modules/playwright/lib/loader/loaderProcessEntry.js +34 -0
- package/node_modules/playwright/lib/loader/loaderProcessEntry.js.txt +9 -0
- package/node_modules/playwright/lib/matchers/expect.js +13490 -0
- package/node_modules/playwright/lib/matchers/expect.js.LICENSE +640 -0
- package/node_modules/playwright/lib/matchers/expect.js.txt +67 -0
- package/node_modules/playwright/lib/mcp/test/browserBackend.js +135 -0
- package/node_modules/playwright/lib/mcp/test/generatorTools.js +122 -0
- package/node_modules/playwright/lib/mcp/test/plannerTools.js +150 -0
- package/node_modules/playwright/lib/mcp/test/seed.js +82 -0
- package/node_modules/playwright/lib/mcp/test/streams.js +44 -0
- package/node_modules/playwright/lib/mcp/test/testBackend.js +99 -0
- package/node_modules/playwright/lib/mcp/test/testContext.js +306 -0
- package/node_modules/playwright/lib/mcp/test/testTool.js +30 -0
- package/node_modules/playwright/lib/mcp/test/testTools.js +98 -0
- package/node_modules/playwright/lib/package.js +47 -0
- package/node_modules/playwright/lib/program.js +241 -0
- package/node_modules/playwright/lib/runner/index.js +8527 -0
- package/node_modules/playwright/lib/runner/index.js.txt +61 -0
- package/node_modules/playwright/lib/transform/babelBundle.js +72274 -0
- package/node_modules/playwright/lib/transform/babelBundle.js.LICENSE +2384 -0
- package/node_modules/playwright/lib/transform/babelBundle.js.txt +325 -0
- package/node_modules/playwright/lib/transform/esmLoader.js +8054 -0
- package/node_modules/playwright/lib/transform/esmLoader.js.LICENSE +355 -0
- package/node_modules/playwright/lib/transform/esmLoader.js.txt +60 -0
- package/node_modules/playwright/lib/util.js +373 -0
- package/node_modules/playwright/lib/worker/workerProcessEntry.js +1861 -0
- package/node_modules/playwright/lib/worker/workerProcessEntry.js.txt +19 -0
- package/node_modules/playwright/package.json +55 -0
- package/node_modules/playwright/test.d.ts +18 -0
- package/node_modules/playwright/test.js +24 -0
- package/node_modules/playwright/test.mjs +35 -0
- package/node_modules/playwright/types/test.d.ts +11074 -0
- package/node_modules/playwright/types/testReporter.d.ts +950 -0
- package/node_modules/playwright-core/LICENSE +202 -0
- package/node_modules/playwright-core/NOTICE +5 -0
- package/node_modules/playwright-core/README.md +3 -0
- package/node_modules/playwright-core/ThirdPartyNotices.txt +13 -0
- package/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
- package/node_modules/playwright-core/bin/install_webkit_wsl.ps1 +33 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
- package/node_modules/playwright-core/browsers.json +52 -0
- package/node_modules/playwright-core/cli.js +21 -0
- package/node_modules/playwright-core/index.d.ts +17 -0
- package/node_modules/playwright-core/index.js +17 -0
- package/node_modules/playwright-core/index.mjs +28 -0
- package/node_modules/playwright-core/lib/bootstrap.js +88 -0
- package/node_modules/playwright-core/lib/coreBundle.js +75813 -0
- package/node_modules/playwright-core/lib/entry/cliDaemon.js +5 -0
- package/node_modules/playwright-core/lib/entry/dashboardApp.js +3 -0
- package/node_modules/playwright-core/lib/entry/mcp.js +10 -0
- package/node_modules/playwright-core/lib/entry/oopBrowserDownload.js +3 -0
- package/node_modules/playwright-core/lib/package.js +50 -0
- package/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
- package/node_modules/playwright-core/lib/server/electron/loader.js +116 -0
- package/node_modules/playwright-core/lib/serverRegistry.js +1939 -0
- package/node_modules/playwright-core/lib/serverRegistry.js.LICENSE +65 -0
- package/node_modules/playwright-core/lib/tools/cli-client/channelSessions.js +141 -0
- package/node_modules/playwright-core/lib/tools/cli-client/cli.js +6 -0
- package/node_modules/playwright-core/lib/tools/cli-client/help.json +721 -0
- package/node_modules/playwright-core/lib/tools/cli-client/minimist.js +128 -0
- package/node_modules/playwright-core/lib/tools/cli-client/output.js +351 -0
- package/node_modules/playwright-core/lib/tools/cli-client/program.js +418 -0
- package/node_modules/playwright-core/lib/tools/cli-client/registry.js +180 -0
- package/node_modules/playwright-core/lib/tools/cli-client/session.js +259 -0
- package/node_modules/playwright-core/lib/tools/dashboard/appIcon.png +0 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/SKILL.md +425 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/element-attributes.md +23 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/request-mocking.md +87 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/running-code.md +241 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/session-management.md +225 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/storage-state.md +275 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/test-generation.md +433 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/tracing.md +139 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/video-recording.md +143 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/SKILL.md +136 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/gallery-spec.md +144 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/migration.md +89 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/react.md +69 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/typing.md +173 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/vue.md +77 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-trace/SKILL.md +174 -0
- package/node_modules/playwright-core/lib/tools/utils/extension.js +112 -0
- package/node_modules/playwright-core/lib/tools/utils/socketConnection.js +108 -0
- package/node_modules/playwright-core/lib/utilsBundle.js +85357 -0
- package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +1890 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule--QdMvsKi.css +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule-CQ8RZGBm.js +32 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/index-AwgwcYie.css +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/index-hRvO4yU2.js +12 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/index.html +29 -0
- package/node_modules/playwright-core/lib/vite/dashboard/playwright-logo.svg +24 -0
- package/node_modules/playwright-core/lib/vite/htmlReport/index.html +16 -0
- package/node_modules/playwright-core/lib/vite/htmlReport/report.css +2 -0
- package/node_modules/playwright-core/lib/vite/htmlReport/report.js +32 -0
- package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule--QdMvsKi.css +1 -0
- package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-CVQWJZAA.js +32 -0
- package/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/node_modules/playwright-core/lib/vite/recorder/assets/index-BZpYJZ-P.css +1 -0
- package/node_modules/playwright-core/lib/vite/recorder/assets/index-hrlLqLtq.js +129 -0
- package/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
- package/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-BbkfBe3n.js +32 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js +182 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/urlMatch-L3liM589.js +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-DywYcAf8.js +7 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.-QdMvsKi.css +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.Bqk9acqE.css +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/index.B4cLoZK3.js +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/index.B_TqY17P.css +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/index.html +44 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/snapshot.B_Jk1wbt.js +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +10 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +4 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CU5KtEkS.js +5 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CyMfwkXJ.css +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +18 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.kHJ-D0s7.css +1 -0
- package/node_modules/playwright-core/lib/webp_codec.LICENSE +173 -0
- package/node_modules/playwright-core/lib/webp_codec.wasm +0 -0
- package/node_modules/playwright-core/lib/xdg-open +1267 -0
- package/node_modules/playwright-core/package.json +34 -0
- package/node_modules/playwright-core/types/protocol.d.ts +24645 -0
- package/node_modules/playwright-core/types/structs.d.ts +52 -0
- package/node_modules/playwright-core/types/types.d.ts +26632 -0
- package/package.json +12 -2
- package/plugins/devflow-core/extensions/devflow-core.ts +518 -40
- package/plugins/devflow-core/runtime/hooks/context_sync_gate.py +3 -3
- package/plugins/devflow-core/runtime/hooks/hook_common.py +334 -11
- package/plugins/devflow-core/runtime/hooks/index_gate.py +29 -16
- package/plugins/devflow-core/runtime/hooks/start.py +13 -13
- package/plugins/devflow-core/skills/wireframe-proposal/SKILL.md +2 -2
- package/plugins/devflow-core/skills/wireframe-validate/SKILL.md +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/SKILL.md +19 -19
- package/plugins/devflow-core/skills/workflow-orchestrator/agents/openai.yaml +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/acceptance_test_runner.py +412 -76
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/advance_state.rb +60 -9
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/api_test_matrix.py +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/approval_pins.py +433 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/approval_store.py +137 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_assessment.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_brief.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_feasibility.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_invalidation.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_model_commit.rb +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_model_validate.py +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_source_resolver.rb +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/checker_adapter.rb +7 -7
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/control_io.rb +51 -7
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/cross_track_consistency_check.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/dsl_coverage.py +87 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/dsl_v1.py +318 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/environment_profile.py +134 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/execution_contract.rb +7 -6
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/execution_surface.py +138 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/gate_runtime.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_state.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_workflow.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/inspect_state.rb +13 -13
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/machine_evidence.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/manage_lessons.rb +7 -7
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/parallel_recover.rb +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/parallel_run.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/phase_ownership.rb +6 -6
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/playwright_adapter.py +515 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/repair_control_plane.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/requirement_coverage.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/requirement_graph.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/review_preflight.py +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/review_run.py +18 -18
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/runtime_context_collector.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/session_rollover.rb +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/static_runtime_context_collector.rb +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/sync_artifacts.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/tc_hash.py +132 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/tdd_evidence.py +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/test_command_policy.py +104 -10
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/test_task_binding_check.py +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/update_triage_route.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/validate_state.rb +19 -6
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/wireframe_commit.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/wireframe_validate.py +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/acceptance-remediation.yaml +12 -12
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/feature-development.yaml +201 -222
- package/plugins/devflow-core/skills/workflow-pipeline/SKILL.md +6 -4
- package/plugins/devflow-core/skills/workflow-pipeline/references/pipeline-flow.md +68 -140
- package/plugins/devflow-core/skills/workflow-project-context/SKILL.md +14 -14
- package/plugins/devflow-core/skills/workflow-project-context/assets/agents-md-template.md +7 -7
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-backend-spec-template.md +4 -4
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-frontend-spec-template.md +4 -4
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-navigation-template.md +1 -1
- package/plugins/devflow-core/skills/workflow-project-context/assets/context-domain-index-template.md +4 -4
- package/plugins/devflow-core/skills/workflow-project-context/assets/context-spec-index-template.md +10 -10
- package/plugins/devflow-core/skills/workflow-project-context/assets/execution-contract-template.md +2 -2
- package/plugins/devflow-core/skills/workflow-project-context/assets/navigation-index-template.md +18 -18
- package/plugins/devflow-core/skills/workflow-project-context/assets/project-initialization-template.md +32 -32
- package/plugins/devflow-core/skills/workflow-project-context/assets/rules-index-template.md +30 -30
- package/plugins/devflow-core/skills/workflow-project-context/assets/state-template.md +7 -7
- package/plugins/devflow-core/skills/workflow-project-context/references/navigation-guide.md +37 -37
- package/plugins/devflow-core/skills/workflow-project-context/scripts/validate_initialization.py +16 -16
- package/plugins/devflow-core/skills/workflow-project-context/scripts/validate_initialization_database.py +1 -1
- package/plugins/devflow-design/skills/workflow-api-call-guide/SKILL.md +4 -4
- package/plugins/devflow-design/skills/workflow-api-contract/SKILL.md +8 -8
- package/plugins/devflow-design/skills/workflow-api-supplement/SKILL.md +5 -5
- package/plugins/devflow-design/skills/workflow-architecture-feasibility/SKILL.md +1 -1
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/SKILL.md +39 -39
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/assets/backend-spec-template.md +10 -10
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/affected-module-exploration.md +2 -2
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/code-explore-guide.md +1 -1
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/project-rule-contract.md +20 -20
- package/plugins/devflow-design/skills/workflow-design-rule-pack/SKILL.md +8 -8
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/index.md +3 -3
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/accessibility.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/component-library.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/design-systems.md +1 -1
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/responsive-grid.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/stack-guidelines.md +6 -6
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/ux-patterns.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tokens/project-tokens.md +1 -1
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/SKILL.md +12 -12
- package/plugins/devflow-design/skills/workflow-design-rule-pack/scripts/install.py +2 -2
- package/plugins/devflow-design/skills/workflow-feature-breakdown/SKILL.md +30 -30
- package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/output-template.md +2 -2
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/SKILL.md +41 -41
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/assets/frontend-spec-template.md +15 -15
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/affected-module-exploration.md +2 -2
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/project-rule-contract.md +25 -25
- package/plugins/devflow-design/skills/workflow-integration-verify/SKILL.md +13 -13
- package/plugins/devflow-design/skills/workflow-ui-spec/SKILL.md +23 -23
- package/plugins/devflow-design/skills/workflow-ui-spec/assets/ui-spec-template.md +3 -3
- package/plugins/devflow-implementation/agents/implementation-worker.md +2 -2
- package/plugins/devflow-implementation/skills/workflow-bug-fix/SKILL.md +9 -9
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/lesson-format.md +2 -2
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/root-cause-ladder.md +1 -1
- package/plugins/devflow-implementation/skills/workflow-change-plan/SKILL.md +17 -17
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/code-conventions.md +1 -1
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/output-template.md +3 -3
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/project-rule-contract.md +16 -16
- package/plugins/devflow-implementation/skills/workflow-execute-phase/SKILL.md +38 -38
- package/plugins/devflow-implementation/skills/workflow-execute-phase/references/execute-phase.md +4 -2
- package/plugins/devflow-intel/agents/project-scout.md +1 -1
- package/plugins/devflow-intel/extensions/devflow-intel.ts +20 -19
- package/plugins/devflow-intel/skills/code-index-query/SKILL.md +6 -6
- package/plugins/devflow-intel/skills/workflow-code-index/SKILL.md +12 -12
- package/plugins/devflow-intel/skills/workflow-code-index/references/discovery.md +2 -2
- package/plugins/devflow-intel/skills/workflow-code-index/references/query-guide.md +1 -1
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/code_index.py +31 -12
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/discovery.py +2 -2
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/scanner.py +4 -1
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/project_binding_check.py +4 -4
- package/plugins/devflow-intel/skills/workflow-context-sync/SKILL.md +14 -14
- package/plugins/devflow-intel/skills/workflow-context-sync/scripts/context_sync_cursor.py +2 -2
- package/plugins/devflow-intel/skills/workflow-update-navigation/SKILL.md +26 -26
- package/plugins/devflow-intel/skills/workflow-update-navigation/references/incremental-update-guide.md +2 -2
- package/plugins/devflow-quality/runtime/playwright/devflow-test-dsl-v1.schema.json +872 -0
- package/plugins/devflow-quality/runtime/playwright/playwright.config.mjs +46 -0
- package/plugins/devflow-quality/runtime/playwright/reporter.mjs +311 -0
- package/plugins/devflow-quality/runtime/playwright/runner.spec.mjs +1308 -0
- package/plugins/devflow-quality/runtime/playwright/runtime-manifest.json +11 -0
- package/plugins/devflow-quality/skills/code-review/SKILL.md +12 -12
- package/plugins/devflow-quality/skills/code-review/references/spec-checklist.md +1 -1
- package/plugins/devflow-quality/skills/workflow-acceptance-test-design/SKILL.md +11 -8
- package/plugins/devflow-quality/skills/workflow-gen-test-guide/SKILL.md +6 -6
- package/plugins/devflow-quality/skills/workflow-gen-test-guide/legacy/SKILL.md +14 -14
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/SKILL.md +82 -69
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/api-mainflow-rules.md +20 -15
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/codebase-discovery.md +12 -10
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/intermediate-format.md +115 -192
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/mainflow-selection.md +27 -23
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/project-dsl-contract.md +78 -153
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/ui-mainflow-rules.md +36 -83
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/compile_dsl.py +497 -556
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/discover_codebases.py +2 -2
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/export_legacy_testagent.py +647 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/normalize_case_payloads.py +10 -3
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/validate_case_payloads.py +165 -275
- package/plugins/devflow-quality/skills/workflow-human-acceptance/SKILL.md +61 -0
- package/plugins/devflow-quality/skills/workflow-release-closeout/SKILL.md +18 -18
- package/plugins/devflow-quality/skills/workflow-run-acceptance-tests/SKILL.md +20 -14
- package/plugins/devflow-requirements/skills/requirement-feasibility-review/SKILL.md +1 -1
- package/plugins/devflow-requirements/skills/workflow-demand-clarify/SKILL.md +10 -10
- package/plugins/devflow-requirements/skills/workflow-domain-modeling/SKILL.md +25 -25
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/SKILL.md +49 -49
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/assets/baseline-template.md +22 -22
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/antipatterns.md +3 -3
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/challenge-review-guide.md +3 -3
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/project-context-guide.md +11 -11
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/questioning.md +1 -1
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/requirement-review-checklist.md +4 -4
- package/plugins/devflow-requirements/skills/workflow-requirement-triage/SKILL.md +16 -16
- package/plugins/devflow-requirements/skills/workflow-wayfinder/SKILL.md +6 -6
- package/src/approval-store.ts +340 -0
- package/src/cli.ts +15 -0
- package/src/constants.ts +1 -1
- package/src/doctor.ts +259 -2
- package/src/initialization-store.ts +51 -3
- package/src/paths.ts +12 -1
- package/src/project-context.ts +60 -15
- package/src/project-documents.ts +61 -61
- package/src/project-initializer.ts +9 -8
- package/src/project-layout.ts +217 -0
- package/src/runtime.ts +3 -3
- package/templates/commands/start.md +4 -4
- package/templates/omp/AGENTS.md +1 -1
- package/templates/omp/hook-config.json +13 -7
- package/templates/omp/index-policy.json +8 -8
|
@@ -11,18 +11,18 @@ description: "在冻结需求验收测试全部通过后,执行 Devflow 自有
|
|
|
11
11
|
|
|
12
12
|
## 必须读取
|
|
13
13
|
|
|
14
|
-
- `.planning/requirements/{feature}/tests.json`
|
|
15
|
-
- `.planning/test-runs/{feature}/acceptance-results.json`
|
|
16
|
-
- `.planning/features/{feature}/变更清单.md`
|
|
17
|
-
- `.planning/code-index/AUDIT.md`
|
|
18
|
-
- `.planning/PROJECT.md`
|
|
19
|
-
- `.planning/STATE.md`
|
|
20
|
-
- `.planning/navigation/INDEX.md`
|
|
14
|
+
- `.devflow/planning/requirements/{feature}/tests.json`
|
|
15
|
+
- `.devflow/planning/test-runs/{feature}/acceptance-results.json`(先经 `devflow_run_acceptance_tests(action="validate_results", feature=...)` 由 Core 重新校验,再读取用于展示;Markdown 或人工草稿不能替代)
|
|
16
|
+
- `.devflow/planning/features/{feature}/变更清单.md`
|
|
17
|
+
- `.devflow/planning/code-index/AUDIT.md`
|
|
18
|
+
- `.devflow/planning/PROJECT.md`
|
|
19
|
+
- `.devflow/planning/STATE.md`
|
|
20
|
+
- `.devflow/planning/navigation/INDEX.md`
|
|
21
21
|
|
|
22
22
|
## 归档前置条件(全部满足)
|
|
23
23
|
|
|
24
24
|
1. 每个冻结的 `TC-*` 都有执行结果,且结果引用当前测试集 revision/fingerprint。
|
|
25
|
-
2. 不存在 `failed`、`blocked`、未执行或环境缺失的 TC
|
|
25
|
+
2. 不存在 `failed`、`blocked`、未执行或环境缺失的 TC。这是硬门禁:即使默认 soft 模式,Core 在确认/完成 `release-closeout` 时也会重新校验并以 `acceptance_results_not_passed` 拒绝。
|
|
26
26
|
3. 变更清单任务已完成,TDD/回归证据已存在或有明确豁免。
|
|
27
27
|
4. `code-index` 已刷新,`AUDIT.md` 通过,索引没有 stale blocker。
|
|
28
28
|
5. 需求基线、架构风险和契约没有未处理的阻塞项。
|
|
@@ -31,18 +31,18 @@ description: "在冻结需求验收测试全部通过后,执行 Devflow 自有
|
|
|
31
31
|
|
|
32
32
|
## 收口动作
|
|
33
33
|
|
|
34
|
-
1.
|
|
35
|
-
2. 更新 `.planning/navigation/INDEX.md`,记录本次 code-index revision 和验收结果 fingerprint。
|
|
36
|
-
3. 在 `.planning/milestones/` 写入本版本的 ROADMAP、需求覆盖、测试结果、变更清单和已接受风险摘要。
|
|
37
|
-
4. 更新 `.planning/PROJECT.md` 的当前版本与下一步目标。
|
|
38
|
-
5. 通过 Core 状态工具更新 `.planning/STATE.md`,将当前 feature 标记为完成。
|
|
34
|
+
1. 调用 `devflow_run_acceptance_tests(action="validate_results", feature=...)`,让 Core 重新校验 `acceptance-results.json`(suite pins、`execution_surface` 兼容、当前仍有效的 `execution_plan`/`environment_profile`/`human_result`/`mode_override` 批准、运行目录与工件哈希);运行后 DSL 或 profile 被修改、批准被替换,都会使已记录结果失效,需要回到 `run-acceptance-tests` 重跑;不通过则停止收口。通过后读取该文件(读取即可,不得写入),计算通过/失败/阻塞数量,并展示 `legacy_unclassified`、有效降级记录和逐 TC `dsl_approval`。任何 `dsl_approval: none` 必须对应 blocked;若其被标为 passed、结果未全 passed 或存在未批准降级,立即拒绝收口。人工 TC 的 passed 只来自已确认的 `human_result` approval,`human-acceptance-results.json` 草稿不算证据。
|
|
35
|
+
2. 更新 `.devflow/planning/navigation/INDEX.md`,记录本次 code-index revision 和验收结果 fingerprint。
|
|
36
|
+
3. 在 `.devflow/planning/milestones/` 写入本版本的 ROADMAP、需求覆盖、测试结果、变更清单和已接受风险摘要。
|
|
37
|
+
4. 更新 `.devflow/planning/PROJECT.md` 的当前版本与下一步目标。
|
|
38
|
+
5. 通过 Core 状态工具更新 `.devflow/planning/STATE.md`,将当前 feature 标记为完成。
|
|
39
39
|
6. 归档写入完成后才允许创建 git tag;是否提交或推送由用户明确决定。
|
|
40
40
|
|
|
41
41
|
## 输出
|
|
42
42
|
|
|
43
|
-
- `.planning/milestones/{version}-CLOSEOUT.md`
|
|
44
|
-
- 更新后的 `.planning/PROJECT.md`
|
|
45
|
-
- 更新后的 `.planning/STATE.md`
|
|
46
|
-
- 更新后的 `.planning/navigation/INDEX.md`
|
|
43
|
+
- `.devflow/planning/milestones/{version}-CLOSEOUT.md`
|
|
44
|
+
- 更新后的 `.devflow/planning/PROJECT.md`
|
|
45
|
+
- 更新后的 `.devflow/planning/STATE.md`
|
|
46
|
+
- 更新后的 `.devflow/planning/navigation/INDEX.md`
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
归档文件是结果摘要,不是通过依据;本地收口依据是由 Core 指定写入并重新校验 pins 的 `acceptance-results.json` 和 code-index 审计结果。这是工作流完整性保障,不是对同用户恶意进程的安全证明;高信任发布必须另外验证外部 attestation。
|
|
@@ -7,11 +7,13 @@ description: "Execute the frozen TC acceptance suite after code review. Use the
|
|
|
7
7
|
|
|
8
8
|
此步骤在代码审查后运行。它的目标是执行冻结的 `TC-*`,而不是根据交付总结重新猜测要测什么。
|
|
9
9
|
|
|
10
|
+
对 `execution_surface: ui|api_flow` 的自动化 TC,`workflow-generate-mainflow-cases` 是本步骤绑定阶段的**真实前置条件**(不是新的主链步骤,也不是可选的开发者同步):先用它为每个这类 TC 编译 `.devflow/planning/generated-cases/{feature}/TC-xxxx.json`、校验整个目录、独立 AI 审查并提交逐 TC `execution_plan` 批准。没有 DSL 或没有有效批准的 TC 只能 `blocked(dsl_not_approved)`,不得进入收口。
|
|
11
|
+
|
|
10
12
|
## 输入边界
|
|
11
13
|
|
|
12
14
|
测试意图只能读取:
|
|
13
15
|
|
|
14
|
-
- `.planning/requirements/{feature}/tests.json` 中已冻结且未 stale 的 `TC-*`;
|
|
16
|
+
- `.devflow/planning/requirements/{feature}/tests.json` 中已冻结且未 stale 的 `TC-*`;
|
|
15
17
|
- 图谱中被 TC 引用的已确认 REQ / BR / BC / AC、契约与架构风险;
|
|
16
18
|
- 初始化发现的测试工具链能力。
|
|
17
19
|
|
|
@@ -19,32 +21,36 @@ description: "Execute the frozen TC acceptance suite after code review. Use the
|
|
|
19
21
|
|
|
20
22
|
禁止读取或使用以下内容来扩大、缩小或补造验收范围:
|
|
21
23
|
|
|
22
|
-
- `.planning/phases/{phase}/SUMMARY.md`;
|
|
24
|
+
- `.devflow/planning/phases/{phase}/SUMMARY.md`;
|
|
23
25
|
- agent 的交付自述、代码 diff 或“已完成”结论;
|
|
24
26
|
- 未冻结的临时需求列表。
|
|
25
27
|
|
|
26
28
|
## 过程
|
|
27
29
|
|
|
28
30
|
1. 用 `devflow_acceptance_tests(feature)` 检查测试集已由 CP-3 冻结。若有 stale 或候选 TC,停止并回到需求/测试设计。
|
|
29
|
-
2. 读取冻结 TC 与其 oracle
|
|
31
|
+
2. 读取冻结 TC 与其 oracle、前置数据、身份、自动化模式和 `execution_surface`。
|
|
30
32
|
对 `api_refs`、`workload_refs` 和 `risk_refs` 指向的专项用例,保留其契约、性能/迁移或韧性义务;没有适配器或环境时必须写为 blocked,不能用普通主流程替代。
|
|
31
|
-
3. 读取代码审查报告、代码索引和实际源码,仅为每个 TC 绑定运行适配器;不得改变 TC
|
|
32
|
-
4. 写入 `.planning/features/{feature}/acceptance-test-bindings.json`:
|
|
33
|
+
3. 读取代码审查报告、代码索引和实际源码,仅为每个 TC 绑定运行适配器;不得改变 TC 的断言、范围或预期。对每个自动化 `ui|api_flow` TC,若 `generated-cases/{feature}/TC-xxxx.json` 不存在或已过期(TC 重冻结、代码变更),先调用 `workflow-generate-mainflow-cases`;它无法生成的正向 UI/API TC(无稳定 locator、无法准备或隔离数据、纯视觉判断)按下一步降级,异常/边界/权限/性能专项 TC 也不由它生成。
|
|
34
|
+
4. 写入 `.devflow/planning/features/{feature}/acceptance-test-bindings.json`:
|
|
33
35
|
- 固定 `test_suite.graph_revision` 与 `fingerprint`;
|
|
34
36
|
- 每个 TC 恰好一条绑定;
|
|
35
|
-
- `mode`
|
|
36
|
-
-
|
|
37
|
+
- 默认 `mode` 与冻结 TC 的 `automation_mode` 一致。只允许单向降级:`automated → manual|blocked`、`manual → blocked`;`automated → manual` 必须先提交并由用户确认有效的 `mode_override` approval,其他降级必须保留 owner、reason 和 blocked_by;禁止升级;
|
|
38
|
+
- `execution_surface: ui|api_flow` 必须使用 `{ "kind": "devflow_playwright", "dsl_file": ".devflow/planning/generated-cases/{feature}/TC-xxxx.json", "environment_profile": "local", "timeout_seconds": 600, "artifacts": {"trace":"on_failure","screenshots":"on_failure","max_total_bytes":104857600} }`。绑定不得携带 argv、env、runner、config、result_file 或哈希;
|
|
39
|
+
- 每个 `devflow_playwright` TC 执行前必须存在有效的逐 TC `execution_plan` approval,profile(`.devflow/planning/test-environments/{profile}.json`)必须存在有效 `environment_profile` approval;缺失、DSL 或 profile 字节变化导致 pins 失效时只能 blocked(`dsl_not_approved` / `environment_profile_not_approved`),不得运行。Agent 用 `devflow_approval(action="propose", kind="environment_profile", items=[{"subject":"{profile}"}])` 提交 profile,用户在 `/devflow` → “待审批”确认;Agent 不能确认,也不能自写批准记录;
|
|
40
|
+
- `execution_surface: project_test` 的通用自动化用例使用 `{ "kind": "command", "argv": [ ... ] }`,不使用 shell 字符串。命令策略:`npm test` 要求项目已登记 `test` 脚本;`npm|pnpm|yarn run <name>` 要求 `<name>` 是初始化工具链已登记的脚本名,且 `run` 后必须紧跟脚本名(不得在 `run` 之前或之间放选项),额外参数只能放在 `--` 之后;argv 不得引用 `DEVFLOW_` 保留变量或 Devflow Playwright Runtime 路径(那属于 `devflow_playwright`);
|
|
37
41
|
- Core 生成的 API TC 可直接使用 `{ "kind": "http", "base_url_env": "DEVFLOW_TEST_BASE_URL", "headers_env": { "Authorization": "DEVFLOW_TEST_AUTHORIZATION" } }`。请求、HTTP 状态和异常码断言来自冻结 TC 的 `execution`,绑定只能提供环境地址和鉴权,不得重写测试意图;若场景需要专用夹具,可额外配置 `{ "setup": { "argv": [ ... ] } }`,Core 会先记录并执行该受控命令,再发 HTTP 请求;
|
|
38
|
-
-
|
|
42
|
+
- 人工用例保留 owner 与执行说明;`human-acceptance-results.json` 仅是草稿和交接材料,最终结果必须来自有效的逐 TC `human_result` approval;
|
|
43
|
+
- 环境阻塞用例必须有 owner 与阻塞源。
|
|
39
44
|
- `evidence_strategy=causal` 的自动用例额外写 `evidence_files`(项目根目录内的 HAR、控制台、DOM 快照、截图或日志文件相对路径)。Core 在执行前校验文件存在且未越出项目根目录,并把内容哈希写入结果;不能只填 Markdown 描述。
|
|
40
45
|
- `evidence_strategy=observation` 只能保持 `blocked`,其观测计划是风险收口输入,不是测试通过证据。
|
|
41
|
-
5. 调用 `devflow_run_acceptance_tests(action="validate", feature=...)
|
|
42
|
-
6.
|
|
43
|
-
7.
|
|
46
|
+
5. 调用 `devflow_run_acceptance_tests(action="validate", feature=...)`。它校验 adapter 与 `execution_surface` 的兼容矩阵、`devflow_playwright` 禁用键、DSL 存在且合法、`tc_sha256` 与覆盖。不通过时修正绑定,不得绕过。
|
|
47
|
+
6. 对每个 manual TC,检查用户已在 `/devflow` → “待审批”中确认 `human_result`;Core 按当前 suite fingerprint、`tc_sha256` 和证据哈希重新校验。缺失或失效时保持 blocked。
|
|
48
|
+
7. 调用 `devflow_run_acceptance_tests(action="run", feature=...)`。该 Core 工具执行 automated TC(`devflow_playwright` 在净化环境和独立运行目录中执行,并校验 Runtime 完整性与结果 nonce),合并已校验的 manual TC 结果,并记录命令/证据哈希、退出码、`dsl_approval`、`execution_surface`、`legacy_unclassified` 和降级记录。
|
|
49
|
+
8. 失败、未执行或 blocked 的 TC 只能报告为 `blocked`/`failed`,不得进入版本收口。验收未全 passed 是硬门禁:即使默认 soft 模式,`run-acceptance-tests` 完成和 `release-closeout` 确认时 Core 也会重新校验结果并以 `acceptance_results_not_passed` 拒绝。可用 `devflow_run_acceptance_tests(action="validate_results", feature=...)` 预先检查。该校验会对照当前批准、DSL/profile 哈希与运行目录重新验证每条记录:运行后修改 DSL 或 profile、或批准被新的批准替换,都会使已记录的 passed 失效,必须重跑。
|
|
44
50
|
|
|
45
51
|
## 输出
|
|
46
52
|
|
|
47
|
-
- `.planning/features/{feature}/acceptance-test-bindings.json`
|
|
48
|
-
- `.planning/test-runs/{feature}/acceptance-results.json`
|
|
53
|
+
- `.devflow/planning/features/{feature}/acceptance-test-bindings.json`
|
|
54
|
+
- `.devflow/planning/test-runs/{feature}/acceptance-results.json`
|
|
49
55
|
|
|
50
|
-
`acceptance-results.json` 是 Core
|
|
56
|
+
`acceptance-results.json` 是 Core 指定写入的本地执行缓存(Agent 不得写入,可读取用于展示);Markdown 结论不能替代它,收口以 Core 对它的重新校验(`validate_results`)为准。Hook 会拦截常规 Write/Edit/Bash 误写,但不是对同一系统用户下任意进程的安全隔离;未配置外部受保护信任根时,不得宣称结果在密码学意义上不可伪造。
|
|
@@ -15,7 +15,7 @@ In the main delivery chain, run this skill after `workflow-wayfinder` and `workf
|
|
|
15
15
|
|
|
16
16
|
Read the raw requirement, meeting decisions, relevant existing requirement artifacts, and only the project/context sources needed to verify claims. Treat a later confirmed meeting decision as higher priority than an earlier conflicting PRD statement.
|
|
17
17
|
|
|
18
|
-
If the project has `.planning/requirements/{feature}/`, create or update:
|
|
18
|
+
If the project has `.devflow/planning/requirements/{feature}/`, create or update:
|
|
19
19
|
|
|
20
20
|
- `可实现性审查.md`
|
|
21
21
|
- `可实现性审查.meta.json`
|
|
@@ -13,7 +13,7 @@ user-invocable: true
|
|
|
13
13
|
pattern: inversion+generator
|
|
14
14
|
inputs:
|
|
15
15
|
- 用户的一句话需求/场景描述/业务反馈
|
|
16
|
-
output: .planning/requirements/{功能名}/需求澄清记录.md
|
|
16
|
+
output: .devflow/planning/requirements/{功能名}/需求澄清记录.md
|
|
17
17
|
phase-gate:
|
|
18
18
|
step1: 场景共建:强制反讲确认业务故事
|
|
19
19
|
step2: 决策驱动:L1-L4 分层决策树问答
|
|
@@ -37,7 +37,7 @@ allowed-tools:
|
|
|
37
37
|
|
|
38
38
|
## Phase 0 — Wayfinder Ticket 检查
|
|
39
39
|
|
|
40
|
-
开始前读取 `.planning/requirements/{功能名}/wayfinder/WF-*.md`:
|
|
40
|
+
开始前读取 `.devflow/planning/requirements/{功能名}/wayfinder/WF-*.md`:
|
|
41
41
|
|
|
42
42
|
- 仅在当前 Wayfinder Grilling ticket 明确要求一轮 L1-L4 访谈时继续。
|
|
43
43
|
- 若不存在对应 ticket,先执行或回到 `workflow-wayfinder`;不要从分诊直接进入澄清。
|
|
@@ -69,8 +69,8 @@ allowed-tools:
|
|
|
69
69
|
|
|
70
70
|
Always create or update:
|
|
71
71
|
|
|
72
|
-
- `.planning/requirements/{功能名}/需求澄清记录.md` — 包含场景清单、决策日志、分级任务单
|
|
73
|
-
- `.planning/requirements/{功能名}/需求澄清记录.meta.json` — 结构化元数据
|
|
72
|
+
- `.devflow/planning/requirements/{功能名}/需求澄清记录.md` — 包含场景清单、决策日志、分级任务单
|
|
73
|
+
- `.devflow/planning/requirements/{功能名}/需求澄清记录.meta.json` — 结构化元数据
|
|
74
74
|
|
|
75
75
|
### 输出契约(下游消费约定)
|
|
76
76
|
|
|
@@ -81,8 +81,8 @@ Always create or update:
|
|
|
81
81
|
3. **分级任务单** → 核心确定区的 FP 直接进入 baseline;假设验证区的 BR 标记为待确认
|
|
82
82
|
|
|
83
83
|
本技能不输出的内容(留给下游负责):
|
|
84
|
-
- `.planning/requirements/baseline.md` — 由 workflow-requirement-baseline 生成
|
|
85
|
-
- `.planning/features/{功能名}/功能点梳理.md` — 由 workflow-feature-breakdown 生成
|
|
84
|
+
- `.devflow/planning/requirements/baseline.md` — 由 workflow-requirement-baseline 生成
|
|
85
|
+
- `.devflow/planning/features/{功能名}/功能点梳理.md` — 由 workflow-feature-breakdown 生成
|
|
86
86
|
- 任何技术方案 — 由 workflow-frontend/backend-tech-spec 生成
|
|
87
87
|
|
|
88
88
|
## 第一阶段:场景共建
|
|
@@ -203,7 +203,7 @@ Always create or update:
|
|
|
203
203
|
- 单个答案会改变大部分后续问题。
|
|
204
204
|
- 预计要拆多个 active slice 才能写出可靠 baseline。
|
|
205
205
|
|
|
206
|
-
切换时写入 `需求澄清记录.md` 的"转探索原因",并创建或更新 `.planning/requirements/{功能名}/决策地图.md`。后续由 `workflow-wayfinder` 维护 Destination / Frontier / Fog / Out of Scope 和 Research / Prototype / Grilling / Task ticket。
|
|
206
|
+
切换时写入 `需求澄清记录.md` 的"转探索原因",并创建或更新 `.devflow/planning/requirements/{功能名}/决策地图.md`。后续由 `workflow-wayfinder` 维护 Destination / Frontier / Fog / Out of Scope 和 Research / Prototype / Grilling / Task ticket。
|
|
207
207
|
|
|
208
208
|
## 第二阶段.5 — 领域词汇维护(调用 workflow-domain-modeling 纪律)
|
|
209
209
|
|
|
@@ -225,7 +225,7 @@ Always create or update:
|
|
|
225
225
|
|
|
226
226
|
### 写入规则
|
|
227
227
|
|
|
228
|
-
写入 `.planning/CONTEXT.md`:
|
|
228
|
+
写入 `.devflow/planning/CONTEXT.md`:
|
|
229
229
|
|
|
230
230
|
```markdown
|
|
231
231
|
## 词汇表
|
|
@@ -236,8 +236,8 @@ Always create or update:
|
|
|
236
236
|
| 订单快照 | 订单状态变更时的全字段副本 | 当前订单主表最新值 |
|
|
237
237
|
```
|
|
238
238
|
|
|
239
|
-
如果 `.planning/CONTEXT.md` 不存在,创建它。
|
|
240
|
-
来源、决策层级、对应需求和术语变更历史写入 `.planning/requirements/{功能名}/领域模型记录.md`,不要写入 CONTEXT.md。
|
|
239
|
+
如果 `.devflow/planning/CONTEXT.md` 不存在,创建它。
|
|
240
|
+
来源、决策层级、对应需求和术语变更历史写入 `.devflow/planning/requirements/{功能名}/领域模型记录.md`,不要写入 CONTEXT.md。
|
|
241
241
|
|
|
242
242
|
### 术语冲突处理
|
|
243
243
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: workflow-domain-modeling
|
|
3
|
-
description: "Use as the mandatory domain-modeling step after workflow-wayfinder and before requirement-feasibility-review; also use during later clarification or planning when domain terms, business concepts, status names, ownership, or decision records may be ambiguous. Challenges the glossary, stress-tests relationships, updates .planning/CONTEXT.md, and creates ADR notes only for hard-to-reverse surprising trade-offs."
|
|
3
|
+
description: "Use as the mandatory domain-modeling step after workflow-wayfinder and before requirement-feasibility-review; also use during later clarification or planning when domain terms, business concepts, status names, ownership, or decision records may be ambiguous. Challenges the glossary, stress-tests relationships, updates .devflow/planning/CONTEXT.md, and creates ADR notes only for hard-to-reverse surprising trade-offs."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Workflow: Domain Modeling(领域模型主动维护)
|
|
@@ -11,25 +11,25 @@ description: "Use as the mandatory domain-modeling step after workflow-wayfinder
|
|
|
11
11
|
|
|
12
12
|
Always update when changes are found:
|
|
13
13
|
|
|
14
|
-
- `.planning/CONTEXT.md`
|
|
15
|
-
- `.planning/requirements/{功能名}/领域模型记录.md`
|
|
16
|
-
- `.planning/requirements/{功能名}/领域模型记录.meta.json`
|
|
14
|
+
- `.devflow/planning/CONTEXT.md`
|
|
15
|
+
- `.devflow/planning/requirements/{功能名}/领域模型记录.md`
|
|
16
|
+
- `.devflow/planning/requirements/{功能名}/领域模型记录.meta.json`
|
|
17
17
|
|
|
18
18
|
Only create ADR when the ADR gate passes:
|
|
19
19
|
|
|
20
|
-
- `.planning/adr/{编号}-{slug}.md`
|
|
20
|
+
- `.devflow/planning/adr/{编号}-{slug}.md`
|
|
21
21
|
|
|
22
22
|
## Phase 1 — Load Existing Language
|
|
23
23
|
|
|
24
24
|
Read, if present:
|
|
25
25
|
|
|
26
|
-
1. `.planning/CONTEXT.md`
|
|
27
|
-
2. `.planning/requirements/{功能名}/决策地图.md`
|
|
28
|
-
3. `.planning/requirements/{功能名}/wayfinder/WF-*.md` 中已解决 ticket
|
|
29
|
-
4. `.planning/requirements/baseline.md`
|
|
30
|
-
5. `.planning/features/**/需求梳理.md`
|
|
31
|
-
6. `.planning/features/**/需求澄清记录.md`
|
|
32
|
-
7. `.planning/*/CONTEXT.md`
|
|
26
|
+
1. `.devflow/planning/CONTEXT.md`
|
|
27
|
+
2. `.devflow/planning/requirements/{功能名}/决策地图.md`
|
|
28
|
+
3. `.devflow/planning/requirements/{功能名}/wayfinder/WF-*.md` 中已解决 ticket
|
|
29
|
+
4. `.devflow/planning/requirements/baseline.md`
|
|
30
|
+
5. `.devflow/planning/features/**/需求梳理.md`
|
|
31
|
+
6. `.devflow/planning/features/**/需求澄清记录.md`
|
|
32
|
+
7. `.devflow/planning/*/CONTEXT.md`
|
|
33
33
|
8. Relevant source names from navigation: model names, table names, enum/status constants, route names, page titles
|
|
34
34
|
|
|
35
35
|
Do not load broad source bodies unless a term conflict depends on exact code behavior.
|
|
@@ -38,7 +38,7 @@ Do not load broad source bodies unless a term conflict depends on exact code beh
|
|
|
38
38
|
|
|
39
39
|
For each important term in the current conversation or artifact:
|
|
40
40
|
|
|
41
|
-
1. **Existing definition check**: does `.planning/CONTEXT.md` already define it?
|
|
41
|
+
1. **Existing definition check**: does `.devflow/planning/CONTEXT.md` already define it?
|
|
42
42
|
2. **Collision check**: is the same word used for multiple concepts?
|
|
43
43
|
3. **Synonym check**: are multiple words used for the same concept?
|
|
44
44
|
4. **Code-language check**: do routes, models, fields, enum constants, and UI labels use different names?
|
|
@@ -65,7 +65,7 @@ For each core relationship, invent at least two edge cases to test whether the d
|
|
|
65
65
|
|
|
66
66
|
If an edge case changes the meaning of a term, update the glossary or create a pending question. Do not turn edge cases into new scope automatically.
|
|
67
67
|
|
|
68
|
-
## Phase 4 — Update `.planning/CONTEXT.md`
|
|
68
|
+
## Phase 4 — Update `.devflow/planning/CONTEXT.md`
|
|
69
69
|
|
|
70
70
|
Use this section shape:
|
|
71
71
|
|
|
@@ -81,7 +81,7 @@ Rules:
|
|
|
81
81
|
- Definition must be domain-facing, not implementation-facing.
|
|
82
82
|
- Add `反例/不包括` whenever a term could be confused with a neighbor concept.
|
|
83
83
|
- Preserve existing terms unless the user confirmed a replacement.
|
|
84
|
-
- Keep `.planning/CONTEXT.md` pure glossary. Do not store implementation details, FP/BR/BC IDs, source paths, requirement traceability, decision levels, or change history in it.
|
|
84
|
+
- Keep `.devflow/planning/CONTEXT.md` pure glossary. Do not store implementation details, FP/BR/BC IDs, source paths, requirement traceability, decision levels, or change history in it.
|
|
85
85
|
- If a definition changes, record the old definition, new definition, reason, source, decision level, related requirement, and edge cases in `领域模型记录.md`.
|
|
86
86
|
|
|
87
87
|
Use `领域模型记录.md` for traceability:
|
|
@@ -106,7 +106,7 @@ Create an ADR only when all three conditions are true:
|
|
|
106
106
|
2. **Surprising**: a future developer could reasonably choose a different direction without this record.
|
|
107
107
|
3. **Real trade-off**: at least two credible options exist and each has a cost.
|
|
108
108
|
|
|
109
|
-
If any condition is false, record the decision in `领域模型记录.md` or `.planning/CONTEXT.md`, not ADR.
|
|
109
|
+
If any condition is false, record the decision in `领域模型记录.md` or `.devflow/planning/CONTEXT.md`, not ADR.
|
|
110
110
|
|
|
111
111
|
ADR template:
|
|
112
112
|
|
|
@@ -153,15 +153,15 @@ Submit bounded candidates through `devflow_requirement_graph`: use `term` for sh
|
|
|
153
153
|
When this run adds or changes domain language, replace `<feature>` and run:
|
|
154
154
|
|
|
155
155
|
```bash
|
|
156
|
-
test -s .planning/CONTEXT.md
|
|
157
|
-
test -s .planning/requirements/<feature>/领域模型记录.md
|
|
158
|
-
python3 -m json.tool .planning/requirements/<feature>/领域模型记录.meta.json >/dev/null
|
|
159
|
-
grep -q '"feature_name"' .planning/requirements/<feature>/领域模型记录.meta.json
|
|
160
|
-
grep -q '"terms_added"' .planning/requirements/<feature>/领域模型记录.meta.json
|
|
161
|
-
grep -q '"terms_changed"' .planning/requirements/<feature>/领域模型记录.meta.json
|
|
162
|
-
grep -q '## 词汇表' .planning/CONTEXT.md
|
|
163
|
-
grep -q '## 术语变更记录' .planning/requirements/<feature>/领域模型记录.md
|
|
164
|
-
grep -q '## 边缘案例压测' .planning/requirements/<feature>/领域模型记录.md
|
|
156
|
+
test -s .devflow/planning/CONTEXT.md
|
|
157
|
+
test -s .devflow/planning/requirements/<feature>/领域模型记录.md
|
|
158
|
+
python3 -m json.tool .devflow/planning/requirements/<feature>/领域模型记录.meta.json >/dev/null
|
|
159
|
+
grep -q '"feature_name"' .devflow/planning/requirements/<feature>/领域模型记录.meta.json
|
|
160
|
+
grep -q '"terms_added"' .devflow/planning/requirements/<feature>/领域模型记录.meta.json
|
|
161
|
+
grep -q '"terms_changed"' .devflow/planning/requirements/<feature>/领域模型记录.meta.json
|
|
162
|
+
grep -q '## 词汇表' .devflow/planning/CONTEXT.md
|
|
163
|
+
grep -q '## 术语变更记录' .devflow/planning/requirements/<feature>/领域模型记录.md
|
|
164
|
+
grep -q '## 边缘案例压测' .devflow/planning/requirements/<feature>/领域模型记录.md
|
|
165
165
|
```
|
|
166
166
|
|
|
167
167
|
Pass only when every command exits with code 0, the metadata is valid JSON with the required counters, and each changed term has both a domain-facing glossary definition and a traceability record. If no language changed, record that no-change conclusion in the feature's domain-model record; do not create an ADR. If a check fails, repair the glossary, record, or metadata before continuing to baseline or technical planning.
|
|
@@ -12,12 +12,12 @@ argument-hint: '[@需求文档.md]'
|
|
|
12
12
|
user-invocable: true
|
|
13
13
|
pattern: inversion+generator+reviewer
|
|
14
14
|
inputs:
|
|
15
|
-
- .planning/PROJECT.md
|
|
16
|
-
- .planning/navigation/INDEX.md
|
|
17
|
-
- .planning/navigation/*.md
|
|
18
|
-
- .planning/milestones/
|
|
15
|
+
- .devflow/planning/PROJECT.md
|
|
16
|
+
- .devflow/planning/navigation/INDEX.md
|
|
17
|
+
- .devflow/planning/navigation/*.md
|
|
18
|
+
- .devflow/planning/milestones/
|
|
19
19
|
- 原始需求文档/PRD/会议纪要/用户描述
|
|
20
|
-
output: .planning/requirements/baseline.md
|
|
20
|
+
output: .devflow/planning/requirements/baseline.md
|
|
21
21
|
phase-gate:
|
|
22
22
|
step1: 加载项目上下文和原始需求
|
|
23
23
|
step2: 需求整理:结构化原文信息
|
|
@@ -47,10 +47,10 @@ This skill receives raw requirements and turns them into a stable requirement ba
|
|
|
47
47
|
|
|
48
48
|
Before Phase 1, check these mandatory upstream artifacts:
|
|
49
49
|
|
|
50
|
-
- `.planning/requirements/{feature}/入口分诊.md` and `.meta.json`;
|
|
51
|
-
- `.planning/requirements/{feature}/决策地图.md` and `.meta.json`;
|
|
52
|
-
- `.planning/requirements/{feature}/领域模型记录.md` and `.meta.json`;
|
|
53
|
-
- `.planning/requirements/{feature}/可实现性审查.md` and `.meta.json`.
|
|
50
|
+
- `.devflow/planning/requirements/{feature}/入口分诊.md` and `.meta.json`;
|
|
51
|
+
- `.devflow/planning/requirements/{feature}/决策地图.md` and `.meta.json`;
|
|
52
|
+
- `.devflow/planning/requirements/{feature}/领域模型记录.md` and `.meta.json`;
|
|
53
|
+
- `.devflow/planning/requirements/{feature}/可实现性审查.md` and `.meta.json`.
|
|
54
54
|
|
|
55
55
|
If any are missing, run the earliest missing main-chain step. Baseline must not become the first place where duplicate capability, fog, terminology ambiguity, or feasibility gaps are discovered.
|
|
56
56
|
|
|
@@ -105,24 +105,24 @@ When triage found partial overlap or prior rejection, preserve it as source mate
|
|
|
105
105
|
|
|
106
106
|
Always create or update:
|
|
107
107
|
|
|
108
|
-
- `.planning/requirements/baseline.md` — unified requirement baseline
|
|
109
|
-
- `.planning/requirements/baseline.meta.json` — structured metadata. Schema defined in `feature-development.yaml` under `steps[requirement-baseline].meta_output.fields`: `review_status`, `fp_count`, `br_count`, `bc_count`, `blocking_pending_count`, `critical_image_missing_count`, `challenge_pending_count`, `code_reality_missing_count`, `current_feature`, `depends_on_count`, plus optional `pending_items`, `risks`, and `key_decisions`.
|
|
110
|
-
- `.planning/requirements/{feature}/traceability.json` — copy the orchestrator `templates/traceability.json` schema and create one atomic `REQ-*` record for every confirmed in-scope requirement. Every record must define `input`、`output`、`behavior`、`orchestration`、`failure`、`verification`; use `N/A` only with a reason when a dimension truly does not apply.
|
|
108
|
+
- `.devflow/planning/requirements/baseline.md` — unified requirement baseline
|
|
109
|
+
- `.devflow/planning/requirements/baseline.meta.json` — structured metadata. Schema defined in `feature-development.yaml` under `steps[requirement-baseline].meta_output.fields`: `review_status`, `fp_count`, `br_count`, `bc_count`, `blocking_pending_count`, `critical_image_missing_count`, `challenge_pending_count`, `code_reality_missing_count`, `current_feature`, `depends_on_count`, plus optional `pending_items`, `risks`, and `key_decisions`.
|
|
110
|
+
- `.devflow/planning/requirements/{feature}/traceability.json` — copy the orchestrator `templates/traceability.json` schema and create one atomic `REQ-*` record for every confirmed in-scope requirement. Every record must define `input`、`output`、`behavior`、`orchestration`、`failure`、`verification`; use `N/A` only with a reason when a dimension truly does not apply.
|
|
111
111
|
|
|
112
112
|
Before the CP-1 result is reported, run:
|
|
113
113
|
|
|
114
114
|
```bash
|
|
115
|
-
python3 <workflow-orchestrator>/scripts/traceability_check.py --file .planning/requirements/{feature}/traceability.json --stage baseline
|
|
115
|
+
python3 <workflow-orchestrator>/scripts/traceability_check.py --file .devflow/planning/requirements/{feature}/traceability.json --stage baseline
|
|
116
116
|
```
|
|
117
117
|
|
|
118
118
|
Set `baseline.meta.json.traceability_status` to `passed` only when that command succeeds. A failed traceability check is a blocking baseline defect, not a deferred documentation suggestion.
|
|
119
119
|
|
|
120
120
|
Do not create by default:
|
|
121
121
|
|
|
122
|
-
- `.planning/features/{功能名}/功能点梳理.md`
|
|
123
|
-
- `.planning/features/{功能名}/前端技术方案.md`
|
|
124
|
-
- `.planning/features/{功能名}/后端技术方案.md`
|
|
125
|
-
- `.planning/features/{功能名}/变更清单.md`
|
|
122
|
+
- `.devflow/planning/features/{功能名}/功能点梳理.md`
|
|
123
|
+
- `.devflow/planning/features/{功能名}/前端技术方案.md`
|
|
124
|
+
- `.devflow/planning/features/{功能名}/后端技术方案.md`
|
|
125
|
+
- `.devflow/planning/features/{功能名}/变更清单.md`
|
|
126
126
|
|
|
127
127
|
## Argument Handling
|
|
128
128
|
|
|
@@ -135,21 +135,21 @@ If both a requirement document and pasted text are provided, use both and record
|
|
|
135
135
|
|
|
136
136
|
### 上游契约(与本技能串联的上游流程)
|
|
137
137
|
|
|
138
|
-
当 `.planning/requirements/{feature}/入口分诊.md` 存在时(由 `workflow-requirement-triage` 生成):
|
|
138
|
+
当 `.devflow/planning/requirements/{feature}/入口分诊.md` 存在时(由 `workflow-requirement-triage` 生成):
|
|
139
139
|
|
|
140
140
|
1. 将分诊分类写入 `baseline.meta.json.requirement_type` 或需求来源摘要。
|
|
141
141
|
2. 将 `related_code_paths` 作为 Phase 1.5/4 的优先检查入口,但不能直接当作行为结论。
|
|
142
142
|
3. 将 `related_history_paths` 和 prior rejection 记录纳入 Phase 4.5 Challenge Review。
|
|
143
143
|
4. 如果 `route` 不是 `ready_for_wayfinder`,按 Phase 0 路由停止或切换技能。
|
|
144
144
|
|
|
145
|
-
当 `.planning/requirements/{feature}/决策地图.md` 存在时(由 `workflow-wayfinder` 生成):
|
|
145
|
+
当 `.devflow/planning/requirements/{feature}/决策地图.md` 存在时(由 `workflow-wayfinder` 生成):
|
|
146
146
|
|
|
147
147
|
1. 只有 `决策地图.meta.json.ready_for_baseline = true` 才可继续 baseline。
|
|
148
148
|
2. Destination 和 Known Land 作为需求来源。
|
|
149
|
-
3. 读取 `.planning/requirements/{feature}/wayfinder/WF-*.md` 中 `status=resolved` 的 ticket;其 Findings / Answer 转为 FP/BR/BC 或 `反向审视与用户拍板` 记录。
|
|
149
|
+
3. 读取 `.devflow/planning/requirements/{feature}/wayfinder/WF-*.md` 中 `status=resolved` 的 ticket;其 Findings / Answer 转为 FP/BR/BC 或 `反向审视与用户拍板` 记录。
|
|
150
150
|
4. Open ticket 只能进入待确认或后置探索,不能伪装成已确认需求。
|
|
151
151
|
|
|
152
|
-
当 `.planning/requirements/{feature}/需求澄清记录.md` 存在时(由 `workflow-demand-clarify` 生成):
|
|
152
|
+
当 `.devflow/planning/requirements/{feature}/需求澄清记录.md` 存在时(由 `workflow-demand-clarify` 生成):
|
|
153
153
|
|
|
154
154
|
1. 优先以 **需求澄清记录.md** 的场景清单和分级任务单作为原始需求来源
|
|
155
155
|
2. 将决策日志中的 L1-L4 决策结论转化为 `key_decisions` 元数据
|
|
@@ -157,14 +157,14 @@ If both a requirement document and pasted text are provided, use both and record
|
|
|
157
157
|
4. 假设验证区内容进入 BR(业务规则),标记为"待上线验证"
|
|
158
158
|
5. 不需要再对用户做"场景反讲"等基础澄清——这些已经在 demand-clarify 阶段完成
|
|
159
159
|
|
|
160
|
-
当 `.planning/requirements/{feature}/领域模型记录.md` 或 `.planning/CONTEXT.md` 存在时(由 `workflow-domain-modeling` 维护):
|
|
160
|
+
当 `.devflow/planning/requirements/{feature}/领域模型记录.md` 或 `.devflow/planning/CONTEXT.md` 存在时(由 `workflow-domain-modeling` 维护):
|
|
161
161
|
|
|
162
|
-
1. `.planning/CONTEXT.md` 只作为纯词汇表读取,不从中读取需求追溯。
|
|
162
|
+
1. `.devflow/planning/CONTEXT.md` 只作为纯词汇表读取,不从中读取需求追溯。
|
|
163
163
|
2. 使用已确认术语写 FP/BR/BC 名称,避免同义多词。
|
|
164
164
|
3. 从 `领域模型记录.md` 读取术语冲突、边缘案例压力测试和追溯信息,并纳入 Phase 4/7 审查。
|
|
165
165
|
4. ADR 只作为需求决策证据,不展开技术方案。
|
|
166
166
|
|
|
167
|
-
当 `.planning/requirements/{feature}/可实现性审查.md` 存在时(由 `requirement-feasibility-review` 维护):
|
|
167
|
+
当 `.devflow/planning/requirements/{feature}/可实现性审查.md` 存在时(由 `requirement-feasibility-review` 维护):
|
|
168
168
|
|
|
169
169
|
1. 仅消费其中 `SOURCE_FACT`、`CONFIRMED_DECISION` 和已接受实现方向;不得把 `DERIVED_QUESTION` 或 `ASSUMPTION` 写入 baseline。
|
|
170
170
|
2. 将审查已确认的范围排除、外部能力边界、入口门禁和存量兼容规则转化为 FP/BR/BC。
|
|
@@ -174,7 +174,7 @@ If both a requirement document and pasted text are provided, use both and record
|
|
|
174
174
|
|
|
175
175
|
**叠加原则:baseline.md 是需求的累积目录,不是单功能快照。每次新增需求时,在已有内容上追加,不覆盖。**
|
|
176
176
|
|
|
177
|
-
If `.planning/requirements/baseline.md` already exists:
|
|
177
|
+
If `.devflow/planning/requirements/baseline.md` already exists:
|
|
178
178
|
|
|
179
179
|
1. Read it before restructuring new input. Understand ALL existing features, not just the current one.
|
|
180
180
|
2. **Preserve all confirmed `FP-*`, `BR-*`, `BC-*` from previous features.** Do not delete, renumber, or silently drop them.
|
|
@@ -193,7 +193,7 @@ Each new requirement gets its own stable `{功能名}`. **This is additive — a
|
|
|
193
193
|
3. Keep it short, stable, and safe as a path segment.
|
|
194
194
|
4. Once written to baseline, do not change it in later clarification unless the user explicitly renames the feature.
|
|
195
195
|
5. If the feature name changes, record the old name, new name, reason, and downstream directory impact in `澄清与变更记录`.
|
|
196
|
-
6. The canonical downstream output directory is `.planning/features/{功能名}/`. Multiple features → multiple directories.
|
|
196
|
+
6. The canonical downstream output directory is `.devflow/planning/features/{功能名}/`. Multiple features → multiple directories.
|
|
197
197
|
7. Legacy root `features/{功能名}/` may be read as historical evidence only; new workflow outputs must not use it.
|
|
198
198
|
8. When baseline already has features, the new `{功能名}` must be distinct from existing ones unless the user explicitly says it's an iteration on the same feature.
|
|
199
199
|
|
|
@@ -220,21 +220,21 @@ Load bundled resources only when needed:
|
|
|
220
220
|
|
|
221
221
|
Load available project context:
|
|
222
222
|
|
|
223
|
-
1. `.planning/PROJECT.md`
|
|
224
|
-
2. `.planning/navigation/INDEX.md`
|
|
225
|
-
3. `.planning/navigation/INDEX.md` for the Codebase Registry — identify which codebases are relevant to the requirement
|
|
226
|
-
4. Load the navigation files (`.planning/navigation/{name}.md`) for each relevant codebase from the registry
|
|
227
|
-
5. If `.planning/code-index/` exists, note that `code-index-query` must be used for Phase 1.5 routing and Phase 4 source-reality checks
|
|
228
|
-
6. `.planning/milestones/`
|
|
229
|
-
7. `.planning/requirements/`
|
|
230
|
-
8. `.planning/lessons/`
|
|
231
|
-
9. `.planning/*/CONTEXT.md`
|
|
223
|
+
1. `.devflow/planning/PROJECT.md`
|
|
224
|
+
2. `.devflow/planning/navigation/INDEX.md`
|
|
225
|
+
3. `.devflow/planning/navigation/INDEX.md` for the Codebase Registry — identify which codebases are relevant to the requirement
|
|
226
|
+
4. Load the navigation files (`.devflow/planning/navigation/{name}.md`) for each relevant codebase from the registry
|
|
227
|
+
5. If `.devflow/planning/code-index/` exists, note that `code-index-query` must be used for Phase 1.5 routing and Phase 4 source-reality checks
|
|
228
|
+
6. `.devflow/planning/milestones/`
|
|
229
|
+
7. `.devflow/planning/requirements/`
|
|
230
|
+
8. `.devflow/planning/lessons/`
|
|
231
|
+
9. `.devflow/planning/*/CONTEXT.md`
|
|
232
232
|
|
|
233
233
|
History model rule:
|
|
234
234
|
|
|
235
235
|
- This workflow's primary historical artifacts are milestone and planning artifacts, not outbound-call style `features/*.spec.md` files.
|
|
236
|
-
- Use `.planning/milestones/`, `.planning/requirements/`, `.planning/lessons/`, and `.planning/*/CONTEXT.md` first.
|
|
237
|
-
- If `features/`, `.context/lessons/`, or `.context/workflow/` exist in the target project, treat them as optional legacy/project-rule evidence and record that distinction.
|
|
236
|
+
- Use `.devflow/planning/milestones/`, `.devflow/planning/requirements/`, `.devflow/planning/lessons/`, and `.devflow/planning/*/CONTEXT.md` first.
|
|
237
|
+
- If `features/`, `.devflow/context/lessons/`, or `.devflow/context/workflow/` exist in the target project, treat them as optional legacy/project-rule evidence and record that distinction.
|
|
238
238
|
|
|
239
239
|
Then collect this requirement input:
|
|
240
240
|
|
|
@@ -289,16 +289,16 @@ Use this wording pattern when blocked by an image:
|
|
|
289
289
|
|
|
290
290
|
**混合类型**:一个需求可能同时涉及多种类型(如 A+D 混合)。标记为主类型+副类型(如 `A+D`),后续 Phase 按主类型流程推进,在 Phase 3.5 和 Phase 4 兼顾副类型的检查项。
|
|
291
291
|
|
|
292
|
-
写入 `.planning/requirements/baseline.meta.json` 的 `requirement_type` 字段。
|
|
292
|
+
写入 `.devflow/planning/requirements/baseline.meta.json` 的 `requirement_type` 字段。
|
|
293
293
|
|
|
294
294
|
### 1.5.3 Code routing scan before questions
|
|
295
295
|
|
|
296
296
|
Before asking the user any clarification question, produce an internal code routing summary from project artifacts:
|
|
297
297
|
|
|
298
|
-
1. Use `.planning/navigation/INDEX.md` to identify relevant codebases.
|
|
299
|
-
2. Read the relevant navigation files (`.planning/navigation/BACKEND.md`, `.planning/navigation/FRONTEND.md`, or other registered codebase files).
|
|
298
|
+
1. Use `.devflow/planning/navigation/INDEX.md` to identify relevant codebases.
|
|
299
|
+
2. Read the relevant navigation files (`.devflow/planning/navigation/BACKEND.md`, `.devflow/planning/navigation/FRONTEND.md`, or other registered codebase files).
|
|
300
300
|
3. Treat navigation as a routing index only. It helps find files quickly, but it is not sufficient evidence for requirement conclusions.
|
|
301
|
-
4. If `.planning/code-index/` exists, use `code-index-query` with requirement concepts to find candidate routes/pages/services/models/tests/resources. Treat these as routing candidates only.
|
|
301
|
+
4. If `.devflow/planning/code-index/` exists, use `code-index-query` with requirement concepts to find candidate routes/pages/services/models/tests/resources. Treat these as routing candidates only.
|
|
302
302
|
5. Confirm likely related source paths exist by listing directories or opening only top-level file structure, imports, class/function names, route declarations, comments, and short module headers.
|
|
303
303
|
6. Do not inspect function bodies, branch logic, data flow, SQL/query details, permission checks, or state transitions in Phase 1.5. Those are Phase 4 Level 2 responsibilities.
|
|
304
304
|
7. Do not conclude "already supported", "not supported", or "conflicting" in Phase 1.5. Only record "possibly related" modules and why they should be checked later.
|
|
@@ -471,7 +471,7 @@ seam_type: "新建" | "扩展" | "修改"
|
|
|
471
471
|
module_depth: "深" | "浅(需下游关注)" | "待评估"
|
|
472
472
|
```
|
|
473
473
|
|
|
474
|
-
写入 `.planning/requirements/baseline.md` 中每个 FP 的描述末尾。
|
|
474
|
+
写入 `.devflow/planning/requirements/baseline.md` 中每个 FP 的描述末尾。
|
|
475
475
|
|
|
476
476
|
### 完成门禁
|
|
477
477
|
|
|
@@ -508,7 +508,7 @@ Review the decomposed feature points for:
|
|
|
508
508
|
|
|
509
509
|
**Level 1: 导航 Call Chain Map 对照(结构层)**
|
|
510
510
|
- 对每个涉及已有代码的 FP,从导航文件的 API Modules / Route-Component Map 提取受影响文件清单
|
|
511
|
-
- 若 `.planning/code-index/` 存在,必须通过 `code-index-query` 用需求关键词、API 路径、页面名、字段名、状态名、表/配置/资源名查询 Symbol Index 和 Relation Graph,补充 navigation 未覆盖的调用方、被调用方、入口和数据流候选
|
|
511
|
+
- 若 `.devflow/planning/code-index/` 存在,必须通过 `code-index-query` 用需求关键词、API 路径、页面名、字段名、状态名、表/配置/资源名查询 Symbol Index 和 Relation Graph,补充 navigation 未覆盖的调用方、被调用方、入口和数据流候选
|
|
512
512
|
- 调用链重叠类型判断:扩展已有 vs 新建分支
|
|
513
513
|
- 契约影响预判:修改已有接口时检查其他调用方
|
|
514
514
|
- 导航无候选时,先通过 `code-index-query` 查 code-index;仍无候选时,再用需求关键词、API 路径、页面名、字段名、状态名通过 `rg` 查实际源码。navigation 不能作为"无相关代码"的唯一证据
|
|
@@ -618,7 +618,7 @@ After every user answer in Phase 5:
|
|
|
618
618
|
|
|
619
619
|
**叠加模式(baseline 已存在)**:
|
|
620
620
|
|
|
621
|
-
1. Read existing `.planning/requirements/baseline.md` as the base.
|
|
621
|
+
1. Read existing `.devflow/planning/requirements/baseline.md` as the base.
|
|
622
622
|
2. Append new feature points after the existing ones. Keep all old FP-*, BR-*, BC-* intact.
|
|
623
623
|
3. Update `需求来源` to add the new source entry.
|
|
624
624
|
4. Update `当前功能切片` to list only the current feature's FP/BR/BC IDs, active `SL-*`, deferred slices, and any `depends_on` historical references.
|
|
@@ -634,10 +634,10 @@ After every user answer in Phase 5:
|
|
|
634
634
|
|
|
635
635
|
Read `assets/baseline-template.md`.
|
|
636
636
|
|
|
637
|
-
Generate `.planning/requirements/baseline.md` with:
|
|
637
|
+
Generate `.devflow/planning/requirements/baseline.md` with:
|
|
638
638
|
|
|
639
639
|
- Requirement source summary
|
|
640
|
-
- Feature name and canonical output directory, using one stable `{功能名}` for all downstream `.planning/features/{功能名}/...` outputs
|
|
640
|
+
- Feature name and canonical output directory, using one stable `{功能名}` for all downstream `.devflow/planning/features/{功能名}/...` outputs
|
|
641
641
|
- Structured requirement summary
|
|
642
642
|
- Current feature slice with current FP/BR/BC IDs
|
|
643
643
|
- Slice plan with active `SL-*`, deferred slices, dependencies, and gates
|
|
@@ -655,11 +655,11 @@ Generate `.planning/requirements/baseline.md` with:
|
|
|
655
655
|
- Clarification and change log
|
|
656
656
|
- Review result
|
|
657
657
|
|
|
658
|
-
Create `.planning/requirements/` if needed.
|
|
658
|
+
Create `.devflow/planning/requirements/` if needed.
|
|
659
659
|
|
|
660
660
|
Do not create synonym duplicate sections such as `需求来源汇总` or `历史影响` when the template section is named `需求来源` or `与历史功能/里程碑的关联`.
|
|
661
661
|
|
|
662
|
-
Write `.planning/requirements/baseline.meta.json` with the fields required by the workflow YAML. `review_status` must be `passed` only when the baseline review conclusion is `通过`; otherwise use `failed`. Count blocking items explicitly:
|
|
662
|
+
Write `.devflow/planning/requirements/baseline.meta.json` with the fields required by the workflow YAML. `review_status` must be `passed` only when the baseline review conclusion is `通过`; otherwise use `failed`. Count blocking items explicitly:
|
|
663
663
|
|
|
664
664
|
- `blocking_pending_count`: unanswered clarification items that block reliable baseline or downstream handoff
|
|
665
665
|
- `critical_image_missing_count`: missing or unclear `critical_image` items
|
|
@@ -731,7 +731,7 @@ Completion gate: baseline and baseline.meta.json are written and contain no unre
|
|
|
731
731
|
|
|
732
732
|
Before claiming baseline readiness, submit `requirement`、`rule`、`boundary`、`slice` and `acceptance` candidates through `devflow_requirement_graph`. Each requirement candidate must cite source IDs and reference behavior/acceptance IDs returned by the writer. Run `devflow_requirement_graph(action="validate")` and record its result in baseline metadata. Do not directly create `governance.json`, allocate IDs, or set candidate status to `confirmed`.
|
|
733
733
|
|
|
734
|
-
The baseline handoff must also call `devflow_requirement_graph(action="inspect")` after all proposals and validation. Record the returned graph `revision` and the SHA-256 of `.planning/requirements/{feature}/governance.json` as `graph_revision` and `governance_graph_sha256` in `baseline.meta.json`. The step is not complete if the Core-owned graph file, revision, or hash is missing.
|
|
734
|
+
The baseline handoff must also call `devflow_requirement_graph(action="inspect")` after all proposals and validation. Record the returned graph `revision` and the SHA-256 of `.devflow/planning/requirements/{feature}/governance.json` as `graph_revision` and `governance_graph_sha256` in `baseline.meta.json`. The step is not complete if the Core-owned graph file, revision, or hash is missing.
|
|
735
735
|
|
|
736
736
|
```markdown
|
|
737
737
|
- [ ] 每个原始需求映射到 FP-*/BR-*/BC-* 或 out-of-scope
|