REUSE-WP-0015: dedup owner entries, add report gaps (T02/T03/T05)
Some checks failed
ci / validate-registry (push) Has been cancelled

Remove 17 owner-migrated capabilities from reuse-surface index (keep
activity-core stub). Add report gaps CLI, roster stats + gaps CI steps.
T01 remains operator-blocked on Gitea publish.
This commit is contained in:
2026-06-16 02:22:17 +02:00
parent 660e2acfb8
commit 81c55e598f
32 changed files with 259 additions and 2660 deletions

View File

@@ -22,8 +22,12 @@ from reuse_surface.hub_sync import (
from reuse_surface.overlaps import find_overlaps
from reuse_surface.reports import (
cohort_filters_from_args,
collect_gap_report,
default_roster_path,
format_cohort_json,
format_cohort_markdown,
format_gap_json,
format_gap_markdown,
select_cohort,
)
from reuse_surface.establish import (
@@ -520,6 +524,19 @@ def cmd_report_cohorts(args: argparse.Namespace) -> int:
return 0
def cmd_report_gaps(args: argparse.Namespace) -> int:
roster_path = Path(args.roster).resolve() if args.roster else default_roster_path()
if not roster_path.exists():
print(f"error: roster not found: {roster_path}", file=sys.stderr)
return 1
report = collect_gap_report(roster_path)
if args.format == "json":
print(format_gap_json(report))
else:
print(format_gap_markdown(report), end="")
return 0
def cmd_export(args: argparse.Namespace) -> int:
index = load_index()
bundle: dict[str, Any] = {
@@ -724,6 +741,21 @@ def main(argv: list[str] | None = None) -> int:
)
cohorts.set_defaults(func=cmd_report_cohorts)
gaps = report_sub.add_parser(
"gaps",
help="roster publish blockers, empty scaffolds, and dedup stubs",
)
gaps.add_argument(
"--roster",
help="workstation roster YAML (default: registry/federation/local-repo-roster.yaml)",
)
gaps.add_argument(
"--format",
choices=["markdown", "json"],
default="markdown",
)
gaps.set_defaults(func=cmd_report_gaps)
stats = subparsers.add_parser("stats", help="registry maturity and federation stats")
stats.add_argument("--path", help="repo root (default: cwd)")
stats.add_argument(