{
  "$schema": "./site-facts.schema.json",
  "model_version": "1.3.0",
  "facts": {
    "site.name": {
      "value": "1200km Security Research",
      "scope": "Canonical public name of the 1200km.com research site.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/"
      ],
      "status": "maintained"
    },
    "site.canonical_url": {
      "value": "https://1200km.com/",
      "scope": "Canonical origin for every public page, sitemap entry, and structured-data entity emitted by this repository.",
      "verified_at": "2026-07-24",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/blob/main/CNAME",
        "https://1200km.com/"
      ],
      "status": "verified"
    },
    "site.description": {
      "value": "Security research and practical CTI-to-detection engineering by Andrey Pautov.",
      "scope": "Concise public description used by the WebSite entity and AI discovery guide.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/"
      ],
      "status": "maintained"
    },
    "site.default_social_image": {
      "value": {
        "url": "https://1200km.com/assets/site-og-v2.png",
        "width": 1200,
        "height": 630,
        "alt": "1200km Security Research — threat intelligence, detection engineering, and analyst tooling"
      },
      "scope": "Fallback social preview used only when a page has no more specific Open Graph image.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/assets/site-og-v2.png"
      ],
      "status": "maintained"
    },
    "identity.person_name": {
      "value": "Andrey Pautov",
      "scope": "Public professional name used across the site and connected structured-data graph.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/about.html",
        "https://github.com/anpa1200"
      ],
      "status": "verified"
    },
    "identity.job_title": {
      "value": "Threat Intelligence Research Engineer",
      "scope": "Current public professional title.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/about.html"
      ],
      "status": "verified"
    },
    "identity.employer": {
      "value": "XPLG",
      "scope": "Current employer named in the public professional profile.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/about.html"
      ],
      "status": "verified"
    },
    "identity.location": {
      "value": {
        "locality": "Tel Aviv",
        "country": "IL"
      },
      "scope": "Public city-level professional location; no street address is published.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/about.html"
      ],
      "status": "verified"
    },
    "identity.knows_about": {
      "value": [
        "Cyber Threat Intelligence",
        "Detection Engineering",
        "MITRE ATT&CK",
        "Threat Hunting",
        "Malware Analysis",
        "OpenCTI",
        "SIEM Validation",
        "Adversary Simulation",
        "Reverse Engineering",
        "Cloud Security"
      ],
      "scope": "Controlled expertise terms used by the public Person entity.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/about.html",
        "https://1200km.com/projects.html"
      ],
      "status": "maintained"
    },
    "contact.public_email": {
      "value": "1200km@gmail.com",
      "scope": "Public contact address used by accessible mail links and the Person entity.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/about.html"
      ],
      "status": "verified"
    },
    "identity.same_as": {
      "value": [
        "https://github.com/anpa1200",
        "https://medium.com/@1200km",
        "https://www.linkedin.com/in/andrey-pautov/",
        "https://infosecwriteups.com/@1200km"
      ],
      "scope": "Public profiles that identify the same professional author.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/about.html"
      ],
      "status": "verified"
    },
    "adversarygraph.product_name": {
      "value": "AdversaryGraph",
      "scope": "Canonical public name of the flagship self-hosted CTI-to-detection platform.",
      "verified_at": "2026-07-21",
      "source": [
        "https://github.com/anpa1200/adversarygraph/blob/main/README.md"
      ],
      "status": "maintained"
    },
    "adversarygraph.repository_url": {
      "value": "https://github.com/anpa1200/adversarygraph",
      "scope": "Canonical source repository for AdversaryGraph.",
      "verified_at": "2026-07-24",
      "source": [
        "https://github.com/anpa1200/adversarygraph"
      ],
      "status": "maintained"
    },
    "adversarygraph.documentation_url": {
      "value": "https://1200km.com/adversarygraph-docs/",
      "scope": "Canonical public product documentation root.",
      "verified_at": "2026-07-24",
      "source": [
        "https://1200km.com/adversarygraph-docs/"
      ],
      "status": "maintained"
    },
    "adversarygraph.operating_system": {
      "value": "Self-hosted / Web / Docker",
      "scope": "Supported deployment form described by the current source release and repository documentation.",
      "verified_at": "2026-07-25",
      "source": [
        "https://github.com/anpa1200/adversarygraph/blob/2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73/README.md"
      ],
      "status": "maintained"
    },
    "adversarygraph.license": {
      "value": {
        "name": "AdversaryGraph Personal Use License",
        "url": "https://github.com/anpa1200/adversarygraph/blob/2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73/LICENSE"
      },
      "scope": "License at the reviewed v7.0.0 source commit; organizational, commercial, production, and government use requires prior written approval.",
      "verified_at": "2026-08-14",
      "source": [
        "https://github.com/anpa1200/adversarygraph/blob/2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73/LICENSE"
      ],
      "status": "maintained"
    },
    "adversarygraph.current_source_release": {
      "value": "v7.0.0",
      "scope": "Current AdversaryGraph release label declared by VERSION, README, changelog, release notes, and the merged main source tree.",
      "verified_at": "2026-08-14",
      "source": [
        "https://github.com/anpa1200/adversarygraph/blob/2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73/VERSION",
        "https://github.com/anpa1200/adversarygraph/blob/2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73/docs/release-notes/v7.0.0.md"
      ],
      "status": "current-development",
      "note": "Main and the latest published immutable GitHub release are aligned at v7.0.0; the v6.5.0 source-ahead-of-tag gap closed when v7.0.0 published. The changelog records no changes after the v7.0.0 boundary."
    },
    "adversarygraph.current_source_commit": {
      "value": "2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73",
      "scope": "Merge commit on main containing the reviewed AdversaryGraph v7.0.0 source release.",
      "verified_at": "2026-08-14",
      "source": [
        "https://github.com/anpa1200/adversarygraph/commit/2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73"
      ],
      "status": "verified"
    },
    "adversarygraph.current_source_merged_at": {
      "value": "2026-08-12T18:14:10Z",
      "scope": "UTC commit timestamp of the v7.0.0 release merge on the AdversaryGraph main branch.",
      "verified_at": "2026-08-14",
      "source": [
        "https://github.com/anpa1200/adversarygraph/commit/2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73"
      ],
      "status": "verified"
    },
    "adversarygraph.current_source_ci": {
      "value": "https://github.com/anpa1200/adversarygraph/actions/runs/31626704258",
      "scope": "Successful post-merge GitHub Actions Release workflow run for the reviewed v7.0.0 source commit.",
      "verified_at": "2026-08-14",
      "source": [
        "https://github.com/anpa1200/adversarygraph/actions/runs/31626704258"
      ],
      "status": "verified",
      "note": "The separate general CI workflow run for this commit (run 31626631081) failed on a transient upstream 503 while fetching nuclei-templates during the scanner-mcp image build; the Release workflow that gates and publishes the tag completed successfully."
    },
    "adversarygraph.stable_release": {
      "value": "7.0.0",
      "scope": "Latest non-draft, non-prerelease AdversaryGraph GitHub release, without the tag prefix.",
      "verified_at": "2026-09-03",
      "source": [
        "https://github.com/anpa1200/adversarygraph/releases/tag/v7.0.0"
      ],
      "status": "released"
    },
    "adversarygraph.latest_release_tag": {
      "value": "v7.0.0",
      "scope": "Latest immutable AdversaryGraph GitHub release tag.",
      "verified_at": "2026-09-03",
      "source": [
        "https://github.com/anpa1200/adversarygraph/releases/tag/v7.0.0"
      ],
      "status": "released"
    },
    "adversarygraph.release_published_at": {
      "value": "2026-08-12T18:31:43Z",
      "scope": "GitHub publication timestamp for the v7.0.0 release.",
      "verified_at": "2026-09-03",
      "source": [
        "https://api.github.com/repos/anpa1200/adversarygraph/releases/latest"
      ],
      "status": "released"
    },
    "adversarygraph.release_commit": {
      "value": "2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73",
      "scope": "Git commit resolved by the immutable v7.0.0 tag.",
      "verified_at": "2026-08-14",
      "source": [
        "https://github.com/anpa1200/adversarygraph/tree/v7.0.0"
      ],
      "status": "released"
    },
    "adversarygraph.development_status": {
      "value": "AdversaryGraph main is at v7.0.0, matching the latest published immutable GitHub release. No changes are recorded after the v7.0.0 release boundary.",
      "scope": "Current AdversaryGraph source state relative to the latest published immutable GitHub release.",
      "verified_at": "2026-08-14",
      "source": [
        "https://github.com/anpa1200/adversarygraph/blob/2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73/CHANGELOG.md",
        "https://github.com/anpa1200/adversarygraph/actions/runs/31626704258"
      ],
      "status": "current-development",
      "note": "Governed Threat Hunting, Query Library, Unified RAG/MCP, asset exposure assessment, and SOC access groups shipped as part of the v7.0.0 release and are present in the immutable v7.0.0 tag."
    },
    "adversarygraph.unreleased_capabilities": {
      "value": [],
      "scope": "Capability families recorded after the v7.0.0 release boundary in the current changelog.",
      "verified_at": "2026-08-14",
      "source": [
        "https://github.com/anpa1200/adversarygraph/blob/2a9a7bedf6115dbcfbf1e90a70e08f50d76e8c73/CHANGELOG.md"
      ],
      "status": "current-development",
      "note": "The changelog currently records no changes after the v7.0.0 release boundary."
    },
    "contributions.accepted_external": {
      "value": 8,
      "scope": "External GitHub pull requests authored by anpa1200 with a recorded merged_at timestamp, plus merged GitLab merge requests in the maintained validation inventory.",
      "verified_at": "2026-09-03",
      "source": [
        "https://1200km.com/assets/validation/stats.json",
        "https://github.com/pulls?q=is%3Apr+author%3Aanpa1200+is%3Amerged"
      ],
      "status": "accepted",
      "note": "Breakdown: 8 GitHub pull requests and 0 GitLab merge requests. Closed-unmerged submissions are excluded."
    },
    "contributions.open_external": {
      "value": 5,
      "scope": "Open external submissions awaiting upstream disposition in the maintained GitHub and GitLab validation inventory.",
      "verified_at": "2026-09-03",
      "source": [
        "https://1200km.com/assets/validation/stats.json",
        "https://github.com/pulls?q=is%3Apr+author%3Aanpa1200+is%3Aopen"
      ],
      "status": "submitted",
      "note": "Breakdown: 5 open GitHub pull requests and 0 open GitLab merge requests. These are not accepted contributions."
    },
    "contributions.closed_unmerged_external": {
      "value": 30,
      "scope": "Closed external GitHub pull requests with no recorded merge; tracked separately from accepted and open submissions.",
      "verified_at": "2026-09-03",
      "source": [
        "https://1200km.com/assets/validation/stats.json"
      ],
      "status": "closed-unmerged"
    },
    "content.local_article_archive": {
      "value": 277,
      "scope": "Unique local article pages preserved under /articles/read/ from the pinned medium-blog-navigation archive plus 87 permitted full TrainSec mirrors under /articles/trainsec/; this is an archive count, not a claim about the current Medium publication total.",
      "verified_at": "2026-09-08",
      "source": [
        "https://github.com/anpa1200/medium-blog-navigation/blob/a9128dbdcd37593225bcdcaf401d868130efc1d1/src/data/article-catalog.json",
        "https://github.com/anpa1200/medium-blog-navigation/blob/a9128dbdcd37593225bcdcaf401d868130efc1d1/reports/article-canonical-migration.csv",
        "https://trainsec.net/library/"
      ],
      "status": "verified"
    },
    "content.local_companion_articles": {
      "value": 5,
      "scope": "Standalone HTML companion articles and the permitted TrainSec library catalogue directly under /articles/ in the main-site repository, excluding the directory index and the generated article archive under /articles/read/.",
      "verified_at": "2026-08-03",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/tree/main/articles",
        "https://trainsec.net/library/"
      ],
      "status": "verified"
    },
    "content.field_guides": {
      "value": 8,
      "scope": "Maintained Docusaurus field-guide sites listed in seo/remote-sitemaps.json, excluding AdversaryGraph product documentation and the Medium export archive.",
      "verified_at": "2026-07-21",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/blob/main/seo/remote-sitemaps.json"
      ],
      "status": "verified"
    },
    "content.field_guide_names": {
      "value": [
        "CTI Analyst Field Manual",
        "Israel Government Threat Actors CTI",
        "Anomaly Detection Atlas",
        "Insider Threat Detection Engineering Guide",
        "Operation Desert Hydra",
        "OpenCTI Intelligent Shield",
        "CTI as Code",
        "Customer-Driven AI CTI Project"
      ],
      "scope": "The eight maintained field guides counted by content.field_guides.",
      "verified_at": "2026-07-21",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/blob/main/seo/remote-sitemaps.json"
      ],
      "status": "maintained"
    },
    "content.listed_labs": {
      "value": 17,
      "scope": "Distinct lab rows maintained on /labs.html; this is a curated portfolio listing, not the number of Docusaurus lab pages or every experiment in all repositories.",
      "verified_at": "2026-08-07",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/blob/main/labs.html"
      ],
      "status": "verified"
    },
    "content.product_documentation_sites": {
      "value": 1,
      "scope": "Maintained product-documentation site excluded from the field-guide total: AdversaryGraph Documentation.",
      "verified_at": "2026-07-21",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/blob/main/seo/remote-sitemaps.json",
        "https://1200km.com/adversarygraph-docs/"
      ],
      "status": "maintained"
    },
    "content.threat_matrix_technique_pages": {
      "value": 713,
      "scope": "Deployed ATT&CK technique and sub-technique entity pages under /threat-matrix/techniques/: 697 current Enterprise ATT&CK 19.1 records plus 16 preserved historical/superseded routes.",
      "verified_at": "2026-07-29",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/tree/main/threat-matrix/techniques"
      ],
      "status": "verified"
    },
    "content.threat_matrix_actor_pages": {
      "value": 175,
      "scope": "Deployed ATT&CK group entity pages under /threat-matrix/actors/: 174 current Enterprise ATT&CK 19.1 records plus one preserved historical/superseded route.",
      "verified_at": "2026-07-29",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/tree/main/threat-matrix/actors"
      ],
      "status": "verified"
    },
    "content.threat_matrix_entity_pages": {
      "value": 888,
      "scope": "Sum of deployed current and preserved historical Threat Matrix technique/sub-technique and actor entity pages.",
      "verified_at": "2026-07-29",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/tree/main/threat-matrix/techniques",
        "https://github.com/anpa1200/anpa1200.github.io/tree/main/threat-matrix/actors"
      ],
      "status": "verified"
    },
    "products.public_attack_workspace": {
      "value": {
        "name": "Threat Matrix",
        "canonical_url": "https://1200km.com/threat-matrix/",
        "relationship": "Public AdversaryGraph Light web workspace: browser-only ATT&CK exploration with product-shaped module gates for full self-hosted AdversaryGraph capabilities.",
        "superseded_aliases": [
          "AdversaryGraph Web"
        ]
      },
      "scope": "Approved current name and boundary for the public AdversaryGraph Light workspace.",
      "verified_at": "2026-07-23",
      "source": [
        "https://1200km.com/threat-matrix/",
        "https://github.com/anpa1200/anpa1200.github.io/tree/main/threat-matrix"
      ],
      "status": "maintained"
    },
    "products.threatmapper": {
      "value": {
        "name": "ThreatMapper",
        "replacement": "AdversaryGraph",
        "redirect": "https://1200km.com/adversarygraph/"
      },
      "scope": "Historical product name retained in version-specific articles and compatibility redirects only.",
      "verified_at": "2026-07-21",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/blob/main/threatmapper.html",
        "https://1200km.com/articles/adversarygraph-v2-self-hosted-ai-cti-platform.html"
      ],
      "status": "superseded"
    },
    "products.portfolio_registry": {
      "value": [
        {
          "name": "AdversaryGraph",
          "type": "flagship platform",
          "status": "maintained",
          "canonical_url": "https://1200km.com/adversarygraph/"
        },
        {
          "name": "Threat Matrix",
          "type": "public ATT&CK workspace",
          "status": "maintained",
          "canonical_url": "https://1200km.com/threat-matrix/"
        },
        {
          "name": "ThreatMapper",
          "type": "historical product name",
          "status": "superseded",
          "canonical_url": "https://1200km.com/adversarygraph/"
        },
        {
          "name": "lpi",
          "type": "GitHub repository",
          "status": "archived",
          "canonical_url": "https://github.com/anpa1200/lpi"
        },
        {
          "name": "Malware_analysis",
          "type": "GitHub repository",
          "status": "archived",
          "canonical_url": "https://github.com/anpa1200/Malware_analysis"
        },
        {
          "name": "Networking",
          "type": "GitHub repository",
          "status": "archived",
          "canonical_url": "https://github.com/anpa1200/Networking"
        },
        {
          "name": "SystemCheck",
          "type": "GitHub repository",
          "status": "archived",
          "canonical_url": "https://github.com/anpa1200/SystemCheck"
        }
      ],
      "scope": "Central lifecycle registry for the named platform/workspace and GitHub repositories explicitly marked archived by GitHub. Unlisted repositories are not assigned a lifecycle status by this fact.",
      "verified_at": "2026-07-21",
      "source": [
        "https://api.github.com/users/anpa1200/repos?type=owner&per_page=100",
        "https://1200km.com/adversarygraph/",
        "https://1200km.com/threat-matrix/",
        "https://github.com/anpa1200/anpa1200.github.io/blob/main/threatmapper.html"
      ],
      "status": "verified"
    },
    "products.experimental_registry": {
      "value": [],
      "scope": "Products explicitly declared experimental in the central portfolio registry. An empty list means no current product is assigned that lifecycle state; it does not relabel labs or research demonstrations as products.",
      "verified_at": "2026-07-21",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/blob/main/data/site-facts.json"
      ],
      "status": "verified"
    },
    "contact.public_phone": {
      "value": false,
      "scope": "Whether any public HTML or public PDF published by this repository may contain a private phone number.",
      "verified_at": "2026-07-21",
      "source": [
        "https://github.com/anpa1200/anpa1200.github.io/blob/main/scripts/check-site-facts.mjs"
      ],
      "status": "verified",
      "note": "Public contact is limited to the site email link and listed professional profiles."
    }
  }
}
