docs(config): document the fan-effect and utterance-prior flags - #1237
Conversation
Both lanes merged today (#1234, #1231) and neither appeared anywhere in docs/ or README. Every comparable lane flag — AELFRICE_ENTITY_PERSIST_DEMOTE, AELFRICE_ORIGIN_TIEBREAK, AELFRICE_SUPERSESSION_DEMOTE, AELFRICE_TEMPORAL_SPINE, AELFRICE_BM25F_PER_FIELD — has a CONFIG.md section, so these two were the odd ones out rather than a new convention. Follows the existing section shape: what it does, why the default is where it is, the determinism argument per #605, and the precedence chain. Each records that it has no TOML tier yet and that its default flip is a separate operator call gated on a measurement. Two facts included because they are easy to get wrong and expensive to rediscover: the fan lane's cost is at parity only because the active-belief count is memoised (recomputing it per query costs 1.315 ms and dominates), and the utterance-prior W-sweep has to be scored below the locked block, since L0 locks are injected ahead of the ranked candidates and a top-k metric is constant in that weight. Insert-only: 24 added lines, no deletions. Refs #1176, #1174
There was a problem hiding this comment.
Sorry @robotrocketscience, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
Reviewer's GuideDocuments two previously-undocumented retrieval configuration flags ( Flow diagram for config flag precedence resolutionflowchart LR
subgraph use_fan_effect_resolution
env_fan[AELFRICE_FAN_EFFECT env var]
kwarg_fan[use_fan_effect kwarg]
default_fan[default false]
resolver_fan[fan_effect_resolver]
env_fan -->|set| resolver_fan
kwarg_fan -->|set if env unset| resolver_fan
default_fan -->|fallback| resolver_fan
resolver_fan --> retrieve[retrieve_v2]
end
subgraph utterance_prior_weight_resolution
env_prior[AELFRICE_UTTERANCE_PRIOR_WEIGHT env var]
kwarg_prior[utterance_prior_weight kwarg]
default_prior[default 0.0]
resolver_prior[utterance_prior_weight_resolver]
env_prior -->|set| resolver_prior
kwarg_prior -->|set if env unset| resolver_prior
default_prior -->|fallback| resolver_prior
resolver_prior --> rerank[L1 rerank]
end
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
Warning Review limit reached
Next review available in: 22 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
[claim:review:Toug:2026-07-31T13:41:53Z] |
|
Checked every technical claim in both sections against the code rather than Verified against the source
The one thing I would changeThe Verified empirically rather than by inspection: on a seeded store, Worth stating the asymmetry precisely, because it is not symmetric in one NitThe absolute latencies ( Caution on a cited statisticThe fan section cites "86% of entities appear in exactly one" — that is my Flagging only because I refuted the other inference from that same statistic Ship itInsert-only (24 added, 0 deleted, verified). CI clean, no unresolved threads, Approving; adding |
|
[release:review:Toug:2026-07-31T14:00:23Z] |
|
merge-train: merged bcfd8cf → |
Both lanes merged today —
AELFRICE_FAN_EFFECT(#1234, #1176) andAELFRICE_UTTERANCE_PRIOR_WEIGHT(#1231, #1174) — and neither appeared anywhere indocs/orREADME.md. Every comparable lane flag has adocs/user/CONFIG.mdsection:AELFRICE_ENTITY_PERSIST_DEMOTEAELFRICE_ORIGIN_TIEBREAKAELFRICE_SUPERSESSION_DEMOTEAELFRICE_TEMPORAL_SPINEAELFRICE_BM25F_PER_FIELDAELFRICE_FAN_EFFECTAELFRICE_UTTERANCE_PRIOR_WEIGHTSo these two were the exception, not a change of convention.
What the sections say
Both follow the existing shape — what the lane does, why the default sits where it does, the determinism argument per #605, and the precedence chain. Each records that it has no TOML tier yet (accurate: both resolvers are env → kwarg → default) and that the default flip is a separate operator call gated on a measurement that has not run.
Two facts are included because they are easy to get wrong and expensive to rediscover:
store_generation(). Recomputing it per query costs 1.315 ms against 0.045 ms for the whole shipped lane, which is a ~35x regression that reads as "the lane is slow" rather than "one call is slow". That was caught in review of feat(retrieval): ACT-R fan-effect ranking for the entity lane, default off (#1176) #1234, not by a test.Verified, not asserted
Every claim in the new prose was checked against the code rather than copied from the PR bodies:
use_fan_effect/utterance_prior_weightkwarg names exist onretrieve_v2(retrieval.py:4243and the resolver bank).0.0nothing reads the ingest log" is true at both sites: the build is gatedif utterance_prior_weight != 0.0 else Noneatretrieval.py:3531and:3629, andutterance_prior.py:212short-circuits independently.score()sums stems in sorted order (the feat(retrieval): utterance-vs-knowledge document prior, inert at W=0 (#1174) #1231 determinism fix), so the mean is order-stable.v4.2+matchespyproject.toml(4.2.0).Insert-only: 24 added lines, 0 deletions against
main.Not fixed here, but measured while checking
29 of the 74
AELFRICE_*environment variables read bysrc/appear nowhere indocs/orREADME.md— 39%. The largest clusters are the cadence knobs (9), the meta-belief overrides (4) and the implicit-feedback knobs (3); the rest are singletons likeAELFRICE_BM25_K3,AELFRICE_AUTO_RELATIONSHIPSandAELFRICE_TEMPORAL_HALF_LIFE_SECONDS.That is a pre-existing gap, not one these two lanes created, and it is too big to fold in here. Nothing gates it — I checked, and no test asserts that a documented env var exists or that a shipped one is documented, which is why the gap opens silently each time a lane lands. A parse-
src/-and-assert test of the kind #1207 already uses would close it, but it would fail on 29 names today and so needs a decision about which of those are deliberately internal (AELFRICE_FORCE_EXPANSION,AELFRICE_TRANSCRIPTS_DIRand similar look like test seams rather than user knobs). Happy to file that separately if it is wanted.Summary by Sourcery
Document configuration flags for the fan-effect entity ranking lane and the utterance-vs-knowledge prior weight in the retrieval pipeline.
Documentation: