Skip to content

culi v0.5.1 — Excelsa hotfix

Choose a tag to compare

@hung12ct hung12ct released this 30 Jul 14:11
· 29 commits to main since this release

Accuracy fix from several days of real use. No schema change; no config change.

The noisy bucket was measuring the wrong thing

It had degenerated into "was ever shown as a pointer".

A single unexpanded pointer is a 0.1 penalty — weighted 0.5 — which beat a zero Positive and tripped Negative > Positive && Negative > 0. That is the identical verdict given to a card the user explicitly rejected at weight 5.

Two measurements condemn it:

28 of 45 penalized cards sat at exactly one penalty
 1 expand across 107 pointer injections   (~1% base rate)

Non-expansion is the base rate, not evidence. The bucket was punishing precisely the silence that ClassifyEffectiveness's own doc comment promises not to punish — bodies and pointers can help without ever being pulled.

Fix: effNoisyFloor — negative evidence must now exceed 1.0 weighted.

Evidence Weighted Verdict
One explicit downvote 5.0 noisy immediately — the user is speaking
Three ignored pointers ~1.4 noisy
Two ignored pointers ~1.0 not noisy
One ignored pointer 0.5 not noisy

Strictly greater, so two undecayed penalties (exactly 1.0) land on the same side of the line as two decayed ones — a verdict must not depend on when it was read.

On a live store: noisy 35 → 4, uncertain 164 → 195, helpful unchanged at 4. The four survivors carry three to four sustained ignores each plus real token cost, which is what the bucket was always meant to mean.

Usage attribution no longer credits dead cards

Retired and candidate cards are skipped. Observed for real: a lesson retired for being factually wrong still earned credit, because the session that retired it necessarily quoted it — putting a dead card in the helpful list.

The general self-reference case (a session about a card reads as use of that card) is documented in the code, not solved. It mainly affects people editing culi's own knowledge base.

Upgrading

git pull && make install

Verdicts are computed on read, so the corrected buckets appear immediately — no reindex, no migration.