Git as the control plane for AI-native software engineering | AI Native 软件工程的 Git 变更控制手册
This report summarizes scanner evidence for xirong/my-git, a HTML project with 7,401 GitHub stars. SynthScan examined 41,634 lines of code across 382 source files, recording 63 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 2.3 (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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 51 finding(s).
Are imports declared and package/API names verified? 10 finding(s).
Are wrappers, guards, and repeated structures necessary? 24 finding(s).
Which changes need focused human review? 63 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 63 distinct pattern matches across 7 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 | …-ai-native-development_en/ai-native-git-workflow_en.md | 78 | ### Step 1: Confirm the Baseline and Create an Isolated Branch | COMMENT |
| LOW | …-ai-native-development_en/ai-native-git-workflow_en.md | 92 | ### Step 2: Use Worktrees for Complex Tasks | COMMENT |
| LOW | …-ai-native-development_en/ai-native-git-workflow_en.md | 103 | ### Step 3: Give AI a Scoped Task | COMMENT |
| LOW | …-ai-native-development_en/ai-native-git-workflow_en.md | 112 | ### Step 4: Review the Diff Before Committing | COMMENT |
| LOW | …-ai-native-development_en/ai-native-git-workflow_en.md | 128 | ### Step 5: Split Commits | COMMENT |
| LOW | …-ai-native-development_en/ai-native-git-workflow_en.md | 155 | ### Step 6: Run Verification | COMMENT |
| LOW | …-ai-native-development_en/ai-native-git-workflow_en.md | 168 | ### Step 7: Let AI Run the First Review Pass | COMMENT |
| LOW | …-ai-native-development_en/ai-native-git-workflow_en.md | 178 | ### Step 8: Open a PR | COMMENT |
| LOW | …-ai-native-development_en/ai-native-git-workflow_en.md | 190 | ### Step 9: Merge Only After CI Passes | COMMENT |
| LOW | …i-native-development_en/ai-change-review-example_en.md | 33 | ## Step 1: Check the Scale of Changes First | COMMENT |
| LOW | …i-native-development_en/ai-change-review-example_en.md | 54 | ## Step 2: Confirm Ownership; Do Not Clean Up by Calling a Path Irrelevant | COMMENT |
| LOW | …i-native-development_en/ai-change-review-example_en.md | 82 | ## Step 3: Split Diffs by Intent | COMMENT |
| LOW | …i-native-development_en/ai-change-review-example_en.md | 123 | ## Step 4: Let AI Perform a Risk Scan | COMMENT |
| LOW | …i-native-development_en/ai-change-review-example_en.md | 140 | ## Step 5: Manual Verification Focus | COMMENT |
| LOW | …i-native-development_en/ai-change-review-example_en.md | 153 | ## Step 6: Run Verification | COMMENT |
| LOW | …i-native-development_en/ai-change-review-example_en.md | 170 | ## Step 7: Write the PR | COMMENT |
| LOW | …i-native-development_en/ai-change-review-example_en.md | 198 | ## Step 8: If the Diff is Still Too Large | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …-native-development_en/engineering-change-course_en.md | 126 | GitHub Actions needs an especially precise object label. For an open `pull_request`, default `GITHUB_REF` is the PR merg | CODE |
| HIGH | …y-workflow/02-daily-workflow_en/branch-and-merge_en.md | 20 | - Candidate solutions for code generated by AI Agents | CODE |
| HIGH | 09-resources/09-resources_en/recommended-reading_en.md | 78 | | [Review AI-generated code](https://docs.github.com/en/enterprise-cloud@latest/copilot/tutorials/review-ai-generated-co | CODE |
| HIGH | 00-meta/00-meta_en/release-notes-v2.2.0_en.md | 9 | - [PR #67](https://github.com/xirong/my-git/pull/67) completed ten paired Git mental-model topics, interactives, and dis | CODE |
| HIGH | 00-meta/00-meta_en/release-notes-v2.2.0_en.md | 9 | - [PR #67](https://github.com/xirong/my-git/pull/67) completed ten paired Git mental-model topics, interactives, and dis | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | labs/ai-change-control/lab.py | 173 | def test_explicit_timeout_is_used(self): | STRING |
| LOW⚡ | labs/ai-change-control/lab.py | 176 | def test_missing_timeout_is_rejected(self): | STRING |
| LOW⚡ | labs/ai-change-control/lab.py | 182 | def test_empty_timeout_is_rejected(self): | STRING |
| LOW⚡ | labs/ai-change-control/lab.py | 188 | def test_non_integer_timeout_is_rejected(self): | STRING |
| LOW⚡ | labs/ai-change-control/lab.py | 194 | def test_non_positive_timeouts_are_rejected(self): | STRING |
| LOW | labs/ai-change-control/lab.py | 216 | def test_explicit_timeout_is_used(self): | STRING |
| LOW | labs/ai-change-control/lab.py | 229 | def test_non_integer_timeout_is_rejected(self): | STRING |
| LOW | labs/ai-change-control/lab.py | 235 | def test_non_positive_timeouts_are_rejected(self): | STRING |
| LOW | labs/ai-change-control/lab.py | 324 | def ensure_safe_archive_members(archive: tarfile.TarFile, destination: Path) -> None: | CODE |
| LOW | labs/ai-agent-incidents/verify.py | 240 | def check_worktree_protection(root: Path) -> dict[str, str]: | CODE |
| LOW | labs/git-command-safety/verify.py | 94 | def test_dirty_precondition_stops_without_mutating(root: Path) -> None: | CODE |
| LOW | labs/git-command-safety/verify.py | 126 | def test_path_only_commit_preserves_unrelated_work(root: Path) -> None: | CODE |
| LOW | labs/git-command-safety/verify.py | 178 | def test_soft_reset_counterexample_and_corrected_flow(root: Path) -> None: | CODE |
| LOW | labs/git-command-safety/verify.py | 231 | def test_non_main_integration_branch(root: Path) -> None: | CODE |
| LOW⚡ | scripts/test-link-checkers.py | 67 | def test_existing_path_ignores_query_and_fragment(self) -> None: | CODE |
| LOW⚡ | scripts/test-link-checkers.py | 71 | def test_whitespace_and_unicode_path(self) -> None: | CODE |
| LOW⚡ | scripts/test-link-checkers.py | 74 | def test_encoded_hash_stays_in_filename(self) -> None: | CODE |
| LOW⚡ | scripts/test-link-checkers.py | 77 | def test_missing_path_with_query_fails(self) -> None: | CODE |
| LOW⚡ | scripts/test-link-checkers.py | 80 | def test_fragment_and_query_only_targets_do_not_require_a_file(self) -> None: | CODE |
| LOW⚡ | scripts/test-link-checkers.py | 84 | def test_pages_url_with_query_and_fragment_maps_to_source(self) -> None: | CODE |
| LOW⚡ | scripts/test-link-checkers.py | 90 | def test_missing_pages_url_fails_even_without_external_checks(self) -> None: | CODE |
| LOW | scripts/test-link-checkers.py | 110 | def test_missing_pages_url_makes_no_external_cli_fail(self) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | labs/ai-change-control/lab.py | 4 | CODE | |
| LOW | labs/ai-agent-incidents/verify.py | 3 | CODE | |
| LOW | labs/git-command-safety/verify.py | 3 | CODE | |
| LOW | labs/git-mental-model/08-remote/lab.py | 3 | CODE | |
| LOW | labs/git-mental-model/10-storage/lab.py | 3 | CODE | |
| LOW | labs/git-mental-model/09-worktree/lab.py | 3 | CODE | |
| LOW | scripts/test-link-checkers.py | 3 | CODE | |
| LOW | scripts/check-docs.py | 2 | CODE | |
| LOW | scripts/link_targets.py | 2 | CODE | |
| LOW | scripts/check-links.py | 2 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | labs/git-mental-model/08-remote/lab.py | 279 | CODE | |
| LOW | labs/git-mental-model/10-storage/lab.py | 240 | CODE | |
| LOW | labs/git-mental-model/09-worktree/lab.py | 241 | CODE | |
| LOW | scripts/check-docs.py | 114 | CODE | |
| LOW | scripts/check-docs.py | 146 | CODE | |
| LOW | scripts/check-links.py | 166 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …e-development_en/ai-coding-tools-git-integration_en.md | 43 | ## 6. Cursor: Composer and multi-agent release information | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check-links.py | 188 | except Exception as get_error: # noqa: BLE001 | CODE |
| LOW | scripts/check-links.py | 194 | except Exception as error: # noqa: BLE001 | CODE |