generated from coulomb/repo-seed
REUSE-WP-0017-T01: explicit capability_status on roster + coverage split in report gaps
Some checks failed
ci / validate-registry (push) Has been cancelled
Some checks failed
ci / validate-registry (push) Has been cancelled
Adds capability_status: has|none|pending to every roster row (10 has / 51 pending currently), a coverage_ratio headline, and splits the gap report's empty-scaffold section into unclassified vs explicitly-none. Adds templates/NO_CAPABILITIES.template.md for the no-capability marker. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -110,6 +110,9 @@ def collect_gap_report(
|
||||
r for r in repos
|
||||
if r.get("status") == "established" and r.get("capability_count", 0) == 0
|
||||
]
|
||||
unclassified = [r for r in empty_scaffolds if r.get("capability_status", "pending") == "pending"]
|
||||
explicit_none = [r for r in empty_scaffolds if r.get("capability_status") == "none"]
|
||||
covered = [r for r in repos if r.get("capability_status") in ("has", "none")]
|
||||
seeded = [r for r in repos if r.get("seed_from_reuse_surface")]
|
||||
dedup_pending = [
|
||||
{
|
||||
@@ -133,6 +136,11 @@ def collect_gap_report(
|
||||
],
|
||||
"empty_scaffold_count": len(empty_scaffolds),
|
||||
"empty_scaffolds": [r["slug"] for r in empty_scaffolds],
|
||||
"unclassified_count": len(unclassified),
|
||||
"unclassified": [r["slug"] for r in unclassified],
|
||||
"explicit_none_count": len(explicit_none),
|
||||
"explicit_none": [r["slug"] for r in explicit_none],
|
||||
"coverage_ratio": f"{len(covered)}/{len(repos)}" if repos else "0/0",
|
||||
"seeded_repos": [
|
||||
{
|
||||
"slug": r["slug"],
|
||||
@@ -180,11 +188,23 @@ def format_gap_markdown(report: dict[str, Any]) -> str:
|
||||
lines.append("- none (owner rows migrated to canonical repos)")
|
||||
lines.append("")
|
||||
|
||||
empty_count = report.get("empty_scaffold_count", 0)
|
||||
lines.append(f"## Empty scaffolds ({empty_count})")
|
||||
slugs = report.get("empty_scaffolds", [])
|
||||
if slugs:
|
||||
for slug in slugs:
|
||||
lines.append(f"**Capability coverage:** {report.get('coverage_ratio', '?')} "
|
||||
"(repos with a capability or an explicit no-capability marker)")
|
||||
lines.append("")
|
||||
|
||||
unclassified = report.get("unclassified", [])
|
||||
lines.append(f"## Unclassified scaffolds ({report.get('unclassified_count', len(unclassified))})")
|
||||
if unclassified:
|
||||
for slug in unclassified:
|
||||
lines.append(f"- `{slug}`")
|
||||
else:
|
||||
lines.append("- none")
|
||||
lines.append("")
|
||||
|
||||
explicit_none = report.get("explicit_none", [])
|
||||
lines.append(f"## Explicitly no-capability ({report.get('explicit_none_count', len(explicit_none))})")
|
||||
if explicit_none:
|
||||
for slug in explicit_none:
|
||||
lines.append(f"- `{slug}`")
|
||||
else:
|
||||
lines.append("- none")
|
||||
|
||||
Reference in New Issue
Block a user