import argparse import csv import gzip import sys def domains(path): with gzip.open(path, "rt", encoding="utf-8") as source: for line in source: domain = line.strip().lower().rstrip(".") if domain: yield domain import datetime import json parser = argparse.ArgumentParser(description="Build bounded domain evidence for an AI agent") parser.add_argument("file") parser.add_argument("--keyword", required=True) parser.add_argument("--observation-date", required=True) parser.add_argument("--limit", type=int, default=20) args = parser.parse_args() if not 1 <= args.limit <= 100: parser.error("limit must be between 1 and 100") try: date = datetime.date.fromisoformat(args.observation_date).isoformat() except ValueError: parser.error("observation-date must be YYYY-MM-DD") matches = [] for domain in domains(args.file): if args.keyword.lower() in domain: matches.append(domain) if len(matches) == args.limit: break print(json.dumps({"source_file": args.file, "observation_date": date, "meaning": "newly observed names, not verified registrations", "selection": "first matching names in file order", "limit": args.limit, "domains": matches}, indent=2))