chore(v20a): finish the #474 skip — dead score-autopsy components in commands.rs, stale affinity docs - #479
Merged
Conversation
…commands.rs, stale affinity docs The half of #474 that was skipped because commands.rs was claimed by the #471 lane (now merged). All removals are the same proof classes as #474: - mcp_score_autopsy "Learned Affinity" component: bd.affinity_mult is pinned 1.0_f32 (pipeline_v2.rs:614) — the (mult-1.0).abs() > 0.01 guard could never fire. "Anti-Topic Penalty" component: bd.anti_penalty pinned 0.0_f32 — same. - matching_affinities build + "learned_affinities" emit: reads the AD-029 quarantined loader's always-empty topic_affinities map. The FE render side left in #474; the type has no such field. The stale test fixture line goes with it. - score_tuning_snapshot's feedback_interaction_count: mislabeled — its value was topic_affinities.len() (always 0), not a feedback count. The real feedback_interaction_count concept (bootstrap detection, taste-test seeding) is untouched. commands.rs now has zero topic_affinities references. Capture side (run_background_behavior_decay) deliberately untouched — v20b territory. Also: docs/GETTING_STARTED.md and docs/ARCHITECTURE-DETAILED.md still described the affinity/anti-topic scoring path as live (scoring bullets, PASIFA formula steps 5-6, pipeline flow, Relevance Judge diagram). Scoring-side claims replaced with v20 reality; capture-side descriptions (tables, writers, decay) left as-is — they are still true. No PIPELINE_VERSION bump: only presentation surfaces that provably emitted nothing, plus docs. Stored scores cannot differ. Verified: cargo test --lib commands:: 142/142, clippy --lib -D warnings clean, fmt clean; vitest ScoreAutopsy 5/5, tsc clean, eslint clean; file-sizes gate no new errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LBY5q2MskiKMkTm6NmB49L
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The residual this closes
The half of #474 that was skipped because
src-tauri/src/commands.rswas claimed by the #471 lane (now merged). Inventory item 3 of the v20a dead-surface sweep, tracked in.claude/plans/PENDING-DECISION.mditem 2.Removed from
commands.rs(all structurally dead, same proof classes as #474)mcp_score_autopsy"Learned Affinity" component —bd.affinity_multis pinned1.0_f32(pipeline_v2.rs:614), so(bd.affinity_mult - 1.0).abs() > 0.01could never fire. Pinned-input class.mcp_score_autopsy"Anti-Topic Penalty" component —bd.anti_penaltyis pinned0.0_f32(pipeline_v2.rs:615), so> 0.01could never fire. Pinned-input class.matching_affinitiesbuild +"learned_affinities"emit — readsace_ctx.topic_affinities, which the AD-029 quarantined loader returns empty; always[]. Empty-map-read class. The FE render side was already removed in chore(v20a): delete the structurally-dead learned-affinity surfaces (AD-029/AD-030 arc) #474; the autopsy type has nolearned_affinitiesfield.score_tuning_snapshot'sfeedback_interaction_count— mislabeled: its value wasace_ctx.topic_affinities.len()(always 0 via the quarantined loader), not a feedback-interaction count. The realfeedback_interaction_countconcept (scoring-context bootstrap detection, taste-test seeding) is untouched.commands.rsnow has zerotopic_affinitiesreferences. The capture side (run_background_behavior_decay→apply_behavior_decay) is deliberately untouched — that is v20b operator territory.Also cleaned
src/components/ScoreAutopsy.test.tsx— stalelearned_affinitiesfixture line (the interface field was removed in chore(v20a): delete the structurally-dead learned-affinity surfaces (AD-029/AD-030 arc) #474; the fixture carried dead data).docs/GETTING_STARTED.mdtold users scores come from "Topic Affinity: Learned preferences from your interactions" and an affinity/anti-penalty formula. Replaced with the actual scoring inputs (context similarity, interests, stack/deps, freshness/quality).docs/ARCHITECTURE-DETAILED.md— the PASIFA formula's Steps 5–6 (affinity multiplier, anti-topic penalty), the pipeline flow's "Apply affinity multiplier (learned behavior)" step, and the Relevance Judge diagram entry. Replaced with the v20 reality + a pointer to the PASIFA V2 DSL. Capture-side descriptions (tables, interaction writers, decay) are left as-is — they are still true and pending the operator's v20b call.NO PIPELINE_VERSION bump
Nothing here touches scoring — only presentation surfaces (autopsy JSON, dev-time tuning snapshot) that provably emitted nothing, plus docs. Stored scores cannot differ.
Verification
cargo fmtclean;cargo test --lib commands::targeted pass; clippy via pre-push gatenpx vitest run src/components/ScoreAutopsy.test.tsx— 5/5npx tsc --noEmitclean;npx eslintclean on touched TSnode scripts/check-file-sizes.cjs— no new errors (commands.rs shrank 40 lines)grep topic_affinities src-tauri/src/commands.rs— zero hits🤖 Generated with Claude Code
https://claude.ai/code/session_01LBY5q2MskiKMkTm6NmB49L