@devtrack-solution/codesdd 1.2.2 → 1.2.4-rc3
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/.sdd/skills/curated/api-clean-flask-langgraph/SKILL.md +17 -17
- package/.sdd/skills/curated/devtrack-api/SKILL.md +170 -31
- package/.sdd/skills/curated/devtrack-api/agents/claude-code.yaml +8 -0
- package/.sdd/skills/curated/devtrack-api/agents/codex.yaml +8 -0
- package/.sdd/skills/curated/devtrack-api/agents/cursor.yaml +8 -0
- package/.sdd/skills/curated/devtrack-api/agents/gemini.yaml +8 -0
- package/.sdd/skills/curated/devtrack-api/agents/kimi.yaml +8 -0
- package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +4 -2
- package/.sdd/skills/curated/devtrack-api/agents/opencode.yaml +10 -0
- package/.sdd/skills/curated/devtrack-api/references/application-presentation.md +2 -2
- package/.sdd/skills/curated/devtrack-api/references/architecture-governance.md +8 -7
- package/.sdd/skills/curated/devtrack-api/references/consumer-sync-policy.md +93 -0
- package/.sdd/skills/curated/devtrack-api/references/contract-pack.yaml +372 -0
- package/.sdd/skills/curated/devtrack-api/references/domain-modeling.md +13 -13
- package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +95 -0
- package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +294 -0
- package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +5 -5
- package/.sdd/skills/curated/devtrack-api/references/imports-lint.md +4 -0
- package/.sdd/skills/curated/devtrack-api/references/portable-agent-contract.md +41 -0
- package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +2 -2
- package/.sdd/skills/curated/devtrack-api/references/typeorm-infrastructure.md +7 -9
- package/LICENSE +1 -1
- package/README.md +399 -53
- package/bin/codesdd.js +3 -2
- package/dist/applications/sdd/index.d.ts +16 -0
- package/dist/applications/sdd/index.js +16 -0
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.js +11 -558
- package/dist/cli/program.d.ts +14 -0
- package/dist/cli/program.js +645 -0
- package/dist/commands/change.js +5 -5
- package/dist/commands/completion.d.ts +1 -1
- package/dist/commands/completion.js +9 -2
- package/dist/commands/config.js +320 -20
- package/dist/commands/feedback.js +1 -1
- package/dist/commands/schema.d.ts +63 -0
- package/dist/commands/schema.js +12 -12
- package/dist/commands/sdd/backlog.d.ts +3 -0
- package/dist/commands/sdd/backlog.js +54 -0
- package/dist/commands/sdd/execution.js +489 -28
- package/dist/commands/sdd/plugin.d.ts +3 -0
- package/dist/commands/sdd/plugin.js +158 -0
- package/dist/commands/sdd/shared.d.ts +1 -0
- package/dist/commands/sdd/shared.js +11 -22
- package/dist/commands/sdd/skills.js +7 -0
- package/dist/commands/sdd.js +107 -15
- package/dist/commands/spec.js +9 -9
- package/dist/commands/validate.js +6 -6
- package/dist/commands/workflow/instructions.js +6 -6
- package/dist/commands/workflow/new-change.js +3 -3
- package/dist/commands/workflow/shared.d.ts +1 -1
- package/dist/commands/workflow/shared.js +4 -4
- package/dist/core/archive.js +15 -5
- package/dist/core/artifact-graph/instruction-loader.d.ts +1 -1
- package/dist/core/artifact-graph/instruction-loader.js +3 -3
- package/dist/core/artifact-graph/resolver.d.ts +4 -4
- package/dist/core/artifact-graph/resolver.js +6 -6
- package/dist/core/branding.js +3 -3
- package/dist/core/cli/command-matrix.js +19 -1
- package/dist/core/cli-command-quality.d.ts +27 -0
- package/dist/core/cli-command-quality.js +180 -0
- package/dist/core/command-generation/adapters/costrict.d.ts +1 -1
- package/dist/core/command-generation/adapters/costrict.js +2 -2
- package/dist/core/command-generation/types.d.ts +1 -1
- package/dist/core/completions/command-registry.d.ts +1 -1
- package/dist/core/completions/command-registry.js +200 -12
- package/dist/core/completions/completion-provider.d.ts +14 -1
- package/dist/core/completions/completion-provider.js +29 -1
- package/dist/core/completions/generators/bash-generator.d.ts +1 -1
- package/dist/core/completions/generators/bash-generator.js +20 -12
- package/dist/core/completions/generators/fish-generator.d.ts +9 -1
- package/dist/core/completions/generators/fish-generator.js +39 -25
- package/dist/core/completions/generators/powershell-generator.d.ts +1 -1
- package/dist/core/completions/generators/powershell-generator.js +21 -11
- package/dist/core/completions/generators/zsh-generator.d.ts +3 -6
- package/dist/core/completions/generators/zsh-generator.js +21 -42
- package/dist/core/completions/installers/bash-installer.js +6 -6
- package/dist/core/completions/installers/fish-installer.js +1 -1
- package/dist/core/completions/installers/powershell-installer.js +14 -14
- package/dist/core/completions/installers/zsh-installer.d.ts +7 -1
- package/dist/core/completions/installers/zsh-installer.js +36 -8
- package/dist/core/completions/templates/bash-templates.d.ts +1 -1
- package/dist/core/completions/templates/bash-templates.js +12 -6
- package/dist/core/completions/templates/fish-templates.d.ts +2 -2
- package/dist/core/completions/templates/fish-templates.js +20 -9
- package/dist/core/completions/templates/powershell-templates.d.ts +1 -1
- package/dist/core/completions/templates/powershell-templates.js +13 -4
- package/dist/core/completions/templates/zsh-templates.d.ts +1 -1
- package/dist/core/completions/templates/zsh-templates.js +18 -9
- package/dist/core/config-schema.d.ts +20 -1
- package/dist/core/config-schema.js +70 -2
- package/dist/core/config.d.ts +3 -3
- package/dist/core/config.js +4 -4
- package/dist/core/global-config.d.ts +57 -12
- package/dist/core/global-config.js +344 -27
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +2 -2
- package/dist/core/init.d.ts +6 -1
- package/dist/core/init.js +99 -77
- package/dist/core/legacy-cleanup.d.ts +17 -17
- package/dist/core/legacy-cleanup.js +96 -79
- package/dist/core/list.js +18 -4
- package/dist/core/migration.d.ts +3 -1
- package/dist/core/migration.js +7 -8
- package/dist/core/parsers/change-parser.js +1 -1
- package/dist/core/parsers/markdown-parser.js +2 -2
- package/dist/core/profile-sync-drift.d.ts +1 -1
- package/dist/core/profile-sync-drift.js +13 -13
- package/dist/core/project-config.d.ts +4 -4
- package/dist/core/project-config.js +11 -11
- package/dist/core/schemas/change.schema.d.ts +1 -1
- package/dist/core/schemas/change.schema.js +1 -1
- package/dist/core/schemas/spec.schema.d.ts +1 -1
- package/dist/core/schemas/spec.schema.js +1 -1
- package/dist/core/sdd/adr.js +23 -1
- package/dist/core/sdd/agent-binding.d.ts +346 -0
- package/dist/core/sdd/agent-binding.js +343 -0
- package/dist/core/sdd/agent-runtime-contract.d.ts +204 -0
- package/dist/core/sdd/agent-runtime-contract.js +200 -0
- package/dist/core/sdd/backlog-cli.d.ts +16 -0
- package/dist/core/sdd/backlog-cli.js +146 -0
- package/dist/core/sdd/backlog-conflict-policy.d.ts +58 -0
- package/dist/core/sdd/backlog-conflict-policy.js +230 -0
- package/dist/core/sdd/backlog-projection.d.ts +8 -0
- package/dist/core/sdd/backlog-projection.js +89 -0
- package/dist/core/sdd/backlog-provider-contract.d.ts +252 -0
- package/dist/core/sdd/backlog-provider-contract.js +158 -0
- package/dist/core/sdd/bootstrap.js +2 -2
- package/dist/core/sdd/check.d.ts +44 -0
- package/dist/core/sdd/check.js +62 -24
- package/dist/core/sdd/contract.d.ts +13 -0
- package/dist/core/sdd/contract.js +36 -0
- package/dist/core/sdd/coordination/coordination-adapters.d.ts +53 -8
- package/dist/core/sdd/coordination/coordination-adapters.js +182 -16
- package/dist/core/sdd/coordination/index.d.ts +1 -0
- package/dist/core/sdd/coordination/index.js +1 -0
- package/dist/core/sdd/coordination/redis-runtime.d.ts +131 -0
- package/dist/core/sdd/coordination/redis-runtime.js +698 -0
- package/dist/core/sdd/deepagent-contracts.d.ts +370 -0
- package/dist/core/sdd/deepagent-contracts.js +235 -0
- package/dist/core/sdd/deepagents/adr-governor.d.ts +2 -0
- package/dist/core/sdd/deepagents/adr-governor.js +30 -0
- package/dist/core/sdd/deepagents/backend.d.ts +63 -0
- package/dist/core/sdd/deepagents/backend.js +174 -0
- package/dist/core/sdd/deepagents/codesdd-tools.d.ts +39 -0
- package/dist/core/sdd/deepagents/codesdd-tools.js +83 -0
- package/dist/core/sdd/deepagents/evidence-mapper.d.ts +86 -0
- package/dist/core/sdd/deepagents/evidence-mapper.js +178 -0
- package/dist/core/sdd/deepagents/model-provider.d.ts +53 -0
- package/dist/core/sdd/deepagents/model-provider.js +379 -0
- package/dist/core/sdd/deepagents/policy-enforcement.d.ts +30 -0
- package/dist/core/sdd/deepagents/policy-enforcement.js +90 -0
- package/dist/core/sdd/deepagents/policy.d.ts +75 -0
- package/dist/core/sdd/deepagents/policy.js +358 -0
- package/dist/core/sdd/deepagents/quality-witness.d.ts +3 -0
- package/dist/core/sdd/deepagents/quality-witness.js +77 -0
- package/dist/core/sdd/deepagents/reversa-subagents.d.ts +75 -0
- package/dist/core/sdd/deepagents/reversa-subagents.js +182 -0
- package/dist/core/sdd/deepagents/runtime-factory.d.ts +90 -0
- package/dist/core/sdd/deepagents/runtime-factory.js +231 -0
- package/dist/core/sdd/deepagents/runtime-loader.d.ts +16 -0
- package/dist/core/sdd/deepagents/runtime-loader.js +65 -0
- package/dist/core/sdd/default-bootstrap-files.d.ts +3 -3
- package/dist/core/sdd/default-bootstrap-files.js +50 -10
- package/dist/core/sdd/default-skills.d.ts +30 -0
- package/dist/core/sdd/default-skills.js +288 -8
- package/dist/core/sdd/devtrack-api-appliance.d.ts +91 -0
- package/dist/core/sdd/devtrack-api-appliance.js +280 -0
- package/dist/core/sdd/devtrack-api-architecture.d.ts +31 -0
- package/dist/core/sdd/devtrack-api-architecture.js +608 -0
- package/dist/core/sdd/devtrack-api-import-boundary.d.ts +19 -0
- package/dist/core/sdd/devtrack-api-import-boundary.js +32 -0
- package/dist/core/sdd/diagnose.d.ts +59 -0
- package/dist/core/sdd/diagnose.js +37 -37
- package/dist/core/sdd/docs-sync.js +54 -20
- package/dist/core/sdd/domain/capability-diff.d.ts +63 -0
- package/dist/core/sdd/domain/capability-diff.js +200 -0
- package/dist/core/sdd/domain/change-safety-guardrails.d.ts +74 -0
- package/dist/core/sdd/domain/change-safety-guardrails.js +333 -0
- package/dist/core/sdd/domain/post-active-validation.d.ts +7 -0
- package/dist/core/sdd/domain/post-active-validation.js +61 -0
- package/dist/core/sdd/domain/semantic-intent-classifier.d.ts +29 -0
- package/dist/core/sdd/domain/semantic-intent-classifier.js +117 -0
- package/dist/core/sdd/domain/transition-engine.js +1 -0
- package/dist/core/sdd/entity-reference.d.ts +5 -0
- package/dist/core/sdd/entity-reference.js +22 -0
- package/dist/core/sdd/foundation-artifact-map-validator.d.ts +16 -0
- package/dist/core/sdd/foundation-artifact-map-validator.js +71 -0
- package/dist/core/sdd/foundation-layer-manifest.d.ts +24 -0
- package/dist/core/sdd/foundation-layer-manifest.js +117 -0
- package/dist/core/sdd/governance-backfill.d.ts +31 -0
- package/dist/core/sdd/governance-backfill.js +359 -0
- package/dist/core/sdd/governance-parser.d.ts +21 -0
- package/dist/core/sdd/governance-parser.js +91 -0
- package/dist/core/sdd/governance-schemas.d.ts +245 -0
- package/dist/core/sdd/governance-schemas.js +143 -0
- package/dist/core/sdd/{import-openspec.d.ts → import-legacy-spec.d.ts} +7 -7
- package/dist/core/sdd/{import-openspec.js → import-legacy-spec.js} +21 -29
- package/dist/core/sdd/init.d.ts +3 -0
- package/dist/core/sdd/init.js +6 -3
- package/dist/core/sdd/intent-guard.d.ts +22 -0
- package/dist/core/sdd/intent-guard.js +67 -0
- package/dist/core/sdd/json-schema.js +108 -6
- package/dist/core/sdd/knowledge-graph.d.ts +45 -0
- package/dist/core/sdd/knowledge-graph.js +288 -0
- package/dist/core/sdd/legacy-operations.js +507 -44
- package/dist/core/sdd/lenses.d.ts +1 -0
- package/dist/core/sdd/lenses.js +29 -1
- package/dist/core/sdd/migrate-workspace.js +95 -2
- package/dist/core/sdd/migrate.d.ts +1 -1
- package/dist/core/sdd/migrate.js +36 -2
- package/dist/core/sdd/package-security-gates.d.ts +21 -0
- package/dist/core/sdd/package-security-gates.js +119 -0
- package/dist/core/sdd/package-structure-gate.d.ts +83 -0
- package/dist/core/sdd/package-structure-gate.js +357 -0
- package/dist/core/sdd/parallel-feat-automation.d.ts +330 -0
- package/dist/core/sdd/parallel-feat-automation.js +424 -0
- package/dist/core/sdd/plugin-broker.d.ts +777 -0
- package/dist/core/sdd/plugin-broker.js +492 -0
- package/dist/core/sdd/plugin-certification.d.ts +79 -0
- package/dist/core/sdd/plugin-certification.js +453 -0
- package/dist/core/sdd/plugin-cli.d.ts +139 -0
- package/dist/core/sdd/plugin-cli.js +265 -0
- package/dist/core/sdd/plugin-evidence.d.ts +348 -0
- package/dist/core/sdd/plugin-evidence.js +307 -0
- package/dist/core/sdd/plugin-manifest.d.ts +232 -0
- package/dist/core/sdd/plugin-manifest.js +225 -0
- package/dist/core/sdd/plugin-policy-pack.d.ts +88 -0
- package/dist/core/sdd/plugin-policy-pack.js +236 -0
- package/dist/core/sdd/plugin-policy.d.ts +68 -0
- package/dist/core/sdd/plugin-policy.js +212 -0
- package/dist/core/sdd/plugin-registry.d.ts +447 -0
- package/dist/core/sdd/plugin-registry.js +138 -0
- package/dist/core/sdd/plugin-sdk-contract.d.ts +363 -0
- package/dist/core/sdd/plugin-sdk-contract.js +268 -0
- package/dist/core/sdd/plugin-skill-binding.d.ts +151 -0
- package/dist/core/sdd/plugin-skill-binding.js +339 -0
- package/dist/core/sdd/quality-artifact-manifest-validator.d.ts +28 -0
- package/dist/core/sdd/quality-artifact-manifest-validator.js +167 -0
- package/dist/core/sdd/quality-evidence-renderer.d.ts +65 -0
- package/dist/core/sdd/quality-evidence-renderer.js +218 -0
- package/dist/core/sdd/quality-scenario-runner.d.ts +42 -0
- package/dist/core/sdd/quality-scenario-runner.js +613 -0
- package/dist/core/sdd/quality-validation.d.ts +620 -0
- package/dist/core/sdd/quality-validation.js +239 -0
- package/dist/core/sdd/release-readiness.d.ts +19 -0
- package/dist/core/sdd/release-readiness.js +472 -0
- package/dist/core/sdd/resolve-project-root.d.ts +2 -2
- package/dist/core/sdd/resolve-project-root.js +11 -5
- package/dist/core/sdd/runtime-boundary-contract.d.ts +45 -0
- package/dist/core/sdd/runtime-boundary-contract.js +90 -0
- package/dist/core/sdd/sanitize.d.ts +30 -1
- package/dist/core/sdd/sanitize.js +23 -23
- package/dist/core/sdd/sdk-agent-plugin-quality-gates.d.ts +150 -0
- package/dist/core/sdd/sdk-agent-plugin-quality-gates.js +258 -0
- package/dist/core/sdd/services/agent-run.service.d.ts +97 -0
- package/dist/core/sdd/services/agent-run.service.js +261 -0
- package/dist/core/sdd/services/breakdown.service.js +2 -1
- package/dist/core/sdd/services/capability-diff.service.d.ts +18 -0
- package/dist/core/sdd/services/capability-diff.service.js +26 -0
- package/dist/core/sdd/services/change-safety-preflight.service.d.ts +17 -0
- package/dist/core/sdd/services/change-safety-preflight.service.js +17 -0
- package/dist/core/sdd/services/context.service.d.ts +43 -340
- package/dist/core/sdd/services/context.service.js +341 -25
- package/dist/core/sdd/services/debate.service.js +15 -2
- package/dist/core/sdd/services/feature-lint.service.d.ts +22 -0
- package/dist/core/sdd/services/feature-lint.service.js +105 -5
- package/dist/core/sdd/services/finalize.service.d.ts +105 -0
- package/dist/core/sdd/services/finalize.service.js +499 -38
- package/dist/core/sdd/services/frontend-gap.service.js +22 -7
- package/dist/core/sdd/services/frontend-impact.service.d.ts +1 -1
- package/dist/core/sdd/services/governance-control-plane-runtime-adapters.d.ts +17 -0
- package/dist/core/sdd/services/governance-control-plane-runtime-adapters.js +38 -0
- package/dist/core/sdd/services/governance-control-plane.service.d.ts +66 -0
- package/dist/core/sdd/services/governance-control-plane.service.js +134 -0
- package/dist/core/sdd/services/ingest-deposito.service.js +1 -1
- package/dist/core/sdd/services/legacy-capability.service.d.ts +10 -7
- package/dist/core/sdd/services/legacy-capability.service.js +38 -21
- package/dist/core/sdd/services/mcp-runtime.service.d.ts +123 -8
- package/dist/core/sdd/services/mcp-runtime.service.js +1085 -33
- package/dist/core/sdd/services/onboard.service.js +2 -1
- package/dist/core/sdd/services/rebuild.service.js +6 -1
- package/dist/core/sdd/services/semantic-intent-classifier.service.d.ts +6 -0
- package/dist/core/sdd/services/semantic-intent-classifier.service.js +7 -0
- package/dist/core/sdd/services/skills-sync.service.d.ts +17 -5
- package/dist/core/sdd/services/skills-sync.service.js +55 -2
- package/dist/core/sdd/services/start.service.js +6 -4
- package/dist/core/sdd/skill-bundles-curation-schema.d.ts +66 -0
- package/dist/core/sdd/skill-bundles-curation-schema.js +52 -0
- package/dist/core/sdd/skill-evidence.d.ts +19 -0
- package/dist/core/sdd/skill-evidence.js +38 -0
- package/dist/core/sdd/skill-policy-pool.d.ts +46 -0
- package/dist/core/sdd/skill-policy-pool.js +185 -0
- package/dist/core/sdd/state.d.ts +23 -0
- package/dist/core/sdd/state.js +313 -66
- package/dist/core/sdd/store/sdd-stores.js +2 -2
- package/dist/core/sdd/structural-health.d.ts +55 -55
- package/dist/core/sdd/types.d.ts +60 -19
- package/dist/core/sdd/types.js +21 -0
- package/dist/core/sdd/upgrade-to-codesdd.d.ts +45 -0
- package/dist/core/sdd/upgrade-to-codesdd.js +179 -0
- package/dist/core/sdd/views.js +17 -0
- package/dist/core/sdd/workspace-schemas.d.ts +670 -19
- package/dist/core/sdd/workspace-schemas.js +285 -5
- package/dist/core/sdd/write-manifest.js +22 -4
- package/dist/core/shared/skill-generation.d.ts +1 -1
- package/dist/core/shared/skill-generation.js +15 -15
- package/dist/core/shared/tool-detection.d.ts +3 -3
- package/dist/core/shared/tool-detection.js +14 -14
- package/dist/core/specs-apply.js +6 -6
- package/dist/core/templates/index.d.ts +1 -1
- package/dist/core/templates/index.js +1 -1
- package/dist/core/templates/workflows/apply-change.js +14 -14
- package/dist/core/templates/workflows/archive-change.js +32 -32
- package/dist/core/templates/workflows/bulk-archive-change.js +25 -25
- package/dist/core/templates/workflows/continue-change.js +12 -12
- package/dist/core/templates/workflows/explore.js +29 -29
- package/dist/core/templates/workflows/feedback.js +6 -6
- package/dist/core/templates/workflows/ff-change.js +24 -24
- package/dist/core/templates/workflows/new-change.js +20 -20
- package/dist/core/templates/workflows/onboard.js +33 -33
- package/dist/core/templates/workflows/propose.js +23 -23
- package/dist/core/templates/workflows/sdd.js +8 -8
- package/dist/core/templates/workflows/sync-specs.js +19 -19
- package/dist/core/templates/workflows/verify-change.js +17 -17
- package/dist/core/update.d.ts +2 -2
- package/dist/core/update.js +16 -15
- package/dist/core/validation/constants.d.ts +1 -1
- package/dist/core/validation/constants.js +1 -1
- package/dist/core/view.js +11 -11
- package/dist/domains/sdd/index.d.ts +6 -0
- package/dist/domains/sdd/index.js +6 -0
- package/dist/infrastructures/sdd/index.d.ts +7 -0
- package/dist/infrastructures/sdd/index.js +6 -0
- package/dist/presentations/cli/sdd/index.d.ts +3 -0
- package/dist/presentations/cli/sdd/index.js +3 -0
- package/dist/shared/sdd/index.d.ts +3 -0
- package/dist/shared/sdd/index.js +2 -0
- package/dist/telemetry/config.d.ts +2 -1
- package/dist/telemetry/config.js +17 -8
- package/dist/telemetry/index.d.ts +10 -2
- package/dist/telemetry/index.js +40 -7
- package/dist/ui/ascii-patterns.d.ts +2 -2
- package/dist/ui/ascii-patterns.js +2 -2
- package/dist/ui/welcome-screen.js +2 -2
- package/dist/utils/change-metadata.d.ts +4 -4
- package/dist/utils/change-metadata.js +6 -6
- package/dist/utils/change-utils.d.ts +3 -3
- package/dist/utils/change-utils.js +5 -5
- package/dist/utils/file-system.js +1 -1
- package/dist/utils/interactive.js +1 -1
- package/dist/utils/item-discovery.js +4 -4
- package/dist/utils/legacy-spec-compat.d.ts +2 -0
- package/dist/utils/legacy-spec-compat.js +2 -0
- package/dist/utils/shell-detection.d.ts +1 -0
- package/dist/utils/shell-detection.js +16 -0
- package/package.json +34 -21
- package/schemas/sdd/1-spec.schema.json +1 -1
- package/schemas/sdd/2-plan.schema.json +280 -3
- package/schemas/sdd/3-tasks.schema.json +73 -1
- package/schemas/sdd/4-changelog.schema.json +1 -1
- package/schemas/sdd/5-quality.schema.json +701 -5
- package/schemas/sdd/adr.schema.json +148 -0
- package/schemas/sdd/agent-binding-adapter.schema.json +210 -0
- package/schemas/sdd/agent-binding-resolution.schema.json +338 -0
- package/schemas/sdd/agent-runtime-command-plan.schema.json +212 -0
- package/schemas/sdd/agent-runtime-opencode-run-evidence.schema.json +270 -0
- package/schemas/sdd/backlog-projection-plan.schema.json +180 -0
- package/schemas/sdd/backlog-provider-contract.schema.json +260 -0
- package/schemas/sdd/codesdd-plugin.schema.json +645 -0
- package/schemas/sdd/debate.schema.json +244 -0
- package/schemas/sdd/deepagent-decision-evidence.schema.json +58 -0
- package/schemas/sdd/deepagent-env-contract.schema.json +143 -0
- package/schemas/sdd/deepagent-quality-evidence.schema.json +108 -0
- package/schemas/sdd/deepagent-run-evidence.schema.json +192 -0
- package/schemas/sdd/deepagent-run-plan.schema.json +197 -0
- package/schemas/sdd/deepagent-run-request.schema.json +637 -0
- package/schemas/sdd/deepagent-subagent-evidence.schema.json +110 -0
- package/schemas/sdd/deepagent-tool-call-evidence.schema.json +78 -0
- package/schemas/sdd/discarded.schema.json +127 -0
- package/schemas/sdd/epic.schema.json +147 -0
- package/schemas/sdd/insight.schema.json +136 -0
- package/schemas/sdd/parallel-feat-automation-plan.schema.json +304 -0
- package/schemas/sdd/parallel-feat-automation-request.schema.json +109 -0
- package/schemas/sdd/parallel-feat-scheduler-request.schema.json +116 -0
- package/schemas/sdd/parallel-feat-scheduler-result.schema.json +404 -0
- package/schemas/sdd/plugin-artifact-manifest.schema.json +259 -0
- package/schemas/sdd/plugin-artifact-map.schema.json +223 -0
- package/schemas/sdd/plugin-compliance-index.schema.json +136 -0
- package/schemas/sdd/plugin-dry-run-plan.schema.json +260 -0
- package/schemas/sdd/plugin-evidence-manifest.schema.json +678 -0
- package/schemas/sdd/plugin-language-runtime.schema.json +103 -0
- package/schemas/sdd/plugin-package-governance.schema.json +74 -0
- package/schemas/sdd/plugin-policy-evaluation.schema.json +92 -0
- package/schemas/sdd/plugin-policy-pack-evaluation.schema.json +94 -0
- package/schemas/sdd/plugin-policy-pack.schema.json +196 -0
- package/schemas/sdd/plugin-registry.schema.json +729 -0
- package/schemas/sdd/plugin-rollback-manifest.schema.json +87 -0
- package/schemas/sdd/plugin-runtime-invocation-plan.schema.json +954 -0
- package/schemas/sdd/plugin-skill-binding-resolution.schema.json +305 -0
- package/schemas/sdd/plugin-skill-binding.schema.json +88 -0
- package/schemas/sdd/plugin-validation-manifest.schema.json +123 -0
- package/schemas/sdd/quality-architecture-schema.schema.json +216 -0
- package/schemas/sdd/quality-evidence-bundle.schema.json +1337 -0
- package/schemas/sdd/quality-run.schema.json +197 -0
- package/schemas/sdd/quality-scenario.schema.json +252 -0
- package/schemas/sdd/sdk-agent-plugin-quality-gate-input.schema.json +168 -0
- package/schemas/sdd/sdk-agent-plugin-quality-gate-report.schema.json +160 -0
- package/schemas/sdd/workspace-catalog.schema.json +13232 -35
- package/schemas/spec-driven/schema.yaml +4 -4
- package/schemas/spec-driven/templates/proposal.md +1 -1
- package/dist/utils/openspec-compat.d.ts +0 -2
- package/dist/utils/openspec-compat.js +0 -2
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
contract_id: devtrack-api-contract-pack
|
|
3
|
+
skill_id: devtrack-api
|
|
4
|
+
contract_version: 1
|
|
5
|
+
status: active
|
|
6
|
+
authority:
|
|
7
|
+
codesdd_source: .sdd/skills/curated/devtrack-api/
|
|
8
|
+
foundation_source: devtrack-foundation-api/src/
|
|
9
|
+
source_priority:
|
|
10
|
+
- devtrack-foundation-api source tree
|
|
11
|
+
- .sdd/skills/curated/devtrack-api/references/foundation-layout.md
|
|
12
|
+
- .sdd/skills/curated/devtrack-api/SKILL.md
|
|
13
|
+
- this contract pack
|
|
14
|
+
consumer_rule: Consumer copies are one-way CodeSDD materializations and must not become upstream sources of truth.
|
|
15
|
+
foundation_wins_rule: If devtrack-api guidance conflicts with devtrack-foundation-api source or Foundation layout evidence, Foundation wins unless a governed ADR or contract-pack exception records the divergence.
|
|
16
|
+
isolation_rule: devtrack-api governs backend/API work only; devtrack-angular remains the isolated Angular Admin/backoffice skill and devtrack-flutter remains the isolated Flutter/Dart skill.
|
|
17
|
+
portable_agents:
|
|
18
|
+
canonical_targets:
|
|
19
|
+
- openai
|
|
20
|
+
- codex
|
|
21
|
+
- claude
|
|
22
|
+
- cursor
|
|
23
|
+
- gemini
|
|
24
|
+
- kimi
|
|
25
|
+
- opencode
|
|
26
|
+
- generic-markdown-cli
|
|
27
|
+
aliases:
|
|
28
|
+
claude-code: claude
|
|
29
|
+
kimmy-code: kimi
|
|
30
|
+
kilo-code: generic-markdown-cli
|
|
31
|
+
open-code: opencode
|
|
32
|
+
OpenCode: opencode
|
|
33
|
+
Kimi: kimi
|
|
34
|
+
artifact_map:
|
|
35
|
+
openai: agents/openai.yaml
|
|
36
|
+
codex: agents/codex.yaml
|
|
37
|
+
claude: agents/claude-code.yaml
|
|
38
|
+
cursor: agents/cursor.yaml
|
|
39
|
+
gemini: agents/gemini.yaml
|
|
40
|
+
kimi: agents/kimi.yaml
|
|
41
|
+
opencode: agents/opencode.yaml
|
|
42
|
+
generic-markdown-cli: SKILL.md
|
|
43
|
+
required_artifacts:
|
|
44
|
+
- SKILL.md
|
|
45
|
+
- agents/openai.yaml
|
|
46
|
+
- agents/codex.yaml
|
|
47
|
+
- agents/claude-code.yaml
|
|
48
|
+
- agents/cursor.yaml
|
|
49
|
+
- agents/gemini.yaml
|
|
50
|
+
- agents/kimi.yaml
|
|
51
|
+
- agents/opencode.yaml
|
|
52
|
+
- references/portable-agent-contract.md
|
|
53
|
+
derivation_profiles:
|
|
54
|
+
prototype:
|
|
55
|
+
default: false
|
|
56
|
+
purpose: Explore functionality quickly without claiming Foundation compatibility.
|
|
57
|
+
allowed_only_with: Explicit DEB or ADR exception before implementation.
|
|
58
|
+
enforcement:
|
|
59
|
+
path_conformance: warn
|
|
60
|
+
semantic_conformance: warn
|
|
61
|
+
finalize_blocking: false
|
|
62
|
+
required_evidence:
|
|
63
|
+
- chosen profile and reason
|
|
64
|
+
- accepted architectural risks
|
|
65
|
+
- follow-up path for foundation-compatible validation when needed
|
|
66
|
+
foundation-compatible:
|
|
67
|
+
default: true
|
|
68
|
+
purpose: Produce a derived API that follows Foundation physical layout, NestJS module boundaries, ports, TypeORM runtime, and validation expectations.
|
|
69
|
+
allowed_only_with: No exception required.
|
|
70
|
+
enforcement:
|
|
71
|
+
path_conformance: block_on_p0
|
|
72
|
+
semantic_conformance: block_on_p0
|
|
73
|
+
finalize_blocking: true
|
|
74
|
+
required_evidence:
|
|
75
|
+
- package structure preview approved by human planner
|
|
76
|
+
- policy pool generated from this skill
|
|
77
|
+
- skill provenance and sync evidence
|
|
78
|
+
- semantic architecture validation result
|
|
79
|
+
enterprise-strict:
|
|
80
|
+
default: false
|
|
81
|
+
purpose: Produce a consumer API with audit-grade evidence, no unresolved P0/P1 drift, and formal exception handling for every accepted divergence.
|
|
82
|
+
allowed_only_with: Human approval in DEB or ADR before FEAT execution.
|
|
83
|
+
enforcement:
|
|
84
|
+
path_conformance: block_on_p0_p1
|
|
85
|
+
semantic_conformance: block_on_p0_p1
|
|
86
|
+
finalize_blocking: true
|
|
87
|
+
required_evidence:
|
|
88
|
+
- all foundation-compatible evidence
|
|
89
|
+
- no open P0 or P1 drift
|
|
90
|
+
- ADR-backed exception for every accepted P2 drift
|
|
91
|
+
- field-validation packet plan
|
|
92
|
+
severity_model:
|
|
93
|
+
P0:
|
|
94
|
+
meaning: Must not be finalized for foundation-compatible or enterprise-strict work.
|
|
95
|
+
required_action: Block execution or finalize unless a profile explicitly permits warning-only handling.
|
|
96
|
+
P1:
|
|
97
|
+
meaning: High-risk drift that may compromise Foundation fidelity or enterprise audit evidence.
|
|
98
|
+
required_action: Block in enterprise-strict; require formal exception or remediation in foundation-compatible.
|
|
99
|
+
P2:
|
|
100
|
+
meaning: Lower-risk drift, documentation gap, or profile-specific variance.
|
|
101
|
+
required_action: Record evidence, exception, or follow-up before closure.
|
|
102
|
+
rules:
|
|
103
|
+
- id: DTAPI-P0-FOUNDATION-001
|
|
104
|
+
severity: P0
|
|
105
|
+
title: Foundation evidence wins over generated or adapter-specific guidance.
|
|
106
|
+
applies_to:
|
|
107
|
+
- DEB
|
|
108
|
+
- EPIC
|
|
109
|
+
- FEAT
|
|
110
|
+
- source
|
|
111
|
+
- validator
|
|
112
|
+
detect:
|
|
113
|
+
- plan, code, or agent adapter diverges from devtrack-foundation-api source without ADR
|
|
114
|
+
- generated path, module, import, or TypeORM rule conflicts with foundation-layout.md
|
|
115
|
+
required_response:
|
|
116
|
+
- align with devtrack-foundation-api source or foundation-layout.md
|
|
117
|
+
- or record an ADR-backed and profile-compatible exception before execution or finalize
|
|
118
|
+
- id: DTAPI-P0-PROFILE-001
|
|
119
|
+
severity: P0
|
|
120
|
+
title: Derivation profile must be explicit before implementation.
|
|
121
|
+
applies_to:
|
|
122
|
+
- DEB
|
|
123
|
+
- EPIC
|
|
124
|
+
- FEAT
|
|
125
|
+
detect:
|
|
126
|
+
- missing profile among prototype, foundation-compatible, enterprise-strict
|
|
127
|
+
required_response:
|
|
128
|
+
- ask the human planner to approve the profile
|
|
129
|
+
- record profile in the debate, FEAT workspace, or policy pool
|
|
130
|
+
- id: DTAPI-P0-PREVIEW-001
|
|
131
|
+
severity: P0
|
|
132
|
+
title: Early devtrack-api planning must include package structure preview.
|
|
133
|
+
applies_to:
|
|
134
|
+
- DEB
|
|
135
|
+
- FEAT
|
|
136
|
+
detect:
|
|
137
|
+
- first two or three devtrack-api debates lack a package tree preview
|
|
138
|
+
- package tree is not explicitly human-approved
|
|
139
|
+
required_response:
|
|
140
|
+
- generate package structure preview
|
|
141
|
+
- request human approval before FEAT execution
|
|
142
|
+
- id: DTAPI-P0-PATH-001
|
|
143
|
+
severity: P0
|
|
144
|
+
title: Proposed paths must match canonical Foundation-compatible paths.
|
|
145
|
+
applies_to:
|
|
146
|
+
- DEB
|
|
147
|
+
- FEAT
|
|
148
|
+
- source
|
|
149
|
+
detect:
|
|
150
|
+
- forbidden paths from SKILL.md or foundation-layout.md
|
|
151
|
+
- new domain entities folder outside approved legacy contexts
|
|
152
|
+
- context-owned infrastructure adapters
|
|
153
|
+
- per-context or per-entity TypeORM modules under src/infrastructure/adapters/orm
|
|
154
|
+
- transport-less presentation context folders
|
|
155
|
+
required_response:
|
|
156
|
+
- replace with canonical path
|
|
157
|
+
- or record ADR-backed divergence before execution
|
|
158
|
+
- id: DTAPI-P0-IMPORTS-001
|
|
159
|
+
severity: P0
|
|
160
|
+
title: Source and tests must use Foundation-compatible path aliases instead of relative imports.
|
|
161
|
+
applies_to:
|
|
162
|
+
- DEB
|
|
163
|
+
- FEAT
|
|
164
|
+
- source
|
|
165
|
+
- validator
|
|
166
|
+
detect:
|
|
167
|
+
- missing tsconfig baseUrl or paths for @domain, @application, @presentation, @infrastructure, @shared, or @src
|
|
168
|
+
- relative imports inside src or tests, including same-folder relative imports
|
|
169
|
+
- import aliases diverging from devtrack-foundation-api without ADR
|
|
170
|
+
required_response:
|
|
171
|
+
- add or repair the Foundation alias map before implementation/finalize
|
|
172
|
+
- replace relative imports with canonical aliases
|
|
173
|
+
- or record ADR-backed divergence before execution
|
|
174
|
+
- id: DTAPI-P0-TYPEORM-001
|
|
175
|
+
severity: P0
|
|
176
|
+
title: TypeORM-named repositories must use real TypeORM runtime wiring.
|
|
177
|
+
applies_to:
|
|
178
|
+
- source
|
|
179
|
+
- validator
|
|
180
|
+
detect:
|
|
181
|
+
- files ending in .typeorm-repository.ts without InjectRepository or Repository usage
|
|
182
|
+
- in-memory Map persistence inside TypeORM-named repositories
|
|
183
|
+
- missing TypeOrmModule.forFeature wiring for concrete ORM repositories
|
|
184
|
+
- concrete ORM repositories not provided and exported through src/infrastructure/adapters/orm/orm.module.ts
|
|
185
|
+
required_response:
|
|
186
|
+
- implement real TypeORM repository wiring
|
|
187
|
+
- rename prototype adapters so they do not claim TypeORM compatibility
|
|
188
|
+
- or downgrade to prototype with explicit exception
|
|
189
|
+
- id: DTAPI-P0-COMPOSITION-001
|
|
190
|
+
severity: P0
|
|
191
|
+
title: Presentation modules must not become composition roots for application and infrastructure.
|
|
192
|
+
applies_to:
|
|
193
|
+
- source
|
|
194
|
+
- validator
|
|
195
|
+
detect:
|
|
196
|
+
- presentation imports concrete infrastructure adapters
|
|
197
|
+
- presentation module instantiates repositories, adapters, services, or use cases directly
|
|
198
|
+
- dependency injection tokens owned by presentation for application ports
|
|
199
|
+
required_response:
|
|
200
|
+
- move provider ownership to application or infrastructure modules
|
|
201
|
+
- keep presentation importing application boundaries only
|
|
202
|
+
- id: DTAPI-P0-MODULES-001
|
|
203
|
+
severity: P0
|
|
204
|
+
title: Aggregate application, infrastructure, and presentation modules are mandatory for compatible APIs.
|
|
205
|
+
applies_to:
|
|
206
|
+
- source
|
|
207
|
+
- validator
|
|
208
|
+
detect:
|
|
209
|
+
- missing src/application/application.module.ts
|
|
210
|
+
- missing src/infrastructure/infrastructure.module.ts
|
|
211
|
+
- missing src/presentation/presentation.module.ts or transport aggregate module
|
|
212
|
+
- module-named files that export constants instead of NestJS modules
|
|
213
|
+
required_response:
|
|
214
|
+
- add or correct aggregate modules before finalization
|
|
215
|
+
- id: DTAPI-P0-PORTS-001
|
|
216
|
+
severity: P0
|
|
217
|
+
title: Ports must have correct ownership and explicit symbols.
|
|
218
|
+
applies_to:
|
|
219
|
+
- source
|
|
220
|
+
- validator
|
|
221
|
+
detect:
|
|
222
|
+
- input use-case ports without exported Symbol (e.g., RegisterUseCasePort missing RegisterUseCasePortSymbol)
|
|
223
|
+
- output ports without exported Symbol
|
|
224
|
+
- multiple unrelated use-case ports grouped into one file
|
|
225
|
+
- BO-pattern repository ports placed in domain repository-ports folders
|
|
226
|
+
required_response:
|
|
227
|
+
- split ports by use case or output contract
|
|
228
|
+
- export Symbol plus interface for both input and output ports
|
|
229
|
+
- wire providers through the owning module
|
|
230
|
+
- id: DTAPI-P1-DOMAIN-001
|
|
231
|
+
severity: P1
|
|
232
|
+
title: New domain contexts must follow BO and VO contracts.
|
|
233
|
+
applies_to:
|
|
234
|
+
- source
|
|
235
|
+
- validator
|
|
236
|
+
detect:
|
|
237
|
+
- new contexts using entity-pattern without ADR
|
|
238
|
+
- BO classes missing the expected Foundation business-object shape
|
|
239
|
+
- VO classes missing normalize, isValid, getValue, toString, or equals when applicable
|
|
240
|
+
required_response:
|
|
241
|
+
- align to BO-pattern
|
|
242
|
+
- record ADR for entity-pattern divergence
|
|
243
|
+
- id: DTAPI-P1-RUNTIME-001
|
|
244
|
+
severity: P1
|
|
245
|
+
title: Persistence runtime artifacts must exist when an API claims operational TypeORM compatibility.
|
|
246
|
+
applies_to:
|
|
247
|
+
- source
|
|
248
|
+
- validator
|
|
249
|
+
detect:
|
|
250
|
+
- missing DataSource or TypeORM root config
|
|
251
|
+
- missing migrations for new persistent tables
|
|
252
|
+
- missing database indexes or uniqueness rules required by the domain contract
|
|
253
|
+
required_response:
|
|
254
|
+
- add runtime config and migrations
|
|
255
|
+
- or explicitly select prototype profile
|
|
256
|
+
- id: DTAPI-P1-APPONLY-001
|
|
257
|
+
severity: P1
|
|
258
|
+
title: Application-only contexts (no domain counterpart) require ADR justification.
|
|
259
|
+
applies_to:
|
|
260
|
+
- source
|
|
261
|
+
- validator
|
|
262
|
+
- DEB
|
|
263
|
+
detect:
|
|
264
|
+
- src/application/business/<context>/ exists without src/domain/<context>/
|
|
265
|
+
- new application-only context introduced without ADR in .sdd/core/adrs/
|
|
266
|
+
- application-only context not enumerated in foundation-layout.md §2.1.1
|
|
267
|
+
required_response:
|
|
268
|
+
- record ADR naming the orchestration responsibility and why no domain artifacts are introduced
|
|
269
|
+
- update foundation-layout.md §2.1.1 with the new entry
|
|
270
|
+
- confirm the context is composition, adaptation, or coordination only — not new business invariants
|
|
271
|
+
grandfathered:
|
|
272
|
+
- aws-integrations
|
|
273
|
+
- foundation
|
|
274
|
+
- id: DTAPI-P1-EVIDENCE-001
|
|
275
|
+
severity: P1
|
|
276
|
+
title: Skill evidence must prove semantic conformance, not only skill usage.
|
|
277
|
+
applies_to:
|
|
278
|
+
- FEAT
|
|
279
|
+
- quality
|
|
280
|
+
detect:
|
|
281
|
+
- skill_evidence only states that devtrack-api shaped the work
|
|
282
|
+
- no policy result, package preview, or semantic validation evidence is attached
|
|
283
|
+
required_response:
|
|
284
|
+
- record applied policy id, profile, validation result, and exception status
|
|
285
|
+
- id: DTAPI-P2-LANGUAGE-001
|
|
286
|
+
severity: P2
|
|
287
|
+
title: Bounded-context language and naming must be explicit.
|
|
288
|
+
applies_to:
|
|
289
|
+
- DEB
|
|
290
|
+
- FEAT
|
|
291
|
+
- source
|
|
292
|
+
detect:
|
|
293
|
+
- mixed Portuguese and English context naming without rationale
|
|
294
|
+
- new context name diverges from Foundation naming convention without decision
|
|
295
|
+
required_response:
|
|
296
|
+
- record naming rationale
|
|
297
|
+
- align context names before implementation when possible
|
|
298
|
+
codesdd_validate_drift_map:
|
|
299
|
+
CVD-01:
|
|
300
|
+
observed: Functional API and passing tests did not prove Foundation fidelity.
|
|
301
|
+
mapped_rules:
|
|
302
|
+
- DTAPI-P0-PROFILE-001
|
|
303
|
+
- DTAPI-P1-EVIDENCE-001
|
|
304
|
+
CVD-02:
|
|
305
|
+
observed: Path and suffix checks were weaker than semantic checks.
|
|
306
|
+
mapped_rules:
|
|
307
|
+
- DTAPI-P0-PATH-001
|
|
308
|
+
- DTAPI-P0-IMPORTS-001
|
|
309
|
+
- DTAPI-P0-TYPEORM-001
|
|
310
|
+
- DTAPI-P0-COMPOSITION-001
|
|
311
|
+
CVD-03:
|
|
312
|
+
observed: TypeORM repository names masked in-memory Map implementations.
|
|
313
|
+
mapped_rules:
|
|
314
|
+
- DTAPI-P0-TYPEORM-001
|
|
315
|
+
- DTAPI-P1-RUNTIME-001
|
|
316
|
+
CVD-04:
|
|
317
|
+
observed: Presentation REST module acted as application and infrastructure composition root.
|
|
318
|
+
mapped_rules:
|
|
319
|
+
- DTAPI-P0-COMPOSITION-001
|
|
320
|
+
- DTAPI-P0-MODULES-001
|
|
321
|
+
CVD-05:
|
|
322
|
+
observed: Ports were grouped and lacked symbols.
|
|
323
|
+
mapped_rules:
|
|
324
|
+
- DTAPI-P0-PORTS-001
|
|
325
|
+
CVD-06:
|
|
326
|
+
observed: BO and VO classes were useful but not Foundation-compatible enough.
|
|
327
|
+
mapped_rules:
|
|
328
|
+
- DTAPI-P1-DOMAIN-001
|
|
329
|
+
CVD-07:
|
|
330
|
+
observed: Runtime persistence artifacts such as DataSource, migrations, and TypeORM module wiring were absent.
|
|
331
|
+
mapped_rules:
|
|
332
|
+
- DTAPI-P1-RUNTIME-001
|
|
333
|
+
CVD-08:
|
|
334
|
+
observed: Skill evidence was declarative, not executable.
|
|
335
|
+
mapped_rules:
|
|
336
|
+
- DTAPI-P1-EVIDENCE-001
|
|
337
|
+
CVD-09:
|
|
338
|
+
observed: Application-only contexts (e.g., aws-integrations, foundation) existed in src/application/business without domain counterparts and without explicit governance, producing false-positive drift in path validators.
|
|
339
|
+
mapped_rules:
|
|
340
|
+
- DTAPI-P1-APPONLY-001
|
|
341
|
+
- DTAPI-P0-PATH-001
|
|
342
|
+
field_evidence_drift_map:
|
|
343
|
+
WCA-01:
|
|
344
|
+
observed: A derived API planned/implemented before devtrack-api became required evidence, then required a later corrective FEAT.
|
|
345
|
+
mapped_rules:
|
|
346
|
+
- DTAPI-P0-PROFILE-001
|
|
347
|
+
- DTAPI-P1-EVIDENCE-001
|
|
348
|
+
WCA-02:
|
|
349
|
+
observed: A derived API used relative imports and lacked Foundation-compatible tsconfig alias paths.
|
|
350
|
+
mapped_rules:
|
|
351
|
+
- DTAPI-P0-IMPORTS-001
|
|
352
|
+
WCA-03:
|
|
353
|
+
observed: A derived API used TypeORM repositories without the Foundation auth module idiom of TypeOrmModule.forFeature and InjectRepository where applicable.
|
|
354
|
+
mapped_rules:
|
|
355
|
+
- DTAPI-P0-TYPEORM-001
|
|
356
|
+
- DTAPI-P1-RUNTIME-001
|
|
357
|
+
early_debate_gate:
|
|
358
|
+
applies_to: first two or three DEBs that plan a new devtrack-api project or major API theme
|
|
359
|
+
required_outputs:
|
|
360
|
+
- selected derivation profile
|
|
361
|
+
- package structure preview
|
|
362
|
+
- human approval or correction
|
|
363
|
+
- exception list with ADR refs when applicable
|
|
364
|
+
- policy pool seed derived from this contract pack
|
|
365
|
+
future_consumers:
|
|
366
|
+
- FEAT-0233 package preview gate
|
|
367
|
+
- FEAT-0234 project-local skill policy pool
|
|
368
|
+
- FEAT-0235 active FEAT workspace policy injection
|
|
369
|
+
- FEAT-0236 semantic architecture validator
|
|
370
|
+
- FEAT-0237 finalize lifecycle gate
|
|
371
|
+
- FEAT-0238 skill provenance and applied-policy evidence
|
|
372
|
+
- FEAT-0239 future field validation protocol
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Domain Intent
|
|
4
4
|
|
|
5
|
-
Domain code expresses business language, invariants, state transitions
|
|
5
|
+
Domain code expresses business language, invariants, and state transitions. It must remain framework-free and portable.
|
|
6
6
|
|
|
7
7
|
Domain is the last place where business truth should be guessed. When a rule is unclear, inspect existing domain objects, tests, use cases, and SDD context before adding a new invariant.
|
|
8
8
|
|
|
@@ -14,14 +14,10 @@ Use these folders by intent:
|
|
|
14
14
|
src/domain/<context>/types
|
|
15
15
|
src/domain/<context>/business-objects
|
|
16
16
|
src/domain/<context>/value-objects
|
|
17
|
-
src/domain/<context>/entities
|
|
18
|
-
src/domain/<context>/validators
|
|
19
|
-
src/domain/<context>/events
|
|
20
|
-
src/domain/<context>/repository-ports
|
|
21
17
|
src/domain/<context>/constants
|
|
22
18
|
```
|
|
23
19
|
|
|
24
|
-
Use `business-objects/` and `value-objects/` for new canonical aggregate work
|
|
20
|
+
Use `business-objects/` and `value-objects/` for new canonical aggregate work. Use `entities/`, `validators/`, `events/`, and `repository-ports/` only when extending a context that already uses the legacy entity-pattern, currently `pessoas` or `wallets`.
|
|
25
21
|
|
|
26
22
|
Do not create domain folders for transport, database, provider, prompt, SDK, queue, cache, HTTP, or UI concerns.
|
|
27
23
|
|
|
@@ -31,7 +27,7 @@ Before adding a domain artifact, decide:
|
|
|
31
27
|
|
|
32
28
|
- Is this a durable business concept or just transport/persistence shape?
|
|
33
29
|
- Does it own invariants or only type information?
|
|
34
|
-
- Is it
|
|
30
|
+
- Is it a business object, value object, type, constant, or an ADR-backed extension to a legacy entity-pattern context?
|
|
35
31
|
- Does existing domain language already cover it?
|
|
36
32
|
- Which tests should prove normalization, invalid paths, and immutability?
|
|
37
33
|
|
|
@@ -291,16 +287,18 @@ export class PessoaValidator {
|
|
|
291
287
|
}
|
|
292
288
|
```
|
|
293
289
|
|
|
294
|
-
Presentation validators must not replace domain
|
|
290
|
+
Presentation validators must not replace domain invariants. Presentation validates request shape; BO-pattern contexts validate inside BOs and VOs. Domain validators are limited to existing entity-pattern contexts.
|
|
295
291
|
|
|
296
292
|
## Repository Ports
|
|
297
293
|
|
|
298
|
-
|
|
294
|
+
For BO-pattern contexts, repository ports belong in application `ports/out`:
|
|
299
295
|
|
|
300
296
|
```text
|
|
301
|
-
src/
|
|
297
|
+
src/application/business/<context>/ports/out/<name>-repository.port.ts
|
|
302
298
|
```
|
|
303
299
|
|
|
300
|
+
Domain `repository-ports/` exists only when extending the closed legacy entity-pattern contexts already present in Foundation (`pessoas`, `wallets`).
|
|
301
|
+
|
|
304
302
|
Pattern:
|
|
305
303
|
|
|
306
304
|
```ts
|
|
@@ -319,17 +317,19 @@ Rules:
|
|
|
319
317
|
- Export a `Symbol` and an interface.
|
|
320
318
|
- Return domain objects, not ORM entities.
|
|
321
319
|
- Keep persistence technology out of the port name, except implementation names in infrastructure.
|
|
322
|
-
-
|
|
323
|
-
- Do not expose query builders, transactions, connection objects, ORM entities, or provider SDK types through
|
|
320
|
+
- For BO-pattern contexts, this port is an application outbound port even when it returns a domain BO.
|
|
321
|
+
- Do not expose query builders, transactions, connection objects, ORM entities, or provider SDK types through ports.
|
|
324
322
|
|
|
325
323
|
## Domain Events
|
|
326
324
|
|
|
327
|
-
Use domain events for business facts:
|
|
325
|
+
Use domain events for business facts only when extending an existing entity-pattern context:
|
|
328
326
|
|
|
329
327
|
```text
|
|
330
328
|
src/domain/<context>/events/<name>-created.event.ts
|
|
331
329
|
```
|
|
332
330
|
|
|
331
|
+
For BO-pattern contexts, emit integration or domain-like events from application handlers unless an ADR deliberately extends the pattern.
|
|
332
|
+
|
|
333
333
|
Keep events serializable and framework-free:
|
|
334
334
|
|
|
335
335
|
```ts
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# devtrack-api Field Validation Protocol
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
|
|
5
|
+
This protocol defines the minimum field evidence required before CodeSDD treats the reformed `devtrack-api` skill as proven in a real consumer project.
|
|
6
|
+
|
|
7
|
+
Field evidence belongs in the consumer project's own CodeSDD quality ledger or handoff. CodeSDD may keep the protocol, a summary, and an external reference, but it must not copy private consumer artifacts into this repository.
|
|
8
|
+
|
|
9
|
+
## Minimum Validation Target
|
|
10
|
+
|
|
11
|
+
A valid field-validation packet must cover:
|
|
12
|
+
|
|
13
|
+
- at least one derived consumer project using the reformed `devtrack-api` skill;
|
|
14
|
+
- at least two consumer `DEB-*` artifacts with detailed implementation plan tables;
|
|
15
|
+
- the CodeSDD commit or release that supplied the consumer skill copy;
|
|
16
|
+
- the Foundation checkout path, commit, or release used as architectural evidence when available;
|
|
17
|
+
- sync evidence from [consumer-sync-policy.md](consumer-sync-policy.md);
|
|
18
|
+
- selected derivation profile and applied policy evidence from [contract-pack.yaml](contract-pack.yaml);
|
|
19
|
+
- a divergence matrix showing D-01 through D-08 closed for each validated debate.
|
|
20
|
+
|
|
21
|
+
## Divergence Classes
|
|
22
|
+
|
|
23
|
+
| Class | Field check | Closed when |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| D-01 | New non-legacy domain contexts avoid `entities/` and use `business-objects/*.bo.ts`. | The debate maps each new BO-pattern context to `src/domain/<context>/business-objects/<name>.bo.ts`, or cites an ADR for entity-pattern divergence. |
|
|
26
|
+
| D-02 | Domain exceptions are not invented per context. | The debate uses `src/shared/domain/exceptions/` or records an ADR-backed exception. |
|
|
27
|
+
| D-03 | Value objects use the `.vo.ts` suffix. | The debate uses `<name>.vo.ts` and contains no `.value-object.ts` plan entries. |
|
|
28
|
+
| D-04 | TypeORM persistence stays under centralized `src/infrastructure/adapters/orm/`. | Entities use `*.orm-entity.ts`, repositories use the ORM repository folder, and no `src/infrastructure/<context>/persistence/typeorm/` path remains. |
|
|
29
|
+
| D-05 | Infrastructure repositories use explicit TypeORM repository names. | Concrete repositories use `<name>.typeorm-repository.ts`; ambiguous `<name>.repository.ts` entries are absent or justified by ADR. |
|
|
30
|
+
| D-06 | BO-pattern repository ports live in application `ports/out/`. | New BO-pattern contexts do not add `domain/<context>/repository-ports/`; application outbound ports are listed instead. |
|
|
31
|
+
| D-07 | Presentation is segmented by transport before context. | REST plans use `src/presentation/rest/<context>/...` or another explicit transport folder. |
|
|
32
|
+
| D-08 | Infrastructure adapters are organized by subsystem, not business context. | Plans use `src/infrastructure/adapters/<subsystem>/...`; no `src/infrastructure/<context>/adapters/` entries remain. |
|
|
33
|
+
|
|
34
|
+
## Required Consumer Evidence
|
|
35
|
+
|
|
36
|
+
For each validated consumer debate, record:
|
|
37
|
+
|
|
38
|
+
1. consumer project id and repository reference;
|
|
39
|
+
2. debate id and title;
|
|
40
|
+
3. whether the debate was created or revised after the reformed `devtrack-api` skill was synchronized;
|
|
41
|
+
4. path inventory or implementation table location;
|
|
42
|
+
5. D-01 through D-08 status, using only `closed`, `not_applicable`, or `accepted_exception`;
|
|
43
|
+
6. ADR reference for every `accepted_exception`;
|
|
44
|
+
7. validation commands and outcomes from the consumer project, including `codesdd sdd check --render`, `codesdd sdd diagnose`, and relevant backend tests/build commands;
|
|
45
|
+
8. quality-ledger or handoff reference where the evidence lives.
|
|
46
|
+
|
|
47
|
+
Do not mark field validation complete when any D-class is `open`, undocumented, or only verbally accepted.
|
|
48
|
+
|
|
49
|
+
## Consumer Packet Template
|
|
50
|
+
|
|
51
|
+
```yaml
|
|
52
|
+
devtrack_api_field_validation:
|
|
53
|
+
protocol: devtrack-api-field-validation-v1
|
|
54
|
+
consumer_project: "<project-id>"
|
|
55
|
+
consumer_repo_ref: "<path-or-remote-ref>"
|
|
56
|
+
codesdd_source_ref: "<commit-or-release>"
|
|
57
|
+
foundation_source_ref: "<path-commit-or-release>"
|
|
58
|
+
sync_evidence_ref: "<consumer-quality-or-handoff-ref>"
|
|
59
|
+
debates:
|
|
60
|
+
- debate_ref: "DEB-####"
|
|
61
|
+
title: "<debate title>"
|
|
62
|
+
plan_table_ref: "<file#section-or-line>"
|
|
63
|
+
statuses:
|
|
64
|
+
D-01: closed
|
|
65
|
+
D-02: closed
|
|
66
|
+
D-03: closed
|
|
67
|
+
D-04: closed
|
|
68
|
+
D-05: closed
|
|
69
|
+
D-06: closed
|
|
70
|
+
D-07: closed
|
|
71
|
+
D-08: closed
|
|
72
|
+
accepted_exception_refs: []
|
|
73
|
+
validation_commands:
|
|
74
|
+
- command: "codesdd sdd check --render"
|
|
75
|
+
result: "pass"
|
|
76
|
+
- command: "codesdd sdd diagnose"
|
|
77
|
+
result: "pass"
|
|
78
|
+
applied_contract:
|
|
79
|
+
contract_pack_ref: "references/contract-pack.yaml"
|
|
80
|
+
profile: "foundation-compatible"
|
|
81
|
+
open_policy_findings: []
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## CodeSDD Closure Rule
|
|
85
|
+
|
|
86
|
+
CodeSDD may close the field-validation expectation only when:
|
|
87
|
+
|
|
88
|
+
- the consumer packet references at least two detailed debates;
|
|
89
|
+
- all D-01 through D-08 rows are `closed`, `not_applicable`, or `accepted_exception`;
|
|
90
|
+
- every accepted exception has an ADR or explicit consumer SDD decision;
|
|
91
|
+
- the consumer packet records sync-policy evidence;
|
|
92
|
+
- the consumer packet records the selected derivation profile and applied contract-pack evidence;
|
|
93
|
+
- the evidence remains in the consumer repository, with only a summary and reference retained here.
|
|
94
|
+
|
|
95
|
+
If this evidence is not yet available, CodeSDD should keep a follow-up SDD item or formal exception instead of claiming field adoption is proven.
|