aios-core 2.1.6 → 2.2.0
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/.aios-core/core/README.md +229 -229
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/core/data/aios-kb.md +923 -923
- package/.aios-core/core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/core/docs/component-creation-guide.md +457 -457
- package/.aios-core/core/docs/session-update-pattern.md +307 -307
- package/.aios-core/core/docs/template-syntax.md +266 -266
- package/.aios-core/core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/core/elicitation/elicitation-engine.js +1 -1
- package/.aios-core/core/index.esm.js +42 -42
- package/.aios-core/core/index.js +1 -1
- package/.aios-core/core/migration/migration-config.yaml +83 -83
- package/.aios-core/core/migration/module-mapping.yaml +89 -89
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +1 -1
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -86
- package/.aios-core/core/registry/README.md +179 -179
- package/.aios-core/core/utils/security-utils.js +1 -1
- package/.aios-core/core-config.yaml +391 -382
- package/.aios-core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/data/aios-kb.md +923 -923
- package/.aios-core/data/technical-preferences.md +3 -3
- package/.aios-core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/development/README.md +142 -142
- package/.aios-core/development/agent-teams/team-all.yaml +15 -15
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -18
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -10
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -13
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -155
- package/.aios-core/development/agents/aios-master.md +339 -339
- package/.aios-core/development/agents/analyst.md +195 -195
- package/.aios-core/development/agents/architect.md +359 -359
- package/.aios-core/development/agents/data-engineer.md +468 -468
- package/.aios-core/development/agents/dev.md +390 -390
- package/.aios-core/development/agents/devops.md +398 -398
- package/.aios-core/development/agents/pm.md +198 -198
- package/.aios-core/development/agents/po.md +256 -256
- package/.aios-core/development/agents/qa.md +312 -312
- package/.aios-core/development/agents/sm.md +220 -220
- package/.aios-core/development/agents/ux-design-expert.md +451 -451
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -85
- package/.aios-core/development/tasks/add-mcp.md +319 -319
- package/.aios-core/development/tasks/advanced-elicitation.md +318 -318
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +341 -341
- package/.aios-core/development/tasks/analyze-framework.md +696 -696
- package/.aios-core/development/tasks/analyze-performance.md +637 -637
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -340
- package/.aios-core/development/tasks/architect-analyze-impact.md +826 -826
- package/.aios-core/development/tasks/audit-codebase.md +429 -429
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -270
- package/.aios-core/development/tasks/audit-utilities.md +358 -358
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -286
- package/.aios-core/development/tasks/brownfield-create-epic.md +485 -485
- package/.aios-core/development/tasks/brownfield-create-story.md +356 -356
- package/.aios-core/development/tasks/build-component.md +478 -478
- package/.aios-core/development/tasks/calculate-roi.md +455 -455
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -764
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -670
- package/.aios-core/development/tasks/collaborative-edit.md +1108 -1108
- package/.aios-core/development/tasks/compose-molecule.md +284 -284
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -414
- package/.aios-core/development/tasks/correct-course.md +279 -279
- package/.aios-core/development/tasks/create-agent.md +321 -321
- package/.aios-core/development/tasks/create-brownfield-story.md +726 -726
- package/.aios-core/development/tasks/create-deep-research-prompt.md +498 -498
- package/.aios-core/development/tasks/create-doc.md +316 -316
- package/.aios-core/development/tasks/create-next-story.md +774 -774
- package/.aios-core/development/tasks/create-suite.md +283 -283
- package/.aios-core/development/tasks/create-task.md +371 -371
- package/.aios-core/development/tasks/create-workflow.md +370 -370
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -572
- package/.aios-core/development/tasks/db-apply-migration.md +381 -381
- package/.aios-core/development/tasks/db-bootstrap.md +642 -642
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -693
- package/.aios-core/development/tasks/db-dry-run.md +293 -293
- package/.aios-core/development/tasks/db-env-check.md +260 -260
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -663
- package/.aios-core/development/tasks/db-explain.md +631 -631
- package/.aios-core/development/tasks/db-impersonate.md +495 -495
- package/.aios-core/development/tasks/db-load-csv.md +593 -593
- package/.aios-core/development/tasks/db-policy-apply.md +653 -653
- package/.aios-core/development/tasks/db-rls-audit.md +411 -411
- package/.aios-core/development/tasks/db-rollback.md +739 -739
- package/.aios-core/development/tasks/db-run-sql.md +613 -613
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -1011
- package/.aios-core/development/tasks/db-seed.md +390 -390
- package/.aios-core/development/tasks/db-smoke-test.md +351 -351
- package/.aios-core/development/tasks/db-snapshot.md +569 -569
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -712
- package/.aios-core/development/tasks/db-verify-order.md +515 -515
- package/.aios-core/development/tasks/deprecate-component.md +956 -956
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -318
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -469
- package/.aios-core/development/tasks/dev-develop-story.md +846 -846
- package/.aios-core/development/tasks/dev-improve-code-quality.md +872 -872
- package/.aios-core/development/tasks/dev-optimize-performance.md +1033 -1033
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +870 -870
- package/.aios-core/development/tasks/dev-validate-next-story.md +348 -348
- package/.aios-core/development/tasks/document-project.md +552 -552
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -1311
- package/.aios-core/development/tasks/execute-checklist.md +301 -301
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -274
- package/.aios-core/development/tasks/extend-pattern.md +269 -269
- package/.aios-core/development/tasks/extract-tokens.md +467 -467
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -518
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +260 -260
- package/.aios-core/development/tasks/generate-documentation.md +284 -284
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -522
- package/.aios-core/development/tasks/generate-shock-report.md +501 -501
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -427
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -733
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -374
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -483
- package/.aios-core/development/tasks/improve-self.md +822 -822
- package/.aios-core/development/tasks/index-docs.md +387 -387
- package/.aios-core/development/tasks/init-project-status.md +506 -506
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -314
- package/.aios-core/development/tasks/kb-mode-interaction.md +283 -283
- package/.aios-core/development/tasks/learn-patterns.md +900 -900
- package/.aios-core/development/tasks/mcp-workflow.md +437 -437
- package/.aios-core/development/tasks/modify-agent.md +381 -381
- package/.aios-core/development/tasks/modify-task.md +424 -424
- package/.aios-core/development/tasks/modify-workflow.md +465 -465
- package/.aios-core/development/tasks/po-backlog-add.md +370 -370
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -523
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -540
- package/.aios-core/development/tasks/po-pull-story.md +316 -316
- package/.aios-core/development/tasks/po-stories-index.md +351 -351
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -457
- package/.aios-core/development/tasks/po-sync-story.md +303 -303
- package/.aios-core/development/tasks/pr-automation.md +701 -701
- package/.aios-core/development/tasks/propose-modification.md +842 -842
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -425
- package/.aios-core/development/tasks/qa-gate.md +373 -373
- package/.aios-core/development/tasks/qa-generate-tests.md +1174 -1174
- package/.aios-core/development/tasks/qa-nfr-assess.md +557 -557
- package/.aios-core/development/tasks/qa-review-proposal.md +1157 -1157
- package/.aios-core/development/tasks/qa-review-story.md +682 -682
- package/.aios-core/development/tasks/qa-risk-profile.md +566 -566
- package/.aios-core/development/tasks/qa-run-tests.md +277 -277
- package/.aios-core/development/tasks/qa-test-design.md +387 -387
- package/.aios-core/development/tasks/qa-trace-requirements.md +476 -476
- package/.aios-core/development/tasks/release-management.md +723 -723
- package/.aios-core/development/tasks/security-audit.md +554 -554
- package/.aios-core/development/tasks/security-scan.md +790 -790
- package/.aios-core/development/tasks/setup-database.md +741 -741
- package/.aios-core/development/tasks/setup-design-system.md +462 -462
- package/.aios-core/development/tasks/setup-github.md +874 -874
- package/.aios-core/development/tasks/setup-llm-routing.md +1 -1
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -584
- package/.aios-core/development/tasks/setup-project-docs.md +1 -1
- package/.aios-core/development/tasks/shard-doc.md +537 -537
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -480
- package/.aios-core/development/tasks/sync-documentation.md +864 -864
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -294
- package/.aios-core/development/tasks/test-as-user.md +621 -621
- package/.aios-core/development/tasks/test-validation-task.md +171 -171
- package/.aios-core/development/tasks/undo-last.md +346 -346
- package/.aios-core/development/tasks/update-manifest.md +409 -409
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -617
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -672
- package/.aios-core/development/tasks/ux-user-research.md +559 -559
- package/.aios-core/development/tasks/validate-next-story.md +422 -422
- package/.aios-core/development/workflows/README.md +83 -83
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -297
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -187
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -197
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -333
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -206
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -235
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/docs/component-creation-guide.md +457 -457
- package/.aios-core/docs/session-update-pattern.md +307 -307
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -572
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -185
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -354
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -1963
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -821
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -1190
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -439
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -1339
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -5398
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -697
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -511
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -556
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -210
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -550
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -1414
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -523
- package/.aios-core/docs/template-syntax.md +266 -266
- package/.aios-core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/index.esm.js +15 -15
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/README.md +126 -126
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -59
- package/.aios-core/infrastructure/scripts/approval-workflow.js +1 -1
- package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
- package/.aios-core/infrastructure/scripts/component-generator.js +3 -3
- package/.aios-core/infrastructure/scripts/component-metadata.js +1 -1
- package/.aios-core/infrastructure/scripts/component-search.js +1 -1
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/improvement-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +26 -13
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
- package/.aios-core/infrastructure/scripts/llm-routing/usage-tracker/index.js +549 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -134
- package/.aios-core/infrastructure/scripts/repository-detector.js +3 -3
- package/.aios-core/infrastructure/scripts/template-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/template-validator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-generator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/transaction-manager.js +1 -1
- package/.aios-core/infrastructure/scripts/usage-analytics.js +1 -1
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +2 -2
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -109
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -621
- package/.aios-core/infrastructure/tools/README.md +222 -222
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -200
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -260
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -224
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -261
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -127
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -534
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -78
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -180
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -930
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -551
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -808
- package/.aios-core/install-manifest.yaml +347 -347
- package/.aios-core/product/README.md +56 -56
- package/.aios-core/product/checklists/accessibility-wcag-checklist.md +80 -0
- package/.aios-core/product/checklists/architect-checklist.md +443 -443
- package/.aios-core/product/checklists/change-checklist.md +182 -182
- package/.aios-core/product/checklists/component-quality-checklist.md +74 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -119
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -97
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -99
- package/.aios-core/product/checklists/migration-readiness-checklist.md +75 -0
- package/.aios-core/product/checklists/pattern-audit-checklist.md +88 -0
- package/.aios-core/product/checklists/pm-checklist.md +375 -375
- package/.aios-core/product/checklists/po-master-checklist.md +441 -441
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -108
- package/.aios-core/product/checklists/release-checklist.md +122 -122
- package/.aios-core/product/checklists/story-dod-checklist.md +101 -101
- package/.aios-core/product/checklists/story-draft-checklist.md +215 -215
- package/.aios-core/product/data/atomic-design-principles.md +108 -0
- package/.aios-core/product/data/brainstorming-techniques.md +36 -36
- package/.aios-core/product/data/consolidation-algorithms.md +142 -0
- package/.aios-core/product/data/database-best-practices.md +182 -0
- package/.aios-core/product/data/design-token-best-practices.md +107 -0
- package/.aios-core/product/data/elicitation-methods.md +134 -134
- package/.aios-core/product/data/integration-patterns.md +207 -0
- package/.aios-core/product/data/migration-safety-guide.md +329 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -471
- package/.aios-core/product/data/postgres-tuning-guide.md +300 -0
- package/.aios-core/product/data/rls-security-patterns.md +333 -0
- package/.aios-core/product/data/roi-calculation-guide.md +142 -0
- package/.aios-core/product/data/supabase-patterns.md +330 -0
- package/.aios-core/product/data/test-levels-framework.md +148 -148
- package/.aios-core/product/data/test-priorities-matrix.md +174 -174
- package/.aios-core/product/data/wcag-compliance-guide.md +267 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -225
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -63
- package/.aios-core/product/templates/activation-instructions-template.md +258 -258
- package/.aios-core/product/templates/agent-template.yaml +120 -120
- package/.aios-core/product/templates/architecture-tmpl.yaml +650 -650
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +155 -155
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +475 -475
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +279 -279
- package/.aios-core/product/templates/changelog-template.md +134 -134
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -152
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +292 -292
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -587
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -70
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +205 -205
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +348 -348
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +804 -804
- package/.aios-core/product/templates/github-pr-template.md +67 -67
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -140
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -221
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -84
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -92
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -85
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -86
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -104
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -80
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -53
- package/.aios-core/product/templates/market-research-tmpl.yaml +251 -251
- package/.aios-core/product/templates/mcp-workflow.js +271 -271
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -1022
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -524
- package/.aios-core/product/templates/personalized-agent-template.md +258 -258
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -340
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -905
- package/.aios-core/product/templates/personalized-task-template.md +344 -344
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -322
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -460
- package/.aios-core/product/templates/prd-tmpl.yaml +201 -201
- package/.aios-core/product/templates/project-brief-tmpl.yaml +220 -220
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -240
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -1203
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -428
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -219
- package/.aios-core/product/templates/story-tmpl.yaml +331 -331
- package/.aios-core/product/templates/task-execution-report.md +495 -495
- package/.aios-core/product/templates/task-template.md +122 -122
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -395
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -305
- package/.aios-core/product/templates/workflow-template.yaml +133 -133
- package/.aios-core/scripts/README.md +354 -354
- package/.aios-core/scripts/aios-doc-template.md +325 -325
- package/.aios-core/scripts/elicitation-engine.js +1 -1
- package/.aios-core/scripts/test-template-system.js +1 -1
- package/.aios-core/scripts/workflow-management.md +69 -69
- package/.aios-core/user-guide.md +1413 -1413
- package/.aios-core/working-in-the-brownfield.md +361 -361
- package/LICENSE +1 -1
- package/README.md +702 -703
- package/bin/aios-init-old.js +3 -3
- package/bin/aios-init-v4.js +1 -1
- package/bin/aios-init.backup-v1.1.4.js +1 -1
- package/bin/aios-init.js +3 -3
- package/bin/aios.js +279 -279
- package/bin/utils/install-errors.js +339 -339
- package/bin/utils/install-transaction.js +445 -445
- package/index.d.ts +18 -18
- package/index.esm.js +20 -20
- package/index.js +6 -6
- package/package.json +8 -10
- package/packages/installer/src/config/templates/env-template.js +27 -4
- package/packages/installer/src/detection/detect-project-type.js +81 -81
- package/packages/installer/tests/integration/wizard-detection.test.js +8 -6
- package/packages/installer/tests/unit/env-template.test.js +8 -8
- package/src/config/ide-configs.js +1 -1
- package/src/wizard/feedback.js +2 -2
- package/src/wizard/index.js +1 -1
- package/src/wizard/validation/report-generator.js +1 -1
- package/src/wizard/validation/troubleshooting-system.js +13 -13
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +0 -122
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +0 -89
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +0 -780
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +0 -950
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +0 -425
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +0 -132
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +0 -381
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +0 -203
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +0 -24
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +0 -51
- package/.aios-core/tasks/find-component.md.legacy +0 -391
- package/.aios-core/tasks/generate-commit-message.md.legacy +0 -426
- package/.aios-core/tasks/generate-migration.md.legacy +0 -382
- package/.aios-core/tasks/rollback-modification.md.legacy +0 -307
- package/.aios-core/tasks/update-tests.md.legacy +0 -283
|
@@ -1,515 +1,515 @@
|
|
|
1
|
-
# Task: Verify DDL Ordering
|
|
2
|
-
|
|
3
|
-
**Purpose**: Lint DDL for safe execution order to avoid dependency errors
|
|
4
|
-
|
|
5
|
-
**Elicit**: true
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Execution Modes
|
|
10
|
-
|
|
11
|
-
**Choose your execution mode:**
|
|
12
|
-
|
|
13
|
-
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
14
|
-
- Autonomous decision making with logging
|
|
15
|
-
- Minimal user interaction
|
|
16
|
-
- **Best for:** Simple, deterministic tasks
|
|
17
|
-
|
|
18
|
-
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
19
|
-
- Explicit decision checkpoints
|
|
20
|
-
- Educational explanations
|
|
21
|
-
- **Best for:** Learning, complex decisions
|
|
22
|
-
|
|
23
|
-
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
24
|
-
- Task analysis phase (identify all ambiguities)
|
|
25
|
-
- Zero ambiguity execution
|
|
26
|
-
- **Best for:** Ambiguous requirements, critical work
|
|
27
|
-
|
|
28
|
-
**Parameter:** `mode` (optional, default: `interactive`)
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Task Definition (AIOS Task Format V1.0)
|
|
33
|
-
|
|
34
|
-
```yaml
|
|
35
|
-
task: dbVerifyOrder()
|
|
36
|
-
responsável: Dara (Sage)
|
|
37
|
-
responsavel_type: Agente
|
|
38
|
-
atomic_layer: Strategy
|
|
39
|
-
|
|
40
|
-
**Entrada:**
|
|
41
|
-
- campo: query
|
|
42
|
-
tipo: string
|
|
43
|
-
origem: User Input
|
|
44
|
-
obrigatório: true
|
|
45
|
-
validação: Valid SQL query
|
|
46
|
-
|
|
47
|
-
- campo: params
|
|
48
|
-
tipo: object
|
|
49
|
-
origem: User Input
|
|
50
|
-
obrigatório: false
|
|
51
|
-
validação: Query parameters
|
|
52
|
-
|
|
53
|
-
- campo: connection
|
|
54
|
-
tipo: object
|
|
55
|
-
origem: config
|
|
56
|
-
obrigatório: true
|
|
57
|
-
validação: Valid PostgreSQL connection via Supabase
|
|
58
|
-
|
|
59
|
-
**Saída:**
|
|
60
|
-
- campo: query_result
|
|
61
|
-
tipo: array
|
|
62
|
-
destino: Memory
|
|
63
|
-
persistido: false
|
|
64
|
-
|
|
65
|
-
- campo: records_affected
|
|
66
|
-
tipo: number
|
|
67
|
-
destino: Return value
|
|
68
|
-
persistido: false
|
|
69
|
-
|
|
70
|
-
- campo: execution_time
|
|
71
|
-
tipo: number
|
|
72
|
-
destino: Memory
|
|
73
|
-
persistido: false
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## Pre-Conditions
|
|
79
|
-
|
|
80
|
-
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
81
|
-
|
|
82
|
-
**Checklist:**
|
|
83
|
-
|
|
84
|
-
```yaml
|
|
85
|
-
pre-conditions:
|
|
86
|
-
- [ ] Database connection established; query syntax valid
|
|
87
|
-
tipo: pre-condition
|
|
88
|
-
blocker: true
|
|
89
|
-
validação: |
|
|
90
|
-
Check database connection established; query syntax valid
|
|
91
|
-
error_message: "Pre-condition failed: Database connection established; query syntax valid"
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Post-Conditions
|
|
97
|
-
|
|
98
|
-
**Purpose:** Validate execution success AFTER task completes
|
|
99
|
-
|
|
100
|
-
**Checklist:**
|
|
101
|
-
|
|
102
|
-
```yaml
|
|
103
|
-
post-conditions:
|
|
104
|
-
- [ ] Query executed; results returned; transaction committed
|
|
105
|
-
tipo: post-condition
|
|
106
|
-
blocker: true
|
|
107
|
-
validação: |
|
|
108
|
-
Verify query executed; results returned; transaction committed
|
|
109
|
-
error_message: "Post-condition failed: Query executed; results returned; transaction committed"
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Acceptance Criteria
|
|
115
|
-
|
|
116
|
-
**Purpose:** Definitive pass/fail criteria for task completion
|
|
117
|
-
|
|
118
|
-
**Checklist:**
|
|
119
|
-
|
|
120
|
-
```yaml
|
|
121
|
-
acceptance-criteria:
|
|
122
|
-
- [ ] Data persisted correctly; constraints respected; no orphaned data
|
|
123
|
-
tipo: acceptance-criterion
|
|
124
|
-
blocker: true
|
|
125
|
-
validação: |
|
|
126
|
-
Assert data persisted correctly; constraints respected; no orphaned data
|
|
127
|
-
error_message: "Acceptance criterion not met: Data persisted correctly; constraints respected; no orphaned data"
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## Tools
|
|
133
|
-
|
|
134
|
-
**External/shared resources used by this task:**
|
|
135
|
-
|
|
136
|
-
- **Tool:** supabase
|
|
137
|
-
- **Purpose:** PostgreSQL database connection via Supabase client
|
|
138
|
-
- **Source:** @supabase/supabase-js
|
|
139
|
-
|
|
140
|
-
- **Tool:** query-validator
|
|
141
|
-
- **Purpose:** SQL query syntax validation
|
|
142
|
-
- **Source:** .aios-core/utils/db-query-validator.js
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Scripts
|
|
147
|
-
|
|
148
|
-
**Agent-specific code for this task:**
|
|
149
|
-
|
|
150
|
-
- **Script:** db-query.js
|
|
151
|
-
- **Purpose:** Execute PostgreSQL queries with error handling via Supabase
|
|
152
|
-
- **Language:** JavaScript
|
|
153
|
-
- **Location:** .aios-core/scripts/db-query.js
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## Error Handling
|
|
158
|
-
|
|
159
|
-
**Strategy:** retry
|
|
160
|
-
|
|
161
|
-
**Common Errors:**
|
|
162
|
-
|
|
163
|
-
1. **Error:** Connection Failed
|
|
164
|
-
- **Cause:** Unable to connect to Neo4j database
|
|
165
|
-
- **Resolution:** Check connection string, credentials, network
|
|
166
|
-
- **Recovery:** Retry with exponential backoff (max 3 attempts)
|
|
167
|
-
|
|
168
|
-
2. **Error:** Query Syntax Error
|
|
169
|
-
- **Cause:** Invalid Cypher query syntax
|
|
170
|
-
- **Resolution:** Validate query syntax before execution
|
|
171
|
-
- **Recovery:** Return detailed syntax error, suggest fix
|
|
172
|
-
|
|
173
|
-
3. **Error:** Transaction Rollback
|
|
174
|
-
- **Cause:** Query violates constraints or timeout
|
|
175
|
-
- **Resolution:** Review query logic and constraints
|
|
176
|
-
- **Recovery:** Automatic rollback, preserve data integrity
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## Performance
|
|
181
|
-
|
|
182
|
-
**Expected Metrics:**
|
|
183
|
-
|
|
184
|
-
```yaml
|
|
185
|
-
duration_expected: 5-20 min (estimated)
|
|
186
|
-
cost_estimated: $0.003-0.015
|
|
187
|
-
token_usage: ~2,000-8,000 tokens
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
**Optimization Notes:**
|
|
191
|
-
- Iterative analysis with depth limits; cache intermediate results; batch similar operations
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## Metadata
|
|
196
|
-
|
|
197
|
-
```yaml
|
|
198
|
-
story: N/A
|
|
199
|
-
version: 1.0.0
|
|
200
|
-
dependencies:
|
|
201
|
-
- N/A
|
|
202
|
-
tags:
|
|
203
|
-
- database
|
|
204
|
-
- infrastructure
|
|
205
|
-
updated_at: 2025-11-17
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
## Inputs
|
|
212
|
-
|
|
213
|
-
- `path` (string): Path to SQL migration file
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## Process
|
|
218
|
-
|
|
219
|
-
### 1. Extract DDL Sections
|
|
220
|
-
|
|
221
|
-
Parse migration file and identify sections:
|
|
222
|
-
|
|
223
|
-
```bash
|
|
224
|
-
awk 'BEGIN{IGNORECASE=1}
|
|
225
|
-
/create extension|alter extension/ {print "EXT:", NR, $0}
|
|
226
|
-
/create table/ {print "TAB:", NR, $0}
|
|
227
|
-
/create or replace function|create function/ {print "FUN:", NR, $0}
|
|
228
|
-
/create trigger/ {print "TRG:", NR, $0}
|
|
229
|
-
/enable row level security|create policy/ {print "RLS:", NR, $0}
|
|
230
|
-
/create .* view/ {print "VIEW:", NR, $0}
|
|
231
|
-
' {path} > /tmp/ddl_order.txt
|
|
232
|
-
|
|
233
|
-
echo "=== DDL Section Analysis ==="
|
|
234
|
-
cat /tmp/ddl_order.txt
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### 2. Analyze Ordering
|
|
238
|
-
|
|
239
|
-
Show recommended order and actual order:
|
|
240
|
-
|
|
241
|
-
```
|
|
242
|
-
Recommended Execution Order:
|
|
243
|
-
1. Extensions (CREATE EXTENSION)
|
|
244
|
-
2. Tables & Constraints (CREATE TABLE, ALTER TABLE)
|
|
245
|
-
3. Functions (CREATE FUNCTION)
|
|
246
|
-
4. Triggers (CREATE TRIGGER)
|
|
247
|
-
5. RLS (ENABLE RLS, CREATE POLICY)
|
|
248
|
-
6. Views & Materialized Views (CREATE VIEW)
|
|
249
|
-
|
|
250
|
-
Actual Order in File:
|
|
251
|
-
[output from grep above]
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### 3. Run Heuristic Checks
|
|
255
|
-
|
|
256
|
-
Detect common ordering problems:
|
|
257
|
-
|
|
258
|
-
```bash
|
|
259
|
-
# Check: Functions before tables
|
|
260
|
-
FIRST_TAB=$(grep '^TAB:' /tmp/ddl_order.txt | head -1 | cut -d: -f2)
|
|
261
|
-
FIRST_FUN=$(grep '^FUN:' /tmp/ddl_order.txt | head -1 | cut -d: -f2)
|
|
262
|
-
|
|
263
|
-
if [ -n "$FIRST_TAB" ] && [ -n "$FIRST_FUN" ] && [ "$FIRST_FUN" -lt "$FIRST_TAB" ]; then
|
|
264
|
-
echo "❌ Functions appear before tables. Reorder recommended."
|
|
265
|
-
exit 2
|
|
266
|
-
fi
|
|
267
|
-
|
|
268
|
-
# Check: RLS before tables exist
|
|
269
|
-
FIRST_RLS=$(grep '^RLS:' /tmp/ddl_order.txt | head -1 | cut -d: -f2)
|
|
270
|
-
if [ -n "$FIRST_RLS" ] && [ -n "$FIRST_TAB" ] && [ "$FIRST_RLS" -lt "$FIRST_TAB" ]; then
|
|
271
|
-
echo "❌ RLS commands before table creation. Reorder required."
|
|
272
|
-
exit 2
|
|
273
|
-
fi
|
|
274
|
-
|
|
275
|
-
# Check: Triggers before functions
|
|
276
|
-
FIRST_TRG=$(grep '^TRG:' /tmp/ddl_order.txt | head -1 | cut -d: -f2)
|
|
277
|
-
if [ -n "$FIRST_TRG" ] && [ -n "$FIRST_FUN" ] && [ "$FIRST_TRG" -lt "$FIRST_FUN" ]; then
|
|
278
|
-
echo "⚠️ Triggers before functions. May fail if trigger calls function."
|
|
279
|
-
fi
|
|
280
|
-
|
|
281
|
-
echo "✓ Ordering looks reasonable by heuristics"
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
### 4. Report Results
|
|
285
|
-
|
|
286
|
-
**If all checks pass:**
|
|
287
|
-
```
|
|
288
|
-
✅ DDL Ordering Validation Passed
|
|
289
|
-
|
|
290
|
-
Sections found:
|
|
291
|
-
- Extensions: X
|
|
292
|
-
- Tables: Y
|
|
293
|
-
- Functions: Z
|
|
294
|
-
- Triggers: N
|
|
295
|
-
- RLS: M
|
|
296
|
-
- Views: V
|
|
297
|
-
|
|
298
|
-
Order appears correct. Safe to proceed with:
|
|
299
|
-
*dry-run {path}
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
**If issues found:**
|
|
303
|
-
```
|
|
304
|
-
❌ DDL Ordering Issues Detected
|
|
305
|
-
|
|
306
|
-
Problems:
|
|
307
|
-
- Functions defined before tables (line X vs line Y)
|
|
308
|
-
- Triggers reference functions not yet created
|
|
309
|
-
|
|
310
|
-
Recommended fixes:
|
|
311
|
-
1. Move CREATE EXTENSION to top
|
|
312
|
-
2. Group CREATE TABLE statements
|
|
313
|
-
3. Then CREATE FUNCTION
|
|
314
|
-
4. Then CREATE TRIGGER
|
|
315
|
-
5. Then ENABLE RLS + policies
|
|
316
|
-
6. Finally CREATE VIEW
|
|
317
|
-
|
|
318
|
-
After fixing, re-run: *verify-order {path}
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
---
|
|
322
|
-
|
|
323
|
-
## Correct Ordering Examples
|
|
324
|
-
|
|
325
|
-
### ✅ Good Order
|
|
326
|
-
|
|
327
|
-
```sql
|
|
328
|
-
-- 1. Extensions first
|
|
329
|
-
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
330
|
-
|
|
331
|
-
-- 2. Tables and constraints
|
|
332
|
-
CREATE TABLE users (...);
|
|
333
|
-
CREATE TABLE fragments (...);
|
|
334
|
-
ALTER TABLE fragments ADD CONSTRAINT fk_user ...;
|
|
335
|
-
|
|
336
|
-
-- 3. Functions
|
|
337
|
-
CREATE OR REPLACE FUNCTION current_user_id() ...;
|
|
338
|
-
CREATE OR REPLACE FUNCTION update_timestamp() ...;
|
|
339
|
-
|
|
340
|
-
-- 4. Triggers
|
|
341
|
-
CREATE TRIGGER set_timestamp
|
|
342
|
-
BEFORE UPDATE ON users ...;
|
|
343
|
-
|
|
344
|
-
-- 5. RLS
|
|
345
|
-
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
|
|
346
|
-
CREATE POLICY "users_all" ON users ...;
|
|
347
|
-
|
|
348
|
-
-- 6. Views
|
|
349
|
-
CREATE VIEW user_fragments_view AS ...;
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
### ❌ Bad Order (Will Fail)
|
|
353
|
-
|
|
354
|
-
```sql
|
|
355
|
-
-- ❌ Function before table it references
|
|
356
|
-
CREATE FUNCTION get_user_name(user_id UUID)
|
|
357
|
-
RETURNS TEXT AS $$
|
|
358
|
-
SELECT name FROM users WHERE id = user_id; -- users doesn't exist yet!
|
|
359
|
-
$$ LANGUAGE sql;
|
|
360
|
-
|
|
361
|
-
-- ❌ Table created after function
|
|
362
|
-
CREATE TABLE users (...);
|
|
363
|
-
|
|
364
|
-
-- ❌ RLS before table
|
|
365
|
-
CREATE POLICY "users_policy" ON users ...; -- Can't create policy on non-existent table
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
---
|
|
369
|
-
|
|
370
|
-
## Common Dependency Patterns
|
|
371
|
-
|
|
372
|
-
### Pattern 1: Functions Calling Other Functions
|
|
373
|
-
|
|
374
|
-
**Order**: Base functions → Composite functions
|
|
375
|
-
|
|
376
|
-
```sql
|
|
377
|
-
-- First: Base function
|
|
378
|
-
CREATE FUNCTION base_func() ...;
|
|
379
|
-
|
|
380
|
-
-- Second: Function that calls base_func
|
|
381
|
-
CREATE FUNCTION composite_func() AS $$
|
|
382
|
-
BEGIN
|
|
383
|
-
RETURN base_func(); -- Safe, base_func exists
|
|
384
|
-
END;
|
|
385
|
-
$$ LANGUAGE plpgsql;
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
### Pattern 2: Tables with Foreign Keys
|
|
389
|
-
|
|
390
|
-
**Order**: Referenced tables → Referencing tables
|
|
391
|
-
|
|
392
|
-
```sql
|
|
393
|
-
-- First: Parent table
|
|
394
|
-
CREATE TABLE users (id UUID PRIMARY KEY);
|
|
395
|
-
|
|
396
|
-
-- Second: Child table
|
|
397
|
-
CREATE TABLE posts (
|
|
398
|
-
user_id UUID REFERENCES users(id) -- Safe, users exists
|
|
399
|
-
);
|
|
400
|
-
```
|
|
401
|
-
|
|
402
|
-
### Pattern 3: Views on Views
|
|
403
|
-
|
|
404
|
-
**Order**: Base views → Derived views
|
|
405
|
-
|
|
406
|
-
```sql
|
|
407
|
-
-- First: Base view
|
|
408
|
-
CREATE VIEW active_users AS
|
|
409
|
-
SELECT * FROM users WHERE deleted_at IS NULL;
|
|
410
|
-
|
|
411
|
-
-- Second: View on view
|
|
412
|
-
CREATE VIEW active_users_with_posts AS
|
|
413
|
-
SELECT u.*, COUNT(p.id)
|
|
414
|
-
FROM active_users u -- Safe, active_users exists
|
|
415
|
-
LEFT JOIN posts p ON p.user_id = u.id;
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
### Pattern 4: RLS Using Functions
|
|
419
|
-
|
|
420
|
-
**Order**: Tables → Functions → RLS Policies
|
|
421
|
-
|
|
422
|
-
```sql
|
|
423
|
-
-- First: Table
|
|
424
|
-
CREATE TABLE data (...);
|
|
425
|
-
|
|
426
|
-
-- Second: Helper function
|
|
427
|
-
CREATE FUNCTION user_can_access(data_id UUID) ...;
|
|
428
|
-
|
|
429
|
-
-- Third: RLS policy using function
|
|
430
|
-
CREATE POLICY "access_check" ON data
|
|
431
|
-
USING (user_can_access(id)); -- Safe, function exists
|
|
432
|
-
```
|
|
433
|
-
|
|
434
|
-
---
|
|
435
|
-
|
|
436
|
-
## Manual Review Checklist
|
|
437
|
-
|
|
438
|
-
After automated checks, manually verify:
|
|
439
|
-
|
|
440
|
-
- [ ] All CREATE EXTENSION at top
|
|
441
|
-
- [ ] Foreign key references come after parent tables
|
|
442
|
-
- [ ] Triggers reference existing functions
|
|
443
|
-
- [ ] RLS policies reference existing tables
|
|
444
|
-
- [ ] Views reference existing tables/views
|
|
445
|
-
- [ ] Functions called by other functions defined first
|
|
446
|
-
- [ ] No circular dependencies
|
|
447
|
-
|
|
448
|
-
---
|
|
449
|
-
|
|
450
|
-
## Integration with Workflow
|
|
451
|
-
|
|
452
|
-
Typical validation workflow:
|
|
453
|
-
|
|
454
|
-
1. Write migration
|
|
455
|
-
2. `*verify-order migration.sql` - Check ordering
|
|
456
|
-
3. Fix any issues found
|
|
457
|
-
4. `*dry-run migration.sql` - Test execution
|
|
458
|
-
5. `*apply-migration migration.sql` - Apply if dry-run passes
|
|
459
|
-
|
|
460
|
-
---
|
|
461
|
-
|
|
462
|
-
## Advanced: Dependency Graph
|
|
463
|
-
|
|
464
|
-
For complex migrations, visualize dependencies:
|
|
465
|
-
|
|
466
|
-
```bash
|
|
467
|
-
# Extract CREATE statements
|
|
468
|
-
grep -i "create" {path} | \
|
|
469
|
-
grep -E "(table|function|view|trigger)" > /tmp/creates.txt
|
|
470
|
-
|
|
471
|
-
# Manual review of dependencies
|
|
472
|
-
cat /tmp/creates.txt
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
Look for:
|
|
476
|
-
- Table → Foreign Key → Other Table
|
|
477
|
-
- Function → Calls → Other Function
|
|
478
|
-
- Trigger → Calls → Function
|
|
479
|
-
- View → Selects → Table/View
|
|
480
|
-
- Policy → Uses → Function
|
|
481
|
-
|
|
482
|
-
---
|
|
483
|
-
|
|
484
|
-
## Why This Matters
|
|
485
|
-
|
|
486
|
-
**Problem**: Wrong order causes migration failures
|
|
487
|
-
|
|
488
|
-
```
|
|
489
|
-
ERROR: relation "users" does not exist
|
|
490
|
-
ERROR: function "user_can_access" does not exist
|
|
491
|
-
ERROR: table "data" does not exist for policy creation
|
|
492
|
-
```
|
|
493
|
-
|
|
494
|
-
**Solution**: Verify order before running
|
|
495
|
-
|
|
496
|
-
- Catch issues in seconds (not after failed migration)
|
|
497
|
-
- No partial schema state
|
|
498
|
-
- No rollback needed for ordering errors
|
|
499
|
-
- Faster development cycle
|
|
500
|
-
|
|
501
|
-
---
|
|
502
|
-
|
|
503
|
-
## Limitations
|
|
504
|
-
|
|
505
|
-
This is a heuristic check, not a full parser:
|
|
506
|
-
|
|
507
|
-
✅ **Catches**: Most common ordering issues
|
|
508
|
-
✅ **Fast**: Runs in < 1 second
|
|
509
|
-
✅ **Safe**: No database connection needed
|
|
510
|
-
|
|
511
|
-
❌ **Misses**: Complex cross-file dependencies
|
|
512
|
-
❌ **Misses**: Dynamic SQL
|
|
513
|
-
❌ **Misses**: Subtle type dependencies
|
|
514
|
-
|
|
515
|
-
For 100% validation, use: `*dry-run {path}`
|
|
1
|
+
# Task: Verify DDL Ordering
|
|
2
|
+
|
|
3
|
+
**Purpose**: Lint DDL for safe execution order to avoid dependency errors
|
|
4
|
+
|
|
5
|
+
**Elicit**: true
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Execution Modes
|
|
10
|
+
|
|
11
|
+
**Choose your execution mode:**
|
|
12
|
+
|
|
13
|
+
### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
|
|
14
|
+
- Autonomous decision making with logging
|
|
15
|
+
- Minimal user interaction
|
|
16
|
+
- **Best for:** Simple, deterministic tasks
|
|
17
|
+
|
|
18
|
+
### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
|
|
19
|
+
- Explicit decision checkpoints
|
|
20
|
+
- Educational explanations
|
|
21
|
+
- **Best for:** Learning, complex decisions
|
|
22
|
+
|
|
23
|
+
### 3. Pre-Flight Planning - Comprehensive Upfront Planning
|
|
24
|
+
- Task analysis phase (identify all ambiguities)
|
|
25
|
+
- Zero ambiguity execution
|
|
26
|
+
- **Best for:** Ambiguous requirements, critical work
|
|
27
|
+
|
|
28
|
+
**Parameter:** `mode` (optional, default: `interactive`)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Task Definition (AIOS Task Format V1.0)
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
task: dbVerifyOrder()
|
|
36
|
+
responsável: Dara (Sage)
|
|
37
|
+
responsavel_type: Agente
|
|
38
|
+
atomic_layer: Strategy
|
|
39
|
+
|
|
40
|
+
**Entrada:**
|
|
41
|
+
- campo: query
|
|
42
|
+
tipo: string
|
|
43
|
+
origem: User Input
|
|
44
|
+
obrigatório: true
|
|
45
|
+
validação: Valid SQL query
|
|
46
|
+
|
|
47
|
+
- campo: params
|
|
48
|
+
tipo: object
|
|
49
|
+
origem: User Input
|
|
50
|
+
obrigatório: false
|
|
51
|
+
validação: Query parameters
|
|
52
|
+
|
|
53
|
+
- campo: connection
|
|
54
|
+
tipo: object
|
|
55
|
+
origem: config
|
|
56
|
+
obrigatório: true
|
|
57
|
+
validação: Valid PostgreSQL connection via Supabase
|
|
58
|
+
|
|
59
|
+
**Saída:**
|
|
60
|
+
- campo: query_result
|
|
61
|
+
tipo: array
|
|
62
|
+
destino: Memory
|
|
63
|
+
persistido: false
|
|
64
|
+
|
|
65
|
+
- campo: records_affected
|
|
66
|
+
tipo: number
|
|
67
|
+
destino: Return value
|
|
68
|
+
persistido: false
|
|
69
|
+
|
|
70
|
+
- campo: execution_time
|
|
71
|
+
tipo: number
|
|
72
|
+
destino: Memory
|
|
73
|
+
persistido: false
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Pre-Conditions
|
|
79
|
+
|
|
80
|
+
**Purpose:** Validate prerequisites BEFORE task execution (blocking)
|
|
81
|
+
|
|
82
|
+
**Checklist:**
|
|
83
|
+
|
|
84
|
+
```yaml
|
|
85
|
+
pre-conditions:
|
|
86
|
+
- [ ] Database connection established; query syntax valid
|
|
87
|
+
tipo: pre-condition
|
|
88
|
+
blocker: true
|
|
89
|
+
validação: |
|
|
90
|
+
Check database connection established; query syntax valid
|
|
91
|
+
error_message: "Pre-condition failed: Database connection established; query syntax valid"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Post-Conditions
|
|
97
|
+
|
|
98
|
+
**Purpose:** Validate execution success AFTER task completes
|
|
99
|
+
|
|
100
|
+
**Checklist:**
|
|
101
|
+
|
|
102
|
+
```yaml
|
|
103
|
+
post-conditions:
|
|
104
|
+
- [ ] Query executed; results returned; transaction committed
|
|
105
|
+
tipo: post-condition
|
|
106
|
+
blocker: true
|
|
107
|
+
validação: |
|
|
108
|
+
Verify query executed; results returned; transaction committed
|
|
109
|
+
error_message: "Post-condition failed: Query executed; results returned; transaction committed"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Acceptance Criteria
|
|
115
|
+
|
|
116
|
+
**Purpose:** Definitive pass/fail criteria for task completion
|
|
117
|
+
|
|
118
|
+
**Checklist:**
|
|
119
|
+
|
|
120
|
+
```yaml
|
|
121
|
+
acceptance-criteria:
|
|
122
|
+
- [ ] Data persisted correctly; constraints respected; no orphaned data
|
|
123
|
+
tipo: acceptance-criterion
|
|
124
|
+
blocker: true
|
|
125
|
+
validação: |
|
|
126
|
+
Assert data persisted correctly; constraints respected; no orphaned data
|
|
127
|
+
error_message: "Acceptance criterion not met: Data persisted correctly; constraints respected; no orphaned data"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Tools
|
|
133
|
+
|
|
134
|
+
**External/shared resources used by this task:**
|
|
135
|
+
|
|
136
|
+
- **Tool:** supabase
|
|
137
|
+
- **Purpose:** PostgreSQL database connection via Supabase client
|
|
138
|
+
- **Source:** @supabase/supabase-js
|
|
139
|
+
|
|
140
|
+
- **Tool:** query-validator
|
|
141
|
+
- **Purpose:** SQL query syntax validation
|
|
142
|
+
- **Source:** .aios-core/utils/db-query-validator.js
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Scripts
|
|
147
|
+
|
|
148
|
+
**Agent-specific code for this task:**
|
|
149
|
+
|
|
150
|
+
- **Script:** db-query.js
|
|
151
|
+
- **Purpose:** Execute PostgreSQL queries with error handling via Supabase
|
|
152
|
+
- **Language:** JavaScript
|
|
153
|
+
- **Location:** .aios-core/scripts/db-query.js
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Error Handling
|
|
158
|
+
|
|
159
|
+
**Strategy:** retry
|
|
160
|
+
|
|
161
|
+
**Common Errors:**
|
|
162
|
+
|
|
163
|
+
1. **Error:** Connection Failed
|
|
164
|
+
- **Cause:** Unable to connect to Neo4j database
|
|
165
|
+
- **Resolution:** Check connection string, credentials, network
|
|
166
|
+
- **Recovery:** Retry with exponential backoff (max 3 attempts)
|
|
167
|
+
|
|
168
|
+
2. **Error:** Query Syntax Error
|
|
169
|
+
- **Cause:** Invalid Cypher query syntax
|
|
170
|
+
- **Resolution:** Validate query syntax before execution
|
|
171
|
+
- **Recovery:** Return detailed syntax error, suggest fix
|
|
172
|
+
|
|
173
|
+
3. **Error:** Transaction Rollback
|
|
174
|
+
- **Cause:** Query violates constraints or timeout
|
|
175
|
+
- **Resolution:** Review query logic and constraints
|
|
176
|
+
- **Recovery:** Automatic rollback, preserve data integrity
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Performance
|
|
181
|
+
|
|
182
|
+
**Expected Metrics:**
|
|
183
|
+
|
|
184
|
+
```yaml
|
|
185
|
+
duration_expected: 5-20 min (estimated)
|
|
186
|
+
cost_estimated: $0.003-0.015
|
|
187
|
+
token_usage: ~2,000-8,000 tokens
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Optimization Notes:**
|
|
191
|
+
- Iterative analysis with depth limits; cache intermediate results; batch similar operations
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Metadata
|
|
196
|
+
|
|
197
|
+
```yaml
|
|
198
|
+
story: N/A
|
|
199
|
+
version: 1.0.0
|
|
200
|
+
dependencies:
|
|
201
|
+
- N/A
|
|
202
|
+
tags:
|
|
203
|
+
- database
|
|
204
|
+
- infrastructure
|
|
205
|
+
updated_at: 2025-11-17
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
## Inputs
|
|
212
|
+
|
|
213
|
+
- `path` (string): Path to SQL migration file
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Process
|
|
218
|
+
|
|
219
|
+
### 1. Extract DDL Sections
|
|
220
|
+
|
|
221
|
+
Parse migration file and identify sections:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
awk 'BEGIN{IGNORECASE=1}
|
|
225
|
+
/create extension|alter extension/ {print "EXT:", NR, $0}
|
|
226
|
+
/create table/ {print "TAB:", NR, $0}
|
|
227
|
+
/create or replace function|create function/ {print "FUN:", NR, $0}
|
|
228
|
+
/create trigger/ {print "TRG:", NR, $0}
|
|
229
|
+
/enable row level security|create policy/ {print "RLS:", NR, $0}
|
|
230
|
+
/create .* view/ {print "VIEW:", NR, $0}
|
|
231
|
+
' {path} > /tmp/ddl_order.txt
|
|
232
|
+
|
|
233
|
+
echo "=== DDL Section Analysis ==="
|
|
234
|
+
cat /tmp/ddl_order.txt
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### 2. Analyze Ordering
|
|
238
|
+
|
|
239
|
+
Show recommended order and actual order:
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
Recommended Execution Order:
|
|
243
|
+
1. Extensions (CREATE EXTENSION)
|
|
244
|
+
2. Tables & Constraints (CREATE TABLE, ALTER TABLE)
|
|
245
|
+
3. Functions (CREATE FUNCTION)
|
|
246
|
+
4. Triggers (CREATE TRIGGER)
|
|
247
|
+
5. RLS (ENABLE RLS, CREATE POLICY)
|
|
248
|
+
6. Views & Materialized Views (CREATE VIEW)
|
|
249
|
+
|
|
250
|
+
Actual Order in File:
|
|
251
|
+
[output from grep above]
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### 3. Run Heuristic Checks
|
|
255
|
+
|
|
256
|
+
Detect common ordering problems:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
# Check: Functions before tables
|
|
260
|
+
FIRST_TAB=$(grep '^TAB:' /tmp/ddl_order.txt | head -1 | cut -d: -f2)
|
|
261
|
+
FIRST_FUN=$(grep '^FUN:' /tmp/ddl_order.txt | head -1 | cut -d: -f2)
|
|
262
|
+
|
|
263
|
+
if [ -n "$FIRST_TAB" ] && [ -n "$FIRST_FUN" ] && [ "$FIRST_FUN" -lt "$FIRST_TAB" ]; then
|
|
264
|
+
echo "❌ Functions appear before tables. Reorder recommended."
|
|
265
|
+
exit 2
|
|
266
|
+
fi
|
|
267
|
+
|
|
268
|
+
# Check: RLS before tables exist
|
|
269
|
+
FIRST_RLS=$(grep '^RLS:' /tmp/ddl_order.txt | head -1 | cut -d: -f2)
|
|
270
|
+
if [ -n "$FIRST_RLS" ] && [ -n "$FIRST_TAB" ] && [ "$FIRST_RLS" -lt "$FIRST_TAB" ]; then
|
|
271
|
+
echo "❌ RLS commands before table creation. Reorder required."
|
|
272
|
+
exit 2
|
|
273
|
+
fi
|
|
274
|
+
|
|
275
|
+
# Check: Triggers before functions
|
|
276
|
+
FIRST_TRG=$(grep '^TRG:' /tmp/ddl_order.txt | head -1 | cut -d: -f2)
|
|
277
|
+
if [ -n "$FIRST_TRG" ] && [ -n "$FIRST_FUN" ] && [ "$FIRST_TRG" -lt "$FIRST_FUN" ]; then
|
|
278
|
+
echo "⚠️ Triggers before functions. May fail if trigger calls function."
|
|
279
|
+
fi
|
|
280
|
+
|
|
281
|
+
echo "✓ Ordering looks reasonable by heuristics"
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### 4. Report Results
|
|
285
|
+
|
|
286
|
+
**If all checks pass:**
|
|
287
|
+
```
|
|
288
|
+
✅ DDL Ordering Validation Passed
|
|
289
|
+
|
|
290
|
+
Sections found:
|
|
291
|
+
- Extensions: X
|
|
292
|
+
- Tables: Y
|
|
293
|
+
- Functions: Z
|
|
294
|
+
- Triggers: N
|
|
295
|
+
- RLS: M
|
|
296
|
+
- Views: V
|
|
297
|
+
|
|
298
|
+
Order appears correct. Safe to proceed with:
|
|
299
|
+
*dry-run {path}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
**If issues found:**
|
|
303
|
+
```
|
|
304
|
+
❌ DDL Ordering Issues Detected
|
|
305
|
+
|
|
306
|
+
Problems:
|
|
307
|
+
- Functions defined before tables (line X vs line Y)
|
|
308
|
+
- Triggers reference functions not yet created
|
|
309
|
+
|
|
310
|
+
Recommended fixes:
|
|
311
|
+
1. Move CREATE EXTENSION to top
|
|
312
|
+
2. Group CREATE TABLE statements
|
|
313
|
+
3. Then CREATE FUNCTION
|
|
314
|
+
4. Then CREATE TRIGGER
|
|
315
|
+
5. Then ENABLE RLS + policies
|
|
316
|
+
6. Finally CREATE VIEW
|
|
317
|
+
|
|
318
|
+
After fixing, re-run: *verify-order {path}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## Correct Ordering Examples
|
|
324
|
+
|
|
325
|
+
### ✅ Good Order
|
|
326
|
+
|
|
327
|
+
```sql
|
|
328
|
+
-- 1. Extensions first
|
|
329
|
+
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
330
|
+
|
|
331
|
+
-- 2. Tables and constraints
|
|
332
|
+
CREATE TABLE users (...);
|
|
333
|
+
CREATE TABLE fragments (...);
|
|
334
|
+
ALTER TABLE fragments ADD CONSTRAINT fk_user ...;
|
|
335
|
+
|
|
336
|
+
-- 3. Functions
|
|
337
|
+
CREATE OR REPLACE FUNCTION current_user_id() ...;
|
|
338
|
+
CREATE OR REPLACE FUNCTION update_timestamp() ...;
|
|
339
|
+
|
|
340
|
+
-- 4. Triggers
|
|
341
|
+
CREATE TRIGGER set_timestamp
|
|
342
|
+
BEFORE UPDATE ON users ...;
|
|
343
|
+
|
|
344
|
+
-- 5. RLS
|
|
345
|
+
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
|
|
346
|
+
CREATE POLICY "users_all" ON users ...;
|
|
347
|
+
|
|
348
|
+
-- 6. Views
|
|
349
|
+
CREATE VIEW user_fragments_view AS ...;
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### ❌ Bad Order (Will Fail)
|
|
353
|
+
|
|
354
|
+
```sql
|
|
355
|
+
-- ❌ Function before table it references
|
|
356
|
+
CREATE FUNCTION get_user_name(user_id UUID)
|
|
357
|
+
RETURNS TEXT AS $$
|
|
358
|
+
SELECT name FROM users WHERE id = user_id; -- users doesn't exist yet!
|
|
359
|
+
$$ LANGUAGE sql;
|
|
360
|
+
|
|
361
|
+
-- ❌ Table created after function
|
|
362
|
+
CREATE TABLE users (...);
|
|
363
|
+
|
|
364
|
+
-- ❌ RLS before table
|
|
365
|
+
CREATE POLICY "users_policy" ON users ...; -- Can't create policy on non-existent table
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## Common Dependency Patterns
|
|
371
|
+
|
|
372
|
+
### Pattern 1: Functions Calling Other Functions
|
|
373
|
+
|
|
374
|
+
**Order**: Base functions → Composite functions
|
|
375
|
+
|
|
376
|
+
```sql
|
|
377
|
+
-- First: Base function
|
|
378
|
+
CREATE FUNCTION base_func() ...;
|
|
379
|
+
|
|
380
|
+
-- Second: Function that calls base_func
|
|
381
|
+
CREATE FUNCTION composite_func() AS $$
|
|
382
|
+
BEGIN
|
|
383
|
+
RETURN base_func(); -- Safe, base_func exists
|
|
384
|
+
END;
|
|
385
|
+
$$ LANGUAGE plpgsql;
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### Pattern 2: Tables with Foreign Keys
|
|
389
|
+
|
|
390
|
+
**Order**: Referenced tables → Referencing tables
|
|
391
|
+
|
|
392
|
+
```sql
|
|
393
|
+
-- First: Parent table
|
|
394
|
+
CREATE TABLE users (id UUID PRIMARY KEY);
|
|
395
|
+
|
|
396
|
+
-- Second: Child table
|
|
397
|
+
CREATE TABLE posts (
|
|
398
|
+
user_id UUID REFERENCES users(id) -- Safe, users exists
|
|
399
|
+
);
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### Pattern 3: Views on Views
|
|
403
|
+
|
|
404
|
+
**Order**: Base views → Derived views
|
|
405
|
+
|
|
406
|
+
```sql
|
|
407
|
+
-- First: Base view
|
|
408
|
+
CREATE VIEW active_users AS
|
|
409
|
+
SELECT * FROM users WHERE deleted_at IS NULL;
|
|
410
|
+
|
|
411
|
+
-- Second: View on view
|
|
412
|
+
CREATE VIEW active_users_with_posts AS
|
|
413
|
+
SELECT u.*, COUNT(p.id)
|
|
414
|
+
FROM active_users u -- Safe, active_users exists
|
|
415
|
+
LEFT JOIN posts p ON p.user_id = u.id;
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### Pattern 4: RLS Using Functions
|
|
419
|
+
|
|
420
|
+
**Order**: Tables → Functions → RLS Policies
|
|
421
|
+
|
|
422
|
+
```sql
|
|
423
|
+
-- First: Table
|
|
424
|
+
CREATE TABLE data (...);
|
|
425
|
+
|
|
426
|
+
-- Second: Helper function
|
|
427
|
+
CREATE FUNCTION user_can_access(data_id UUID) ...;
|
|
428
|
+
|
|
429
|
+
-- Third: RLS policy using function
|
|
430
|
+
CREATE POLICY "access_check" ON data
|
|
431
|
+
USING (user_can_access(id)); -- Safe, function exists
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
## Manual Review Checklist
|
|
437
|
+
|
|
438
|
+
After automated checks, manually verify:
|
|
439
|
+
|
|
440
|
+
- [ ] All CREATE EXTENSION at top
|
|
441
|
+
- [ ] Foreign key references come after parent tables
|
|
442
|
+
- [ ] Triggers reference existing functions
|
|
443
|
+
- [ ] RLS policies reference existing tables
|
|
444
|
+
- [ ] Views reference existing tables/views
|
|
445
|
+
- [ ] Functions called by other functions defined first
|
|
446
|
+
- [ ] No circular dependencies
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## Integration with Workflow
|
|
451
|
+
|
|
452
|
+
Typical validation workflow:
|
|
453
|
+
|
|
454
|
+
1. Write migration
|
|
455
|
+
2. `*verify-order migration.sql` - Check ordering
|
|
456
|
+
3. Fix any issues found
|
|
457
|
+
4. `*dry-run migration.sql` - Test execution
|
|
458
|
+
5. `*apply-migration migration.sql` - Apply if dry-run passes
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
## Advanced: Dependency Graph
|
|
463
|
+
|
|
464
|
+
For complex migrations, visualize dependencies:
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
# Extract CREATE statements
|
|
468
|
+
grep -i "create" {path} | \
|
|
469
|
+
grep -E "(table|function|view|trigger)" > /tmp/creates.txt
|
|
470
|
+
|
|
471
|
+
# Manual review of dependencies
|
|
472
|
+
cat /tmp/creates.txt
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
Look for:
|
|
476
|
+
- Table → Foreign Key → Other Table
|
|
477
|
+
- Function → Calls → Other Function
|
|
478
|
+
- Trigger → Calls → Function
|
|
479
|
+
- View → Selects → Table/View
|
|
480
|
+
- Policy → Uses → Function
|
|
481
|
+
|
|
482
|
+
---
|
|
483
|
+
|
|
484
|
+
## Why This Matters
|
|
485
|
+
|
|
486
|
+
**Problem**: Wrong order causes migration failures
|
|
487
|
+
|
|
488
|
+
```
|
|
489
|
+
ERROR: relation "users" does not exist
|
|
490
|
+
ERROR: function "user_can_access" does not exist
|
|
491
|
+
ERROR: table "data" does not exist for policy creation
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Solution**: Verify order before running
|
|
495
|
+
|
|
496
|
+
- Catch issues in seconds (not after failed migration)
|
|
497
|
+
- No partial schema state
|
|
498
|
+
- No rollback needed for ordering errors
|
|
499
|
+
- Faster development cycle
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
## Limitations
|
|
504
|
+
|
|
505
|
+
This is a heuristic check, not a full parser:
|
|
506
|
+
|
|
507
|
+
✅ **Catches**: Most common ordering issues
|
|
508
|
+
✅ **Fast**: Runs in < 1 second
|
|
509
|
+
✅ **Safe**: No database connection needed
|
|
510
|
+
|
|
511
|
+
❌ **Misses**: Complex cross-file dependencies
|
|
512
|
+
❌ **Misses**: Dynamic SQL
|
|
513
|
+
❌ **Misses**: Subtle type dependencies
|
|
514
|
+
|
|
515
|
+
For 100% validation, use: `*dry-run {path}`
|