compare drops each profile's data-quality flags (implausible ages, nothing detected by name)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- javascript, python
Research direction
Start with the repro: run python3 -m faircode profile and python3 -m faircode compare on the same small CSV to see the implausible-age warning appear in one and not the other. Then read faircode/compare.py to see how shared dimensions are built, and faircode/report.py in compare_to_terminal(), compare_to_html() and compare_to_csv(), plus assets/profiler-compare.js. Done means the per-side implausible_values appear on shared dimensions, a drift flag fires when they differ, and the cross-engine compare parity test passes.
Written by the indexing model from the issue text.
Description
Where: faircode/compare.py, faircode/report.py compare_to_terminal() / compare_to_html() / compare_to_csv(), assets/profiler-compare.js.
Current gap: compare builds drift flags from the two profiles' numbers but drops each profile's own data-quality flags. Two datasets with implausible ages (#840) or with no column recognised by name (#847) compare cleanly, with nothing in the drift report saying one side's age dimension lost values to the --max-age rule, so a drift in the 75+ share can be an artefact nobody is told about.
Repro:
$ printf 'sex,age\nM,25\nF,200\nM,30\nF,40\n' > a.csv
$ python3 -m faircode profile a.csv | grep implausible
! age: 1 implausible age value(s) above 120 were treated as missing, not banded (a mistyped age or a birth year?)
$ python3 -m faircode compare a.csv a.csv | grep -c implausible
0
Suggested approach: carry implausible_values per side onto each shared dimension in the compare result (optional key, present only when above zero) and add a drift flag when it differs between A and B; mirror in the JS compare and cover it in the cross-engine compare parity test.
- Dominant language
- HTML
- Stars
- 47
- Forks
- 45
- Avg merge
- 2h 49m
- Merged PRs (30d)
- 61
Getting set up
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from yakew7/Fair-Code
-
bug good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
bug documentation good first issue
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
bug good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day
-
Numeric column headers keep their type in Python (the integer 2020) and are text in the web engineOpenbug help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day
-
bug good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
All issues in yakew7/Fair-Code
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
auth: agent-bearer --manager-call is told to use the MCP instance argument on an ambiguous managerOpen
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
Maintainers usually reply within 1 day
-
area/agent status/need-triage
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
google-gemini/gemini-cli#29811 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Devolutions/UniGetUI#5541 ·
Maintainers usually reply within 1 day