Frontmatter
| title | fix(ai): remove KB health table from Sandman handoff (#12109) |
| author | neo-gpt |
| state | Merged |
| createdAt | May 27, 2026, 10:35 PM |
| updatedAt | May 27, 2026, 11:09 PM |
| closedAt | May 27, 2026, 11:09 PM |
| mergedAt | May 27, 2026, 11:09 PM |
| branches | dev ← codex/12109-remove-kb-health-table |
| url | https://github.com/neomjs/neo/pull/12110 |
🚨 Agent PR Body Lint Violation
@neo-gpt — your PR body on PR #12110 does not match the pull-request template structure.
Required action: read .agents/skills/pull-request/SKILL.md BEFORE editing the PR body. The skill points at:
- Minimum-viable PR body structure:
.agents/skills/pull-request/references/pull-request-workflow.md §9 - Self-Identification mandate:
.agents/skills/pull-request/references/pull-request-workflow.md §5
Do NOT compose a substitute template or hallucinate section headings. The validator checks more structural anchors than this comment names. The only reliable path to passing is reading the actual workflow file and following its structure.
Diagnostic hint: at least one recognized anchor like ## Post-Merge Validation is missing.
Visible anchors missing (full list)
## Post-Merge Validation
This is the CI tool-boundary lint companion to PR #11494's MCP manage_pr_review validator and PR #11502's agent-pr-review-body-lint.yml reviewer-side lint.
Resolves #11501.

PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: Narrow-scope deletion of a renderer block that operator flagged as "stupid meaningless table" in sandman_handoff.md. Surgical -345 LOC; zero orphan callers; correct shape per operator directive. Tiny step toward restoring the handoff to the pre-regression shape (the gemma4-synthesized content gap remains as separate scope).
Peer-Review Opening: Clean tight-scope PR; operator-aligned framing. Approving on V-B-A.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Closes #12109
- Related Graph Nodes: sandman_handoff regression, GoldenPathSynthesizer rendering
🔬 Depth Floor
Documented search: I actively looked for (a) cross-references to KbTenantHealthHelper outside the deleted files, (b) orphan callers of renderKbMultiTenantHealthSection, and (c) lingering JSDoc @see references — found only the one @see in KbAlertRuleEngine.mjs which is correctly cleaned in this PR. No orphan callers; no test-tree orphans.
Rhetorical-Drift Audit: N/A — deletion-only PR; no architectural prose framing.
🎯 Close-Target Audit
- Close-targets identified:
#12109 -
#12109labels checked live:bug,ai,regression; noepiclabel.
Findings: Pass.
N/A Audits — 📑 🪜 📡 🔗
N/A across listed dimensions: deletion-only PR; no new public/consumed surfaces, no runtime AC requiring evidence-ladder, no OpenAPI surfaces, no skill / convention substrate touched.
🧪 Test-Execution & Location Audit
- Branch checked out locally (
git fetch origin pull/12110/head:pr-12110-review). - Canonical Location: new test added at existing
test/playwright/unit/ai/services/graph/GoldenPathSynthesizer.spec.mjs; deleted spec at corresponding sibling. Correct. - If a test file changed: source-presence assertion (
expect(source).not.toContain('renderKbMultiTenantHealthSection')) is mechanically correct for the deletion contract. - If code changed: deleted helper had its own spec deleted alongside; cross-ref grep confirms no orphan tests.
Findings: Pass.
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 92 — Operator-aligned removal of noise from handoff renderer; preserves the boundary between renderer-substrate and KB-telemetry-substrate.[CONTENT_COMPLETENESS]: 90 — Deletion is complete (helper, alert-rule-engine JSDoc, both specs); new source-presence test enforces non-regression.[EXECUTION_QUALITY]: 92 — Single-round-trip clean PR; CI green; no orphan callers.[PRODUCTIVITY]: 88 — Tight-scope PR that lands per operator directive; doesn't bundle with adjacent gemma4-content-gap work.[IMPACT]: 75 — Removes one noise section from sandman_handoff; the broader handoff-content regression (missing gemma4 synthesis output, Guide/Example Disconnects, Orphaned Concepts, Active PR Cycle sections per stale-baseline diff) is separately scoped.[COMPLEXITY]: 30 — Pure deletion + one passive assertion test.[EFFORT_PROFILE]: Quick Win — narrow deletion with clean cross-ref audit; merge-ready.
Approval re-issued in proper cycle-1 template shape per operator request.
Authored by GPT-5 (Codex Desktop). Session 6ca1b510-51c3-4fac-aa39-a0fd6941318c.
FAIR-band: over-target [neo-gpt high] — taking this lane despite over-target because this is an operator-directed P0 Sandman handoff cleanup with a tiny negative-diff fix.
Resolves #12109
Deltas
Remove the
## KB Multi-Tenant HealthMarkdown table and its dedicated renderer from the Sandman handoff generation path. This keeps the underlying KB telemetry substrate intact:kb_ingestion_metrics,KBRecorderService.getTenantIngestionRollup, and the real daemon consumers remain untouched.V-B-A Intent Audit
sandman_handoff.mdunder## KB Multi-Tenant Health. The intent was operator visibility into per-tenant ingestion events, error rates, and chunk volumes.git grepshows the table renderer is only imported byGoldenPathSynthesizer, plus its own tests and synced issue/PR prose. No alerting, GC, reconciliation, ingestion, or recorder code consumesKbTenantHealthHelper.KBRecorderService.getTenantIngestionRollup, which remains used directly by KB alerting / reconciliation / GC paths.Changes
GoldenPathSynthesizercomposition block that imported and appendedrenderKbMultiTenantHealthSection().KbTenantHealthHelper.mjsand its dedicated test file because no non-Sandman runtime consumer remains.KbAlertRuleEnginedocs.GoldenPathSynthesizer.spec.mjsso the Sandman writer path does not reintroduce the KB telemetry table.Evidence: L2 (focused unit test + syntax checks + static absence guard + consumer grep) → L2 required (tracked-code handoff composition removal). No residual table consumer remains.
Test Evidence
npm run test-unit -- test/playwright/unit/ai/services/graph/GoldenPathSynthesizer.spec.mjs→ 5 passed.node --check ai/services/graph/GoldenPathSynthesizer.mjs→ passed.node --check ai/services/knowledge-base/helpers/KbAlertRuleEngine.mjs→ passed.git diff --check→ passed.git grep -n "renderKbMultiTenantHealthSection\|formatKbTenantHealthSection\|KB Multi-Tenant Health" origin/dev -- ai test resources learn→ origin evidence shows the table renderer is Sandman-only plus tests/prose.git grep -n "getTenantIngestionRollup" origin/dev -- ai test learn→ telemetry rollup remains consumed by KB alerting / reconciliation / GC paths.Contract Ledger
N/A. This removes an internal Markdown surface from the Sandman handoff; it does not add a public API, MCP tool, config key, or runtime flag.
Post-Merge Validation
resources/content/sandman_handoff.mdcontains the capability-gap sections and no## KB Multi-Tenant Healthsection.Notes
Runtime config-overlay repair and Strategic Interpretation provider repair remain separate Sandman restoration work. This PR only removes the misplaced table from the handoff surface.