@devtrack-solution/codesdd 1.2.4-rc3 → 1.2.4
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/devtrack-api/SKILL.md +91 -12
- package/.sdd/skills/curated/devtrack-api/agents/claude-code.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/agents/codex.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/agents/cursor.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/agents/gemini.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/agents/kimi.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +3 -3
- package/.sdd/skills/curated/devtrack-api/agents/opencode.yaml +2 -0
- package/.sdd/skills/curated/devtrack-api/references/application-presentation.md +59 -3
- package/.sdd/skills/curated/devtrack-api/references/consumer-sync-policy.md +15 -3
- package/.sdd/skills/curated/devtrack-api/references/contract-pack.yaml +1898 -2
- package/.sdd/skills/curated/devtrack-api/references/domain-modeling.md +3 -1
- package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +40 -0
- package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +20 -2
- package/.sdd/skills/curated/devtrack-api/references/generated-artifact-invalidation.md +97 -0
- package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +30 -1
- package/.sdd/skills/curated/devtrack-api/references/portable-agent-contract.md +4 -3
- package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +22 -1
- package/.sdd/skills/curated/devtrack-api/references/typeorm-infrastructure.md +9 -5
- package/README.md +122 -25
- package/dist/cli/program.js +180 -11
- package/dist/commands/config.js +27 -1
- package/dist/commands/sdd/execution.js +64 -2
- package/dist/commands/sdd.js +119 -4
- package/dist/core/cli/command-matrix.d.ts +18 -0
- package/dist/core/cli/command-matrix.js +148 -0
- package/dist/core/cli-command-quality.js +2 -0
- package/dist/core/config-schema.d.ts +14 -1
- package/dist/core/config-schema.js +32 -1
- package/dist/core/config.d.ts +1 -0
- package/dist/core/config.js +11 -0
- package/dist/core/global-config.d.ts +13 -0
- package/dist/core/init.d.ts +2 -2
- package/dist/core/init.js +13 -14
- package/dist/core/sdd/agent-binding.d.ts +9 -9
- package/dist/core/sdd/agent-runtime-contract.d.ts +4 -4
- package/dist/core/sdd/allocator-recovery.d.ts +14 -0
- package/dist/core/sdd/allocator-recovery.js +30 -0
- package/dist/core/sdd/allocator-security.d.ts +18 -0
- package/dist/core/sdd/allocator-security.js +36 -0
- package/dist/core/sdd/api-foundation-baseline.d.ts +111 -0
- package/dist/core/sdd/api-foundation-baseline.js +151 -0
- package/dist/core/sdd/api-foundation-parity.d.ts +114 -0
- package/dist/core/sdd/api-foundation-parity.js +131 -0
- package/dist/core/sdd/api-profile-catalog.d.ts +36 -0
- package/dist/core/sdd/api-profile-catalog.js +132 -0
- package/dist/core/sdd/api-profile-dry-run-projection.d.ts +93 -0
- package/dist/core/sdd/api-profile-dry-run-projection.js +370 -0
- package/dist/core/sdd/api-profile-recipes.d.ts +82 -0
- package/dist/core/sdd/api-profile-recipes.js +484 -0
- package/dist/core/sdd/artifact-id-allocator.d.ts +368 -0
- package/dist/core/sdd/artifact-id-allocator.js +510 -0
- package/dist/core/sdd/check.d.ts +50 -1
- package/dist/core/sdd/check.js +286 -9
- package/dist/core/sdd/deepagent-contracts.d.ts +4 -4
- package/dist/core/sdd/deepagents/reversa-subagents.d.ts +3 -3
- package/dist/core/sdd/default-bootstrap-files.d.ts +1 -1
- package/dist/core/sdd/default-bootstrap-files.js +0 -2
- package/dist/core/sdd/default-skills.js +7 -5
- package/dist/core/sdd/devtrack-api-appliance.d.ts +34 -0
- package/dist/core/sdd/devtrack-api-appliance.js +138 -34
- package/dist/core/sdd/devtrack-api-architecture.d.ts +16 -0
- package/dist/core/sdd/devtrack-api-architecture.js +86 -0
- package/dist/core/sdd/docs-sync.js +3 -3
- package/dist/core/sdd/enterprise-mutating-command-gate.d.ts +27 -0
- package/dist/core/sdd/enterprise-mutating-command-gate.js +104 -0
- package/dist/core/sdd/enterprise-provenance-gates.d.ts +20 -0
- package/dist/core/sdd/enterprise-provenance-gates.js +63 -0
- package/dist/core/sdd/enterprise-provisioning-policy.d.ts +26 -0
- package/dist/core/sdd/enterprise-provisioning-policy.js +104 -0
- package/dist/core/sdd/governance-schemas.d.ts +2 -2
- package/dist/core/sdd/governance-schemas.js +11 -2
- package/dist/core/sdd/json-schema.js +4 -0
- package/dist/core/sdd/legacy-operations.js +93 -4
- package/dist/core/sdd/package-security-gates.js +2 -0
- package/dist/core/sdd/package-structure-gate.d.ts +85 -3
- package/dist/core/sdd/package-structure-gate.js +386 -8
- package/dist/core/sdd/parallel-feat-automation.d.ts +6 -6
- package/dist/core/sdd/plugin-policy.js +6 -1
- package/dist/core/sdd/plugin-registry.d.ts +3 -3
- package/dist/core/sdd/quality-validation.d.ts +5 -5
- package/dist/core/sdd/release-readiness.d.ts +49 -0
- package/dist/core/sdd/release-readiness.js +303 -8
- package/dist/core/sdd/reversa-architecture-extractor.d.ts +13 -0
- package/dist/core/sdd/reversa-architecture-extractor.js +89 -0
- package/dist/core/sdd/reversa-artifact-writer.d.ts +18 -0
- package/dist/core/sdd/reversa-artifact-writer.js +40 -0
- package/dist/core/sdd/reversa-command-policy.d.ts +136 -0
- package/dist/core/sdd/reversa-command-policy.js +361 -0
- package/dist/core/sdd/reversa-data-extractor.d.ts +11 -0
- package/dist/core/sdd/reversa-data-extractor.js +73 -0
- package/dist/core/sdd/reversa-equivalence.d.ts +20 -0
- package/dist/core/sdd/reversa-equivalence.js +34 -0
- package/dist/core/sdd/reversa-evidence.d.ts +298 -0
- package/dist/core/sdd/reversa-evidence.js +118 -0
- package/dist/core/sdd/reversa-reconstruction.d.ts +29 -0
- package/dist/core/sdd/reversa-reconstruction.js +32 -0
- package/dist/core/sdd/reversa-rules-extractor.d.ts +12 -0
- package/dist/core/sdd/reversa-rules-extractor.js +86 -0
- package/dist/core/sdd/reversa-source-safety.d.ts +19 -0
- package/dist/core/sdd/reversa-source-safety.js +105 -0
- package/dist/core/sdd/reversa-surface-scout.d.ts +13 -0
- package/dist/core/sdd/reversa-surface-scout.js +85 -0
- package/dist/core/sdd/reversa-ux-mapper.d.ts +11 -0
- package/dist/core/sdd/reversa-ux-mapper.js +73 -0
- package/dist/core/sdd/sdk-agent-plugin-quality-gates.d.ts +1 -1
- package/dist/core/sdd/services/archive-quality-coherence.service.d.ts +17 -0
- package/dist/core/sdd/services/archive-quality-coherence.service.js +141 -0
- package/dist/core/sdd/services/decide.service.js +1 -1
- package/dist/core/sdd/services/finalize.service.d.ts +2 -0
- package/dist/core/sdd/services/finalize.service.js +48 -2
- package/dist/core/sdd/services/historical-quality-regression.service.d.ts +35 -0
- package/dist/core/sdd/services/historical-quality-regression.service.js +228 -0
- package/dist/core/sdd/services/ingest-deposito.service.js +1 -1
- package/dist/core/sdd/services/planning-execution-coherence.service.d.ts +45 -0
- package/dist/core/sdd/services/planning-execution-coherence.service.js +225 -0
- package/dist/core/sdd/state.js +15 -5
- package/dist/core/sdd/types.d.ts +3 -3
- package/dist/core/sdd/workspace-schemas.d.ts +45 -4
- package/dist/core/sdd/workspace-schemas.js +27 -6
- package/dist/core/shared/skill-generation.d.ts +2 -0
- package/dist/core/shared/skill-generation.js +19 -2
- package/dist/core/shared/tool-detection.d.ts +19 -0
- package/dist/core/shared/tool-detection.js +89 -0
- package/package.json +6 -5
- package/schemas/sdd/5-quality.schema.json +43 -0
- package/schemas/sdd/reversa-evidence-bundle.schema.json +466 -0
- package/schemas/sdd/workspace-catalog.schema.json +511 -0
package/dist/core/init.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Init Command
|
|
3
3
|
*
|
|
4
|
-
* Sets up CodeSDD
|
|
5
|
-
*
|
|
4
|
+
* Sets up CodeSDD agent skills and compatibility slash commands.
|
|
5
|
+
* The canonical project lifecycle lives under .sdd and codesdd sdd commands.
|
|
6
6
|
*/
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import chalk from 'chalk';
|
|
@@ -11,7 +11,7 @@ import * as fs from 'fs';
|
|
|
11
11
|
import { createRequire } from 'module';
|
|
12
12
|
import { FileSystemUtils } from '../utils/file-system.js';
|
|
13
13
|
import { transformToHyphenCommands } from '../utils/command-references.js';
|
|
14
|
-
import { AI_TOOLS, LEGACY_SPEC_DIR_NAME, } from './config.js';
|
|
14
|
+
import { AI_TOOLS, LEGACY_SPEC_DIR_NAME, getToolInstallGuidance, } from './config.js';
|
|
15
15
|
import { isInteractive } from '../utils/interactive.js';
|
|
16
16
|
import { generateCommands, CommandAdapterRegistry, } from './command-generation/index.js';
|
|
17
17
|
import { CLI_ISSUES_URL, CLI_NAME, CLI_PRODUCT_NAME, CLI_REPOSITORY_URL } from './branding.js';
|
|
@@ -515,6 +515,10 @@ export class InitCommand {
|
|
|
515
515
|
if (results.removedSkillCount > 0) {
|
|
516
516
|
this.log(chalk.dim(`Removed: ${results.removedSkillCount} skill directories (delivery: commands)`));
|
|
517
517
|
}
|
|
518
|
+
const toolNotes = getToolInstallGuidance(successfulTools.map((tool) => tool.value));
|
|
519
|
+
for (const note of toolNotes) {
|
|
520
|
+
this.log(chalk.dim(note));
|
|
521
|
+
}
|
|
518
522
|
// Config status
|
|
519
523
|
if (configStatus === 'exists') {
|
|
520
524
|
// Show actual filename (config.yaml or config.yml)
|
|
@@ -528,21 +532,16 @@ export class InitCommand {
|
|
|
528
532
|
else {
|
|
529
533
|
this.log(chalk.dim(`Project config: not created (SDD uses .sdd/config.yaml)`));
|
|
530
534
|
}
|
|
531
|
-
// Getting started
|
|
535
|
+
// Getting started
|
|
532
536
|
const globalCfg = getGlobalConfig();
|
|
533
537
|
const activeProfile = this.profileOverride ?? globalCfg.profile ?? 'core';
|
|
534
538
|
const activeWorkflows = [...getProfileWorkflows(activeProfile, globalCfg.workflows)];
|
|
535
539
|
this.log();
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
this.log(chalk.bold('Getting started:'));
|
|
542
|
-
this.log(' Start your first change: /opsx:new "your idea"');
|
|
543
|
-
}
|
|
544
|
-
else {
|
|
545
|
-
this.log(`Done. Run '${CLI_NAME} config profile' to configure your workflows.`);
|
|
540
|
+
this.log(chalk.bold('Getting started:'));
|
|
541
|
+
this.log(` Full project bootstrap: ${CLI_NAME} install`);
|
|
542
|
+
this.log(` Canonical first change: ${CLI_NAME} sdd insight "your idea"`);
|
|
543
|
+
if (activeWorkflows.includes('propose') || activeWorkflows.includes('new')) {
|
|
544
|
+
this.log(chalk.dim(' Compatibility slash commands were generated for existing workflows; prefer CodeSDD SDD commands in .sdd-native projects.'));
|
|
546
545
|
}
|
|
547
546
|
// Links
|
|
548
547
|
this.log();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
declare const agentProviderSchema: z.ZodEnum<{
|
|
3
|
-
codex: "codex";
|
|
4
3
|
opencode: "opencode";
|
|
4
|
+
codex: "codex";
|
|
5
5
|
deepagents: "deepagents";
|
|
6
6
|
fake: "fake";
|
|
7
7
|
"claude-code": "claude-code";
|
|
@@ -61,8 +61,8 @@ export declare const agentBindingAdapterSchema: z.ZodObject<{
|
|
|
61
61
|
schema_version: z.ZodDefault<z.ZodLiteral<1>>;
|
|
62
62
|
id: z.ZodString;
|
|
63
63
|
provider: z.ZodEnum<{
|
|
64
|
-
codex: "codex";
|
|
65
64
|
opencode: "opencode";
|
|
65
|
+
codex: "codex";
|
|
66
66
|
deepagents: "deepagents";
|
|
67
67
|
fake: "fake";
|
|
68
68
|
"claude-code": "claude-code";
|
|
@@ -148,16 +148,16 @@ export declare const agentBindingResolutionRequestSchema: z.ZodObject<{
|
|
|
148
148
|
"documentation-sync": "documentation-sync";
|
|
149
149
|
}>;
|
|
150
150
|
provider: z.ZodOptional<z.ZodEnum<{
|
|
151
|
-
codex: "codex";
|
|
152
151
|
opencode: "opencode";
|
|
152
|
+
codex: "codex";
|
|
153
153
|
deepagents: "deepagents";
|
|
154
154
|
fake: "fake";
|
|
155
155
|
"claude-code": "claude-code";
|
|
156
156
|
cloudcode: "cloudcode";
|
|
157
157
|
}>>;
|
|
158
158
|
allowed_providers: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
159
|
-
codex: "codex";
|
|
160
159
|
opencode: "opencode";
|
|
160
|
+
codex: "codex";
|
|
161
161
|
deepagents: "deepagents";
|
|
162
162
|
fake: "fake";
|
|
163
163
|
"claude-code": "claude-code";
|
|
@@ -186,8 +186,8 @@ export declare const agentBindingCandidateSchema: z.ZodObject<{
|
|
|
186
186
|
adapter_ref: z.ZodObject<{
|
|
187
187
|
id: z.ZodString;
|
|
188
188
|
provider: z.ZodEnum<{
|
|
189
|
-
codex: "codex";
|
|
190
189
|
opencode: "opencode";
|
|
190
|
+
codex: "codex";
|
|
191
191
|
deepagents: "deepagents";
|
|
192
192
|
fake: "fake";
|
|
193
193
|
"claude-code": "claude-code";
|
|
@@ -231,16 +231,16 @@ export declare const agentBindingResolutionSchema: z.ZodObject<{
|
|
|
231
231
|
"documentation-sync": "documentation-sync";
|
|
232
232
|
}>;
|
|
233
233
|
provider: z.ZodOptional<z.ZodEnum<{
|
|
234
|
-
codex: "codex";
|
|
235
234
|
opencode: "opencode";
|
|
235
|
+
codex: "codex";
|
|
236
236
|
deepagents: "deepagents";
|
|
237
237
|
fake: "fake";
|
|
238
238
|
"claude-code": "claude-code";
|
|
239
239
|
cloudcode: "cloudcode";
|
|
240
240
|
}>>;
|
|
241
241
|
allowed_providers: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
242
|
-
codex: "codex";
|
|
243
242
|
opencode: "opencode";
|
|
243
|
+
codex: "codex";
|
|
244
244
|
deepagents: "deepagents";
|
|
245
245
|
fake: "fake";
|
|
246
246
|
"claude-code": "claude-code";
|
|
@@ -269,8 +269,8 @@ export declare const agentBindingResolutionSchema: z.ZodObject<{
|
|
|
269
269
|
adapter_ref: z.ZodObject<{
|
|
270
270
|
id: z.ZodString;
|
|
271
271
|
provider: z.ZodEnum<{
|
|
272
|
-
codex: "codex";
|
|
273
272
|
opencode: "opencode";
|
|
273
|
+
codex: "codex";
|
|
274
274
|
deepagents: "deepagents";
|
|
275
275
|
fake: "fake";
|
|
276
276
|
"claude-code": "claude-code";
|
|
@@ -296,8 +296,8 @@ export declare const agentBindingResolutionSchema: z.ZodObject<{
|
|
|
296
296
|
adapter_ref: z.ZodObject<{
|
|
297
297
|
id: z.ZodString;
|
|
298
298
|
provider: z.ZodEnum<{
|
|
299
|
-
codex: "codex";
|
|
300
299
|
opencode: "opencode";
|
|
300
|
+
codex: "codex";
|
|
301
301
|
deepagents: "deepagents";
|
|
302
302
|
fake: "fake";
|
|
303
303
|
"claude-code": "claude-code";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const agentRuntimeProviderSchema: z.ZodEnum<{
|
|
3
|
-
codex: "codex";
|
|
4
3
|
opencode: "opencode";
|
|
4
|
+
codex: "codex";
|
|
5
5
|
deepagents: "deepagents";
|
|
6
6
|
}>;
|
|
7
7
|
export declare const agentRuntimeModeSchema: z.ZodEnum<{
|
|
@@ -32,8 +32,8 @@ export declare const agentRuntimeCommandPlanRequestSchema: z.ZodObject<{
|
|
|
32
32
|
schema_version: z.ZodDefault<z.ZodLiteral<1>>;
|
|
33
33
|
feature_ref: z.ZodString;
|
|
34
34
|
provider: z.ZodEnum<{
|
|
35
|
-
codex: "codex";
|
|
36
35
|
opencode: "opencode";
|
|
36
|
+
codex: "codex";
|
|
37
37
|
deepagents: "deepagents";
|
|
38
38
|
}>;
|
|
39
39
|
mode: z.ZodDefault<z.ZodEnum<{
|
|
@@ -73,8 +73,8 @@ export declare const agentRuntimeCommandPlanSchema: z.ZodObject<{
|
|
|
73
73
|
schema_version: z.ZodDefault<z.ZodLiteral<1>>;
|
|
74
74
|
feature_ref: z.ZodString;
|
|
75
75
|
provider: z.ZodEnum<{
|
|
76
|
-
codex: "codex";
|
|
77
76
|
opencode: "opencode";
|
|
77
|
+
codex: "codex";
|
|
78
78
|
deepagents: "deepagents";
|
|
79
79
|
}>;
|
|
80
80
|
mode: z.ZodDefault<z.ZodEnum<{
|
|
@@ -104,8 +104,8 @@ export declare const agentRuntimeCommandPlanSchema: z.ZodObject<{
|
|
|
104
104
|
}>>>;
|
|
105
105
|
}, z.core.$strip>;
|
|
106
106
|
provider: z.ZodEnum<{
|
|
107
|
-
codex: "codex";
|
|
108
107
|
opencode: "opencode";
|
|
108
|
+
codex: "codex";
|
|
109
109
|
deepagents: "deepagents";
|
|
110
110
|
}>;
|
|
111
111
|
command: z.ZodOptional<z.ZodObject<{
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ArtifactIdAllocatorState, ArtifactIdAllocatorType } from './artifact-id-allocator.js';
|
|
2
|
+
export interface AllocatorRecoveryFinding {
|
|
3
|
+
code: 'counter-behind-reservations' | 'branch-lag';
|
|
4
|
+
message: string;
|
|
5
|
+
ref?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface AllocatorRecoveryPlan {
|
|
8
|
+
recovered_counters: Partial<Record<ArtifactIdAllocatorType, number>>;
|
|
9
|
+
findings: AllocatorRecoveryFinding[];
|
|
10
|
+
}
|
|
11
|
+
export declare function buildAllocatorRecoveryPlan(state: ArtifactIdAllocatorState, options?: {
|
|
12
|
+
local_revisions?: Record<string, number>;
|
|
13
|
+
}): AllocatorRecoveryPlan;
|
|
14
|
+
//# sourceMappingURL=allocator-recovery.d.ts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function buildAllocatorRecoveryPlan(state, options = {}) {
|
|
2
|
+
const recovered = { ...state.counters };
|
|
3
|
+
const findings = [];
|
|
4
|
+
for (const reservation of state.reservations) {
|
|
5
|
+
const current = recovered[reservation.artifact_type] ?? 0;
|
|
6
|
+
if (reservation.sequence > current) {
|
|
7
|
+
recovered[reservation.artifact_type] = reservation.sequence;
|
|
8
|
+
findings.push({
|
|
9
|
+
code: 'counter-behind-reservations',
|
|
10
|
+
message: `${reservation.artifact_type} counter recovered from ${current} to ${reservation.sequence}.`,
|
|
11
|
+
ref: reservation.artifact_id,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
for (const [artifactId, remoteRevision] of Object.entries(state.canonical_revisions)) {
|
|
16
|
+
const localRevision = options.local_revisions?.[artifactId] ?? remoteRevision;
|
|
17
|
+
if (localRevision < remoteRevision) {
|
|
18
|
+
findings.push({
|
|
19
|
+
code: 'branch-lag',
|
|
20
|
+
message: `${artifactId} local revision ${localRevision} is behind canonical revision ${remoteRevision}.`,
|
|
21
|
+
ref: artifactId,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
recovered_counters: recovered,
|
|
27
|
+
findings,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=allocator-recovery.js.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ArtifactIdAllocatorState, ArtifactIdAllocatorType } from './artifact-id-allocator.js';
|
|
2
|
+
export interface AllocatorSecurityPolicy {
|
|
3
|
+
max_reservations_per_tenant?: number;
|
|
4
|
+
max_reservations_per_type?: Partial<Record<ArtifactIdAllocatorType, number>>;
|
|
5
|
+
replay_window_ms?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface AllocatorSecurityDecision {
|
|
8
|
+
allowed: boolean;
|
|
9
|
+
code: 'allowed' | 'tenant-quota-exceeded' | 'type-quota-exceeded' | 'replay-window-expired';
|
|
10
|
+
reason: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function evaluateAllocatorSecurityPolicy(state: ArtifactIdAllocatorState, input: {
|
|
13
|
+
tenant_id?: string;
|
|
14
|
+
artifact_type: ArtifactIdAllocatorType;
|
|
15
|
+
idempotency_key: string;
|
|
16
|
+
now: string;
|
|
17
|
+
}, policy: AllocatorSecurityPolicy): AllocatorSecurityDecision;
|
|
18
|
+
//# sourceMappingURL=allocator-security.d.ts.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export function evaluateAllocatorSecurityPolicy(state, input, policy) {
|
|
2
|
+
if (policy.max_reservations_per_tenant !== undefined && input.tenant_id) {
|
|
3
|
+
const tenantReservations = state.reservations.filter((reservation) => reservation.tenant_id === input.tenant_id).length;
|
|
4
|
+
if (tenantReservations >= policy.max_reservations_per_tenant) {
|
|
5
|
+
return {
|
|
6
|
+
allowed: false,
|
|
7
|
+
code: 'tenant-quota-exceeded',
|
|
8
|
+
reason: `Tenant ${input.tenant_id} has reached reservation quota ${policy.max_reservations_per_tenant}.`,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const typeQuota = policy.max_reservations_per_type?.[input.artifact_type];
|
|
13
|
+
if (typeQuota !== undefined && (state.counters[input.artifact_type] ?? 0) >= typeQuota) {
|
|
14
|
+
return {
|
|
15
|
+
allowed: false,
|
|
16
|
+
code: 'type-quota-exceeded',
|
|
17
|
+
reason: `${input.artifact_type} reservation quota ${typeQuota} has been reached.`,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
if (policy.replay_window_ms !== undefined) {
|
|
21
|
+
const existing = state.reservations.find((reservation) => reservation.idempotency_key === input.idempotency_key);
|
|
22
|
+
if (existing && new Date(input.now).getTime() - new Date(existing.reserved_at).getTime() > policy.replay_window_ms) {
|
|
23
|
+
return {
|
|
24
|
+
allowed: false,
|
|
25
|
+
code: 'replay-window-expired',
|
|
26
|
+
reason: `Idempotency key ${input.idempotency_key} is outside the replay window.`,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
allowed: true,
|
|
32
|
+
code: 'allowed',
|
|
33
|
+
reason: 'Allocator security policy allows the request.',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=allocator-security.js.map
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
export declare const CODESDD_API_FOUNDATION_SHARED_BASELINE: {
|
|
2
|
+
readonly id: "foundation-api-shared-baseline";
|
|
3
|
+
readonly version: 1;
|
|
4
|
+
readonly foundation_reference: "devtrack-foundation-api";
|
|
5
|
+
};
|
|
6
|
+
export declare const CODESDD_API_SHARED_BASELINE_REQUIREMENTS: readonly ["openapi-swagger-docs", "env-example", "package-json-scripts", "application-usecase-boundary", "dto-validation", "structured-api-errors", "auth-authz-planning", "route-and-usecase-tests"];
|
|
7
|
+
export declare const CODESDD_API_SHARED_BASELINE_QUALITY_GATES: readonly ["openapi-docs-required", "env-example-required", "package-scripts-required", "application-usecase-route-boundary", "dto-validation-required", "structured-error-contract-required", "authz-planning-required", "route-usecase-tests-required"];
|
|
8
|
+
export type CodeSddApiSharedBaselineRequirementId = (typeof CODESDD_API_SHARED_BASELINE_REQUIREMENTS)[number];
|
|
9
|
+
export interface CodeSddApiSharedBaselineRequirement {
|
|
10
|
+
id: CodeSddApiSharedBaselineRequirementId;
|
|
11
|
+
title: string;
|
|
12
|
+
foundation_reference: typeof CODESDD_API_FOUNDATION_SHARED_BASELINE.foundation_reference;
|
|
13
|
+
severity: 'P0';
|
|
14
|
+
phase: 'planning' | 'scaffold' | 'implementation' | 'validation';
|
|
15
|
+
quality_gate: (typeof CODESDD_API_SHARED_BASELINE_QUALITY_GATES)[number];
|
|
16
|
+
contract_rule_refs: readonly string[];
|
|
17
|
+
required_artifacts: readonly string[];
|
|
18
|
+
required_evidence: readonly string[];
|
|
19
|
+
}
|
|
20
|
+
export declare const CODESDD_API_SHARED_BASELINE_REQUIREMENT_DEFINITIONS: {
|
|
21
|
+
'openapi-swagger-docs': {
|
|
22
|
+
id: "openapi-swagger-docs";
|
|
23
|
+
title: string;
|
|
24
|
+
foundation_reference: "devtrack-foundation-api";
|
|
25
|
+
severity: "P0";
|
|
26
|
+
phase: "scaffold";
|
|
27
|
+
quality_gate: "openapi-docs-required";
|
|
28
|
+
contract_rule_refs: string[];
|
|
29
|
+
required_artifacts: string[];
|
|
30
|
+
required_evidence: string[];
|
|
31
|
+
};
|
|
32
|
+
'env-example': {
|
|
33
|
+
id: "env-example";
|
|
34
|
+
title: string;
|
|
35
|
+
foundation_reference: "devtrack-foundation-api";
|
|
36
|
+
severity: "P0";
|
|
37
|
+
phase: "scaffold";
|
|
38
|
+
quality_gate: "env-example-required";
|
|
39
|
+
contract_rule_refs: string[];
|
|
40
|
+
required_artifacts: string[];
|
|
41
|
+
required_evidence: string[];
|
|
42
|
+
};
|
|
43
|
+
'package-json-scripts': {
|
|
44
|
+
id: "package-json-scripts";
|
|
45
|
+
title: string;
|
|
46
|
+
foundation_reference: "devtrack-foundation-api";
|
|
47
|
+
severity: "P0";
|
|
48
|
+
phase: "scaffold";
|
|
49
|
+
quality_gate: "package-scripts-required";
|
|
50
|
+
contract_rule_refs: string[];
|
|
51
|
+
required_artifacts: string[];
|
|
52
|
+
required_evidence: string[];
|
|
53
|
+
};
|
|
54
|
+
'application-usecase-boundary': {
|
|
55
|
+
id: "application-usecase-boundary";
|
|
56
|
+
title: string;
|
|
57
|
+
foundation_reference: "devtrack-foundation-api";
|
|
58
|
+
severity: "P0";
|
|
59
|
+
phase: "implementation";
|
|
60
|
+
quality_gate: "application-usecase-route-boundary";
|
|
61
|
+
contract_rule_refs: string[];
|
|
62
|
+
required_artifacts: string[];
|
|
63
|
+
required_evidence: string[];
|
|
64
|
+
};
|
|
65
|
+
'dto-validation': {
|
|
66
|
+
id: "dto-validation";
|
|
67
|
+
title: string;
|
|
68
|
+
foundation_reference: "devtrack-foundation-api";
|
|
69
|
+
severity: "P0";
|
|
70
|
+
phase: "implementation";
|
|
71
|
+
quality_gate: "dto-validation-required";
|
|
72
|
+
contract_rule_refs: string[];
|
|
73
|
+
required_artifacts: string[];
|
|
74
|
+
required_evidence: string[];
|
|
75
|
+
};
|
|
76
|
+
'structured-api-errors': {
|
|
77
|
+
id: "structured-api-errors";
|
|
78
|
+
title: string;
|
|
79
|
+
foundation_reference: "devtrack-foundation-api";
|
|
80
|
+
severity: "P0";
|
|
81
|
+
phase: "implementation";
|
|
82
|
+
quality_gate: "structured-error-contract-required";
|
|
83
|
+
contract_rule_refs: string[];
|
|
84
|
+
required_artifacts: string[];
|
|
85
|
+
required_evidence: string[];
|
|
86
|
+
};
|
|
87
|
+
'auth-authz-planning': {
|
|
88
|
+
id: "auth-authz-planning";
|
|
89
|
+
title: string;
|
|
90
|
+
foundation_reference: "devtrack-foundation-api";
|
|
91
|
+
severity: "P0";
|
|
92
|
+
phase: "planning";
|
|
93
|
+
quality_gate: "authz-planning-required";
|
|
94
|
+
contract_rule_refs: string[];
|
|
95
|
+
required_artifacts: string[];
|
|
96
|
+
required_evidence: string[];
|
|
97
|
+
};
|
|
98
|
+
'route-and-usecase-tests': {
|
|
99
|
+
id: "route-and-usecase-tests";
|
|
100
|
+
title: string;
|
|
101
|
+
foundation_reference: "devtrack-foundation-api";
|
|
102
|
+
severity: "P0";
|
|
103
|
+
phase: "validation";
|
|
104
|
+
quality_gate: "route-usecase-tests-required";
|
|
105
|
+
contract_rule_refs: string[];
|
|
106
|
+
required_artifacts: string[];
|
|
107
|
+
required_evidence: string[];
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
export declare function getCodeSddApiSharedBaselineRequirements(): CodeSddApiSharedBaselineRequirement[];
|
|
111
|
+
//# sourceMappingURL=api-foundation-baseline.d.ts.map
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
export const CODESDD_API_FOUNDATION_SHARED_BASELINE = {
|
|
2
|
+
id: 'foundation-api-shared-baseline',
|
|
3
|
+
version: 1,
|
|
4
|
+
foundation_reference: 'devtrack-foundation-api',
|
|
5
|
+
};
|
|
6
|
+
export const CODESDD_API_SHARED_BASELINE_REQUIREMENTS = [
|
|
7
|
+
'openapi-swagger-docs',
|
|
8
|
+
'env-example',
|
|
9
|
+
'package-json-scripts',
|
|
10
|
+
'application-usecase-boundary',
|
|
11
|
+
'dto-validation',
|
|
12
|
+
'structured-api-errors',
|
|
13
|
+
'auth-authz-planning',
|
|
14
|
+
'route-and-usecase-tests',
|
|
15
|
+
];
|
|
16
|
+
export const CODESDD_API_SHARED_BASELINE_QUALITY_GATES = [
|
|
17
|
+
'openapi-docs-required',
|
|
18
|
+
'env-example-required',
|
|
19
|
+
'package-scripts-required',
|
|
20
|
+
'application-usecase-route-boundary',
|
|
21
|
+
'dto-validation-required',
|
|
22
|
+
'structured-error-contract-required',
|
|
23
|
+
'authz-planning-required',
|
|
24
|
+
'route-usecase-tests-required',
|
|
25
|
+
];
|
|
26
|
+
export const CODESDD_API_SHARED_BASELINE_REQUIREMENT_DEFINITIONS = {
|
|
27
|
+
'openapi-swagger-docs': {
|
|
28
|
+
id: 'openapi-swagger-docs',
|
|
29
|
+
title: 'Swagger/OpenAPI documentation',
|
|
30
|
+
foundation_reference: 'devtrack-foundation-api',
|
|
31
|
+
severity: 'P0',
|
|
32
|
+
phase: 'scaffold',
|
|
33
|
+
quality_gate: 'openapi-docs-required',
|
|
34
|
+
contract_rule_refs: ['DTAPI-P0-SHARED-BASELINE-001', 'DTAPI-P0-OPENAPI-001', 'DTAPI-P0-TOOL-BASELINE-001'],
|
|
35
|
+
required_artifacts: ['package.json', '.env.example', 'src/main.ts', 'src/presentation/**'],
|
|
36
|
+
required_evidence: [
|
|
37
|
+
'@nestjs/swagger dependency is present',
|
|
38
|
+
'DocumentBuilder and SwaggerModule bootstrap /docs',
|
|
39
|
+
'controllers and DTOs include Swagger decorators',
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
'env-example': {
|
|
43
|
+
id: 'env-example',
|
|
44
|
+
title: '.env.example placeholder contract',
|
|
45
|
+
foundation_reference: 'devtrack-foundation-api',
|
|
46
|
+
severity: 'P0',
|
|
47
|
+
phase: 'scaffold',
|
|
48
|
+
quality_gate: 'env-example-required',
|
|
49
|
+
contract_rule_refs: ['DTAPI-P0-SHARED-BASELINE-001', 'DTAPI-P0-TOOL-BASELINE-001'],
|
|
50
|
+
required_artifacts: ['.env.example'],
|
|
51
|
+
required_evidence: [
|
|
52
|
+
'runtime variables have placeholder values',
|
|
53
|
+
'Swagger server settings are represented when OpenAPI is enabled',
|
|
54
|
+
'no secret or credential values are emitted',
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
'package-json-scripts': {
|
|
58
|
+
id: 'package-json-scripts',
|
|
59
|
+
title: 'Operational package scripts and runtime bootstrap',
|
|
60
|
+
foundation_reference: 'devtrack-foundation-api',
|
|
61
|
+
severity: 'P0',
|
|
62
|
+
phase: 'scaffold',
|
|
63
|
+
quality_gate: 'package-scripts-required',
|
|
64
|
+
contract_rule_refs: ['DTAPI-P0-SHARED-BASELINE-001', 'DTAPI-P0-TOOL-BASELINE-001', 'DTAPI-P0-RUNTIME-SCRIPTS-001'],
|
|
65
|
+
required_artifacts: ['package.json', 'scripts/cleanup.sh', 'scripts/kill-port.js'],
|
|
66
|
+
required_evidence: [
|
|
67
|
+
'build, start, start:dev, start:prod, lint, test, coverage, e2e, cleanup, and cleanup:install scripts are present',
|
|
68
|
+
'cleanup removes dependency installs, build outputs, caches, lockfiles, and compilation residue unless an ADR preserves a canonical lockfile',
|
|
69
|
+
'start and start:dev run a configured-port preflight that terminates the listener before Nest starts',
|
|
70
|
+
'scripts can be invoked with npm or pnpm, while nested package-script calls use npm run/npm install so Docker images do not require pnpm',
|
|
71
|
+
'migration scripts are present when persistence is included',
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
'application-usecase-boundary': {
|
|
75
|
+
id: 'application-usecase-boundary',
|
|
76
|
+
title: 'Application use-case and input-port boundary',
|
|
77
|
+
foundation_reference: 'devtrack-foundation-api',
|
|
78
|
+
severity: 'P0',
|
|
79
|
+
phase: 'implementation',
|
|
80
|
+
quality_gate: 'application-usecase-route-boundary',
|
|
81
|
+
contract_rule_refs: ['DTAPI-P0-SHARED-BASELINE-001', 'DTAPI-P0-USECASE-001', 'DTAPI-P0-TOOL-BASELINE-001'],
|
|
82
|
+
required_artifacts: ['src/application/**', 'src/presentation/**'],
|
|
83
|
+
required_evidence: [
|
|
84
|
+
'each user-facing route calls an application input port',
|
|
85
|
+
'each input port delegates business orchestration to a use case',
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
'dto-validation': {
|
|
89
|
+
id: 'dto-validation',
|
|
90
|
+
title: 'DTO validation and documented request shape',
|
|
91
|
+
foundation_reference: 'devtrack-foundation-api',
|
|
92
|
+
severity: 'P0',
|
|
93
|
+
phase: 'implementation',
|
|
94
|
+
quality_gate: 'dto-validation-required',
|
|
95
|
+
contract_rule_refs: ['DTAPI-P0-SHARED-BASELINE-001', 'DTAPI-P0-OPENAPI-001'],
|
|
96
|
+
required_artifacts: ['src/main.ts', 'src/presentation/**/dtos/**'],
|
|
97
|
+
required_evidence: [
|
|
98
|
+
'global validation pipe is configured',
|
|
99
|
+
'request DTOs use class-validator decorators',
|
|
100
|
+
'DTOs include Swagger property metadata',
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
'structured-api-errors': {
|
|
104
|
+
id: 'structured-api-errors',
|
|
105
|
+
title: 'Structured API error responses',
|
|
106
|
+
foundation_reference: 'devtrack-foundation-api',
|
|
107
|
+
severity: 'P0',
|
|
108
|
+
phase: 'implementation',
|
|
109
|
+
quality_gate: 'structured-error-contract-required',
|
|
110
|
+
contract_rule_refs: ['DTAPI-P0-SHARED-BASELINE-001', 'DTAPI-P0-TOOL-BASELINE-001'],
|
|
111
|
+
required_artifacts: ['src/presentation/dtos/api-error-response.dto.ts', 'src/presentation/**'],
|
|
112
|
+
required_evidence: [
|
|
113
|
+
'controllers document error responses',
|
|
114
|
+
'error DTO avoids leaking internal provider or secret data',
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
'auth-authz-planning': {
|
|
118
|
+
id: 'auth-authz-planning',
|
|
119
|
+
title: 'Authentication and authorization planning',
|
|
120
|
+
foundation_reference: 'devtrack-foundation-api',
|
|
121
|
+
severity: 'P0',
|
|
122
|
+
phase: 'planning',
|
|
123
|
+
quality_gate: 'authz-planning-required',
|
|
124
|
+
contract_rule_refs: ['DTAPI-P0-SHARED-BASELINE-001', 'DTAPI-P0-AUTH-PLAN-001', 'DTAPI-P0-TOOL-BASELINE-001'],
|
|
125
|
+
required_artifacts: ['FEAT quality evidence', 'src/presentation/**/guards/**'],
|
|
126
|
+
required_evidence: [
|
|
127
|
+
'route public/protected decision is recorded',
|
|
128
|
+
'guard, decorator, role, permission, or policy choice is recorded',
|
|
129
|
+
'Swagger security scheme is documented for protected routes',
|
|
130
|
+
],
|
|
131
|
+
},
|
|
132
|
+
'route-and-usecase-tests': {
|
|
133
|
+
id: 'route-and-usecase-tests',
|
|
134
|
+
title: 'Route and use-case test evidence',
|
|
135
|
+
foundation_reference: 'devtrack-foundation-api',
|
|
136
|
+
severity: 'P0',
|
|
137
|
+
phase: 'validation',
|
|
138
|
+
quality_gate: 'route-usecase-tests-required',
|
|
139
|
+
contract_rule_refs: ['DTAPI-P0-SHARED-BASELINE-001', 'DTAPI-P1-EVIDENCE-001'],
|
|
140
|
+
required_artifacts: ['test/**', 'coverage/**'],
|
|
141
|
+
required_evidence: [
|
|
142
|
+
'route/controller behavior is covered',
|
|
143
|
+
'application use-case behavior is covered',
|
|
144
|
+
'validation evidence is recorded in the FEAT quality artifact',
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
export function getCodeSddApiSharedBaselineRequirements() {
|
|
149
|
+
return CODESDD_API_SHARED_BASELINE_REQUIREMENTS.map((requirementId) => CODESDD_API_SHARED_BASELINE_REQUIREMENT_DEFINITIONS[requirementId]);
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=api-foundation-baseline.js.map
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
export declare const CODESDD_FULL_FOUNDATION_COMPATIBLE_PROFILE_ID = "full-foundation-compatible";
|
|
2
|
+
export declare const CODESDD_FULL_FOUNDATION_PARITY_MATRIX: {
|
|
3
|
+
readonly id: "full-foundation-compatible-parity-matrix";
|
|
4
|
+
readonly version: 1;
|
|
5
|
+
readonly profile_id: "full-foundation-compatible";
|
|
6
|
+
readonly foundation_reference: "devtrack-foundation-api";
|
|
7
|
+
};
|
|
8
|
+
export declare const CODESDD_FULL_FOUNDATION_PARITY_DIMENSIONS: readonly ["architecture-roots", "contract-boundaries", "api-documentation", "env-and-runtime-config", "package-scripts", "auth-and-authorization", "persistence-typeorm", "validation-and-errors", "evidence-and-quality-gates"];
|
|
9
|
+
export declare const CODESDD_FULL_FOUNDATION_PARITY_QUALITY_GATES: readonly ["foundation-parity-matrix-required", "foundation-architecture-roots-parity", "foundation-contract-boundaries-parity", "foundation-api-documentation-parity", "foundation-env-runtime-config-parity", "foundation-package-scripts-parity", "foundation-auth-authorization-parity", "foundation-typeorm-persistence-parity", "foundation-validation-errors-parity", "foundation-evidence-quality-gates-parity"];
|
|
10
|
+
export type CodeSddFullFoundationParityDimensionId = (typeof CODESDD_FULL_FOUNDATION_PARITY_DIMENSIONS)[number];
|
|
11
|
+
export interface CodeSddFullFoundationParityDimension {
|
|
12
|
+
id: CodeSddFullFoundationParityDimensionId;
|
|
13
|
+
title: string;
|
|
14
|
+
foundation_reference: typeof CODESDD_FULL_FOUNDATION_PARITY_MATRIX.foundation_reference;
|
|
15
|
+
severity: 'P0';
|
|
16
|
+
quality_gate: (typeof CODESDD_FULL_FOUNDATION_PARITY_QUALITY_GATES)[number];
|
|
17
|
+
contract_rule_refs: readonly string[];
|
|
18
|
+
required_artifacts: readonly string[];
|
|
19
|
+
required_evidence: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
export declare const CODESDD_FULL_FOUNDATION_PARITY_DIMENSION_DEFINITIONS: {
|
|
22
|
+
'architecture-roots': {
|
|
23
|
+
id: "architecture-roots";
|
|
24
|
+
title: string;
|
|
25
|
+
foundation_reference: "devtrack-foundation-api";
|
|
26
|
+
severity: "P0";
|
|
27
|
+
quality_gate: "foundation-architecture-roots-parity";
|
|
28
|
+
contract_rule_refs: string[];
|
|
29
|
+
required_artifacts: string[];
|
|
30
|
+
required_evidence: string[];
|
|
31
|
+
};
|
|
32
|
+
'contract-boundaries': {
|
|
33
|
+
id: "contract-boundaries";
|
|
34
|
+
title: string;
|
|
35
|
+
foundation_reference: "devtrack-foundation-api";
|
|
36
|
+
severity: "P0";
|
|
37
|
+
quality_gate: "foundation-contract-boundaries-parity";
|
|
38
|
+
contract_rule_refs: string[];
|
|
39
|
+
required_artifacts: string[];
|
|
40
|
+
required_evidence: string[];
|
|
41
|
+
};
|
|
42
|
+
'api-documentation': {
|
|
43
|
+
id: "api-documentation";
|
|
44
|
+
title: string;
|
|
45
|
+
foundation_reference: "devtrack-foundation-api";
|
|
46
|
+
severity: "P0";
|
|
47
|
+
quality_gate: "foundation-api-documentation-parity";
|
|
48
|
+
contract_rule_refs: string[];
|
|
49
|
+
required_artifacts: string[];
|
|
50
|
+
required_evidence: string[];
|
|
51
|
+
};
|
|
52
|
+
'env-and-runtime-config': {
|
|
53
|
+
id: "env-and-runtime-config";
|
|
54
|
+
title: string;
|
|
55
|
+
foundation_reference: "devtrack-foundation-api";
|
|
56
|
+
severity: "P0";
|
|
57
|
+
quality_gate: "foundation-env-runtime-config-parity";
|
|
58
|
+
contract_rule_refs: string[];
|
|
59
|
+
required_artifacts: string[];
|
|
60
|
+
required_evidence: string[];
|
|
61
|
+
};
|
|
62
|
+
'package-scripts': {
|
|
63
|
+
id: "package-scripts";
|
|
64
|
+
title: string;
|
|
65
|
+
foundation_reference: "devtrack-foundation-api";
|
|
66
|
+
severity: "P0";
|
|
67
|
+
quality_gate: "foundation-package-scripts-parity";
|
|
68
|
+
contract_rule_refs: string[];
|
|
69
|
+
required_artifacts: string[];
|
|
70
|
+
required_evidence: string[];
|
|
71
|
+
};
|
|
72
|
+
'auth-and-authorization': {
|
|
73
|
+
id: "auth-and-authorization";
|
|
74
|
+
title: string;
|
|
75
|
+
foundation_reference: "devtrack-foundation-api";
|
|
76
|
+
severity: "P0";
|
|
77
|
+
quality_gate: "foundation-auth-authorization-parity";
|
|
78
|
+
contract_rule_refs: string[];
|
|
79
|
+
required_artifacts: string[];
|
|
80
|
+
required_evidence: string[];
|
|
81
|
+
};
|
|
82
|
+
'persistence-typeorm': {
|
|
83
|
+
id: "persistence-typeorm";
|
|
84
|
+
title: string;
|
|
85
|
+
foundation_reference: "devtrack-foundation-api";
|
|
86
|
+
severity: "P0";
|
|
87
|
+
quality_gate: "foundation-typeorm-persistence-parity";
|
|
88
|
+
contract_rule_refs: string[];
|
|
89
|
+
required_artifacts: string[];
|
|
90
|
+
required_evidence: string[];
|
|
91
|
+
};
|
|
92
|
+
'validation-and-errors': {
|
|
93
|
+
id: "validation-and-errors";
|
|
94
|
+
title: string;
|
|
95
|
+
foundation_reference: "devtrack-foundation-api";
|
|
96
|
+
severity: "P0";
|
|
97
|
+
quality_gate: "foundation-validation-errors-parity";
|
|
98
|
+
contract_rule_refs: string[];
|
|
99
|
+
required_artifacts: string[];
|
|
100
|
+
required_evidence: string[];
|
|
101
|
+
};
|
|
102
|
+
'evidence-and-quality-gates': {
|
|
103
|
+
id: "evidence-and-quality-gates";
|
|
104
|
+
title: string;
|
|
105
|
+
foundation_reference: "devtrack-foundation-api";
|
|
106
|
+
severity: "P0";
|
|
107
|
+
quality_gate: "foundation-evidence-quality-gates-parity";
|
|
108
|
+
contract_rule_refs: string[];
|
|
109
|
+
required_artifacts: string[];
|
|
110
|
+
required_evidence: string[];
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
export declare function getCodeSddFullFoundationParityMatrix(): CodeSddFullFoundationParityDimension[];
|
|
114
|
+
//# sourceMappingURL=api-foundation-parity.d.ts.map
|