|
Some checks are pending
CI / lint-and-test (push) Waiting to run
Ganymede review findings on epimetheus/contributor-attribution-fix branch:
1. BUG: record_contributor_attribution used `git diff --name-only` (all modified
files), not just added. Enrich/challenge PRs re-credited the sourcer on every
subsequent modification. Fixed: --diff-filter=A restricts to new files only.
The synthesizer/challenger/reviewer roles for enrich PRs are still credited
via the Pentagon-Agent trailer path, so this doesn't lose any correct credit.
2. WARNING: Legacy `source`-field heuristic fabricated garbage handles from
descriptive strings ("sec-interpretive-release-s7-2026-09-(march-17",
"governance---meritocratic-voting-+-futarchy"). Removed outright + added
regex handle sanity filter (`^[a-z0-9][a-z0-9_-]{0,38}$`). Applied before
every return path in parse_attribution (the nested-block early return was
previously bypassing the filter).
Dry-run impact: unique handles 83→70 (13 garbage filtered), NEW contributors
49→48, EXISTING drift rows 34→22. The filter drops rows where the literal
garbage string lives in frontmatter (Slotkin case: attribution.sourcer.handle
was written as "senator-elissa-slotkin-/-the-hill" by the buggy legacy path).
3. NIT: Aligned knowledge_prefixes in the file walker to match is_knowledge_pr
(removed entities/, convictions/). Widening those requires Cory sign-off
since is_knowledge_pr currently gates entity-only PRs out of CI.
Tests: 17 pass (added test_bad_handles_filtered, test_valid_handle_with_hyphen_passes,
updated test_legacy_source_fallback → test_legacy_source_fallback_removed).
Ganymede review — 3-message protocol msg 3 pending.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| __init__.py | ||
| analytics.py | ||
| attribution.py | ||
| breaker.py | ||
| cascade.py | ||
| claim_index.py | ||
| config.py | ||
| connect.py | ||
| contributor.py | ||
| costs.py | ||
| cross_domain.py | ||
| db.py | ||
| dedup.py | ||
| digest.py | ||
| domains.py | ||
| entity_batch.py | ||
| entity_queue.py | ||
| eval_actions.py | ||
| eval_parse.py | ||
| evaluate.py | ||
| extract.py | ||
| extraction_prompt.py | ||
| feedback.py | ||
| fixer.py | ||
| forgejo.py | ||
| frontmatter.py | ||
| github_feedback.py | ||
| health.py | ||
| llm.py | ||
| log.py | ||
| merge.py | ||
| post_extract.py | ||
| post_merge.py | ||
| pr_state.py | ||
| pre_screen.py | ||
| search.py | ||
| stale_pr.py | ||
| substantive_fixer.py | ||
| validate.py | ||
| watchdog.py | ||
| worktree_lock.py | ||