sandogasa-inventory 0.15.0

Package-of-interest inventory data model and I/O
Documentation
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Inventory",
  "description": "Top-level inventory document.",
  "type": "object",
  "properties": {
    "inventory": {
      "description": "Inventory metadata.",
      "$ref": "#/$defs/InventoryMeta"
    },
    "package": {
      "description": "Packages in the inventory.",
      "type": "array",
      "default": [],
      "items": {
        "$ref": "#/$defs/Package"
      }
    }
  },
  "required": [
    "inventory"
  ],
  "$defs": {
    "InventoryMeta": {
      "description": "Inventory metadata.",
      "type": "object",
      "properties": {
        "description": {
          "description": "Human-readable description.",
          "type": "string"
        },
        "labels": {
          "description": "Labels/tags for the inventory (e.g. \"eln-extras\").",
          "type": "array",
          "default": [],
          "items": {
            "type": "string"
          }
        },
        "maintainer": {
          "description": "Maintainer (person or team).",
          "type": "string"
        },
        "name": {
          "description": "Inventory name (e.g. \"hyperscale-packages\").",
          "type": "string"
        },
        "private_fields": {
          "description": "Field names to strip from all packages on export.",
          "type": "array",
          "default": [],
          "items": {
            "type": "string"
          }
        },
        "workloads": {
          "description": "Workload definitions. Keys are workload identifiers; values\ncarry per-workload metadata for content-resolver export.\nPackages without explicit workloads inherit all keys.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/WorkloadMeta"
          },
          "default": {}
        }
      },
      "required": [
        "name",
        "description",
        "maintainer"
      ]
    },
    "Package": {
      "description": "A package of interest (source RPM).",
      "type": "object",
      "properties": {
        "arch_rpms": {
          "description": "Architecture-specific RPMs.",
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "archived_builds": {
          "description": "Set when the package's upstream repo is archived but it\nstill has builds tagged into CBS release tags — recorded by\n`poi-tracker sync-gitlab --mark-unshipped`. The value records\nwhy. Unlike [`Self::unshipped`] the package still ships, so\nit is NOT skipped by triage/audit; instead it is a build\ncleanup candidate for `hs-relmon` to untag. Refreshed — in\nboth directions — each `--mark-unshipped` run.",
          "type": [
            "string",
            "null"
          ]
        },
        "distros": {
          "description": "Comma-separated distribution list for hs-relmon.",
          "type": [
            "string",
            "null"
          ]
        },
        "file_issue": {
          "description": "Whether to file GitLab issues for version updates.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "name": {
          "description": "Source RPM name (required).",
          "type": "string"
        },
        "poc": {
          "description": "Point of contact (\"Name <email>\").",
          "type": [
            "string",
            "null"
          ]
        },
        "priority": {
          "description": "Bugzilla priority to apply to release-monitoring bugs for\nthis package. Overrides any workload-level\n`default_priority`. Set to `unspecified` to explicitly\nopt out of a workload default.",
          "anyOf": [
            {
              "$ref": "#/$defs/Priority"
            },
            {
              "type": "null"
            }
          ]
        },
        "reason": {
          "description": "Reason for tracking this package.",
          "type": [
            "string",
            "null"
          ]
        },
        "repology_name": {
          "description": "Name in Repology if different from RPM name.",
          "type": [
            "string",
            "null"
          ]
        },
        "retired_on": {
          "description": "Dist-git branches where this package is retired (a\n`dead.package` marker is present), as recorded by\n`poi-tracker triage-retired --mark`. Consumers skip checks\nthat can't succeed for a retired branch (e.g. auditing\nrawhide update requests). Refreshed — in both directions —\neach time `triage-retired --mark` checks the branch.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "rpms": {
          "description": "Binary RPM subpackages to track. If omitted, all are assumed.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "task": {
          "description": "Internal task/ticket reference.",
          "type": [
            "string",
            "null"
          ]
        },
        "team": {
          "description": "Team responsible.",
          "type": [
            "string",
            "null"
          ]
        },
        "track": {
          "description": "Which branch/repository to track (upstream, fedora-rawhide, etc.).",
          "type": [
            "string",
            "null"
          ]
        },
        "unshipped": {
          "description": "Set when the package is no longer shipped on any active\nbranch — the dist-git project is gone, it has no branch on\nan active release, or it is retired everywhere — as\nrecorded by `poi-tracker prune-retired`. The value records\nwhy. Most operations skip such packages; `triage-retired`\nstill processes them so remaining bugs get closed, and the\nsync commands' `--prune` preserves them (a fresh sync\nwould otherwise re-add retired packages, whose ACLs\nremain). Refreshed — in both directions — each time\n`prune-retired` checks the package.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "name"
      ]
    },
    "Priority": {
      "description": "A Bugzilla priority level. Variants are ordered from\nleast- to most-important so a `max(...)` across several\ncandidates picks the highest priority.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "low",
            "medium",
            "high",
            "urgent"
          ]
        },
        {
          "description": "Bugzilla's `unspecified` — the default a release-monitoring\nbug arrives at. Treated as \"don't manage\" when resolving\nfrom inventory; valid as an explicit override that opts\na package out of a workload-level default.",
          "type": "string",
          "const": "unspecified"
        }
      ]
    },
    "WorkloadMeta": {
      "description": "Per-workload metadata for content-resolver export.\n\nAll fields except `packages` are optional — omitted fields\nfall back to the inventory-level values.",
      "type": "object",
      "properties": {
        "default_priority": {
          "description": "Default Bugzilla priority for packages in this workload\nwhen they don't carry an explicit `priority`. The\nresolved priority is the max across all workloads listing\nthe package, so a package in both a \"best-effort\" and a\n\"security-sensitive\" workload picks up the latter.",
          "anyOf": [
            {
              "$ref": "#/$defs/Priority"
            },
            {
              "type": "null"
            }
          ]
        },
        "description": {
          "description": "Human-readable description.",
          "type": [
            "string",
            "null"
          ]
        },
        "labels": {
          "description": "Content-resolver labels.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "maintainer": {
          "description": "Maintainer override.",
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "description": "Workload name in content-resolver.",
          "type": [
            "string",
            "null"
          ]
        },
        "packages": {
          "description": "Source RPM names belonging to this workload.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    }
  }
}