This report presents the forensic synthetic code analysis of Gentleman-Programming/gentle-ai, a Go project with 4,833 GitHub stars. SynthScan v2.0 examined 211,354 lines of code across 870 source files, recording 492 pattern matches distributed across 9 syntactic categories. The overall adjusted score of 5.3 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 492 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | internal/app/app_test.go | 419 | // ─── BUG 3: SyncOverrides.StrictTDD never read in tuiSync ─────────────────── | COMMENT |
| MEDIUM | internal/app/app_test.go | 925 | // ─── Persist model assignments (TUI path) ─────────────────────────────────── | COMMENT |
| MEDIUM | internal/app/app_test.go | 1593 | // ─── Carril model assignment tests (W-3 fix) ───────────────────────────────── | COMMENT |
| MEDIUM | internal/app/app_test.go | 1872 | // ─── Slice 4 RED: deferred sync on launch via pending_sync flag ─────────────── | COMMENT |
| MEDIUM | internal/app/selfupdate_test.go | 604 | // ─── Slice 4 RED: PendingSync written on successful self-upgrade ───────────── | COMMENT |
| MEDIUM | internal/app/selfupdate_test.go | 756 | // ─── Slice 5 RED: CLI prompt is default ────────────────────────────────────── | COMMENT |
| MEDIUM | internal/agentbuilder/engine_test.go | 11 | // ─── MockEngine tests ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/agentbuilder/engine_test.go | 64 | // ─── NewEngine tests ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/agentbuilder/engine_test.go | 121 | // ─── Engine command construction tests ─────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | internal/tui/model_test.go | 2935 | // ─── T20: Model config → sync persistence (PendingSyncOverrides) ─────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1060 | // ─── OperationRunning guard: Enter blocked ────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1120 | // ─── OperationRunning guard: Esc blocked ──────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1167 | // ─── UpgradeDoneMsg error model ───────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1191 | // ─── UpgradePhaseCompletedMsg (two-phase upgrade+sync) ───────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1240 | // ─── UpgradeDoneMsg clears update state ───────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 1313 | // ─── T16: Welcome screen 7-item menu navigation ──────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 2272 | // ─── T19: Model config navigation ───────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 2637 | // ─── Detection-default consumer regression tests ─────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 2659 | // ─── T_BACKUP_SCROLL: Backup scroll and new key navigation tests ────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 3454 | // ─── agentsToManage / preselectedAgents — state wins over detection ───────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 3561 | // ─── Task 4: StrictTDD screen navigation ──────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 3686 | // ─── Bug fixes: Enter-Back navigation must be consistent with ESC ──────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 3794 | // ─── Bug fix: StrictTDD must appear for ANY agent when SDD is selected ─────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 3931 | // ─── Custom preset StrictTDD navigation gaps ──────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4254 | // ─── Issue #150: Wrap-around navigation ───────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4254 | // ─── Issue #150: Wrap-around navigation ───────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4369 | // ─── Issue #130: ModelConfig pre-populate model assignments ──────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4369 | // ─── Issue #130: ModelConfig pre-populate model assignments ──────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4513 | // ─── T_BACKUP_PIN: Pin key tests ─────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 4946 | // ─── Codex picker install-flow routing tests ───────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5190 | // ─── FIX W-1: Codex custom sub-mode cursor reset ───────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5192 | // ─── FIX W-2: CustomConfirmed reset on preset selection ────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5224 | // ─── FIX W-1: Codex custom sub-mode cursor reset ───────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5293 | // ─── TUI-path PendingSync (task 4.8) ──────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5501 | // ─── AdvisoryMsg TUI layer tests ───────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 5747 | // ─── Advisory message sanitization tests ───────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6138 | // ─── Enter confirms highlighted cursor option ───────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6283 | // ─── Upgrade error surfacing ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6399 | // ─── UpdateCheckResultMsg guard: only switch from Welcome ──────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6425 | // ─── UpgradeFn nil guard ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6579 | // ─── Unit 1+2: pickerFlowSlice, pickerNextScreen, pickerPreviousScreen ────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 6999 | // ─── Unit 3: applyPickerEntry ───────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 7183 | // ─── Unit 4: TestPickerBackRowRegression ───────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/model_test.go | 7441 | // ─── Slice 3b — OpenCode plugin uninstall TUI wiring ──────────────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 14 | // ─── Helper: set up a model on the agent builder engine screen ─────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 46 | // ─── T-28.2: Esc from ScreenAgentBuilderEngine → back to Welcome ───────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 59 | // ─── T-28.3: Enter on engine → navigates to ScreenAgentBuilderPrompt ────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 76 | // ─── T-28.4: Enter on prompt with empty textarea → stays on prompt ──────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 95 | // ─── T-28.5: Tab on prompt with non-empty textarea → navigates to SDD ──────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 180 | // ─── T-28.10: AgentBuilderGeneratedMsg moves to Preview ────────────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 206 | // ─── T-28.11: AgentBuilderGeneratedMsg with error stays on Generating ───────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 224 | // ─── T-28.12: AgentBuilderInstallDoneMsg moves to Complete ─────────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 248 | // ─── T-28.13: Enter on Complete → back to Welcome ──────────────────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 262 | // ─── T-28.14: Esc from Complete → back to Welcome ──────────────────────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 276 | // ─── T-28.15: Esc while Generating cancels and returns to Prompt ───────────── | COMMENT |
| MEDIUM | internal/tui/agent_builder_nav_test.go | 330 | // ─── T-28.18: Back option on engine screen (cursor=last) → Welcome ─────────── | COMMENT |
| MEDIUM | internal/tui/screens/codex_model_picker_test.go | 184 | // ─── WU-4 RED: self-describing labels ──────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/screens/codex_model_picker_test.go | 246 | // ─── WU-3: Custom per-phase picker ─────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/screens/model_picker_test.go | 30 | // ─── ModelPickerRows ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/tui/screens/model_picker_test.go | 90 | // ─── handleModelNav: orchestrator row (idx 0) ────────────────────────────── | COMMENT |
| 200 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | PRD-AGENT-BUILDER.md | 494 | │ │ ├── agent_builder_engine.go # Step 1: Engine selection | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 495 | │ │ ├── agent_builder_prompt.go # Step 2: Description input | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 496 | │ │ ├── agent_builder_sdd.go # Step 3: SDD integration | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 497 | │ │ ├── agent_builder_generating.go # Step 4: Generation progress | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 498 | │ │ ├── agent_builder_preview.go # Step 5: Preview + edit | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 499 | │ │ └── agent_builder_complete.go # Step 6: Installation complete | CODE |
| LOW⚡ | PRD-AGENT-BUILDER.md | 531 | // Step 1: Selected generation engine | COMMENT |
| LOW⚡ | PRD-AGENT-BUILDER.md | 535 | // Step 2: User prompt | COMMENT |
| LOW⚡ | PRD-AGENT-BUILDER.md | 539 | // Step 3: SDD integration | COMMENT |
| LOW⚡ | PRD-AGENT-BUILDER.md | 543 | // Step 4: Generation | COMMENT |
| LOW⚡ | PRD-AGENT-BUILDER.md | 547 | // Step 5: Preview | COMMENT |
| LOW⚡ | PRD-AGENT-BUILDER.md | 551 | // Step 6: Installation | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 41 | // Step 1: Compose prompt. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 50 | // Step 2: Call MockEngine.Generate with the prompt. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 62 | // Step 3: Parse the result. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 68 | // Step 4: Assert GeneratedAgent has correct fields. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 82 | // Step 5: Call Install with temp dirs. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 96 | // Step 6: Assert files written. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 116 | // Step 7: Call LoadRegistry, add entry, verify entry added. | COMMENT |
| LOW⚡ | internal/tui/model_test.go | 2941 | // Step 1: from ScreenModelConfig, cursor=0 → goes to ClaudeModelPicker with ModelConfigMode=true. | COMMENT |
| LOW | internal/tui/model_test.go | 2956 | // Step 2: from ClaudeModelPicker (ModelConfigMode=true), cursor=0 (balanced preset), enter | COMMENT |
| LOW | internal/tui/model_test.go | 5019 | // Step 1: ScreenPreset → ScreenClaudeModelPicker. | COMMENT |
| LOW | internal/tui/model_test.go | 5031 | // Step 2: ScreenClaudeModelPicker confirm → ScreenKiroModelPicker. | COMMENT |
| LOW | internal/tui/model_test.go | 5043 | // Step 3: ScreenKiroModelPicker confirm → ScreenCodexModelPicker. | COMMENT |
| LOW | internal/tui/model_test.go | 5964 | // Step 1: execute the goroutine cmd → should produce UpgradeDoneMsg. | COMMENT |
| LOW | internal/tui/model_test.go | 5990 | // Step 2: feed UpgradeDoneMsg into the model returned by the keypress | COMMENT |
| LOW | internal/tui/model.go | 4660 | // Step 2: confirm. | COMMENT |
| LOW | internal/tui/screens/model_picker_test.go | 399 | // Step 2: Select an individual sub-agent phase (idx 2 = phases[0]). | COMMENT |
| LOW⚡ | internal/tui/screens/profile_create_test.go | 147 | // Step 0: text input — 0 navigation options (cursor not used for options) | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 305 | // Step 1: Find the top-level mcp_servers: key. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 327 | // Step 2: Find the child region of mcp_servers:. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 341 | // Step 3: Within the region, find the server key at exactly 2-space indent. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 361 | // Step 4: Within the server's sub-block, find the command: line. | COMMENT |
| LOW⚡ | internal/components/sdd/profiles_lifecycle_test.go | 24 | // Step 1: Write a minimal opencode.json with just a model field. | COMMENT |
| LOW⚡ | internal/components/sdd/profiles_lifecycle_test.go | 32 | // Step 2: WriteSharedPromptFiles — expect 10 files created. | COMMENT |
| LOW | internal/components/sdd/profiles_lifecycle_test.go | 54 | // Step 3: Create Profile{Name:"cheap", OrchestratorModel: haiku}. | COMMENT |
| LOW | internal/components/sdd/profiles_lifecycle_test.go | 66 | // Step 4: Merge overlay into opencode.json → verify SDD agent keys for "cheap". | COMMENT |
| LOW | internal/components/sdd/profiles_lifecycle_test.go | 100 | // Step 5: DetectProfiles → verify 1 profile detected with correct model. | COMMENT |
| LOW | internal/components/sdd/profiles_lifecycle_test.go | 118 | // Step 6: Edit — create Profile{Name:"cheap", OrchestratorModel: sonnet} → generate new overlay → merge. | COMMENT |
| LOW | internal/components/sdd/profiles_lifecycle_test.go | 154 | // Step 7: RemoveProfileAgents → verify 11 keys removed. | COMMENT |
| LOW⚡ | internal/components/sdd/profiles_lifecycle_test.go | 177 | // Step 8: DetectProfiles → verify 0 profiles detected. | COMMENT |
| LOW⚡ | internal/components/sdd/profiles_lifecycle_test.go | 186 | // Step 9: Verify shared prompt files still exist (not deleted by remove). | COMMENT |
| LOW | internal/components/persona/inject_test.go | 1622 | // Step 1: install gentleman — creates output-styles/gentleman.md and sets outputStyle in settings.json. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 1646 | // Step 2: switch to neutral — should clean both residuals. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 1740 | // Step 1: install gentleman — agent.gentleman key must appear in opencode.json. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 1772 | // Step 2: switch to neutral — agent.gentleman must be removed. | COMMENT |
| LOW | internal/assets/skills/sdd-spec/SKILL.md | 53 | ### Step 1: Load Skills | COMMENT |
| LOW | internal/assets/skills/sdd-spec/SKILL.md | 56 | ### Step 2: Identify Affected Domains | COMMENT |
| LOW | internal/assets/skills/sdd-spec/SKILL.md | 72 | ### Step 3: Read Existing Specs | COMMENT |
| LOW | internal/assets/skills/sdd-spec/SKILL.md | 80 | ### Step 4: Write Delta Specs | COMMENT |
| LOW | internal/assets/skills/sdd-spec/SKILL.md | 196 | ### Step 5: Persist Artifact | COMMENT |
| LOW | internal/assets/skills/sdd-spec/SKILL.md | 205 | ### Step 6: Return Summary | COMMENT |
| LOW | internal/assets/skills/sdd-propose/SKILL.md | 55 | ### Step 0: Shape the Proposal in Interactive Mode | COMMENT |
| LOW | internal/assets/skills/sdd-propose/SKILL.md | 71 | ### Step 1: Load Skills | COMMENT |
| LOW | internal/assets/skills/sdd-propose/SKILL.md | 74 | ### Step 2: Create Change Directory | COMMENT |
| LOW | internal/assets/skills/sdd-propose/SKILL.md | 85 | ### Step 3: Read Existing Specs | COMMENT |
| LOW | internal/assets/skills/sdd-propose/SKILL.md | 93 | ### Step 4: Write proposal.md | COMMENT |
| LOW | internal/assets/skills/sdd-propose/SKILL.md | 163 | ### Step 5: Persist Artifact | COMMENT |
| LOW | internal/assets/skills/sdd-propose/SKILL.md | 172 | ### Step 6: Return Summary | COMMENT |
| LOW | internal/assets/skills/sdd-archive/SKILL.md | 90 | ### Step 1: Load Skills | COMMENT |
| 35 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/app/app.go | 161 | // previously chose instead of re-selecting every detected config dir. | COMMENT |
| LOW | internal/update/advisory.go | 21 | // PREREQUISITE: the repo owner must create a GitHub release tagged "advisory" | COMMENT |
| LOW | internal/update/advisory.go | 41 | COMMENT | |
| LOW | internal/update/cooldown.go | 21 | // CheckAllWithCooldown gates CheckAll behind a TTL-based cooldown. It reads | COMMENT |
| LOW | internal/update/upgrade/strategy.go | 41 | // Package-level var for testability. | COMMENT |
| LOW | internal/update/upgrade/strategy.go | 341 | return fmt.Sprintf("OpenCode plugin %s is registered in ~/.config/opencode/tui.json but is not materialized in node_mod | COMMENT |
| LOW | internal/update/upgrade/strategy.go | 661 | // engramBinaryUpgrade downloads or installs the latest engram binary. | COMMENT |
| LOW | internal/update/upgrade/download.go | 21 | ) | COMMENT |
| LOW | internal/update/upgrade/executor.go | 41 | // upgrade execution. Swapping this var in tests allows forcing snapshot | COMMENT |
| LOW | internal/update/upgrade/executor.go | 61 | // explicitly opts out of backup behavior for a single run (CLI: --no-backup). | COMMENT |
| LOW | internal/update/upgrade/executor.go | 121 | // This is intentionally NOT a recursive backup of agent config directories. | COMMENT |
| LOW | internal/update/upgrade/executor.go | 321 | writeBackupDiagnostic(diagnostics, "backup: skipping embedded path %s: %v", cleanEmbedDir, err) | COMMENT |
| LOW | internal/update/upgrade/executor.go | 401 | } | COMMENT |
| LOW | internal/update/upgrade/symlink_test.go | 1 | package upgrade | COMMENT |
| LOW | internal/tui/model_test.go | 3801 | m := NewModel(system.DetectionResult{}, "dev") | COMMENT |
| LOW | internal/tui/model_test.go | 3821 | // We use the "Back" path of confirmSelection (ScreenClaudeModelPicker Enter on | COMMENT |
| LOW | internal/tui/model_test.go | 3841 | // Press Enter → sets preset, components include SDD → should showClaudeModelPicker | COMMENT |
| LOW | internal/tui/model_test.go | 3861 | // returning (true, non-nil) by calling the navigation directly. | COMMENT |
| LOW | internal/tui/model.go | 601 | COMMENT | |
| LOW | internal/tui/model.go | 4321 | } | COMMENT |
| LOW | internal/tui/screens/codex_model_picker_test.go | 421 | // TestCodexCustomModelSelect_MultipleDownReachesIndex2 verifies that pressing | COMMENT |
| LOW | internal/tui/screens/update_prompt.go | 21 | "Keep current version", | COMMENT |
| LOW | internal/tui/screens/claude_model_picker.go | 181 | ClaudePresetPerformance: model.ClaudeModelPresetPerformance, | COMMENT |
| LOW | internal/planner/order.go | 61 | COMMENT | |
| LOW | internal/agents/codex/adapter_test.go | 181 | // TestAdapterSubAgentsStayFalse is a REGRESSION GUARD. | COMMENT |
| LOW | internal/agents/codex/profiles.go | 61 | for _, p := range defaults { | COMMENT |
| LOW | internal/agents/trae/adapter.go | 21 | // - Detection / skills: ~/.trae/ (cross-platform, always under home) | COMMENT |
| LOW | internal/agents/windsurf/adapter.go | 21 | // - Global AI config (MCP, memories): ~/.codeium/windsurf/ | COMMENT |
| LOW | internal/agents/kimi/adapter_test.go | 281 | // On Windows, if we are simulating we want backslashes. | COMMENT |
| LOW | internal/cli/run.go | 81 | COMMENT | |
| LOW | internal/cli/sync.go | 281 | return model.ModelAssignment{ProviderID: providerID, ModelID: modelID}, nil | COMMENT |
| LOW | internal/cli/sync.go | 381 | // | COMMENT |
| LOW | internal/cli/sync_test.go | 1701 | // Must list the agents involved. | COMMENT |
| LOW | internal/cli/protocol_probe_test.go | 1 | package cli | COMMENT |
| LOW | internal/state/state.go | 61 | // ClaudePhaseAssignments maps SDD phase names to Claude model+effort assignments. | COMMENT |
| LOW | internal/state/state.go | 81 | // regenerates profile files with the user's chosen model per tier. | COMMENT |
| LOW | internal/state/state.go | 101 | COMMENT | |
| LOW | internal/components/engram/download_test.go | 1341 | // pipeline was empty. It must never come back. | COMMENT |
| LOW | internal/components/engram/download_test.go | 1361 | // $fileStream = [System.IO.File]::OpenRead($archivePath) | COMMENT |
| LOW | internal/components/engram/download.go | 121 | } | COMMENT |
| LOW | internal/components/engram/download.go | 581 | } | COMMENT |
| LOW | internal/components/engram/inject.go | 181 | // CodexCarrilModelAssignments holds the resolved carril→model-id map used | COMMENT |
| LOW | internal/components/engram/inject.go | 421 | // Mutation order (matters for idempotency): | COMMENT |
| LOW | internal/components/engram/inject.go | 781 | COMMENT | |
| LOW | internal/components/engram/setup.go | 21 | // so a menu-printing old engram binary (see design.md Decision 4 Open | COMMENT |
| LOW | internal/components/filemerge/section.go | 41 | // It is safe to call on any file: if no legacy block is detected, the original | COMMENT |
| LOW | internal/components/filemerge/section.go | 141 | // The block is wrapped in <!-- BEGIN:agent-teams-lite --> / <!-- END:agent-teams-lite --> | COMMENT |
| LOW | internal/components/filemerge/section.go | 221 | COMMENT | |
| LOW | internal/components/filemerge/section.go | 261 | COMMENT | |
| LOW | internal/components/filemerge/json_merge.go | 181 | return out | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 21 | // command: <command> | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 281 | // ReadYAMLMCPServerCommand recovers the executable of a named MCP server's | COMMENT |
| LOW | internal/components/sdd/read_assignments.go | 21 | set["gentle-orchestrator"] = true | COMMENT |
| LOW | internal/components/sdd/prompts.go | 41 | // {homeDir}/.config/opencode/prompts/sdd/. The content for each phase is extracted | COMMENT |
| LOW | internal/components/sdd/inject.go | 41 | // workflow files are copied to <workspaceDir>/.windsurf/workflows/. | COMMENT |
| LOW | internal/components/sdd/inject.go | 61 | // extract the appropriate section from SDD skill files. If empty, | COMMENT |
| LOW | internal/components/sdd/inject.go | 81 | // This intentionally does NOT extend agents.Adapter to avoid requiring all | COMMENT |
| LOW | internal/components/sdd/inject.go | 101 | } | COMMENT |
| LOW | internal/components/sdd/inject.go | 161 | // Priority order: | COMMENT |
| LOW | internal/components/sdd/inject.go | 301 | COMMENT | |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | internal/agentbuilder/integration_test.go | 41 | // Step 1: Compose prompt. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 50 | // Step 2: Call MockEngine.Generate with the prompt. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 62 | // Step 3: Parse the result. | COMMENT |
| LOW⚡ | internal/agentbuilder/integration_test.go | 68 | // Step 4: Assert GeneratedAgent has correct fields. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 82 | // Step 5: Call Install with temp dirs. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 96 | // Step 6: Assert files written. | COMMENT |
| LOW | internal/agentbuilder/integration_test.go | 116 | // Step 7: Call LoadRegistry, add entry, verify entry added. | COMMENT |
| LOW⚡ | internal/tui/model_test.go | 2941 | // Step 1: from ScreenModelConfig, cursor=0 → goes to ClaudeModelPicker with ModelConfigMode=true. | COMMENT |
| LOW | internal/tui/model_test.go | 2956 | // Step 2: from ClaudeModelPicker (ModelConfigMode=true), cursor=0 (balanced preset), enter | COMMENT |
| LOW | internal/tui/model_test.go | 5019 | // Step 1: ScreenPreset → ScreenClaudeModelPicker. | COMMENT |
| LOW | internal/tui/model_test.go | 5031 | // Step 2: ScreenClaudeModelPicker confirm → ScreenKiroModelPicker. | COMMENT |
| LOW | internal/tui/model_test.go | 5043 | // Step 3: ScreenKiroModelPicker confirm → ScreenCodexModelPicker. | COMMENT |
| LOW | internal/tui/model_test.go | 5964 | // Step 1: execute the goroutine cmd → should produce UpgradeDoneMsg. | COMMENT |
| LOW | internal/tui/model_test.go | 5990 | // Step 2: feed UpgradeDoneMsg into the model returned by the keypress | COMMENT |
| LOW | internal/tui/model.go | 4660 | // Step 2: confirm. | COMMENT |
| LOW | internal/tui/screens/model_picker_test.go | 383 | // Step 1: "Set all phases" — AllPhasesModel should be set to alpha. | COMMENT |
| LOW | internal/tui/screens/model_picker_test.go | 399 | // Step 2: Select an individual sub-agent phase (idx 2 = phases[0]). | COMMENT |
| LOW⚡ | internal/tui/screens/profile_create_test.go | 147 | // Step 0: text input — 0 navigation options (cursor not used for options) | COMMENT |
| LOW⚡ | internal/tui/screens/profile_create_test.go | 157 | // Step 2: "Create & Sync" + "Cancel" = 2 | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 305 | // Step 1: Find the top-level mcp_servers: key. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 327 | // Step 2: Find the child region of mcp_servers:. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 341 | // Step 3: Within the region, find the server key at exactly 2-space indent. | COMMENT |
| LOW | internal/components/filemerge/yaml.go | 361 | // Step 4: Within the server's sub-block, find the command: line. | COMMENT |
| LOW⚡ | internal/components/sdd/profiles_lifecycle_test.go | 24 | // Step 1: Write a minimal opencode.json with just a model field. | COMMENT |
| LOW⚡ | internal/components/sdd/profiles_lifecycle_test.go | 32 | // Step 2: WriteSharedPromptFiles — expect 10 files created. | COMMENT |
| LOW | internal/components/sdd/profiles_lifecycle_test.go | 54 | // Step 3: Create Profile{Name:"cheap", OrchestratorModel: haiku}. | COMMENT |
| LOW | internal/components/sdd/profiles_lifecycle_test.go | 66 | // Step 4: Merge overlay into opencode.json → verify SDD agent keys for "cheap". | COMMENT |
| LOW | internal/components/sdd/profiles_lifecycle_test.go | 100 | // Step 5: DetectProfiles → verify 1 profile detected with correct model. | COMMENT |
| LOW | internal/components/sdd/profiles_lifecycle_test.go | 118 | // Step 6: Edit — create Profile{Name:"cheap", OrchestratorModel: sonnet} → generate new overlay → merge. | COMMENT |
| LOW | internal/components/sdd/profiles_lifecycle_test.go | 154 | // Step 7: RemoveProfileAgents → verify 11 keys removed. | COMMENT |
| LOW⚡ | internal/components/sdd/profiles_lifecycle_test.go | 177 | // Step 8: DetectProfiles → verify 0 profiles detected. | COMMENT |
| LOW⚡ | internal/components/sdd/profiles_lifecycle_test.go | 186 | // Step 9: Verify shared prompt files still exist (not deleted by remove). | COMMENT |
| LOW | internal/components/persona/inject_test.go | 1622 | // Step 1: install gentleman — creates output-styles/gentleman.md and sets outputStyle in settings.json. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 1646 | // Step 2: switch to neutral — should clean both residuals. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 1740 | // Step 1: install gentleman — agent.gentleman key must appear in opencode.json. | COMMENT |
| LOW | internal/components/persona/inject_test.go | 1772 | // Step 2: switch to neutral — agent.gentleman must be removed. | COMMENT |
| LOW⚡ | e2e/e2e_test.sh | 1586 | # Step 1: Install full stack with gentleman | COMMENT |
| LOW⚡ | e2e/e2e_test.sh | 1593 | # Step 2: Switch to neutral persona | COMMENT |
| LOW⚡ | e2e/e2e_test.sh | 1596 | # Step 3: Verify sections survived | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | internal/agentbuilder/prompt.go | 19 | 5. ## Rules — Hard constraints and guardrails (what the agent must/must not do) | CODE |
| MEDIUM | e2e/e2e_test.sh | 750 | # The SDD component always installs its 11 SDD+orchestration skills. | COMMENT |
| MEDIUM | e2e/e2e_test.sh | 871 | # SDD + orchestration skill files (11) | COMMENT |
| MEDIUM | openspec/specs/antigravity-support/spec.md | 34 | #### Scenario: SDD orchestration runs in Antigravity | COMMENT |
| MEDIUM | …/archive/2026-07-08-persona-canonical-channel/tasks.md | 43 | - [x] In `internal/components/persona/inject_test.go` (`:56-100`), flip assertions to expect CLAUDE.md has NO "Senior Ar | CODE |
| MEDIUM | …archive/2026-07-08-persona-canonical-channel/design.md | 182 | | Unit RED | `TestInjectClaudeGentlemanWritesSectionWithRealContent` (`:56-100`): flip `:81-83` to assert CLAUDE.md has | CODE |
| MEDIUM | ….0-compatibility/specs/sdd-orchestrator-assets/spec.md | 5 | ### Requirement: Antigravity uses dynamic subagent orchestration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/assets/gga/pr_mode.sh | 96 | # Check if file matches any include pattern | COMMENT |
| LOW | internal/assets/gga/pr_mode.sh | 117 | # Check if file matches any exclude pattern | COMMENT |
| LOW⚡ | scripts/install.sh | 470 | # Check if install dir is in PATH | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | internal/app/selfupdate.go | 207 | // Tradeoff: Unix loses seamless re-exec restart; mitigated by clear copy below. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/reviewtransaction/transaction.go | 1780 | case "n/a", "na", "none", "todo", "tbd", "pass", "passed", "success", "placeholder": | CODE |
| LOW | internal/update/check_test.go | 141 | if err := os.WriteFile(binaryPath, []byte("placeholder"), 0o755); err != nil { | CODE |
| LOW | internal/sddstatus/verification.go | 370 | case "n/a", "na", "none", "todo", "tbd", "pass", "passed", "success", "recorded", "placeholder": | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/install.sh | 8 | # Usage: | COMMENT |
| LOW | e2e/docker-test.sh | 4 | # Usage: | COMMENT |