`living-doc-gap-finder`: make `compute_gaps.py` deterministic and true to the skill
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 55/100
Research direction
Start with scripts/compute_gaps.py in the living-doc-gap-finder skill: the set iteration near line 137 that assigns GAP ids, and the .get("catalog", {}) defaults. Re-run the PYTHONHASHSEED loop and the echo '{}' check from the issue to reproduce both defects. Done means identical output across seeds, UNTESTED_AC for Functionality with ac_count > 0, a non-zero exit on malformed input, and eval 1 corrected in evals/evals.json.
Written by the indexing model from the issue text.
Description
Description of Technical Debt
Five defects in one skill, found by the last eval run (line numbers as measured then; re-check before editing):
- GAP ids are not deterministic.
scripts/compute_gaps.py:137iterates a set of AC ids while ids come from a
running counter, so the order, and with it every GAP id, depends onPYTHONHASHSEED.SKILL.md:27and the docstring
promise "deterministically". - The output contradicts the skill's taxonomy. The script emits
UNDOCUMENTED_FUNCTIONALITYfor every
Functionality without tests, whatever itsac_count. The skill says a Functionality with criteria and no tests is
UNTESTED_AConly (SKILL.md:46-47), so a correct report depends on the model fixing the output by hand. Eval 1's
assertion (evals/evals.json:16) saysFUNC-002"has no ACs of its own", while its fixture givesac_count: 5. - Wrong-shaped input passes.
.get("catalog", {}),.get("inventory", {})and.get("known_test_links", {})
default to empty, so{}reports "0/0 ACs covered" with exit 0. - The only worked example of the input is an eval fixture.
SKILL.md:38-39points at
evals/files/catalog-snapshot.json. - "all 9 gap types" (
SKILL.md:27,compute_gaps.py:3,evals/evals.json:199) against "Ten gap types … at
nine priority levels" (SKILL.md:68).
Impact of Technical Debt
- The same snapshot gives different GAP ids per run.
- Reports are right only if the model corrects the script.
- A malformed snapshot gives an all-clear.
Category
Code Quality / Refactoring
Priority
High - Actively causing problems
Proposed Solution
Iterate in sorted order, with a test that compares two runs under different seeds. Emit UNTESTED_AC for a
Functionality with ac_count > 0, and correct eval 1. Exit non-zero, naming the missing sections, when none of the
three exists. Move a minimal input example into the skill or its references/ and point the docstring at it. Say "ten
gap types at nine priority levels" everywhere. Re-measure the named evals by agentic/docs/testing/eval-protocol.md (two runs, one grader), and run the regression gate in agentic/docs/testing/baseline.md when a script or canon copy changes. Eval: gap-finder 1.
Effort Estimate
1 day
Dependencies / Related
No response
Additional Context
Measured 2026-11-12 at living-doc 2df73dc. Re-check:
for s in 1 2 3; do PYTHONHASHSEED=$s python3 agentic/.claude/skills/living-doc-gap-finder/scripts/compute_gaps.py agentic/.claude/skills/living-doc-gap-finder/evals/files/catalog-snapshot.json | md5; done gives three equal hashes when fixed. echo '{}' > /tmp/x.json && python3 agentic/.claude/skills/living-doc-gap-finder/scripts/compute_gaps.py /tmp/x.json; echo rc=$? is non-zero when fixed.
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- Avg merge
- 6h 14m
- Merged PRs (30d)
- 27
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
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 AbsaOSS/living-doc
-
type:tech-debt
Difficulty 1/5 Under an hour Newbie friendliness 78/100
AbsaOSS/living-doc#133 ·
Maintainers usually reply within 1 day
-
type:tech-debt
Difficulty 1/5 1-3 hours Newbie friendliness 85/100
AbsaOSS/living-doc#130 ·
Maintainers usually reply within 1 day
-
type:tech-debt
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
AbsaOSS/living-doc#129 ·
Maintainers usually reply within 1 day
-
type:tech-debt
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
AbsaOSS/living-doc#119 ·
Maintainers usually reply within 1 day
-
type:tech-debt
Difficulty 5/5 Over a week Newbie friendliness 5/100
AbsaOSS/living-doc#136 ·
Maintainers usually reply within 1 day
All issues in AbsaOSS/living-doc
Similar issues
-
documentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
JheysonJhordyHuarauyaRiquelme/sprocguard#18 ·
Maintainers usually reply within 1 day
-
enhancement good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
dlq/synthpopcan#59 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
mdn/translated-content#40220 ·
Maintainers usually reply within 4 days
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
ETSInitiative/PETSIRD#243 ·
Maintainers usually reply within 1 day
-
deferred p2
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
cuadrao-ai/argus#2160 ·
Maintainers usually reply within 1 day