@devtrack-solution/codesdd 1.2.2 → 1.2.3
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 +160 -28
- package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +1 -1
- 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 +317 -0
- package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +95 -0
- package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +295 -0
- package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +4 -4
- package/.sdd/skills/curated/devtrack-api/references/imports-lint.md +4 -0
- package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +2 -2
- package/LICENSE +1 -1
- package/README.md +243 -51
- package/bin/codesdd.js +3 -2
- 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 +159 -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 +147 -16
- package/dist/commands/sdd/plugin.d.ts +3 -0
- package/dist/commands/sdd/plugin.js +153 -0
- package/dist/commands/sdd/shared.js +2 -23
- package/dist/commands/sdd/skills.js +7 -0
- package/dist/commands/sdd.js +69 -12
- 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 +10 -1
- package/dist/core/cli-command-quality.d.ts +27 -0
- package/dist/core/cli-command-quality.js +171 -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 +155 -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 +3 -1
- package/dist/core/config-schema.js +26 -1
- package/dist/core/config.d.ts +3 -3
- package/dist/core/config.js +4 -4
- package/dist/core/global-config.d.ts +41 -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/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 +42 -0
- package/dist/core/sdd/check.js +22 -22
- 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 +38 -0
- package/dist/core/sdd/coordination/coordination-adapters.js +139 -1
- package/dist/core/sdd/deepagent-contracts.d.ts +276 -0
- package/dist/core/sdd/deepagent-contracts.js +173 -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 +2 -2
- package/dist/core/sdd/default-bootstrap-files.js +36 -2
- package/dist/core/sdd/default-skills.d.ts +30 -0
- package/dist/core/sdd/default-skills.js +181 -5
- package/dist/core/sdd/devtrack-api-appliance.d.ts +84 -0
- package/dist/core/sdd/devtrack-api-appliance.js +257 -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 +33 -5
- 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/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/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/json-schema.js +100 -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 +431 -43
- package/dist/core/sdd/lenses.d.ts +1 -0
- package/dist/core/sdd/lenses.js +29 -1
- package/dist/core/sdd/migrate-workspace.js +56 -2
- package/dist/core/sdd/migrate.d.ts +1 -1
- package/dist/core/sdd/migrate.js +36 -2
- package/dist/core/sdd/package-structure-gate.d.ts +83 -0
- package/dist/core/sdd/package-structure-gate.js +362 -0
- package/dist/core/sdd/parallel-feat-automation.d.ts +152 -0
- package/dist/core/sdd/parallel-feat-automation.js +212 -0
- package/dist/core/sdd/plugin-broker.d.ts +558 -0
- package/dist/core/sdd/plugin-broker.js +482 -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 +109 -0
- package/dist/core/sdd/plugin-cli.js +198 -0
- package/dist/core/sdd/plugin-evidence.d.ts +275 -0
- package/dist/core/sdd/plugin-evidence.js +307 -0
- package/dist/core/sdd/plugin-manifest.d.ts +164 -0
- package/dist/core/sdd/plugin-manifest.js +215 -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 +311 -0
- package/dist/core/sdd/plugin-registry.js +138 -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 +547 -0
- package/dist/core/sdd/quality-validation.js +239 -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/sanitize.d.ts +30 -1
- package/dist/core/sdd/sanitize.js +23 -23
- package/dist/core/sdd/services/agent-run.service.d.ts +65 -0
- package/dist/core/sdd/services/agent-run.service.js +189 -0
- package/dist/core/sdd/services/breakdown.service.js +2 -1
- package/dist/core/sdd/services/context.service.js +18 -16
- 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 +80 -0
- package/dist/core/sdd/services/finalize.service.js +323 -24
- package/dist/core/sdd/services/frontend-gap.service.js +22 -7
- 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/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 +22 -0
- package/dist/core/sdd/state.js +66 -41
- package/dist/core/sdd/structural-health.d.ts +42 -42
- package/dist/core/sdd/types.d.ts +33 -7
- package/dist/core/sdd/types.js +17 -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/workspace-schemas.d.ts +285 -14
- package/dist/core/sdd/workspace-schemas.js +148 -0
- 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/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 +27 -17
- package/schemas/sdd/1-spec.schema.json +1 -1
- package/schemas/sdd/2-plan.schema.json +73 -1
- 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 +442 -2
- 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/backlog-projection-plan.schema.json +180 -0
- package/schemas/sdd/backlog-provider-contract.schema.json +260 -0
- package/schemas/sdd/codesdd-plugin.schema.json +474 -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 +321 -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 +215 -0
- package/schemas/sdd/parallel-feat-automation-request.schema.json +109 -0
- package/schemas/sdd/plugin-artifact-manifest.schema.json +150 -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 +569 -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 +558 -0
- package/schemas/sdd/plugin-rollback-manifest.schema.json +87 -0
- package/schemas/sdd/plugin-runtime-invocation-plan.schema.json +845 -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 +1228 -0
- package/schemas/sdd/quality-run.schema.json +197 -0
- package/schemas/sdd/quality-scenario.schema.json +252 -0
- package/schemas/sdd/workspace-catalog.schema.json +9841 -22
- 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,295 @@
|
|
|
1
|
+
# Foundation Layout — Canonical Ground Truth
|
|
2
|
+
|
|
3
|
+
This reference is the **authoritative physical layout** of `devtrack-foundation-api`. It is the ground truth that every implementation plan, debate, ADR, and code change for the Foundation or any derived API must respect. The skill's "Canonical Paths" and "Forbidden Patterns" sections in `SKILL.md` are summaries of this document; when they conflict (they should not), this document wins.
|
|
4
|
+
|
|
5
|
+
This is not a style guide. It is an inventory of what Foundation actually does, derived from `/Volumes/WORKSPACE/DEVTRACK_TOOLS/devtrack-foundation-api/src/`. When you propose a path that diverges from this layout, you are proposing to fork the contract — which requires an explicit ADR, not a guess.
|
|
6
|
+
|
|
7
|
+
## How To Use This Reference
|
|
8
|
+
|
|
9
|
+
- Load it before producing **any** debate, plan, or code change that introduces new files.
|
|
10
|
+
- For every proposed path, perform a literal lookup in the tables below. If the pattern is not present, the path is forbidden.
|
|
11
|
+
- For every new domain context, decide BO-pattern vs. entity-pattern using the rule in section 2 before drafting the plan.
|
|
12
|
+
- For every ADR that introduces a deliberate divergence from this layout, record the deviation, the justification, and the migration path back to the canonical layout (if any).
|
|
13
|
+
|
|
14
|
+
## 1. Top-Level Tree
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
src/
|
|
18
|
+
├── application/
|
|
19
|
+
│ └── business/<context>/
|
|
20
|
+
├── domain/
|
|
21
|
+
│ ├── <context>/ (per business context)
|
|
22
|
+
│ └── ...
|
|
23
|
+
├── infrastructure/
|
|
24
|
+
│ ├── adapters/<subsystem>/ (centralized by subsystem)
|
|
25
|
+
│ ├── settings/
|
|
26
|
+
│ └── infrastructure.module.ts
|
|
27
|
+
├── presentation/
|
|
28
|
+
│ └── <transport>/<context>/ (transport before context)
|
|
29
|
+
├── shared/
|
|
30
|
+
│ ├── domain/
|
|
31
|
+
│ ├── infrastructure/
|
|
32
|
+
│ ├── presentation/
|
|
33
|
+
│ └── agent/
|
|
34
|
+
├── app.module.ts
|
|
35
|
+
├── main.ts
|
|
36
|
+
└── schema.gql
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 2. Domain — Two Coexisting Patterns
|
|
40
|
+
|
|
41
|
+
Domain contexts use exactly one of two patterns. There is no third pattern. The choice is observable from the physical folder layout in `src/domain/<context>/`.
|
|
42
|
+
|
|
43
|
+
### 2.1 BO-pattern (canonical default for new contexts)
|
|
44
|
+
|
|
45
|
+
Folders allowed:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
src/domain/<context>/business-objects/<name>.bo.ts
|
|
49
|
+
src/domain/<context>/value-objects/<name>.vo.ts (optional, present only when context defines its own VOs)
|
|
50
|
+
src/domain/<context>/types/<name>.type.ts
|
|
51
|
+
src/domain/<context>/constants/<name>.const.ts (optional)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Folders forbidden in BO-pattern:
|
|
55
|
+
|
|
56
|
+
- `entities/` — would conflate the pattern with legacy entity-pattern.
|
|
57
|
+
- `repository-ports/` — repository ports for BO-pattern live in **application** (`ports/out/`).
|
|
58
|
+
- `events/` — emit domain events from application use cases, not domain artifacts, when the context is BO-pattern. Foundation emits events from application handlers.
|
|
59
|
+
- `validators/` — present only in legacy entity-pattern; BO-pattern validates inside the BO (`validate()` method).
|
|
60
|
+
|
|
61
|
+
Contexts currently using BO-pattern in Foundation:
|
|
62
|
+
|
|
63
|
+
| Context | Path | Notes |
|
|
64
|
+
|---|---|---|
|
|
65
|
+
| `auth` | `src/domain/auth/` | `business-objects/auth-user.bo.ts`, `business-objects/api-keys.bo.ts`, `types/`. **No** `entities/`, **no** `repository-ports/`. |
|
|
66
|
+
| `files` | `src/domain/files/` | `business-objects/`, `types/`. |
|
|
67
|
+
| `integrations` | `src/domain/integrations/` | `business-objects/`, `types/`. |
|
|
68
|
+
| `intelligence` | `src/domain/intelligence/` | `business-objects/`, `value-objects/`, `types/`. The only BO-pattern context with its own `value-objects/`. **Status:** the domain folder is currently a BO/VO shell — the active intelligence runtime lives in `src/application/intelligence/*` (`conversation`, `course-agents`, `report-chat`) and does not import the domain shell. Keep the shell as an expansion-ready surface; do not delete, but do not assume runtime coupling. |
|
|
69
|
+
| `knowledge` | `src/domain/knowledge/` | `business-objects/`, `types/`. |
|
|
70
|
+
| `notifications` | `src/domain/notifications/` | `constants/`, `types/`. No BO yet, but follows BO-pattern shape. |
|
|
71
|
+
|
|
72
|
+
### 2.2 Entity-pattern (legacy — extension only)
|
|
73
|
+
|
|
74
|
+
Folders allowed:
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
src/domain/<context>/entities/<name>.entity.ts
|
|
78
|
+
src/domain/<context>/repository-ports/<name>-repository.port.ts
|
|
79
|
+
src/domain/<context>/validators/<name>.validator.ts
|
|
80
|
+
src/domain/<context>/events/<name>-<event>.event.ts (optional)
|
|
81
|
+
src/domain/<context>/types/<name>.type.ts
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Contexts currently using entity-pattern in Foundation:
|
|
85
|
+
|
|
86
|
+
| Context | Path | Notes |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| `pessoas` | `src/domain/pessoas/` | Full entity-pattern: `entities/pessoa.entity.ts`, `repository-ports/pessoa-repository.port.ts`, `validators/`, `events/pessoa-created.event.ts`, `types/`. |
|
|
89
|
+
| `wallets` | `src/domain/wallets/` | `entities/wallet.entity.ts`, `repository-ports/wallet-repository.port.ts`, `validators/`, `types/`. No `events/`. |
|
|
90
|
+
|
|
91
|
+
The legacy set is closed. Do not add new contexts to it without an ADR.
|
|
92
|
+
|
|
93
|
+
### 2.3 Application-only contexts (no domain counterpart)
|
|
94
|
+
|
|
95
|
+
Foundation also ships application contexts that legitimately have **no
|
|
96
|
+
`src/domain/<context>/` counterpart** because their work is composition,
|
|
97
|
+
adaptation, or coordination — not new business invariants. The currently
|
|
98
|
+
allowed application-only contexts are:
|
|
99
|
+
|
|
100
|
+
| Application path | Reason no domain |
|
|
101
|
+
|---|---|
|
|
102
|
+
| `src/application/business/aws-integrations/` | Orchestrates AWS adapter wiring across infrastructure subsystems; the invariants live in the AWS adapters themselves under `src/infrastructure/adapters/aws/*`. |
|
|
103
|
+
| `src/application/business/foundation/` | Composition root for Foundation-wide use-cases shared by other contexts; does not introduce its own bounded-context vocabulary. |
|
|
104
|
+
|
|
105
|
+
Adding a new application-only context is **not free**: it requires an ADR
|
|
106
|
+
that names the orchestration responsibility and explains why no domain
|
|
107
|
+
artifacts are introduced. The validator rule covering this case is
|
|
108
|
+
`DTAPI-P1-APPONLY-001` (see [contract-pack.yaml](contract-pack.yaml)).
|
|
109
|
+
|
|
110
|
+
### 2.4 Decision Rule (summary)
|
|
111
|
+
|
|
112
|
+
- New domain context → BO-pattern. Always.
|
|
113
|
+
- Extending `pessoas` or `wallets` → entity-pattern. Match what is already there.
|
|
114
|
+
- New application context without domain artifacts → forbidden unless ADR-justified per `DTAPI-P1-APPONLY-001`.
|
|
115
|
+
- Anything else → forbidden until an ADR justifies the deviation.
|
|
116
|
+
|
|
117
|
+
## 3. Shared Domain (Centralized Primitives)
|
|
118
|
+
|
|
119
|
+
`src/shared/domain/` holds primitives reused across contexts. Never duplicate these per-context.
|
|
120
|
+
|
|
121
|
+
```text
|
|
122
|
+
src/shared/domain/exceptions/business-validation.exception.ts
|
|
123
|
+
src/shared/domain/exceptions/entity-not-found.exception.ts
|
|
124
|
+
src/shared/domain/exceptions/duplicate-entity.exception.ts
|
|
125
|
+
src/shared/domain/value-objects/email.vo.ts
|
|
126
|
+
src/shared/domain/value-objects/telefone.vo.ts
|
|
127
|
+
src/shared/domain/validators/...
|
|
128
|
+
src/shared/domain/types/...
|
|
129
|
+
src/shared/domain/generic-business-object.ts
|
|
130
|
+
src/shared/domain/generic.validator.ts
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
The alias `@domain/*` resolves to **both** `src/domain/*` and `src/shared/domain/*` (tsconfig `paths`). That is why `import { BusinessValidationException } from '@domain/exceptions/business-validation.exception'` works even though the file physically lives under `src/shared/domain/exceptions/`. Do not interpret this as a license to create `src/domain/<context>/exceptions/` — the resolution is convenience, not permission.
|
|
134
|
+
|
|
135
|
+
**Domain exceptions are centralized in `src/shared/domain/exceptions/`. Period.** Context-specific exception names (`InvalidCredentialsException`, `TokenExpiredException`) belong nowhere in domain; if you need such precision, throw `BusinessValidationException` with a context-specific message payload, or model the failure as a return type from the use case.
|
|
136
|
+
|
|
137
|
+
## 4. Application
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
src/application/business/<context>/use-cases/<verb-noun>.use-case.ts
|
|
141
|
+
src/application/business/<context>/ports/in/<verb-noun>.use-case.port.ts
|
|
142
|
+
src/application/business/<context>/ports/out/<name>.port.ts
|
|
143
|
+
src/application/business/<context>/ports/out/<name>-repository.port.ts (BO-pattern only)
|
|
144
|
+
src/application/business/<context>/services/<name>.service.ts
|
|
145
|
+
src/application/business/<context>/handlers/<name>.handler.ts
|
|
146
|
+
src/application/business/<context>/<context>.application.module.ts
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Repository ports for BO-pattern contexts live here, not in domain. Example: `src/application/business/auth/ports/out/user-repository.port.ts`, `api-key-repository.port.ts`, `role-repository.port.ts`.
|
|
150
|
+
|
|
151
|
+
Service ports (collaborator interfaces that are not repositories) also live in `ports/out/`. Example: `password-hash.service.port.ts`, `access-control.service.port.ts`, `api-key.service.port.ts`.
|
|
152
|
+
|
|
153
|
+
Use case ports (entry points to the application from presentation) live in `ports/in/`. One port per use case.
|
|
154
|
+
|
|
155
|
+
### 4.1 Intelligence Modules
|
|
156
|
+
|
|
157
|
+
Foundation also has application-layer intelligence modules. They are canonical application modules, not an exception to the layer model.
|
|
158
|
+
|
|
159
|
+
```text
|
|
160
|
+
src/application/intelligence/<context>/use-cases/<verb-noun>.use-case.ts
|
|
161
|
+
src/application/intelligence/<context>/ports/in/<verb-noun>.use-case.port.ts
|
|
162
|
+
src/application/intelligence/<context>/ports/out/<name>.port.ts
|
|
163
|
+
src/application/intelligence/<context>/services/<name>.service.ts
|
|
164
|
+
src/application/intelligence/<context>/handlers/<name>.handler.ts
|
|
165
|
+
src/application/intelligence/<context>/agents/<name>.agent.ts
|
|
166
|
+
src/application/intelligence/<context>/tools/<name>.tool.ts
|
|
167
|
+
src/application/intelligence/common/agent-runtime/<name>.ts
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Observed intelligence contexts in Foundation: `common`, `conversation`, `course-agents`, `report-chat`.
|
|
171
|
+
|
|
172
|
+
Provider-specific SDKs, credentials, retries, and transport details stay in infrastructure adapters. Intelligence application code owns provider-neutral ports, use cases, tool orchestration, and conversation semantics.
|
|
173
|
+
|
|
174
|
+
## 5. Infrastructure (Centralized by Subsystem)
|
|
175
|
+
|
|
176
|
+
Infrastructure is segmented by **subsystem**, never by business context. A subsystem is a category of external concern (persistence, cache, queue, AWS, LLM, etc.), independent of which business contexts use it.
|
|
177
|
+
|
|
178
|
+
```text
|
|
179
|
+
src/infrastructure/adapters/<subsystem>/<name>.adapter.ts
|
|
180
|
+
src/infrastructure/adapters/<subsystem>/<subsystem>.module.ts
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Observed subsystems in Foundation (closed set; new subsystems require ADR):
|
|
184
|
+
|
|
185
|
+
| Subsystem | Path | Purpose |
|
|
186
|
+
|---|---|---|
|
|
187
|
+
| `auth` | `src/infrastructure/adapters/auth/` | JWT, password hashing, API key signing. |
|
|
188
|
+
| `aws` | `src/infrastructure/adapters/aws/` | S3, Cognito, SES, SNS, SQS clients. |
|
|
189
|
+
| `cache` | `src/infrastructure/adapters/cache/` | Redis cache adapters. |
|
|
190
|
+
| `configuration` | `src/infrastructure/adapters/configuration/` | Settings loaders. |
|
|
191
|
+
| `http` | `src/infrastructure/adapters/http/` | Outbound HTTP clients. |
|
|
192
|
+
| `llm` | `src/infrastructure/adapters/llm/` | LLM provider adapters. |
|
|
193
|
+
| `orm` | `src/infrastructure/adapters/orm/` | TypeORM entities, repositories, mappers, migrations. |
|
|
194
|
+
| `queue` | `src/infrastructure/adapters/queue/` | Queue producers/consumers. |
|
|
195
|
+
| `redis` | `src/infrastructure/adapters/redis/` | Redis raw client. |
|
|
196
|
+
| `sync-engine` | `src/infrastructure/adapters/sync-engine/` | Sync orchestration adapter. |
|
|
197
|
+
| `temporal` | `src/infrastructure/adapters/temporal/` | Temporal workflow adapter. |
|
|
198
|
+
| `vector-store` | `src/infrastructure/adapters/vector-store/` | Vector DB adapters. |
|
|
199
|
+
|
|
200
|
+
### 5.1 TypeORM (subsystem `orm`)
|
|
201
|
+
|
|
202
|
+
Fixed sub-layout — no variation tolerated:
|
|
203
|
+
|
|
204
|
+
```text
|
|
205
|
+
src/infrastructure/adapters/orm/entities/<name>.orm-entity.ts
|
|
206
|
+
src/infrastructure/adapters/orm/repositories/<name>.typeorm-repository.ts
|
|
207
|
+
src/infrastructure/adapters/orm/mappers/<name>.mapper.ts
|
|
208
|
+
src/infrastructure/adapters/orm/migrations/<timestamp>-<action>.migration.ts
|
|
209
|
+
src/infrastructure/adapters/orm/<context>-orm.module.ts
|
|
210
|
+
src/infrastructure/adapters/orm/typeorm.config.ts
|
|
211
|
+
src/infrastructure/adapters/orm/typeorm-cli.datasource.ts
|
|
212
|
+
src/infrastructure/adapters/orm/typeorm.module.ts
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
The `<context>-orm.module.ts` files (e.g., `auth-orm.module.ts`, `pessoas-orm.module.ts`, `wallets-orm.module.ts`, `sync-engine-orm.module.ts`) wire per-context TypeORM artifacts inside the centralized `orm/` folder. Do **not** create `src/infrastructure/<context>/persistence/typeorm/`.
|
|
216
|
+
|
|
217
|
+
### 5.2 Adapter ports (shared)
|
|
218
|
+
|
|
219
|
+
Ports for shared adapters live in `src/shared/infrastructure/adapter/<subsystem>/<name>.port.ts`. Example: `src/shared/infrastructure/adapter/auth/jwt.port.ts`. The alias `@infrastructure/adapter/*` resolves to both `src/shared/infrastructure/adapter/*` and `src/infrastructure/adapters/*`.
|
|
220
|
+
|
|
221
|
+
## 6. Presentation (Transport Before Context)
|
|
222
|
+
|
|
223
|
+
```text
|
|
224
|
+
src/presentation/<transport>/<context>/controllers/<verb-noun>.controller.ts
|
|
225
|
+
src/presentation/<transport>/<context>/dtos/<verb-noun>.dto.ts
|
|
226
|
+
src/presentation/<transport>/<context>/presentation-validators/<verb-noun>.presentation-validator.ts
|
|
227
|
+
src/presentation/<transport>/<context>/guards/<name>.guard.ts
|
|
228
|
+
src/presentation/<transport>/<context>/decorators/<name>.decorator.ts
|
|
229
|
+
src/presentation/<transport>/<context>/<context>.module.ts
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Observed transports in the current Foundation tree: `rest/`, `graphql/`, `cli/`, `websocket/`. `agent/` follows the same transport-before-context shape when a derived API explicitly introduces that transport.
|
|
233
|
+
|
|
234
|
+
REST `dtos/` are Foundation-compatible presentation contracts. Keep DTOs thin and transport-scoped; validation, mapping, and use case orchestration must remain in presentation validators and application.
|
|
235
|
+
|
|
236
|
+
**Never** `src/presentation/<context>/` without a transport segment. Even if a context is REST-only today, the path must be `src/presentation/rest/<context>/` to preserve room for future transports.
|
|
237
|
+
|
|
238
|
+
## 7. Shared Infrastructure And Presentation
|
|
239
|
+
|
|
240
|
+
```text
|
|
241
|
+
src/shared/infrastructure/<subsystem>/...
|
|
242
|
+
src/shared/infrastructure/adapter/<subsystem>/<name>.port.ts
|
|
243
|
+
src/shared/presentation/filters/<name>.filter.ts
|
|
244
|
+
src/shared/presentation/interceptors/<name>.interceptor.ts
|
|
245
|
+
src/shared/presentation/pipes/<name>.pipe.ts
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## 8. TSConfig Aliases (Path Resolution)
|
|
249
|
+
|
|
250
|
+
From `devtrack-foundation-api/tsconfig.json`:
|
|
251
|
+
|
|
252
|
+
| Alias | Resolves to (in order) |
|
|
253
|
+
|---|---|
|
|
254
|
+
| `@application/business/notifications/ports/out/*` | `src/application/business/notifications/ports/out/*` |
|
|
255
|
+
| `@domain/*` | `src/domain/*`, `src/shared/domain/*` |
|
|
256
|
+
| `@application/*` | `src/application/*` |
|
|
257
|
+
| `@presentation/*` | `src/presentation/*`, `src/shared/presentation/*` |
|
|
258
|
+
| `@infrastructure/adapter/*` | `src/shared/infrastructure/adapter/*`, `src/infrastructure/adapters/*` |
|
|
259
|
+
| `@infrastructure/*` | `src/infrastructure/*`, `src/shared/infrastructure/*` |
|
|
260
|
+
| `@shared/*` | `src/shared/*` |
|
|
261
|
+
| `@src/presentation.module` | `src/presentation/presentation.module` |
|
|
262
|
+
| `@src/application.module` | `src/application/application.module` |
|
|
263
|
+
| `@src/*` | `src/*` |
|
|
264
|
+
| `@tests/*` | `tests/*` |
|
|
265
|
+
|
|
266
|
+
Aliases are mandatory in `src/` and tests. Same-folder relative imports are forbidden.
|
|
267
|
+
|
|
268
|
+
## 9. Forbidden Patterns (Quick Reference)
|
|
269
|
+
|
|
270
|
+
| Forbidden | Canonical Replacement |
|
|
271
|
+
|---|---|
|
|
272
|
+
| `src/domain/<context>/exceptions/` | `src/shared/domain/exceptions/` |
|
|
273
|
+
| `<name>.schema.ts` (TypeORM) | `<name>.orm-entity.ts` |
|
|
274
|
+
| `<name>.value-object.ts` | `<name>.vo.ts` |
|
|
275
|
+
| `<name>.repository.ts` | `<name>.typeorm-repository.ts` (infrastructure) or `<name>-repository.port.ts` (port) |
|
|
276
|
+
| `src/infrastructure/<context>/persistence/typeorm/` | `src/infrastructure/adapters/orm/` |
|
|
277
|
+
| `src/infrastructure/<context>/adapters/` | `src/infrastructure/adapters/<subsystem>/` |
|
|
278
|
+
| `src/infrastructure/<context>/repositories/` | `src/infrastructure/adapters/orm/repositories/` |
|
|
279
|
+
| `src/presentation/<context>/` (no transport) | `src/presentation/rest/<context>/` (or other transport) |
|
|
280
|
+
| `entities/` in new domain context | `business-objects/` |
|
|
281
|
+
| `repository-ports/` in new domain context | application `ports/out/<name>-repository.port.ts` |
|
|
282
|
+
| `events/` in BO-pattern domain context | emit from application handlers |
|
|
283
|
+
| Custom domain exception class per context | `BusinessValidationException` from `shared/domain/exceptions` with payload |
|
|
284
|
+
|
|
285
|
+
## 10. Compliance Verification
|
|
286
|
+
|
|
287
|
+
For any debate or plan that proposes new files:
|
|
288
|
+
|
|
289
|
+
1. For each proposed path, perform a literal substring lookup against the patterns in sections 2–6.
|
|
290
|
+
2. If no pattern matches, the path is **non-canonical** and must either:
|
|
291
|
+
- be rewritten to match a canonical pattern, or
|
|
292
|
+
- be accompanied by an ADR justifying the deviation, the migration cost, and the planned re-alignment.
|
|
293
|
+
3. If a new subsystem, transport, or domain context is proposed, list it explicitly in the debate's ADR section.
|
|
294
|
+
|
|
295
|
+
The skill `devtrack-api` is the contract; this reference is the contract's evidence. Drift between this document and `devtrack-foundation-api/src/` is a defect in this document — submit a correction insight before relying on the divergent state.
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
## Before Editing
|
|
4
4
|
|
|
5
5
|
- Read nearest `AGENTS.md` and `AGENT.md`.
|
|
6
|
-
- Run `
|
|
7
|
-
- Run `
|
|
8
|
-
- Run `
|
|
6
|
+
- Run `codesdd sdd onboard system`.
|
|
7
|
+
- Run `codesdd sdd next`.
|
|
8
|
+
- Run `codesdd sdd context <FEAT-ID>` if a feature id is available.
|
|
9
9
|
- Check `git status --short`.
|
|
10
10
|
- Inspect nearby files before creating new patterns.
|
|
11
11
|
- Identify user changes in the dirty worktree and avoid overwriting them.
|
|
12
|
-
- If SDD has no ready feature and work proceeds because the user explicitly requested it, state that exception in the final handoff and create an
|
|
12
|
+
- If SDD has no ready feature and work proceeds because the user explicitly requested it, state that exception in the final handoff and create an CodeSDD insight/feature only when durable follow-up is required.
|
|
13
13
|
- Do not persist planning, backlog, workflow status, project memory, scratchpad, or handoff in external context stores.
|
|
14
14
|
|
|
15
15
|
## Task Understanding
|
|
@@ -23,13 +23,17 @@ Do not claim these commands passed unless they were executed successfully.
|
|
|
23
23
|
Use aliases from `tsconfig.json`:
|
|
24
24
|
|
|
25
25
|
```text
|
|
26
|
+
@application/business/notifications/ports/out/* -> src/application/business/notifications/ports/out/*
|
|
26
27
|
@domain/* -> src/domain/*, src/shared/domain/*
|
|
27
28
|
@application/* -> src/application/*
|
|
28
29
|
@presentation/* -> src/presentation/*, src/shared/presentation/*
|
|
29
30
|
@infrastructure/adapter/* -> src/shared/infrastructure/adapter/*, src/infrastructure/adapters/*
|
|
30
31
|
@infrastructure/* -> src/infrastructure/*, src/shared/infrastructure/*
|
|
31
32
|
@shared/* -> src/shared/*
|
|
33
|
+
@src/presentation.module -> src/presentation/presentation.module
|
|
34
|
+
@src/application.module -> src/application/application.module
|
|
32
35
|
@src/* -> src/*
|
|
36
|
+
@tests/* -> tests/*
|
|
33
37
|
```
|
|
34
38
|
|
|
35
39
|
The lint rule `no-relative-import-paths/no-relative-import-paths` forbids relative imports in `src`, with `allowSameFolder: false`.
|
|
@@ -133,7 +133,7 @@ When an active SDD feature exists and the task is feature completion:
|
|
|
133
133
|
2. Declare frontend impact:
|
|
134
134
|
|
|
135
135
|
```bash
|
|
136
|
-
|
|
136
|
+
codesdd sdd frontend-impact <FEAT-ID> ...
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
3. Update affected docs when behavior or architecture changes:
|
|
@@ -149,7 +149,7 @@ AGENT.md
|
|
|
149
149
|
4. Finalize:
|
|
150
150
|
|
|
151
151
|
```bash
|
|
152
|
-
|
|
152
|
+
codesdd sdd finalize --ref <FEAT-ID>
|
|
153
153
|
```
|
|
154
154
|
|
|
155
155
|
Do not finalize when the user asked only for a narrow code edit and feature archiving is not in scope.
|
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2024-2026
|
|
3
|
+
Copyright (c) 2024-2026 CodeSDD Contributors
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|