@event4u/agent-config 9.5.0 → 9.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +84 -942
  3. package/README.md +17 -17
  4. package/dist/agent-src/README.md +2 -2
  5. package/dist/agent-src/commands/agents/audit.md +2 -3
  6. package/dist/agent-src/commands/agents/optimize.md +2 -3
  7. package/dist/agent-src/commands/agents/user/review.md +4 -5
  8. package/dist/agent-src/commands/agents/user/show.md +4 -5
  9. package/dist/agent-src/commands/agents/user/update.md +4 -5
  10. package/dist/agent-src/commands/agents/user.md +2 -3
  11. package/dist/agent-src/commands/analytics/prune.md +2 -3
  12. package/dist/agent-src/commands/analytics/show.md +2 -3
  13. package/dist/agent-src/commands/analyze/decision.md +2 -3
  14. package/dist/agent-src/commands/analyze/incident.md +2 -3
  15. package/dist/agent-src/commands/analyze/near-miss.md +2 -3
  16. package/dist/agent-src/commands/analyze/postmortem.md +2 -3
  17. package/dist/agent-src/commands/analyze/premortem.md +2 -3
  18. package/dist/agent-src/commands/analyze/reference-repo.md +2 -3
  19. package/dist/agent-src/commands/brand/identity.md +2 -3
  20. package/dist/agent-src/commands/brand/review.md +2 -3
  21. package/dist/agent-src/commands/brand/strategy.md +2 -3
  22. package/dist/agent-src/commands/brand/tokens.md +2 -3
  23. package/dist/agent-src/commands/brand/voice.md +2 -3
  24. package/dist/agent-src/commands/bug/fix.md +2 -3
  25. package/dist/agent-src/commands/bug/investigate.md +2 -3
  26. package/dist/agent-src/commands/challenge-me/vision.md +2 -3
  27. package/dist/agent-src/commands/challenge-me/with-docs.md +2 -3
  28. package/dist/agent-src/commands/chat-history/import.md +2 -3
  29. package/dist/agent-src/commands/commit/in-chunks.md +2 -3
  30. package/dist/agent-src/commands/context/create.md +2 -3
  31. package/dist/agent-src/commands/context/refactor.md +2 -3
  32. package/dist/agent-src/commands/cost/report.md +2 -3
  33. package/dist/agent-src/commands/council/analysis.md +2 -3
  34. package/dist/agent-src/commands/council/debate.md +2 -3
  35. package/dist/agent-src/commands/council/design.md +2 -3
  36. package/dist/agent-src/commands/council/optimize.md +2 -3
  37. package/dist/agent-src/commands/council/pr.md +2 -3
  38. package/dist/agent-src/commands/feature/dev.md +2 -3
  39. package/dist/agent-src/commands/feature/explore.md +2 -3
  40. package/dist/agent-src/commands/feature/plan.md +2 -3
  41. package/dist/agent-src/commands/feature/refactor.md +2 -3
  42. package/dist/agent-src/commands/feature/roadmap.md +2 -3
  43. package/dist/agent-src/commands/fix/ci.md +2 -3
  44. package/dist/agent-src/commands/fix/comments.md +2 -3
  45. package/dist/agent-src/commands/fix/pr-comments.md +2 -3
  46. package/dist/agent-src/commands/fix/quality.md +2 -3
  47. package/dist/agent-src/commands/fix/route.md +2 -3
  48. package/dist/agent-src/commands/fix/seeder.md +2 -3
  49. package/dist/agent-src/commands/ghostwriter/delete.md +2 -3
  50. package/dist/agent-src/commands/ghostwriter/fetch.md +2 -3
  51. package/dist/agent-src/commands/ghostwriter/list.md +2 -3
  52. package/dist/agent-src/commands/ghostwriter/show.md +2 -3
  53. package/dist/agent-src/commands/ghostwriter/write.md +2 -3
  54. package/dist/agent-src/commands/image/analyse.md +2 -3
  55. package/dist/agent-src/commands/image/create.md +2 -3
  56. package/dist/agent-src/commands/image/verify.md +2 -3
  57. package/dist/agent-src/commands/knowledge/cross-repo.md +2 -3
  58. package/dist/agent-src/commands/knowledge/forget.md +2 -3
  59. package/dist/agent-src/commands/knowledge/ingest.md +2 -3
  60. package/dist/agent-src/commands/knowledge/list.md +2 -3
  61. package/dist/agent-src/commands/memory/add.md +2 -3
  62. package/dist/agent-src/commands/memory/learn-low-impact.md +2 -3
  63. package/dist/agent-src/commands/module/create.md +2 -3
  64. package/dist/agent-src/commands/module/explore.md +2 -3
  65. package/dist/agent-src/commands/optimize/agents-dir.md +2 -3
  66. package/dist/agent-src/commands/optimize/project.md +2 -3
  67. package/dist/agent-src/commands/optimize/prompt.md +2 -3
  68. package/dist/agent-src/commands/optimize/skills.md +2 -3
  69. package/dist/agent-src/commands/override/create.md +2 -3
  70. package/dist/agent-src/commands/override/manage.md +2 -3
  71. package/dist/agent-src/commands/post-as/ghostwriter.md +2 -3
  72. package/dist/agent-src/commands/post-as/me.md +2 -3
  73. package/dist/agent-src/commands/pr/create/description-only.md +2 -3
  74. package/dist/agent-src/commands/pr/create.md +1 -1
  75. package/dist/agent-src/commands/profile/activate.md +2 -3
  76. package/dist/agent-src/commands/profile/deactivate.md +2 -3
  77. package/dist/agent-src/commands/profile/show.md +2 -3
  78. package/dist/agent-src/commands/project/analyze.md +2 -3
  79. package/dist/agent-src/commands/project/health.md +2 -3
  80. package/dist/agent-src/commands/research/deep.md +2 -3
  81. package/dist/agent-src/commands/research/report.md +2 -3
  82. package/dist/agent-src/commands/review/changes.md +2 -3
  83. package/dist/agent-src/commands/review/routing.md +2 -3
  84. package/dist/agent-src/commands/roadmap/ai-council.md +2 -3
  85. package/dist/agent-src/commands/roadmap/create.md +2 -3
  86. package/dist/agent-src/commands/roadmap/materialize.md +2 -3
  87. package/dist/agent-src/commands/roadmap/process-full.md +2 -3
  88. package/dist/agent-src/commands/roadmap/process-phase.md +2 -3
  89. package/dist/agent-src/commands/roadmap/process-step.md +2 -3
  90. package/dist/agent-src/commands/skill/preview.md +2 -3
  91. package/dist/agent-src/commands/skills/discover.md +2 -3
  92. package/dist/agent-src/commands/sync/gitignore/fix.md +3 -4
  93. package/dist/agent-src/commands/tdd/green.md +2 -3
  94. package/dist/agent-src/commands/tdd/red.md +2 -3
  95. package/dist/agent-src/commands/tdd/refactor.md +2 -3
  96. package/dist/agent-src/commands/team/adversarial.md +2 -3
  97. package/dist/agent-src/commands/team/review.md +2 -3
  98. package/dist/agent-src/commands/team-knowledge/bootstrap.md +2 -3
  99. package/dist/agent-src/commands/team-knowledge/consolidate.md +2 -3
  100. package/dist/agent-src/commands/tests/create.md +2 -3
  101. package/dist/agent-src/commands/tests/e2e-heal.md +2 -3
  102. package/dist/agent-src/commands/tests/e2e-plan.md +2 -3
  103. package/dist/agent-src/commands/tests/execute.md +2 -3
  104. package/dist/agent-src/commands/video/from-script.md +2 -3
  105. package/dist/agent-src/commands/video/from-song.md +2 -3
  106. package/dist/agent-src/commands/video/scene.md +2 -3
  107. package/dist/agent-src/commands/video/stitch.md +2 -3
  108. package/dist/agent-src/commands/video/storyboard.md +2 -3
  109. package/dist/agent-src/commands/worktree/cleanup.md +2 -3
  110. package/dist/agent-src/commands/worktree/create.md +2 -3
  111. package/dist/agent-src/commands/worktree/status.md +2 -3
  112. package/dist/agent-src/commands/worktree/verify.md +2 -3
  113. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +10 -0
  114. package/dist/agent-src/rules/downstream-changes.md +31 -1
  115. package/dist/agent-src/skills/agent-docs-writing/SKILL.md +34 -16
  116. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +9 -9
  117. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  118. package/dist/agent-src/templates/github-workflows/doc-impact.yml +101 -0
  119. package/dist/discovery/deprecation-report.md +1 -1
  120. package/dist/discovery/discovery-manifest.json +113 -113
  121. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  122. package/dist/discovery/discovery-manifest.summary.md +1 -1
  123. package/dist/discovery/orphan-report.md +1 -1
  124. package/dist/discovery/packs.json +2 -2
  125. package/dist/discovery/trust-report.md +1 -1
  126. package/dist/discovery/workspaces.json +2 -2
  127. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  128. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  129. package/dist/mcp/registry-manifest.json +3 -3
  130. package/docs/CLAIMS.md +2 -1
  131. package/docs/archive/CHANGELOG-6.0.0-overview.md +953 -0
  132. package/docs/benchmark.md +33 -9
  133. package/docs/decisions/ADR-122-adversarial-verification-council.md +30 -0
  134. package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +142 -0
  135. package/docs/decisions/INDEX.md +1 -0
  136. package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +26 -0
  137. package/docs/spawn-site-policy.md +72 -0
  138. package/docs/threat-model.md +2 -1
  139. package/package.json +2 -2
  140. package/src/agent-src/README.md +2 -2
  141. package/src/scripts/_lib/adversarial_bench_score.ts +106 -0
  142. package/src/scripts/_lib/spawn_env.ts +120 -0
  143. package/src/scripts/ai_council/clients.ts +6 -0
  144. package/src/scripts/bench_adversarial_council.ts +292 -0
  145. package/src/scripts/check_no_new_legacy_path.ts +2 -0
  146. package/src/scripts/check_source_pointer_freshness.ts +165 -0
  147. package/src/scripts/hooks/dispatch_hook.ts +5 -1
  148. package/src/scripts/hot_context_hook.ts +2 -0
  149. package/src/scripts/lint_readme_serial_comma.ts +169 -0
  150. package/src/scripts/roadmap_progress_hook.ts +2 -0
@@ -21,7 +21,7 @@ packs:
21
21
 
22
22
  Use when:
23
23
  - Editing `AGENTS.md` at the package root.
24
- - Editing `packages/core/.agent-src.uncondensed/templates/AGENTS.md` (consumer-shipped template).
24
+ - Editing `src/agent-src/templates/AGENTS.md` (consumer-shipped template).
25
25
  - Reviewing a PR that changes either file.
26
26
  - Running `/optimize/agents`.
27
27
  - A budget meter (`scripts/measure_augment_budget.ts`) flags the package-root AGENTS.md as the dominant cost.
@@ -29,7 +29,7 @@ Use when:
29
29
  ## Do NOT
30
30
 
31
31
  - Edit `.github/copilot-instructions.md` with this skill (use `copilot-agents-optimization` instead).
32
- - Edit other `.md` files under `.augment/`, `packages/*/.agent-src.uncondensed/`, or `agents/` with this skill.
32
+ - Edit other `.md` files under `.augment/`, `src/`, or `agents/` with this skill.
33
33
  - Add a section to AGENTS.md without first checking whether an outboard target already exists in `agents/settings/contexts/` or `docs/contracts/`.
34
34
  - Replace prose with a bare link `[label](path)` — every pointer needs a *why*-clause ≥ 60 chars or it does not count toward the 40 % ratio.
35
35
  - Reuse the package-root anatomy in the consumer template — caps and target paths differ.
@@ -47,7 +47,7 @@ Every entry describes **what** the project does or **where** to learn more — n
47
47
  | File | FAIL above | WARN above | Target |
48
48
  |---|---|---|---|
49
49
  | `AGENTS.md` (package root) | 3,000 chars | 2,800 chars | ≤ 2,800 |
50
- | `packages/core/.agent-src.uncondensed/templates/AGENTS.md` (consumer) | 2,500 chars | 2,300 chars | ≤ 2,300 |
50
+ | `src/agent-src/templates/AGENTS.md` (consumer) | 2,500 chars | 2,300 chars | ≤ 2,300 |
51
51
 
52
52
  Char-count is raw file size (`wc -c`), frontmatter included. Enforcement: `scripts/lint_agents_md.ts` (Phase 7), wired into the package's CI pipeline via the `lint-agents-md` task. WARN is a soft signal in CI; FAIL blocks merge.
53
53
 
@@ -85,7 +85,7 @@ Every substantive pointer specifies, on the same line or the immediately followi
85
85
 
86
86
  ## The contract — emergency-triage block
87
87
 
88
- Every Thin-Root AGENTS.md MUST contain an **Emergency Triage** section verbatim from `packages/core/.agent-src.uncondensed/contexts/contracts/emergency-triage-block.md` (Phase 6.4 will create that file as the canonical source). The block lists the five questions a host agent answers from the root file alone when network / tool access is degraded:
88
+ Every Thin-Root AGENTS.md MUST contain an **Emergency Triage** section verbatim from `src/agent-src/contexts/contracts/emergency-triage-block.md` (Phase 6.4 will create that file as the canonical source). The block lists the five questions a host agent answers from the root file alone when network / tool access is degraded:
89
89
 
90
90
  1. What is this repository?
91
91
  2. What language(s) does this repository accept?
@@ -99,22 +99,22 @@ Each answer must fit on one line. The block exists so the root never silently de
99
99
 
100
100
  1. **Measure baseline.** `wc -c AGENTS.md` and `./scripts-run src/scripts/measure_augment_budget`. Record current char-count and the gap to 2,200 / 2,500.
101
101
  2. **Inventory sections.** List every `## ` heading and its char-count. Mark each as `keep-inline` (Iron-Law-adjacent, ≤ 200 chars, no good outboard target) or `outboard-candidate` (longer-form prose, table-only sections, narrative).
102
- 3. **Identify outboard targets.** For each `outboard-candidate`, name the destination — `packages/core/.agent-src.uncondensed/contexts/`, `docs/contracts/`, an existing rule body, an existing skill body. Never invent a new top-level directory.
102
+ 3. **Identify outboard targets.** For each `outboard-candidate`, name the destination — `src/agent-src/contexts/`, `docs/contracts/`, an existing rule body, an existing skill body. Never invent a new top-level directory.
103
103
  4. **Move content; insert pointer.** Cut the section into the target file. Replace it in AGENTS.md with a single substantive pointer per anatomy above. Verify the *why*-clause length.
104
104
  5. **Re-measure.** `wc -c AGENTS.md` again. If above 2,200, repeat steps 2–4 on the next-largest section. Above 2,500 = must outboard further before commit.
105
105
  6. **Validate pointer ratio.** Count non-blank lines and substantive-pointer lines. Ratio < 0.40 = collapse decorative or boilerplate lines into a single pointer or remove.
106
- 7. **Verify emergency-triage block.** Diff the in-file block against `packages/core/.agent-src.uncondensed/contexts/contracts/emergency-triage-block.md`. Drift = revert to canonical.
106
+ 7. **Verify emergency-triage block.** Diff the in-file block against `src/agent-src/contexts/contracts/emergency-triage-block.md`. Drift = revert to canonical.
107
107
  8. **Run lints.** `task lint-agents-md && task check-refs && task lint-skills`. All green before commit.
108
108
 
109
109
  ## Procedure — apply Thin-Root to consumer template
110
110
 
111
- Same procedure, applied to `packages/core/.agent-src.uncondensed/templates/AGENTS.md`. Hard cap shifts to 2,000 / 1,700. The consumer template intentionally lacks the package-self-references — its pointers target files that exist in the **consumer's** repo (`.augment/skills/`, `agents/settings/contexts/`, ...), not this package's authoring tree.
111
+ Same procedure, applied to `src/agent-src/templates/AGENTS.md`. Hard cap shifts to 2,000 / 1,700. The consumer template intentionally lacks the package-self-references — its pointers target files that exist in the **consumer's** repo (`.augment/skills/`, `agents/settings/contexts/`, ...), not this package's authoring tree.
112
112
 
113
113
  ## Gotchas
114
114
 
115
- - **Outboarding to a new top-level dir.** Inventing `agents/explainers/` or `docs/notes/` for the moved content silently widens the contract surface. Outboard only into `packages/core/.agent-src.uncondensed/contexts/`, `docs/contracts/`, an existing rule body, or an existing skill body.
115
+ - **Outboarding to a new top-level dir.** Inventing `agents/explainers/` or `docs/notes/` for the moved content silently widens the contract surface. Outboard only into `src/agent-src/contexts/`, `docs/contracts/`, an existing rule body, or an existing skill body.
116
116
  - **Pointer-ratio inflation by decoration.** Adding boilerplate "Browse all skills" / "See also" links to lift the ratio above 40 % defeats the purpose. The lint counts only substantive pointers (with a *why*-clause ≥ 60 chars); decorative links get filtered out and the ratio drops back below threshold.
117
- - **Emergency-triage drift.** Editing the in-file emergency-triage block instead of the canonical `packages/core/.agent-src.uncondensed/contexts/contracts/emergency-triage-block.md` causes the package-root and consumer-template versions to diverge silently. Always edit the canonical file and let the lint diff pull both back in sync.
117
+ - **Emergency-triage drift.** Editing the in-file emergency-triage block instead of the canonical `src/agent-src/contexts/contracts/emergency-triage-block.md` causes the package-root and consumer-template versions to diverge silently. Always edit the canonical file and let the lint diff pull both back in sync.
118
118
  - **Cap inversion under WARN.** A 2,250-char AGENTS.md (above 2,200 WARN, below 2,500 FAIL) is a yellow signal not a green one — every additional sentence raises the probability of the next FAIL. Treat WARN as the spend boundary, not a buffer.
119
119
  - **Char-count includes frontmatter.** `wc -c` counts every byte including the YAML preamble, blank lines, and the trailing newline. Stripping a section to "look smaller" without re-running `wc -c` understates the true budget impact.
120
120
  - **Path enumeration.** A run of three or more bare `` `path/to/dir/` `` bullets without *why*-clauses is the classic re-bloat pattern. The lint emits a WARN at ≥ 3 such lines. Collapse them into one capability-style pointer — see the recipe in [`agents-md-anatomy § Iron Law`](../../contexts/contracts/agents-md-anatomy.md#iron-law--capabilities-over-structure).
@@ -39,7 +39,7 @@ schema_version: 1
39
39
  # CI guard: a release bump of `package.json` must update this value
40
40
  # in lockstep — see scripts/check_template_pin_drift.ts (road-to-
41
41
  # portable-runtime-and-update-check P3.3).
42
- agent_config_version: "9.5.0"
42
+ agent_config_version: "9.7.0"
43
43
 
44
44
  # --- Project identity ---
45
45
  project:
@@ -0,0 +1,101 @@
1
+ # Doc-Impact Check — template shipped by agent-config
2
+ #
3
+ # Copy this file to `.github/workflows/doc-impact.yml` in the consumer
4
+ # project. It is the OPTIONAL CI backstop for the doc-follows-code
5
+ # discipline that already ships to you via projection:
6
+ #
7
+ # - rule `downstream-changes` § Doc-Impact — the same-change obligation
8
+ # - skill `agent-docs-writing` § Doc-Impact — the surface→doc procedure
9
+ #
10
+ # Those two are framework-agnostic and behavioral; they need no CI. This
11
+ # workflow adds a deterministic reminder: when a PR changes a PUBLIC
12
+ # SURFACE but touches no documentation, it flags the likely doc drift.
13
+ #
14
+ # Design (per the 2026-07-21 council): WARN-first, opt-in, with an
15
+ # explicit escape hatch — a gate that hard-fails on every surface change
16
+ # gets routinely overridden, which is worse than none. Flip STRICT=true
17
+ # below only once your team wants the hard gate.
18
+ #
19
+ # Framework-agnostic: it globs the changed-file paths, so it works for
20
+ # Laravel / Symfony / Next.js / Python / Go / … without per-stack tuning.
21
+ # Tune the PUBLIC_SURFACE / DOC globs to your repo layout.
22
+ #
23
+ # Escape hatch: put `[docs:not-needed]` in the PR title/body, or use a
24
+ # `refactor:`-prefixed PR title, when a surface changed but genuinely
25
+ # needs no doc edit. State the reason — do not edit a doc just to pass.
26
+
27
+ name: Doc-Impact Check
28
+
29
+ on:
30
+ pull_request:
31
+ types: [opened, synchronize, reopened, edited]
32
+ workflow_dispatch: {}
33
+
34
+ permissions:
35
+ contents: read
36
+
37
+ jobs:
38
+ doc-impact:
39
+ name: Public surface changed without a doc update?
40
+ runs-on: ubuntu-latest
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+ with:
44
+ fetch-depth: 0
45
+
46
+ - name: Detect surface-vs-doc drift
47
+ env:
48
+ BASE_SHA: ${{ github.event.pull_request.base.sha }}
49
+ HEAD_SHA: ${{ github.event.pull_request.head.sha }}
50
+ PR_TITLE: ${{ github.event.pull_request.title }}
51
+ PR_BODY: ${{ github.event.pull_request.body }}
52
+ # Flip to "true" to make the drift a hard CI failure.
53
+ STRICT: "false"
54
+ run: |
55
+ set -euo pipefail
56
+
57
+ # Escape hatch — skip entirely on an explicit opt-out.
58
+ case "${PR_TITLE}${PR_BODY}" in
59
+ *"[docs:not-needed]"*|refactor:*|"refactor("*)
60
+ echo "Doc-Impact: escape hatch present — skipping." ; exit 0 ;;
61
+ esac
62
+
63
+ changed="$(git diff --name-only "${BASE_SHA}" "${HEAD_SHA}")"
64
+ echo "Changed files:"; echo "${changed}" | sed 's/^/ /'
65
+
66
+ # PUBLIC-SURFACE globs (extend for your stack).
67
+ surface="$(printf '%s\n' "${changed}" | grep -E \
68
+ -e '(^|/)routes/' \
69
+ -e '(^|/)(migrations|schema)/' \
70
+ -e 'openapi.*\.(ya?ml|json)$' \
71
+ -e '(^|/)(cli|commands|console)/' \
72
+ -e '(^|/)\.env\.example$' \
73
+ -e '(^|/)(config)/' \
74
+ || true)"
75
+
76
+ # DOC globs — a change to any of these satisfies the obligation.
77
+ docs="$(printf '%s\n' "${changed}" | grep -E \
78
+ -e '\.md$' \
79
+ -e '(^|/)docs/' \
80
+ -e '(^|/)AGENTS\.md$' \
81
+ -e 'openapi.*\.(ya?ml|json)$' \
82
+ -e '(^|/)CHANGELOG' \
83
+ || true)"
84
+
85
+ if [ -n "${surface}" ] && [ -z "${docs}" ]; then
86
+ echo "Public surface(s) changed with NO accompanying doc update:"
87
+ echo "${surface}" | sed 's/^/ /'
88
+ echo ""
89
+ echo "Update the doc that DESCRIBES the changed surface (README /"
90
+ echo "API reference / AGENTS.md / examples / CHANGELOG), per the"
91
+ echo "downstream-changes § Doc-Impact obligation. If no doc is"
92
+ echo "needed, add [docs:not-needed] to the PR with a one-line reason."
93
+ if [ "${STRICT}" = "true" ]; then
94
+ echo "::error::Doc-Impact drift (STRICT mode)."
95
+ exit 1
96
+ fi
97
+ echo "::warning::Public surface changed without a doc update — review Doc-Impact."
98
+ exit 0
99
+ fi
100
+
101
+ echo "Doc-Impact: OK — no undocumented public-surface change."
@@ -1,6 +1,6 @@
1
1
  # Discovery — Deprecation Report
2
2
 
3
- - Generated: `2026-07-20T14:45:21Z`
3
+ - Generated: `2026-07-21T09:23:42Z`
4
4
  - Deprecated artefacts: **0**
5
5
 
6
6
  _None. Tree is clean._