feat(config): add review.enrichment analyzer per-lane toggles#2808
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2808 +/- ##
=======================================
Coverage 96.00% 96.01%
=======================================
Files 258 259 +1
Lines 28251 28275 +24
Branches 10275 10287 +12
=======================================
+ Hits 27123 27147 +24
Misses 491 491
Partials 637 637
🚀 New features to boost your workflow:
|
a3d0978 to
d90748e
Compare
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-03 23:41:19 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 6 non-blocking
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
afd9929 to
77c1992
Compare
77c1992 to
0a4fe6f
Compare
Summary
Adds
review.enrichmentto.gittensory.yml— a per-repo mapping of REES enrichment-analyzer names to booleans, letting a maintainer enable or disable individual enrichment analyzers declaratively instead of relying on a single opaque on/off. Absent (the default) leaves the operator's current analyzer set unchanged, so the enrichment request is byte-identical to today.Closes #2050
Deliverables
enrichmentAnalyzers: Partial<Record<ReesAnalyzerName, boolean>>added toFocusManifestReviewConfiginsrc/signals/focus-manifest.ts, parsed fromreview.enrichmentas a mapping of KNOWN analyzer keys to booleans — an unknown key or a non-boolean value warns and is dropped, and a non-mappingreview.enrichmentwarns and is ignored. Wired throughpresent,reviewConfigToJson(round-trip), and the three empty-config literals.src/review/enrichment-analyzer-names.ts(no imports) so the review wiring and the signals-layer manifest parser share ONE source of truth without a heavy or circular dependency;enrichment-wire.tsre-exportsREES_ANALYZER_NAMESfor compatibility.resolveEnrichmentAnalyzerSelection(envSelected, toggles)(pure, inenrichment-wire.ts) composes the operator'sREES_ANALYZERSenv selection with the per-repo toggles: the env selection (undefined⇒ full registry) is the base, each explicit toggle adds (true) or removes (false) an analyzer from the known registry, and it returnsundefined(byte-identical, "run everything") when there is no override or the toggles leave the full registry intact.buildReviewEnrichmentat the enrichment call site insrc/queue/processors.tsfrom the already-cached manifest (viaresolveEnrichmentAnalyzerToggles), so a disabled analyzer is actually skipped. A null manifest (load failure) fail-safes to no toggles ⇒ the default set.Behavior notes
review.enrichment⇒ the analyzer list sent to REES is unchanged (byte-identical prompt), so this is a pure opt-in.Validation
test/unit/review-enrichment-config.test.tscovers the composition combiner (every branch), parsing (known keys, unknown-key warning, non-boolean-value warning, non-mapping warning, empty/absent), thereviewConfigToJsonround-trip, and the null-manifest resolver. 100% branch + statement coverage on every added line.npm run typecheckis clean; the full affected unit suite passes.