AI-Driven Life Cycle (AI-DLC) adaptive workflow steering rules for AI coding agents
This report summarizes scanner evidence for awslabs/aidlc-workflows, a TypeScript project with 5,129 GitHub stars. SynthScan examined 770,975 lines of code across 1506 source files, recording 3244 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 4.9 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 3160 finding(s).
Are imports declared and package/API names verified? 16 finding(s).
Are wrappers, guards, and repeated structures necessary? 898 finding(s).
Which changes need focused human review? 3244 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 3244 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/tools/aidlc-documentkb-schema.ts | 1 | // DocumentKB index + per-document metadata schema — the machine-checkable | COMMENT |
| LOW | core/tools/aidlc-documentkb-schema.ts | 21 | // collapsing them into one "unsupported" sends the user down the wrong path. | COMMENT |
| LOW | core/tools/aidlc-documentkb-schema.ts | 181 | // stores anything free-form (`EXTRACT_OUTPUT_CHAR_CAP`, `BOLT_SLUG_MAX_LENGTH`, | COMMENT |
| LOW | core/tools/aidlc-documentkb-schema.ts | 201 | return false; | COMMENT |
| LOW | core/tools/aidlc-documentkb-schema.ts | 601 | // write this release makes does), not a NEW requirement layered onto an | COMMENT |
| LOW | core/tools/aidlc-rule-schema.ts | 1 | // Rule frontmatter schema — machine-checkable realisation of the rule-file | COMMENT |
| LOW | core/tools/aidlc-rule-schema.ts | 41 | // Returns {} when no `---...---` block is present. Differs from | COMMENT |
| LOW | core/tools/aidlc-rules-held.ts | 1 | // Whether the chat already holds a stage's exact rule text (#2023). | COMMENT |
| LOW | core/tools/aidlc-rules-held.ts | 21 | // fork may also carry older copies, so after an edit it proves nothing. | COMMENT |
| LOW | core/tools/aidlc-workspace-sync.ts | 1 | // aidlc-workspace-sync.ts - reconcile a workspace against its optional | COMMENT |
| LOW | core/tools/aidlc-testing-posture.ts | 1401 | // | COMMENT |
| LOW | core/tools/aidlc-testing-posture.ts | 1421 | // | COMMENT |
| LOW | core/tools/aidlc-testing-posture.ts | 1481 | } | COMMENT |
| LOW | core/tools/aidlc-testing-posture.ts | 1821 | // again from step 1 by the next worker. When the brief is for a build that | COMMENT |
| LOW | core/tools/aidlc-testing-posture.ts | 1841 | // content the build started on. Its key binds the target, the stage attempt | COMMENT |
| LOW | core/tools/aidlc-testing-posture.ts | 3981 | Atomics.wait(waitCell, 0, 0, 10); | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 1 | // aidlc-knowledge.ts — the DocumentKB tool: index a customer's documents into a | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 21 | // | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 41 | // | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 221 | const PRUNED_WALK_DIRS: ReadonlySet<string> = new Set(["aidlc", "node_modules"]); | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 281 | // --- Content sniffing -------------------------------------------------------- | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 361 | // Bit 3 (streamed / data-descriptor) means compressedSize here is 0 and | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 781 | } | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 901 | // `.sources.local.json` sits directly under `knowledge/` -- a SIBLING of | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 1021 | } | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 1241 | // `space` becomes a raw path COMPONENT two lines down. Every in-repo caller | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 1341 | return null; | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 1681 | ensureDocumentAssociationAudit(projectDir, space, row, auditState); | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 1761 | continue; | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 1821 | // publishes NOTHING -- the journal dir (still on disk, never renamed) is | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 1841 | ensureDirSync(documentkbDir(projectDir, space)); | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 1881 | // order and onboard's edited path -- new code in the same effort -- | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 2121 | // metadata.json's content_trust / content_handling keys are the DURABLE RECORD, | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 2501 | if (d.summary_text !== undefined) { | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 2601 | const before = readIndex(projectDir, space); | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 2621 | // kind, or over the per-document cap) -- tracked SEPARATELY from `byPath`, | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 2721 | needsRetry.push({ row, here }); | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 2861 | for (const next of needsNew) { | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 2901 | // lock. A concurrent writer (rebind, another sync, onboard's edit path) may | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 2921 | // were produced from. Planning (and extraction, for "changed"/"retried") | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 3101 | } | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 3441 | // A document is SPACE-WIDE by default: available to every intent in the space. | COMMENT |
| LOW | core/tools/aidlc-knowledge.ts | 3821 | path: `documentkb/${row.id}/summary.md`, | COMMENT |
| LOW | core/tools/aidlc-install-paths.ts | 141 | // The body is location-independent ($0's directory), so it is a constant both | COMMENT |
| LOW | core/tools/aidlc-install-paths.ts | 181 | // misfire on; the rendered line is byte-identical. | COMMENT |
| LOW | core/tools/aidlc-runner-gen.ts | 1 | // The runner-skill generator — one tool, two runner families. | COMMENT |
| LOW | core/tools/aidlc-runner-gen.ts | 21 | // high-traffic ones marked in scope metadata. | COMMENT |
| LOW | core/tools/aidlc-runner-gen.ts | 101 | // Initialization-phase stages are bootstrap: they have no standalone meaning | COMMENT |
| LOW | core/tools/aidlc-runner-gen.ts | 301 | } | COMMENT |
| LOW | core/tools/aidlc-log.ts | 261 | // --intent/--space, so it relies on default intent resolution. On a fresh shell | COMMENT |
| LOW | core/tools/aidlc-log.ts | 341 | // double quote written as \" inside the value reaches the engine intact). | COMMENT |
| LOW | core/tools/aidlc-log.ts | 621 | if (stageLevel) return { unit: null }; | COMMENT |
| LOW | core/tools/aidlc-log.ts | 1461 | // --- Subcommand: answer --- | COMMENT |
| LOW | core/tools/aidlc-log.ts | 2781 | ...(recordedRepo ? { repo: recordedRepo } : {}), | COMMENT |
| LOW | core/tools/aidlc-bolt.ts | 1 | // aidlc-bolt.ts — Construction-phase bolt lifecycle | COMMENT |
| LOW | core/tools/aidlc-bolt.ts | 21 | // abort --discard — explicit user-driven abort; optional discard tear-down | COMMENT |
| LOW | core/tools/aidlc-bolt.ts | 841 | COMMENT | |
| LOW | core/tools/aidlc-bolt.ts | 981 | : ["ignored files", "eol/text=auto normalization"], | COMMENT |
| LOW | core/tools/aidlc-bolt.ts | 1001 | // No audit emission — Merge-Held is internal coordination state, not a | COMMENT |
| LOW | core/tools/aidlc-bolt.ts | 1081 | } | COMMENT |
| 1786 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/tools/aidlc-kiro-ide-workflows.ts | 114 | function unreadableSettingsMessage(settingsPath: string, enabled: boolean): string { | CODE |
| LOW | core/tools/aidlc-kiro-ide-workflows.ts | 133 | export function recordKiroWorkflowsAnswer(answer: KiroWorkflowsAnswer): void { | CODE |
| LOW | core/tools/aidlc-kiro-ide-workflows.ts | 169 | export function kiroWorkflowsIssueMessage(): string { | CODE |
| LOW | core/tools/aidlc-uninstall-plan.ts | 55 | function posixLauncherOwnedByInstaller(path: string): boolean { | CODE |
| LOW | core/tools/aidlc-inline-context.ts | 295 | function selectShippedInlineKnowledge( | CODE |
| LOW | core/tools/aidlc-inline-context.ts | 328 | export function shippedInlineContextEntries( | CODE |
| LOW | core/tools/aidlc-rules-held.ts | 220 | function opencodeIncludedMemoryDir(projectDir: string, space: string): string | null { | CODE |
| LOW | core/tools/aidlc-kiro-ide-terminal.ts | 105 | export function setKiroIdeTerminalPowerShell( | CODE |
| LOW | core/tools/aidlc-kiro-ide-terminal.ts | 125 | function unreadableSettingsMessage(settingsPath: string): string { | CODE |
| LOW | core/tools/aidlc-kiro-ide-terminal.ts | 211 | export function kiroIdeTerminalStandingLine(invoke: string, env: NodeJS.ProcessEnv = process.env): string { | CODE |
| LOW | core/tools/aidlc-kiro-ide-terminal.ts | 308 | export function rejoinCommandPromptQuotes( | CODE |
| LOW | core/tools/aidlc-kiro-ide-terminal.ts | 342 | export function commandPromptChildCommand( | CODE |
| LOW | core/tools/aidlc-workspace-sync.ts | 261 | function localRemoteAlternateReasons( | CODE |
| LOW⚡ | core/tools/aidlc-testing-posture.ts | 2386 | export function questionsFileHasPendingPlanApproval(body: string): boolean { | CODE |
| LOW⚡ | core/tools/aidlc-testing-posture.ts | 2395 | export function questionsFileApprovalFingerprint(body: string): string | null { | CODE |
| LOW⚡ | core/tools/aidlc-testing-posture.ts | 2399 | export function questionsFilePlannedSource(body: string): string | null { | CODE |
| LOW⚡ | core/tools/aidlc-testing-posture.ts | 2409 | export function planApprovalSectionSkeleton( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 309 | export function planApprovalUnbindableRemedies(): PlanApprovalRemedy[] { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 357 | export function planSourceDriftStrictMessage(paths: string[] | null, unbound = false): string { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 364 | export function planSourceDriftRelaxedNotice(paths: string[] | null, unbound = false): string { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 435 | function keepWorkspaceSourceSnapshot( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 442 | function generationSourceUnavailableMessage(): string { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 455 | export function codeGenerationBuildsWithoutSource( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 523 | export function approvalFingerprintIsCurrentFormat(tag: string | null): boolean { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 533 | export function recordedApprovalFingerprint(questions: string): string | null { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 736 | function stripHtmlCommentsFromLine( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 805 | function markdownWithoutHtmlComments(body: string): string { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 879 | function extractTestingPostureSection(content: string): string { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 1122 | export function resolveTestingPostureFromSections( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 1238 | export function replaceTestingContractSection( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 1333 | export function testingContractDefectMessage( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 1359 | function testingContractDefectReason(plan: string): string | null { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 1438 | export function projectPlanApprovalContent(text: string): string { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 1490 | export function projectInstructionsContent(text: string): string { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2218 | export function codeGenerationResumeNarration( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2247 | export function codeGenerationStartNarration(projectDir: string, unit: string | null): string | null { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2433 | function missingPlanApprovalFingerprintReason(questions: string): string { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2446 | export function promptTestingContractMarkers(text: string): string[] { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2455 | function normalizeCodeGenerationTarget(target: CodeGenerationTarget): CodeGenerationTarget { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2468 | export function resolveCodeGenerationAuthority( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2477 | function activeCodeGenerationDirective(marker: ActiveDirectiveMarker): CodeGenerationIssuance { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2570 | export function codeGenerationRulesArrivingReason(marker: ActiveDirectiveMarker | null): string | null { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2737 | function codeGenerationApprovalArtifacts( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2854 | function approvalFromTheirChangeRequest( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2960 | function continuationContractProject( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2968 | function codeGenerationContinuation( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 2992 | export function codeGenerationPlanApprovalFence( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3015 | export function codeGenerationExecutionAllowed( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3026 | function recordCodeGenerationContinuation( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3087 | export function legacyPlanApprovalGuardState( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3291 | function assertPlanApprovalBatchLifecycle(projectDir: string, receipt: PlanApprovalRuntimeReceipt): ActiveDirectiveMarke | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3363 | function planApprovalBatchSelection(projectDir: string, file: string): PlanApprovalBatchSelection { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3397 | function assertLivePlanApprovalBatch(projectDir: string, units: string[]): void { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3431 | function planApprovalBatchEvidence( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3467 | export function recordPlanApprovalBatchChallenge( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3500 | export function recordPlanApprovalBatchReceipts( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3554 | function assertPlanApprovalBatchCurrent(projectDir: string, receipt: PlanApprovalRuntimeReceipt): void { | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3579 | export function recordPlanApprovalChallenge( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3719 | export function recordPlanApprovalHumanResponse( | CODE |
| LOW | core/tools/aidlc-testing-posture.ts | 3786 | function pickerAsksProtectedQuestion( | CODE |
| 770 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …e/aidlc-common/stages/operation/deployment-pipeline.md | 47 | ### Step 1: Load Prior Context | COMMENT |
| LOW | …e/aidlc-common/stages/operation/deployment-pipeline.md | 62 | ### Step 2: Generate Clarifying Questions | COMMENT |
| LOW⚡ | …e/aidlc-common/stages/operation/deployment-pipeline.md | 73 | ### Step 3: Generate Artifacts | COMMENT |
| LOW⚡ | …e/aidlc-common/stages/operation/deployment-pipeline.md | 77 | ### Step 4: Completion Handoff | COMMENT |
| LOW⚡ | …e/aidlc-common/stages/operation/deployment-pipeline.md | 83 | ### Step 5: Present Completion & Request Approval | COMMENT |
| LOW | …/aidlc-common/stages/operation/deployment-execution.md | 48 | ### Step 1: Load Prior Context | COMMENT |
| LOW⚡ | …/aidlc-common/stages/operation/deployment-execution.md | 69 | ### Step 2: Pre-Deployment Checks | COMMENT |
| LOW⚡ | …/aidlc-common/stages/operation/deployment-execution.md | 79 | ### Step 3: Execute Deployment | COMMENT |
| LOW⚡ | …/aidlc-common/stages/operation/deployment-execution.md | 83 | ### Step 4: Generate Artifacts | COMMENT |
| LOW⚡ | …/aidlc-common/stages/operation/deployment-execution.md | 87 | ### Step 5: Completion Handoff | COMMENT |
| LOW⚡ | …/aidlc-common/stages/operation/deployment-execution.md | 93 | ### Step 6: Present Completion & Request Approval | COMMENT |
| LOW⚡ | …lc-common/stages/operation/environment-provisioning.md | 40 | ### Step 1: Load Prior Context | COMMENT |
| LOW⚡ | …lc-common/stages/operation/environment-provisioning.md | 45 | ### Step 2: Generate Clarifying Questions | COMMENT |
| LOW⚡ | …lc-common/stages/operation/environment-provisioning.md | 55 | ### Step 3: Provision and Validate | COMMENT |
| LOW⚡ | …lc-common/stages/operation/environment-provisioning.md | 59 | ### Step 4: Generate Artifacts | COMMENT |
| LOW⚡ | …lc-common/stages/operation/environment-provisioning.md | 63 | ### Step 5: Completion Handoff | COMMENT |
| LOW⚡ | …lc-common/stages/operation/environment-provisioning.md | 69 | ### Step 6: Present Completion & Request Approval | COMMENT |
| LOW | …aidlc-common/stages/operation/feedback-optimization.md | 51 | ### Step 1: Load Prior Context | COMMENT |
| LOW | …aidlc-common/stages/operation/feedback-optimization.md | 58 | ### Step 2: Generate Questions | COMMENT |
| LOW⚡ | …aidlc-common/stages/operation/feedback-optimization.md | 69 | ### Step 3: Generate Artifacts | COMMENT |
| LOW⚡ | …aidlc-common/stages/operation/feedback-optimization.md | 73 | ### Step 4: Completion Handoff | COMMENT |
| LOW⚡ | …aidlc-common/stages/operation/feedback-optimization.md | 79 | ### Step 5: Present Completion & Request Approval | COMMENT |
| LOW⚡ | …idlc-common/stages/operation/performance-validation.md | 45 | ### Step 1: Load Prior Context | COMMENT |
| LOW⚡ | …idlc-common/stages/operation/performance-validation.md | 51 | ### Step 2: Generate Clarifying Questions | COMMENT |
| LOW⚡ | …idlc-common/stages/operation/performance-validation.md | 61 | ### Step 3: Design and Execute Tests | COMMENT |
| LOW⚡ | …idlc-common/stages/operation/performance-validation.md | 65 | ### Step 4: Generate Artifacts | COMMENT |
| LOW⚡ | …idlc-common/stages/operation/performance-validation.md | 69 | ### Step 5: Completion Handoff | COMMENT |
| LOW⚡ | …idlc-common/stages/operation/performance-validation.md | 75 | ### Step 6: Present Completion & Request Approval | COMMENT |
| LOW | core/aidlc-common/stages/operation/incident-response.md | 43 | ### Step 1: Load Prior Context | COMMENT |
| LOW | core/aidlc-common/stages/operation/incident-response.md | 49 | ### Step 2: Generate Clarifying Questions | COMMENT |
| LOW⚡ | core/aidlc-common/stages/operation/incident-response.md | 60 | ### Step 3: Generate Artifacts | COMMENT |
| LOW⚡ | core/aidlc-common/stages/operation/incident-response.md | 64 | ### Step 4: Completion Handoff | COMMENT |
| LOW⚡ | core/aidlc-common/stages/operation/incident-response.md | 70 | ### Step 5: Present Completion & Request Approval | COMMENT |
| LOW | …e/aidlc-common/stages/operation/observability-setup.md | 50 | ### Step 1: Load Prior Context | COMMENT |
| LOW | …e/aidlc-common/stages/operation/observability-setup.md | 64 | ### Step 2: Generate Clarifying Questions | COMMENT |
| LOW⚡ | …e/aidlc-common/stages/operation/observability-setup.md | 75 | ### Step 3: Generate Artifacts | COMMENT |
| LOW⚡ | …e/aidlc-common/stages/operation/observability-setup.md | 79 | ### Step 4: Completion Handoff | COMMENT |
| LOW⚡ | …e/aidlc-common/stages/operation/observability-setup.md | 85 | ### Step 5: Present Completion & Request Approval | COMMENT |
| LOW | …e/aidlc-common/stages/inception/reverse-engineering.md | 65 | ### Step 1: Check Conditions | COMMENT |
| LOW | …e/aidlc-common/stages/inception/reverse-engineering.md | 213 | ### Step 2: Developer Code Scan | COMMENT |
| LOW | …e/aidlc-common/stages/inception/reverse-engineering.md | 296 | ### Step 3: Architect Synthesis | COMMENT |
| LOW | …e/aidlc-common/stages/inception/reverse-engineering.md | 467 | ### Step 4: Completion Handoff | COMMENT |
| LOW | …e/aidlc-common/stages/inception/reverse-engineering.md | 486 | ### Step 5: Present Completion & Request Approval | COMMENT |
| LOW | …e/aidlc-common/stages/inception/practices-discovery.md | 68 | ### Step 1: Check Conditions | COMMENT |
| LOW | …e/aidlc-common/stages/inception/practices-discovery.md | 84 | ### Step 2: Lead Draft (Always) | COMMENT |
| LOW | …e/aidlc-common/stages/inception/practices-discovery.md | 102 | ### Step 3: Blind Support Review | COMMENT |
| LOW | …e/aidlc-common/stages/inception/practices-discovery.md | 133 | ### Step 4: Interview (Always) | COMMENT |
| LOW | …e/aidlc-common/stages/inception/practices-discovery.md | 169 | ### Step 5: Lead Integration | COMMENT |
| LOW | …e/aidlc-common/stages/inception/practices-discovery.md | 206 | ### Step 6: Learnings + Affirmation Gate | COMMENT |
| LOW | …e/aidlc-common/stages/inception/practices-discovery.md | 234 | ### Step 7: Promote (On Approve Only) | COMMENT |
| LOW | …e/aidlc-common/stages/inception/practices-discovery.md | 261 | ### Step 8: Commit Approval | COMMENT |
| LOW | core/aidlc-common/stages/inception/refined-mockups.md | 51 | ### Step 1: Load Prior Context | COMMENT |
| LOW | core/aidlc-common/stages/inception/refined-mockups.md | 59 | ### Step 2: Generate Clarifying Questions | COMMENT |
| LOW⚡ | core/aidlc-common/stages/inception/refined-mockups.md | 72 | ### Step 3: Collect and Analyze Answers | COMMENT |
| LOW⚡ | core/aidlc-common/stages/inception/refined-mockups.md | 76 | ### Step 4: Generate Artifacts | COMMENT |
| LOW⚡ | core/aidlc-common/stages/inception/refined-mockups.md | 82 | ### Step 5: Completion Handoff | COMMENT |
| LOW⚡ | core/aidlc-common/stages/inception/refined-mockups.md | 88 | ### Step 6: Present Completion & Request Approval | COMMENT |
| LOW | core/aidlc-common/stages/inception/user-stories.md | 53 | ### Step 1: Load the Lead Persona (mob stage) | COMMENT |
| LOW | core/aidlc-common/stages/inception/user-stories.md | 61 | ### Step 2: Validate User Stories Are Needed | COMMENT |
| LOW⚡ | core/aidlc-common/stages/inception/user-stories.md | 78 | ### Step 3: Load Prior Context | COMMENT |
| 230 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 79 | * Content appended under a `## ` heading is now separated from the following `## ` heading by exactly one blank line, ke | COMMENT |
| MEDIUM | CHANGELOG.md | 1283 | **Upgrade:** re-copy your `dist/<harness>/` shell into the project. This is mandatory, not optional: the old hook files | CODE |
| MEDIUM⚡ | CHANGELOG.md | 2081 | * **Park (#365, #367):** `bun .claude/tools/aidlc-orchestrate.ts park` parks the workflow at the current inter-stage bou | COMMENT |
| MEDIUM⚡ | CHANGELOG.md | 2084 | * **Conversational carve-out (#365):** the Stop hook no longer nags a human who is just chatting mid-workflow. When the | COMMENT |
| MEDIUM⚡ | CHANGELOG.md | 2089 | Fixes issue #368: a multi-unit Construction phase now runs every Unit of Work through each per-unit design stage before | CODE |
| MEDIUM | CHANGELOG.md | 3032 | * `## Mandated` and `## Forbidden` headings appended to `.claude/rules/aidlc/guardrails/project-guardrails.md`. Mirrors | COMMENT |
| MEDIUM | core/aidlc-common/protocols/stage-protocol.md | 391 | - **Request Changes** → `{{INVOKE}} engine orchestrate report --stage <slug> --result rejected --user-input "Request | CODE |
| MEDIUM | core/aidlc-common/protocols/stage-protocol.md | 802 | # Stage completion is reported through aidlc-orchestrate.ts; no manual checkbox write. | COMMENT |
| MEDIUM | core/tools/aidlc-sensor-claim-sources.ts | 63 | // Lines the `## Assumption Confirmation` section owns as scaffolding rather | COMMENT |
| MEDIUM | core/tools/aidlc-rule-schema.ts | 18 | // - enforcement: enforced (no two-mode keyword; all rules are guardrails) | COMMENT |
| MEDIUM | core/tools/aidlc-runner-gen.ts | 103 | // scaffold half a workspace). The whole initialization phase is run as ONE | COMMENT |
| MEDIUM | core/tools/aidlc-runner-gen.ts | 104 | // atomic operation by `/aidlc --init` (aidlc-utility.ts: scaffold + scan + | COMMENT |
| MEDIUM | core/tools/aidlc-runner-gen.ts | 360 | // aidlc-workspace-scaffold) left by an earlier generation that emitted runners | COMMENT |
| MEDIUM | core/tools/aidlc-orchestrate.ts | 65 | // dies at its guard before any scaffold write. | COMMENT |
| MEDIUM | core/tools/aidlc-orchestrate.ts | 12599 | // stage is rejected (bootstrap stages create/scaffold state — they have no | COMMENT |
| MEDIUM | core/tools/aidlc-orchestrate.ts | 12894 | // behavior (create the state file, scaffold dirs) that doesn't fit the jump | COMMENT |
| MEDIUM | core/tools/aidlc-state.ts | 8265 | // Step 4b: Build new project-guardrails.md by appending each rule under the | COMMENT |
| MEDIUM | core/tools/aidlc-plugin-create.ts | 2 | // Deterministic offline scaffold for a new AIDLC plugin repository. | COMMENT |
| MEDIUM | core/tools/aidlc-learnings.ts | 713 | // it provides the minimal scaffold the ensure-exists append can land into. | COMMENT |
| MEDIUM | core/tools/aidlc-utility.ts | 7138 | // init (scaffold 0.2) — bootstrap state/audit files + scaffold aidlc-docs/ | COMMENT |
| MEDIUM | core/tools/aidlc-utility.ts | 7489 | // dir doesn't exist yet (caller should scaffold first) | COMMENT |
| MEDIUM | core/tools/aidlc-utility.ts | 8739 | // subsequent `advance` call would appear to jump from workspace-scaffold | COMMENT |
| MEDIUM | core/agents/aidlc-devsecops-agent.md | 64 | `aidlc/spaces/<active-space>/memory/{org,team,project}.md` — active-space guardrails and affirmed practices (read per `{ | CODE |
| MEDIUM | core/hooks/aidlc-run-sensors.ts | 150 | // with empty sensors_applicable like workspace-scaffold, (b) no | COMMENT |
| MEDIUM | core/hooks/aidlc-run-sensors.ts | 209 | // No applicable sensors. Empty array is the workspace-scaffold case; | COMMENT |
| MEDIUM | core/hooks/aidlc-record-human-turn.ts | 18 | // harness shell but never ran the framework would scaffold and grow audit | COMMENT |
| MEDIUM | tests/smoke/t06-claude-md-paths.test.ts | 23 | // .sh test 2 (flat rules/ — no rules/aidlc/guardrails nested) -> "describes a flat .claude/rules/ layout (no nested | COMMENT |
| MEDIUM | tests/smoke/t06-claude-md-paths.test.ts | 65 | // milestone 2 flattened the rules tree; the legacy nested guardrails path must be | COMMENT |
| MEDIUM | tests/smoke/t06-claude-md-paths.test.ts | 66 | // gone. .sh: grep -q "\.claude/rules/aidlc/guardrails" => must NOT match. | COMMENT |
| MEDIUM | tests/smoke/t01-file-structure.test.ts | 1 | // covers: file:skills/aidlc/SKILL.md, file:aidlc-common/protocols/stage-protocol.md, file:aidlc-common/protocols/stage- | COMMENT |
| MEDIUM | tests/unit/t157-workspace-shell-seed.test.ts | 35 | // (intents/codekb/knowledge ensure-exists) + the workspace-scaffold→ensure- | COMMENT |
| MEDIUM | tests/unit/t70-worktree-kb-and-skill.test.ts | 38 | // guardrails and practices | COMMENT |
| MEDIUM | tests/unit/t68-version-changelog-sync.test.ts | 58 | // link references were REMOVED. They shipped as broken `OWNER/REPO` scaffold | COMMENT |
| MEDIUM | tests/unit/t68-version-changelog-sync.test.ts | 194 | // nor the scaffold placeholder. (Prose may name a host in plain words; this | COMMENT |
| MEDIUM | tests/unit/t230-dispatcher-routes.test.ts | 3100 | // What a scaffold run says instead of "not valid" when it is refused. | COMMENT |
| MEDIUM | tests/unit/t87-stage-compartment-headers.test.ts | 1 | // covers: file:aidlc-common/stages/construction/build-and-test.md, file:aidlc-common/stages/construction/ci-pipeline.md | COMMENT |
| MEDIUM | tests/unit/t61.test.ts | 284 | // (P4: creation no longer iterates agents to scaffold knowledge READMEs, so the | COMMENT |
| MEDIUM | tests/unit/t71.test.ts | 14 | // overwrites them, appendUnderHeading adds rules to project-guardrails.md). | COMMENT |
| MEDIUM | tests/unit/t114-orchestrate-next.test.ts | 63 | // :822 Branch 3 --init -> print naming the scaffold cmd. | COMMENT |
| MEDIUM | tests/unit/t94-sensor-fire-hook.test.ts | 44 | // :184-185 empty sensors_applicable (workspace-scaffold) -> exit 0. | COMMENT |
| MEDIUM | tests/unit/t94-sensor-fire-hook.test.ts | 75 | // .sh case 16 empty sensors_applicable -> no spawn (HB kept)-> "empty sensors_applicable (workspace-scaffold) -> no s | COMMENT |
| MEDIUM | tests/unit/t94-sensor-fire-hook.test.ts | 703 | // workspace-scaffold carries sensors_applicable: [] in the framework graph, | COMMENT |
| MEDIUM | tests/unit/t259-turn-markers.test.ts | 171 | // would scaffold the record tree as a side effect (touchTurnMarker mkdir -p's | COMMENT |
| MEDIUM | tests/unit/t296-config-setup-walk.test.ts | 169 | // A scaffold records no model policy, so every agent would silently inherit | COMMENT |
| MEDIUM | tests/unit/t97.test.ts | 191 | // mkproj() is the TS analogue of the .sh's mkproj: scaffold a minimal project | COMMENT |
| MEDIUM | tests/unit/t112-learnings-distribution-guard.test.ts | 35 | // could scaffold INTO the shipped framework distribution. This pins that the | COMMENT |
| MEDIUM | tests/unit/t112-learnings-distribution-guard.test.ts | 246 | // exit 0, scaffold the manifest under the project's own .claude/sensors, and | COMMENT |
| MEDIUM | tests/unit/t294-config-diagnostics.test.ts | 4386 | // harness shell but never ran the framework would scaffold and grow audit | COMMENT |
| MEDIUM | tests/unit/t27.test.ts | 52 | // - .sh T33 init bootstrap workspace-scaffold checkbox -> Test 33. | COMMENT |
| MEDIUM | tests/unit/t27.test.ts | 543 | // onboarding runs --doctor before --init, so doctor must scaffold nothing. | COMMENT |
| MEDIUM | tests/unit/t27.test.ts | 656 | // created intent + state init, not the old "Workspace scaffolded" scaffold line. | COMMENT |
| MEDIUM | tests/integration/t-scope-run-bugfix.test.ts | 1 | // covers: scope:bugfix, stage:initialization/workspace-scaffold, stage:initialization/workspace-detection, stage:initia | COMMENT |
| MEDIUM | tests/integration/t48-audit-event-emitters.test.ts | 345 | // workspace-scaffold STAGE_STARTED), now into the created intent's record. | COMMENT |
| MEDIUM | tests/integration/t42-state-jumped-fixture.test.ts | 51 | // .sh 10 grep '\[x\] workspace-scaffold' -> "init stage workspace-scaffold is [x] completed, not [S]" | COMMENT |
| MEDIUM | tests/integration/t51.test.ts | 257 | // and init pre-completes the 3 init stages: workspace-scaffold, | COMMENT |
| MEDIUM | tests/integration/t75.test.ts | 488 | // rm the project guardrails target (t75:203). | COMMENT |
| MEDIUM | tests/integration/t-scope-run-enterprise.test.ts | 1 | // covers: scope:enterprise, stage:initialization/workspace-scaffold, stage:initialization/workspace-detection, stage:in | COMMENT |
| MEDIUM | tests/integration/t-scope-run-security-patch.test.ts | 1 | // covers: scope:security-patch, stage:initialization/workspace-scaffold, stage:initialization/workspace-detection, stag | COMMENT |
| MEDIUM | tests/integration/t21.test.ts | 48 | // 4 "[x] workspace-scaffold" -> state file contains "[x] workspace-scaffold" (init marker) | COMMENT |
| MEDIUM | tests/integration/t21.test.ts | 132 | // 11 agent dirs + aidlc-shared)" scaffold-tree line was a --init artifact and is | COMMENT |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/t288-documentkb-schema.test.ts | 301 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t288-documentkb-schema.test.ts | 315 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t288-documentkb-schema.test.ts | 374 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t288-documentkb-schema.test.ts | 379 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t297-knowledge-intents.test.ts | 184 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t297-knowledge-intents.test.ts | 190 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t297-knowledge-intents.test.ts | 465 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t297-knowledge-intents.test.ts | 480 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 448 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 461 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 961 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 983 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 1293 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 1315 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 1429 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 1441 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 1482 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 1572 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 2037 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 2042 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 2116 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t289-knowledge-onboard-boundary.test.ts | 2121 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t154-codekb-promotion.test.ts | 94 | // ── 1: RE stage outputs re-pointed, filenames preserved ────────────────── | COMMENT |
| MEDIUM | tests/unit/t154-codekb-promotion.test.ts | 109 | // ── 2: RE body prose writes to the space-level codekb dir ──────────────── | COMMENT |
| MEDIUM | tests/unit/t154-codekb-promotion.test.ts | 120 | // ── 3: the freshness marker is preserved as the staleness gate ─────────── | COMMENT |
| MEDIUM | tests/unit/t154-codekb-promotion.test.ts | 163 | // ── 4: frontmatter consumers — edge intact, read path re-pointed ───────── | COMMENT |
| MEDIUM | tests/unit/t154-codekb-promotion.test.ts | 180 | // ── 5: prose consumers re-pointed ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t285-knowledge-skill.test.ts | 176 | // ── I33: present in EVERY harness, at the harness-correct root ──────────── | COMMENT |
| MEDIUM | tests/unit/t285-knowledge-skill.test.ts | 236 | // ── I41: bidirectional flag parity ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t285-knowledge-skill.test.ts | 286 | // ── the --allow-inactive behaviour the prose promises ────────────────────── | COMMENT |
| MEDIUM | tests/unit/t285-knowledge-skill.test.ts | 410 | // ── argv DISPATCH, not the handlers underneath ───────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t285-knowledge-skill.test.ts | 829 | // ── The per-verb Emits column, pinned by EXECUTION ───────────────────────── | COMMENT |
| MEDIUM | tests/unit/t60.test.ts | 15 | // ── CURRENT-SURFACE CORRECTION (audit fold-in) ─────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t292-knowledge-list-show.test.ts | 328 | // ── The INVARIANT, not another case ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t284-knowledge-sync-rebind.test.ts | 199 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/t284-knowledge-sync-rebind.test.ts | 208 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 21 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 23 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 50 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 52 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 118 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 120 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 232 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 235 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 249 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 252 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 271 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 279 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 302 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 311 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 341 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 347 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 375 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 381 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 485 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 491 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 506 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 535 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 551 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration/t55-test-suite-drift.test.ts | 556 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| 8 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | zensical.toml | 179 | # Renders markdown inside HTML blocks carrying markdown="1" (the per-harness | COMMENT |
| MEDIUM | .gitleaks-baseline.json | 103 | "Message": "feat: add AIDLC Evaluation \u0026 Reporting Framework (#115)\n\n* feat: add aidlc-evaluator framework\n\nE | CODE |
| MEDIUM | .gitleaks-baseline.json | 124 | "Message": "feat: add AIDLC Evaluation \u0026 Reporting Framework (#115)\n\n* feat: add aidlc-evaluator framework\n\nE | CODE |
| MEDIUM | .gitleaks-baseline.json | 145 | "Message": "feat: add AIDLC Evaluation \u0026 Reporting Framework (#115)\n\n* feat: add aidlc-evaluator framework\n\nE | CODE |
| MEDIUM | .gitleaks-baseline.json | 166 | "Message": "feat: add AIDLC Evaluation \u0026 Reporting Framework (#115)\n\n* feat: add aidlc-evaluator framework\n\nE | CODE |
| MEDIUM | .gitleaks-baseline.json | 187 | "Message": "feat: add AIDLC Evaluation \u0026 Reporting Framework (#115)\n\n* feat: add aidlc-evaluator framework\n\nE | CODE |
| MEDIUM | .gitleaks-baseline.json | 208 | "Message": "feat: add AIDLC Evaluation \u0026 Reporting Framework (#115)\n\n* feat: add aidlc-evaluator framework\n\nE | CODE |
| MEDIUM | tests/smoke/t250-question-fence-never-echo.test.ts | 84 | // The prohibition verb: matching keeps this robust to reorder. | COMMENT |
| MEDIUM | tests/unit/t251-sensor-stdout-noise.test.ts | 3 | // t251 - sensor output parsing is robust to leading stdout noise. | COMMENT |
| MEDIUM | tests/unit/t243-install-mechanism.test.ts | 3954 | // #1406: a run that leaves another harness on another release names it, with | COMMENT |
| MEDIUM | tests/unit/t243-install-mechanism.test.ts | 4200 | "# kiro harness", | CODE |
| MEDIUM | tests/unit/t-active-space-includes.test.ts | 491 | "# kiro harness", | CODE |
| MEDIUM | tests/unit/t116-directive-path-resolution.test.ts | 126 | // full path so the assertion is robust to the per-emit temp basename. | COMMENT |
| MEDIUM | tests/unit/t304-round18-acceptance-fixes.test.ts | 1136 | // #1406: natively, a refresh that leaves another harness on an older release | COMMENT |
| MEDIUM | tests/unit/t274-voice-parity.test.ts | 190 | "### Structured questions (harness-neutral contract)", | CODE |
| MEDIUM | tests/unit/t149-codex-hook-adapter.test.ts | 1629 | // --- Stop-hook conversational carve-out on Codex (issue #365 cross-harness) --- | COMMENT |
| MEDIUM | tests/unit/t218-kiro-ide-hook-adapter.test.ts | 5576 | // idempotent / robust-extraction behaviour the review flagged. | COMMENT |
| MEDIUM | tests/unit/t239-documentation-parity.test.ts | 308 | "## Pick your harness", | CODE |
| MEDIUM | tests/unit/t199-learnings-memory-path.test.ts | 20 | // the workspace prefix is "spaces", not the real phase. The robust extraction | COMMENT |
| MEDIUM | tests/unit/t151-onboarding-skeleton.test.ts | 146 | expect(setup.match(/^#+ .+$/gm)?.[0], harness.name).toBe("# AI-DLC"); | CODE |
| MEDIUM | tests/unit/t151-onboarding-skeleton.test.ts | 147 | expect(setup.endsWith("\n## Shared AI-DLC onboarding\n\n" + NEUTRAL), harness.name).toBe(true); | CODE |
| MEDIUM | tests/unit/t266-conversation-language-rule.test.ts | 283 | const start = body.indexOf("### Structured questions (harness-neutral contract)"); | CODE |
| MEDIUM | tests/unit/t144-harness-seam.test.ts | 222 | // T1 "harness #N = one harness/ dir + one manifest row, zero core edits" | COMMENT |
| MEDIUM | tests/unit/t147-kiro-hook-adapter.test.ts | 1343 | // Current Stage field reflects it (robust to the fixture state already | COMMENT |
| MEDIUM | tests/unit/t147-kiro-hook-adapter.test.ts | 2378 | // --- Stop-hook run-mode cap on Kiro (issue #365/#367 cross-harness coverage) --- | COMMENT |
| MEDIUM | tests/integration/t121-stop-hook-enforce.test.ts | 70 | // issue #365 broader reading). The hook reads the harness transcript | COMMENT |
| MEDIUM | tests/integration/t188-plugin-compose.serial.test.ts | 59 | const BUN = process.execPath; // the bun running this test — robust for hooks | CODE |
| MEDIUM | tests/integration/t91.test.ts | 257 | // element, but slice(-3) is robust to it (the .sh comment at t91:55-56). | COMMENT |
| MEDIUM | tests/integration/t187-park-conversational.sdk.test.ts | 118 | // observable park signals (robust to the conductor's exact tool path): | COMMENT |
| MEDIUM | tests/harness/live-corpus.ts | 243 | const lines = [`# ${report.title}: ${harness} at ${sha} (${stamp})`, "", `${report.sampleLine} Items driven: ${mine. | CODE |
| MEDIUM | tests/harness/custom-harness.ts | 302 | its \`## Origin\` section so the harness can verify the custom knowledge reached | CODE |
| MEDIUM | tests/e2e/t-tui-t58-workshop-scope.serial.test.ts | 72 | // gateless known-scope path is safe too. NET: robust to both routings; the disk | COMMENT |
| MEDIUM | tests/e2e/t-acp-kiro-utilities.serial.test.ts | 16 | // fire and the tool output would never reach an ACP surface. The robust surfaces for these | COMMENT |
| MEDIUM | tests/e2e/t-acp-kiro-status.serial.test.ts | 21 | // non-deterministic, never assertable). So the only robust surfaces for this | COMMENT |
| MEDIUM | tests/e2e/t-tui-t51-poc-scope.serial.test.ts | 204 | // (the template's exact two-step, robust for slash commands). | COMMENT |
| MEDIUM | harness/copilot/manifest.ts | 140 | // The pre-neutral shipped variant (#1268 made the root block harness-neutral). | COMMENT |
| MEDIUM | harness/copilot/onboarding.fills.ts | 28 | sections_before_resumption: `## What's different on this harness | CODE |
| MEDIUM | harness/cursor/manifest.ts | 79 | // The pre-neutral shipped variant (#1268 made the root block harness-neutral). | COMMENT |
| MEDIUM | harness/cursor/onboarding.fills.ts | 28 | sections_before_resumption: `## What's different on this harness | CODE |
| MEDIUM | harness/codex/emit.ts | 143 | # hand-editable source of truth, identical on every harness (NOT a per-harness | COMMENT |
| MEDIUM | harness/codex/emit.ts | 186 | : `# Bun copy-channel allowlist: deterministic framework tools stay under the harness tree. | CODE |
| MEDIUM | harness/codex/manifest.ts | 96 | // The pre-neutral shipped variant (#1268 made the root block harness-neutral). | COMMENT |
| MEDIUM | harness/codex/onboarding.fills.ts | 48 | sections_before_resumption: `## What's different on this harness | CODE |
| MEDIUM | harness/kiro/manifest.ts | 131 | // The pre-neutral shipped variant (#1268 made the root block harness-neutral). | COMMENT |
| MEDIUM | harness/kiro/onboarding.fills.ts | 27 | sections_before_resumption: `## What's different on this harness | CODE |
| MEDIUM | harness/kiro-ide/manifest.ts | 294 | // The pre-neutral shipped variant (#1268 made the root block harness-neutral). | COMMENT |
| MEDIUM | harness/kiro-ide/onboarding.fills.ts | 29 | sections_before_resumption: `## What's different on this harness | CODE |
| MEDIUM | harness/opencode/manifest.ts | 90 | // The pre-neutral shipped variant (#1268 made the root block harness-neutral). | COMMENT |
| MEDIUM | harness/opencode/onboarding.fills.ts | 26 | sections_before_resumption: `## What's different on this harness | CODE |
| MEDIUM | scripts/package.ts | 186 | // manifest.ts. DISCOVERED, not hardcoded: adding harness #N is one harness/<n>/ | COMMENT |
| MEDIUM | scripts/package.ts | 970 | // override the robust choice. The renameRulesInCompiledData backstop still | COMMENT |
| MEDIUM | .github/workflows/release.yml | 164 | # Regenerate the projections from core/ + harness/ so the release gate | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 10 | # production: live harness shards run in full-suite.yml, which | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/tools/aidlc-testing-posture.ts | 1930 | // A "## Step 3: Tests" heading groups the tasks under it; any other | COMMENT |
| LOW | core/tools/aidlc-state.ts | 8155 | // Step 1: Revalidate the hub-and-spoke evidence immediately before the | COMMENT |
| LOW | core/tools/aidlc-state.ts | 8193 | // Step 2: Read both drafts. | COMMENT |
| LOW | core/tools/aidlc-state.ts | 8209 | // Step 3: Read both target files. Fail closed if either is missing. | COMMENT |
| LOW | core/tools/aidlc-state.ts | 8342 | // Step 7: Emit PRACTICES_AFFIRMED and record the matching state timestamp in | COMMENT |
| LOW⚡ | tests/unit/t-plan-approval-recovery-paths.test.ts | 142 | // Step 2: the plan carries the complete `## Testing Contract` block from `render`. | COMMENT |
| LOW⚡ | tests/unit/t-plan-approval-recovery-paths.test.ts | 152 | // Step 3: record both tags the fingerprint command printed, then the options. | COMMENT |
| LOW⚡ | tests/unit/t221-reviewer-scope-hook.test.ts | 1205 | // Step 1: the write, owed per unit under a run-stage AND under a swarm | COMMENT |
| LOW⚡ | tests/unit/t221-reviewer-scope-hook.test.ts | 1212 | // Step 3: the engine removes the record as it records the verdict | COMMENT |
| LOW | tests/unit/t154-codekb-promotion.test.ts | 134 | const step2Start = body.indexOf("### Step 2:"); | CODE |
| LOW | tests/unit/t277-validate-grid-nearest-stock.test.ts | 183 | contract.indexOf("### Step 7:"), | CODE |
| LOW | tests/unit/t277-validate-grid-nearest-stock.test.ts | 184 | contract.indexOf("### Step 8:"), | CODE |
| LOW | tests/unit/t-dotnet-build-outputs.test.ts | 361 | const step2 = stage.slice(stage.indexOf("### Step 2:"), stage.indexOf("### Step 3:")); | CODE |
| LOW | tests/unit/t-dotnet-build-outputs.test.ts | 367 | const step3 = stage.slice(stage.indexOf("### Step 3:"), stage.indexOf("### Step 4:")); | CODE |
| LOW | tests/unit/t351-composer-unsaved-plans.test.ts | 845 | for (const phrase of ["base_scope", "plan_changes", "baseScope", "you never write a scope file", "### Step 10: Nothi | CODE |
| LOW⚡ | tests/unit/t-code-generation-resume.test.ts | 853 | "## Step 1: Fix the filter", | CODE |
| LOW⚡ | tests/unit/t-code-generation-resume.test.ts | 856 | "## Step 2: Tests", | CODE |
| LOW | tests/unit/t305-per-unit-attribution-receipts.test.ts | 3625 | const step3=stage.indexOf("### Step 3: Plan Approval"); const step5=stage.indexOf("### Step 5:"); const step6=stage. | CODE |
| LOW | tests/unit/t248-codekb-scope-diff.test.ts | 960 | const step5 = stage.slice(stage.indexOf("### Step 5:"), stage.indexOf("## Sensors")); | CODE |
| LOW⚡ | tests/integration/t118.test.ts | 912 | // Step 1: the next decision rule defers the skeleton gate -> gate is the | COMMENT |
| LOW⚡ | tests/integration/t118.test.ts | 917 | // Step 2: the report dispatcher's STANCE branch records the typed stance and | COMMENT |
| LOW | tests/integration/t118.test.ts | 934 | // Step 3: the next decision rule reads the recorded stance and re-emits the | COMMENT |
| LOW⚡ | tests/integration/t49.test.ts | 367 | // Step 1: reviewer receipt, then gate-start [-] -> [?] | COMMENT |
| LOW⚡ | tests/integration/t49.test.ts | 371 | // Step 2: reject [?] -> [R], increments Revision Count | COMMENT |
| LOW⚡ | tests/integration/t49.test.ts | 384 | // Step 3: revise [R] -> [?] | COMMENT |
| LOW⚡ | tests/integration/t49.test.ts | 387 | // Step 4: approve [?] -> [x] (auto-advances to the next in-scope stage). | COMMENT |
| LOW⚡ | tests/integration/t49.test.ts | 395 | // Step 5: advance — approve already auto-advanced, so this replays cleanly. | COMMENT |
| LOW | tests/harness/custom-harness.ts | 450 | ### Step 1: Capture the ${SNAPSHOT_ARTIFACT} artefact | COMMENT |
| LOW | tests/harness/custom-harness.ts | 475 | ### Step 2: Update state | COMMENT |
| LOW⚡ | tests/harness/custom-harness.ts | 522 | ### Step 1: Read the upstream ${SNAPSHOT_ARTIFACT} artefact | COMMENT |
| LOW⚡ | tests/harness/custom-harness.ts | 528 | ### Step 2: Produce the ${PLAN_ARTIFACT} artefact | COMMENT |
| LOW⚡ | tests/harness/custom-harness.ts | 536 | ### Step 3: Update state | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | core/tools/aidlc-completions.ts | 91 | elif [[ "$cur" == --* ]]; then | CODE |
| HIGH | core/tools/aidlc-completions.ts | 97 | elif [ "\${COMP_CWORD}" -eq 2 ]; then | CODE |
| HIGH | core/tools/aidlc-completions.ts | 122 | elif [[ "\${words[CURRENT]}" == --* ]]; then | CODE |
| HIGH | tests/unit/t113.test.ts | 1164 | print(), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/knowledge/aidlc-design-agent/wireframing-guide.md | 11 | - **Content**: Boxes and lines, placeholder text ("Lorem ipsum"), no color, no real data | CODE |
| LOW | tests/unit/t-resume-kept-replies.test.ts | 108 | filler += `\n## Extra rule section ${i}\n\n${"Lorem ipsum dolor sit amet, consectetur adipiscing elit. ".repeat(60)} | CODE |
| LOW | tests/unit/t-resume-kept-replies.test.ts | 108 | filler += `\n## Extra rule section ${i}\n\n${"Lorem ipsum dolor sit amet, consectetur adipiscing elit. ".repeat(60)} | CODE |
| LOW | tests/unit/t201-swarm-batch-advance.test.ts | 388 | `\n## Extra rule section ${i}\n\n${"Lorem ipsum dolor sit amet, consectetur adipiscing elit. ".repeat(60)}\n`, | CODE |
| LOW | tests/unit/t201-swarm-batch-advance.test.ts | 388 | `\n## Extra rule section ${i}\n\n${"Lorem ipsum dolor sit amet, consectetur adipiscing elit. ".repeat(60)}\n`, | CODE |
| LOW | tests/unit/t248-steering-content-delivery.test.ts | 274 | `${"Lorem ipsum dolor sit amet, consectetur adipiscing elit. ".repeat(60)}\n`; | CODE |
| LOW | tests/unit/t248-steering-content-delivery.test.ts | 274 | `${"Lorem ipsum dolor sit amet, consectetur adipiscing elit. ".repeat(60)}\n`; | CODE |
| LOW | tests/unit/t342-construction-checkpoint-routing.test.ts | 2832 | filler += `\n## Extra rule section ${i}\n\n${"Lorem ipsum dolor sit amet, consectetur adipiscing elit. ".repeat( | CODE |
| LOW | tests/unit/t342-construction-checkpoint-routing.test.ts | 2832 | filler += `\n## Extra rule section ${i}\n\n${"Lorem ipsum dolor sit amet, consectetur adipiscing elit. ".repeat( | CODE |
| LOW | tests/integration/t325-team-unit-claims.test.ts | 1602 | git(outsider, ["config", "user.email", "outsider@example.org"]); | CODE |
| LOW | tests/integration/t325-team-unit-claims.test.ts | 1606 | expect(refused.out).toContain("You cannot push commits for 'outsider@example.org'"); | CODE |
| LOW | tests/harness/kiro-ide-driver.ts | 1042 | const v = norm(e.getAttribute("placeholder")||e.getAttribute("aria-label")||e.getAttribute("data-placeholder")); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/full-suite.yml | 234 | # Create the log before the background writer opens it, so the | COMMENT |
| MEDIUM | .github/workflows/deterministic-tests.yml | 268 | # Create the log before the background writer opens it, so the | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 164 | # Create the log before the background writer opens it, so the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | CONTRIBUTING.md | 126 | ### AI-generated contributions | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit/t352-workspace-reclassify.test.ts | 525 | // "I've added my existing app to this folder, carry on." | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/ci-live-deps.py | 23 | CODE | |
| LOW | scripts/ci-live-deps.py | 115 | CODE |