iridium-db 0.2.0

A high-performance vector-graph hybrid storage and indexing engine
#!/usr/bin/env python3
"""Emit Sprint 5 install/package artifacts for the Iridium service candidate."""

from __future__ import annotations

import argparse
import json
import subprocess
import sys
from pathlib import Path
from typing import Any, Dict, Sequence


ROOT = Path(__file__).resolve().parents[1]


def parse_args(argv: Sequence[str]) -> argparse.Namespace:
    parser = argparse.ArgumentParser(
        description="Write the Iridium service install/package report artifacts"
    )
    parser.add_argument("--report-dir", default="artifacts")
    parser.add_argument("--report-prefix", default="service_install")
    parser.add_argument("--listen", default="127.0.0.1:7001")
    parser.add_argument("--telemetry-endpoint", default="stdout")
    parser.add_argument("--tls", default="operator-optional")
    parser.add_argument("--admin-token", default="local-dev")
    parser.add_argument(
        "--binary",
        default=str(ROOT / "target" / "debug" / "ir"),
        help="Path to the Iridium CLI binary",
    )
    return parser.parse_args(argv)


def run_json(command: list[str]) -> Dict[str, Any]:
    completed = subprocess.run(
        command,
        cwd=ROOT,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        text=True,
        check=True,
    )
    return json.loads(completed.stdout)


def run_command(command: list[str]) -> None:
    subprocess.run(
        command,
        cwd=ROOT,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        text=True,
        check=True,
    )


def load_json(path: Path) -> Dict[str, Any]:
    return json.loads(path.read_text(encoding="utf-8"))


def write_markdown(path: Path, payload: Dict[str, Any]) -> None:
    md_lines = [
        "# Service Install Report",
        "",
        f"- schema: `{payload['schema']}`",
        f"- package_name: `{payload['package_identity']['name']}`",
        f"- package_version: `{payload['package_identity']['version']}`",
        f"- deployment_profile_id: `{payload['package_identity']['deployment_profile_id']}`",
        f"- maturity_tier: `{payload['package_identity']['maturity_tier']}`",
        f"- support_band: `{payload['package_identity']['support_band']}`",
        f"- artifact_class: `{payload['package_identity']['artifact_class']}`",
        "",
        "## Install Inputs",
        f"- schema_id: `{payload['install_inputs']['schema_id']}`",
        f"- listen_address: `{payload['install_inputs']['listen_address']}`",
        f"- telemetry_endpoint: `{payload['install_inputs']['telemetry_endpoint']}`",
        f"- tls_mode: `{payload['install_inputs']['tls_mode']}`",
        f"- admin_token_configured: `{str(payload['install_inputs']['admin_token_configured']).lower()}`",
        f"- data_directory: `{payload['install_inputs']['data_directory']}`",
        "",
        "## Release Outputs",
        f"- runbook: `{payload['release_outputs']['operator_runbook']}`",
        f"- compatibility_report: `{payload['release_outputs']['compatibility_report']}`",
        f"- lifecycle_report: `{payload['release_outputs']['lifecycle_report']}`",
        f"- service_candidate_report: `{payload['release_outputs']['service_candidate_report']}`",
        f"- evidence_report: `{payload['release_outputs']['evidence_report']}`",
        "",
        "## Shared References",
        f"- support_band_guidance: `{payload['shared_references']['support_band_guidance']}`",
        f"- install_release_conventions: `{payload['shared_references']['install_release_conventions']}`",
        f"- operator_runbook_template: `{payload['shared_references']['operator_runbook_template']}`",
        f"- compatibility_matrix: `{payload['shared_references']['compatibility_matrix']}`",
        f"- incident_taxonomy: `{payload['shared_references']['incident_taxonomy']}`",
    ]
    path.write_text("\n".join(md_lines) + "\n", encoding="utf-8")


def main(argv: Sequence[str]) -> int:
    args = parse_args(argv)
    report_dir = Path(args.report_dir)
    report_dir.mkdir(parents=True, exist_ok=True)

    run_command(
        [
            sys.executable,
            str(ROOT / "scripts" / "service_compatibility_report.py"),
            "--report-dir",
            str(report_dir),
            "--listen",
            args.listen,
            "--telemetry-endpoint",
            args.telemetry_endpoint,
            "--tls",
            args.tls,
            "--admin-token",
            args.admin_token,
            "--binary",
            args.binary,
        ]
    )

    service = run_json([args.binary, "service-report", "--listen", args.listen])
    compatibility = load_json(report_dir / "service_compatibility_report.json")

    payload = {
        "schema": "iridium.service-install-report.v1",
        "package_identity": {
            "name": "iridium-service-candidate",
            "version": "0.1.0",
            "deployment_profile_id": service["profile_id"],
            "maturity_tier": "single-node-production-candidate",
            "support_band": service["support_band"],
            "artifact_class": "package",
        },
        "install_inputs": {
            "schema_id": service["schema_id"],
            "listen_address": service["listen_address"],
            "telemetry_endpoint": args.telemetry_endpoint,
            "tls_mode": args.tls,
            "admin_token_configured": bool(args.admin_token),
            "data_directory": "<service-root>/data",
        },
        "release_outputs": {
            "install_instructions": "docs/service_install.md",
            "operator_runbook": "docs/service_single_node.md",
            "compatibility_report": "artifacts/service_compatibility_report.json",
            "lifecycle_report": "artifacts/service_lifecycle_report.json",
            "service_candidate_report": "artifacts/service_candidate_report.json",
            "evidence_report": "artifacts/retrieval_quality_service_report.json",
        },
        "shared_references": {
            "support_band_guidance": "../alloy/docs/support-band-guidance.md",
            "install_release_conventions": "../alloy/docs/install-release-conventions.md",
            "operator_runbook_template": "../alloy/docs/operator-runbook-template.md",
            "compatibility_matrix": "../alloy/docs/compatibility-matrix.md",
            "incident_taxonomy": "../alloy/docs/incident-taxonomy.md",
        },
        "compatibility_gate": compatibility["compatibility_gate"],
    }

    json_path = report_dir / f"{args.report_prefix}_report.json"
    md_path = report_dir / f"{args.report_prefix}_report.md"
    json_path.write_text(json.dumps(payload, indent=2), encoding="utf-8")
    write_markdown(md_path, payload)
    print(f"wrote: {json_path}")
    print(f"wrote: {md_path}")
    return 0 if compatibility["compatibility_gate"]["overall_compatible"] else 1


if __name__ == "__main__":
    raise SystemExit(main(sys.argv[1:]))