{"capabilities":[{"capability_id":"repository","command_ids":["check","inspect","report","rules"],"input_kinds":["git-tree","repository-manifest"],"status":"stable","summary":"Inspect exact Git trees and evaluate versioned repository policy.","title":"Repository architecture"},{"capability_id":"pull-request-commits","command_ids":["pull-request.commits"],"input_kinds":["git-history","pull-request-metadata"],"status":"stable","summary":"Require concise history or one complete explicitly numbered series.","title":"Pull-request commit policy"},{"capability_id":"pull-request-size","command_ids":["pull-request.size"],"input_kinds":["git-diff","git-attributes"],"status":"stable","summary":"Count reviewable churn while excluding tests and declared generated output.","title":"Pull-request review size"},{"capability_id":"pull-request-review-policy","command_ids":["pull-request.review-policy"],"input_kinds":["git-diff","repository-manifest","provider-evidence"],"status":"preview","summary":"Evaluate exact-head checks, reviews, conversations, migrations, and size tiers.","title":"Pull-request review policy"},{"capability_id":"rest","command_ids":["rest.discover","rest.doctor"],"input_kinds":["API operation map","Actix Web","Axum","Django REST Framework with drf-spectacular","Echo","Express","FastAPI","Gin","Hono","Huma","NestJS","OpenAPI","Rocket","Spring with springdoc-openapi","chi","flask-smorest","net/http","utoipa"],"status":"preview","summary":"Discover API frameworks without executing application code.","title":"REST and OpenAPI"}],"catalog_version":"6.2.2","categories":[{"category_id":"repository","label":"Repository changes","order":20,"topics":[{"label":"Artifacts","order":10,"topic_id":"artifacts"},{"label":"Documentation","order":20,"topic_id":"documentation"}]}],"commands":[{"arguments":[],"command_id":"capabilities","options":[],"path":["capabilities"],"summary":"Describe the stable machine capabilities without inspecting a repository."},{"arguments":[],"command_id":"catalog","options":[],"path":["catalog"],"summary":"Export the deterministic public product, rule, command, and schema catalog."},{"arguments":[{"choices":[],"default":".","help":"","names":["root"],"repeatable":false,"required":false,"value_type":"Path"}],"command_id":"check","options":[{"choices":[],"default":".repo-standards/repository.toml","help":"","names":["--manifest"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":".repo-standards/baseline.json","help":"","names":["--baseline"],"repeatable":false,"required":false,"value_type":"str"},{"choices":["report","ratchet","strict"],"default":"strict","help":"","names":["--mode"],"repeatable":false,"required":false,"value_type":"Mode"},{"choices":["json","pretty-json","text"],"default":"text","help":"","names":["--format"],"repeatable":false,"required":false,"value_type":"OutputFormat"},{"choices":[],"default":null,"help":"Deterministic YYYY-MM-DD","names":["--as-of"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":false,"help":"Analyze the exact staged Git index; ignore unstaged and untracked bytes.","names":["--staged"],"repeatable":false,"required":false,"value_type":"bool"},{"choices":[],"default":null,"help":"Activate a current rule ID for this run.","names":["--enable-rule"],"repeatable":false,"required":false,"value_type":"list"}],"path":["check"],"summary":"Analyze one repository manifest."},{"arguments":[{"choices":[],"default":null,"help":"Git commit-message file to validate.","names":["message_file"],"repeatable":false,"required":true,"value_type":"Path"}],"command_id":"commit-message","options":[{"choices":[],"default":false,"help":"Apply only verified mechanical header normalization.","names":["--fix-safe/--no-fix-safe"],"repeatable":false,"required":false,"value_type":"bool"},{"choices":["json","pretty-json","text"],"default":"text","help":"","names":["--format"],"repeatable":false,"required":false,"value_type":"OutputFormat"}],"path":["commit-message"],"summary":"Enforce `[(i/n) ][TICKET] type(scope)!: description` and safely normalize spacing/case."},{"arguments":[{"choices":[],"default":null,"help":"","names":["rule_id"],"repeatable":false,"required":true,"value_type":"str"}],"command_id":"explain","options":[],"path":["explain"],"summary":"Explain one immutable rule."},{"arguments":[{"choices":[],"default":".","help":"","names":["root"],"repeatable":false,"required":false,"value_type":"Path"}],"command_id":"inspect","options":[{"choices":[],"default":"all","help":"Filter: all, project, workflow, cloudbuild, dockerfile, terraform, openapi.","names":["--kind"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":null,"help":"Filter by repository path prefix.","names":["--path-prefix"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":"100","help":"Page size from 1 through 500.","names":["--limit"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":null,"help":"Opaque cursor returned by the prior page.","names":["--cursor"],"repeatable":false,"required":false,"value_type":"str"}],"path":["inspect"],"summary":"Inventory tracked inert repository metadata without requiring a manifest."},{"arguments":[{"choices":[],"default":".","help":"","names":["root"],"repeatable":false,"required":false,"value_type":"Path"}],"command_id":"pull-request.commits","options":[{"choices":[],"default":"","help":"Exact pull-request base revision.","names":["--base"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":"HEAD","help":"Exact pull-request head revision.","names":["--head"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":null,"help":"Pull-request base ref name.","names":["--base-ref"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":null,"help":"Pull-request head ref name.","names":["--head-ref"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":null,"help":"Exact PR head owner/name identity used by transition exemptions.","names":["--repository-id"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":5,"help":"Maximum unnumbered non-merge commits.","names":["--max-commits"],"repeatable":false,"required":false,"value_type":"int"},{"choices":[],"default":null,"help":"Trusted JSON transition exemption; repeat for multiple transitions.","names":["--transition-exemption"],"repeatable":false,"required":false,"value_type":"list"},{"choices":[],"default":null,"help":"GitHub Actions event payload containing exact pull-request evidence.","names":["--github-event"],"repeatable":false,"required":false,"value_type":"Path"},{"choices":[],"default":false,"help":"Report policy findings without a nonzero policy exit.","names":["--advisory"],"repeatable":false,"required":false,"value_type":"bool"},{"choices":[],"default":false,"help":"Suppress output only when analysis completes successfully.","names":["--quiet"],"repeatable":false,"required":false,"value_type":"bool"},{"choices":["json","pretty-json","text"],"default":"text","help":"","names":["--format"],"repeatable":false,"required":false,"value_type":"OutputFormat"}],"path":["pull-request","commits"],"summary":"Require concise PR history or one complete explicitly numbered series."},{"arguments":[{"choices":[],"default":".","help":"","names":["root"],"repeatable":false,"required":false,"value_type":"Path"}],"command_id":"pull-request.documentation","options":[{"choices":[],"default":"","help":"Trusted base revision used for policy.","names":["--base"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":"HEAD","help":"Head revision to compare with the base.","names":["--head"],"repeatable":false,"required":false,"value_type":"str"},{"choices":["json","pretty-json","text"],"default":"text","help":"","names":["--format"],"repeatable":false,"required":false,"value_type":"OutputFormat"}],"path":["pull-request","documentation"],"summary":"Reject new README/docs content and enforce the trusted Markdown page budget."},{"arguments":[{"choices":[],"default":".","help":"","names":["root"],"repeatable":false,"required":false,"value_type":"Path"}],"command_id":"pull-request.review-policy","options":[{"choices":[],"default":"","help":"Exact trusted base commit SHA.","names":["--base"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":"","help":"Exact evaluated pull-request head commit SHA.","names":["--head"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":null,"help":"Strict, complete provider evidence JSON.","names":["--evidence"],"repeatable":false,"required":false,"value_type":"Path"},{"choices":[],"default":null,"help":"Trusted repository manifest.","names":["--manifest"],"repeatable":false,"required":false,"value_type":"Path"},{"choices":[],"default":"pr-size-excluded","help":"Git attribute that marks repository-specific excluded artifacts.","names":["--generated-attribute"],"repeatable":false,"required":false,"value_type":"str"}],"path":["pull-request","review-policy"],"summary":"Evaluate the configured review tier from exact Git and provider evidence."},{"arguments":[{"choices":[],"default":".","help":"","names":["root"],"repeatable":false,"required":false,"value_type":"Path"}],"command_id":"pull-request.size","options":[{"choices":[],"default":"","help":"Trusted base revision used for diff and policy.","names":["--base"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":"HEAD","help":"Head revision to compare with the base.","names":["--head"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":"pr-size-excluded","help":"Git attribute that marks repository-specific excluded artifacts.","names":["--generated-attribute"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":null,"help":"Write the complete canonical JSON report to this path.","names":["--report-path"],"repeatable":false,"required":false,"value_type":"Path"},{"choices":["json","pretty-json","text"],"default":"text","help":"","names":["--format"],"repeatable":false,"required":false,"value_type":"OutputFormat"}],"path":["pull-request","size"],"summary":"Calculate review-sized churn while excluding tests and declared generated artifacts."},{"arguments":[{"choices":[],"default":".","help":"","names":["root"],"repeatable":false,"required":false,"value_type":"Path"}],"command_id":"report","options":[{"choices":[],"default":".repo-standards/repository.toml","help":"","names":["--manifest"],"repeatable":false,"required":false,"value_type":"str"},{"choices":["json","pretty-json","text"],"default":"text","help":"","names":["--format"],"repeatable":false,"required":false,"value_type":"OutputFormat"},{"choices":[],"default":null,"help":"Deterministic YYYY-MM-DD","names":["--as-of"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":null,"help":"Activate a current rule ID for this run.","names":["--enable-rule"],"repeatable":false,"required":false,"value_type":"list"}],"path":["report"],"summary":"Analyze one manifest without blocking on completed policy findings."},{"arguments":[{"choices":[],"default":".","help":"","names":["root"],"repeatable":false,"required":false,"value_type":"Path"}],"command_id":"rest.discover","options":[],"path":["rest","discover"],"summary":"Discover committed OpenAPI entry candidates without importing application code."},{"arguments":[{"choices":[],"default":".","help":"","names":["root"],"repeatable":false,"required":false,"value_type":"Path"}],"command_id":"rest.doctor","options":[],"path":["rest","doctor"],"summary":"Return the installed capability handshake and inert repository detection."},{"arguments":[],"command_id":"rules","options":[{"choices":[],"default":null,"help":"Filter rule IDs by prefix.","names":["--rule-prefix"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":null,"help":"Filter by warning or error.","names":["--severity"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":"100","help":"Page size from 1 through 500.","names":["--limit"],"repeatable":false,"required":false,"value_type":"str"},{"choices":[],"default":null,"help":"Opaque cursor returned by the prior page.","names":["--cursor"],"repeatable":false,"required":false,"value_type":"str"}],"path":["rules"],"summary":"List installed policy rules as bounded deterministic JSON."},{"arguments":[{"choices":[],"default":"report","help":"","names":["document"],"repeatable":false,"required":false,"value_type":"str"}],"command_id":"schema","options":[],"path":["schema"],"summary":"Print repository report or catalog JSON Schema."}],"kind":"repo-standards.catalog","policies":[{"bindings":[{"classification":"objective-boundary","default_activation":"disabled","evidence_level":"verified","precedence":45,"rule_id":"repository/artifacts/bespoke-iac-verifiers","rule_version":5,"severity":"error"},{"classification":"judgment-heavy","default_activation":"disabled","evidence_level":"verified","precedence":46,"rule_id":"repository/artifacts/operational-script-tests","rule_version":2,"severity":"warning"},{"classification":"judgment-heavy","default_activation":"disabled","evidence_level":"verified","precedence":44,"rule_id":"repository/artifacts/schema-derived-config-examples","rule_version":3,"severity":"warning"},{"classification":"objective-boundary","default_activation":"disabled","evidence_level":"verified","precedence":40,"rule_id":"repository/artifacts/terraform-examples","rule_version":1,"severity":"error"},{"classification":"objective-boundary","default_activation":"disabled","evidence_level":"verified","precedence":47,"rule_id":"repository/artifacts/terraform-test-files","rule_version":1,"severity":"error"},{"classification":"objective-boundary","default_activation":"disabled","evidence_level":"verified","precedence":50,"rule_id":"repository/documentation/placement","rule_version":3,"severity":"error"}],"policy_id":"sarj","policy_version":18,"title":"Sarj repository standard"}],"product":{"distribution":"repo-standards","executables":["repo-standards"],"name":"repo-standards","product_id":"repo-standards","repository_url":"https://github.com/sarj-ai/repo-standards","summary":"Deterministic repository architecture, pull-request, and API contract analysis.","title":"Sarj Repo Standards","website_url":"https://repo-standards.sarj.ai/"},"provenance":{"content_digest":"f475a1dcb373d9ca5c01674ef5bad4b2b44e97228756cbbeda733b6b0b1c3e1b","distribution":"repo-standards","package_version":"6.2.2","repository_url":"https://github.com/sarj-ai/repo-standards"},"rules":[{"category_id":"repository","default_severity":"error","description":"Retired verifier basenames are prohibited everywhere. Other executable-script basenames beginning with verify require objective source, test, script, bin, or component ownership, including at the repository root. Operational placement remains prohibited except for conventional source inside an objectively owned tool or harness.","examples":[{"after":"explicit environment tfvars","before":"iac/scripts/verify-dev-apply-plan.jq","expected_severity":"error","id":"sarj-artifact-no-bespoke-iac-verifiers","language":"text","title":"Bespoke IaC verifier"}],"fix":"Delete the one-off verifier and every invocation. Express the invariant in Terraform, shared policy, or a provider or runtime contract; if executable verification is durable product code, place it in conventional source inside a declared or workspace-backed tool or harness. Relocating, renaming, or translating the same check, including to TypeScript, is not remediation.","kind":"rule","references":[],"rule_id":"repository/artifacts/bespoke-iac-verifiers","rule_version":5,"slug":"bespoke-iac-verifiers","source":{"path":"src/repo_standards/policy_sarj/policy.py","symbol":"repository/artifacts/bespoke-iac-verifiers"},"title":"Do not commit bespoke verifier scripts","topic_id":"artifacts","why":"Repository-specific verifier entrypoints create parallel validation paths that drift from shared policy, owned test suites, and deployment contracts. Durable executable verification belongs in an objectively owned tool or harness."},{"category_id":"repository","default_severity":"warning","description":"Executable script test/spec artifacts are prohibited in operational trees. Repository Standards owns this path boundary; semantic workflow analysis belongs in Code Standards.","examples":[{"after":"Terraform validation, precondition, or shared policy","before":"iac/bell/preview-contract.test.ts","expected_severity":"warning","id":"sarj-artifact-no-operational-script-tests","language":"text","title":"Operational source-coupled test"}],"fix":"Delete the operational test and every invocation. Moving or renaming it is not remediation; express the invariant in Terraform, shared policy, provider state, or runtime behavior.","kind":"rule","references":[],"rule_id":"repository/artifacts/operational-script-tests","rule_version":2,"slug":"operational-script-tests","source":{"path":"src/repo_standards/policy_sarj/policy.py","symbol":"repository/artifacts/operational-script-tests"},"title":"Keep script tests out of operational trees","topic_id":"artifacts","why":"Bespoke deployment tests create parallel contracts that drift from Terraform, providers, shared policy, and runtime behavior. Workflow contents are outside this exact-tree rule's evidence boundary."},{"category_id":"repository","default_severity":"warning","description":"Tracked backend.conf and env example, sample, template, or schema basenames are prohibited, case-insensitively.","examples":[{"after":"services/api/settings.py","before":"services/api/.env.local.example","expected_severity":"warning","id":"sarj-artifact-no-schema-derived-config-examples","language":"text","title":"Schema-derived configuration example"}],"fix":"Delete the duplicate artifact and generate developer-facing configuration from the authoritative Terraform, Zod, Pydantic, or deployment schema.","kind":"rule","references":[],"rule_id":"repository/artifacts/schema-derived-config-examples","rule_version":3,"slug":"schema-derived-config-examples","source":{"path":"src/repo_standards/policy_sarj/policy.py","symbol":"repository/artifacts/schema-derived-config-examples"},"title":"Reject hand-maintained configuration examples","topic_id":"artifacts","why":"Hand-maintained configuration examples duplicate Terraform, Zod, or Pydantic contracts and drift from the settings the application actually accepts."},{"category_id":"repository","default_severity":"error","description":"Tracked filenames ending in .tfvars.example, .tfvars.sample, or .tfvars.template are prohibited.","examples":[{"after":"deployments/alpha/terraform/variables.tf","before":"deployments/alpha/terraform/terraform.tfvars.example","expected_severity":"error","id":"sarj-artifact-no-example-tfvars","language":"text","title":"Terraform example variables"}],"fix":"Delete the example file and document validated inputs in variables.tf.","kind":"rule","references":[],"rule_id":"repository/artifacts/terraform-examples","rule_version":1,"slug":"terraform-examples","source":{"path":"src/repo_standards/policy_sarj/policy.py","symbol":"repository/artifacts/terraform-examples"},"title":"Do not commit example tfvars files","topic_id":"artifacts","why":"One typed variable interface prevents copied configuration from drifting."},{"category_id":"repository","default_severity":"error","description":"Tracked paths ending in .tftest.hcl or .tftest.json are prohibited, case-insensitively.","examples":[{"after":"shared rendered-plan validation","before":"iac/tests/routing.tftest.hcl","expected_severity":"error","id":"sarj-artifact-no-terraform-test-files","language":"text","title":"Terraform-native test file"}],"fix":"Delete the Terraform-native test file and move the durable assertion into shared rendered-plan, provider, or runtime validation.","kind":"rule","references":[],"rule_id":"repository/artifacts/terraform-test-files","rule_version":1,"slug":"terraform-test-files","source":{"path":"src/repo_standards/policy_sarj/policy.py","symbol":"repository/artifacts/terraform-test-files"},"title":"Do not commit native Terraform test files","topic_id":"artifacts","why":"A separate Terraform-native test harness duplicates setup and review conventions; one shared rendered-plan, provider, or runtime validation path keeps infrastructure checks discoverable and consistent."},{"category_id":"repository","default_severity":"error","description":"Tracked Markdown must have a durable documentation or tool-contract role.","examples":[{"after":"docs/deployment/alpha-terraform.md","before":"deployments/alpha/terraform/README.md","expected_severity":"error","id":"sarj-layout-markdown-placement","language":"text","title":"Markdown placement"}],"fix":"Move durable guidance into an approved docs root or delete transient notes.","kind":"rule","references":[],"rule_id":"repository/documentation/placement","rule_version":3,"slug":"documentation-placement","source":{"path":"src/repo_standards/policy_sarj/policy.py","symbol":"repository/documentation/placement"},"title":"Keep Markdown in durable owned locations","topic_id":"documentation","why":"Owned documentation stays discoverable instead of becoming repository debris."}],"safety":{"inspection_input":"exact Git tree","mutation":false,"network_default":false,"network_mode":"disabled","repository_code_execution":false},"schemas":[{"cli_selector":"report","document":{"$id":"urn:repo-standards:schema:report:v3","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"oneOf":[{"properties":{"completion":{"const":"complete"},"conclusion":{"const":"passed"},"diagnostics":{"maxItems":0},"execution_issues":{"maxItems":0}},"required":["completion","conclusion","diagnostics","execution_issues"]},{"properties":{"completion":{"const":"complete"},"conclusion":{"const":"findings"},"diagnostics":{"minItems":1},"execution_issues":{"maxItems":0}},"required":["completion","conclusion","diagnostics","execution_issues"]},{"properties":{"completion":{"const":"incomplete"},"conclusion":{"const":"inconclusive"},"diagnostics":{"maxItems":0},"execution_issues":{"minItems":1}},"required":["completion","conclusion","diagnostics","execution_issues"]}],"properties":{"baseline":{"type":"object"},"command":{"enum":["check","report"]},"completion":{"enum":["complete","incomplete"]},"conclusion":{"enum":["passed","findings","inconclusive"]},"diagnostics":{"items":{"additionalProperties":false,"properties":{"component_id":{"type":"string"},"disposition":{"enum":["active","excepted"]},"evidence_level":{"enum":["verified","declared","external","unknown"]},"exception":{"additionalProperties":false,"properties":{"created_on":{"format":"date","type":"string"},"expires_on":{"format":"date","type":"string"},"issue":{"type":"string"},"owner":{"type":"string"},"reason":{"type":"string"}},"required":["owner","issue","reason","created_on","expires_on"],"type":["object","null"]},"expected":{},"finding_key":{"pattern":"^[0-9a-f]{64}$","type":"string"},"fingerprint":{"pattern":"^[0-9a-f]{64}$","type":"string"},"location":{"additionalProperties":false,"properties":{"column":{"minimum":1,"type":"integer"},"end_column":{"minimum":1,"type":"integer"},"end_line":{"minimum":1,"type":"integer"},"line":{"minimum":1,"type":"integer"},"manifest_anchor":{"type":"string"},"path":{"type":"string"},"pointer":{"type":"string"}},"required":["path","manifest_anchor"],"type":"object"},"manifest_anchor":{"type":"string"},"message":{"type":"string"},"observed":{},"path":{"type":"string"},"prerequisites":{"items":{"type":"string"},"type":"array"},"related_locations":{"items":{"additionalProperties":false,"properties":{"location":{"additionalProperties":false,"properties":{"column":{"minimum":1,"type":"integer"},"end_column":{"minimum":1,"type":"integer"},"end_line":{"minimum":1,"type":"integer"},"line":{"minimum":1,"type":"integer"},"path":{"type":"string"},"pointer":{"type":"string"}},"required":["path"],"type":"object"},"message":{"type":"string"},"relationship":{"type":"string"}},"required":["location","message","relationship"],"type":"object"},"type":"array"},"remediation":{"additionalProperties":false,"properties":{"steps":{"items":{"type":"string"},"type":"array"},"summary":{"type":"string"},"validation":{"items":{"type":"string"},"type":"array"}},"required":["summary","steps","validation"],"type":"object"},"rule_id":{"type":"string"},"rule_version":{"minimum":1,"type":"integer"},"severity":{"enum":["warning","error"]},"subject_kind":{"type":"string"}},"required":["rule_id","rule_version","severity","evidence_level","component_id","subject_kind","observed","expected","message","path","manifest_anchor","location","remediation","prerequisites","disposition","exception","fingerprint"],"type":"object"},"type":"array"},"execution_issues":{"items":{"additionalProperties":false,"properties":{"code":{"pattern":"^[a-z][a-z0-9.-]+$","type":"string"},"message":{"type":"string"},"phase":{"type":"string"},"remediation":{"items":{"type":"string"},"type":"array"},"retryable":{"type":"boolean"}},"required":["code","phase","message","retryable","remediation"],"type":"object"},"type":"array"},"input_provenance":{"type":"object"},"mode":{"enum":["report","ratchet","strict"]},"policy":{"additionalProperties":false,"properties":{"id":{"type":"string"},"version":{"type":"integer"}},"required":["id","version"],"type":"object"},"provenance":{"type":"object"},"ratchet":{"type":"object"},"ratchet_comparison":{"type":"object"},"repository_id":{"type":"string"},"schema_version":{"const":3},"scope_digest":{"pattern":"^[0-9a-f]{64}$","type":"string"},"summary":{"additionalProperties":{"type":"integer"},"type":"object"},"tool":{"additionalProperties":false,"properties":{"name":{"const":"repo-standards"},"version":{"type":"string"}},"required":["name","version"],"type":"object"}},"required":["schema_version","completion","conclusion","mode","repository_id","policy","scope_digest","summary","execution_issues","diagnostics","tool","command","provenance","baseline","ratchet"],"type":"object"},"media_type":"application/schema+json","schema_id":"report","title":"Repository analysis report"},{"cli_selector":"catalog","document":{"$defs":{"CapabilityDescriptor":{"additionalProperties":false,"properties":{"capability_id":{"title":"Capability Id","type":"string"},"command_ids":{"items":{"type":"string"},"title":"Command Ids","type":"array"},"input_kinds":{"items":{"type":"string"},"title":"Input Kinds","type":"array"},"status":{"enum":["preview","beta","stable"],"title":"Status","type":"string"},"summary":{"title":"Summary","type":"string"},"title":{"title":"Title","type":"string"}},"required":["capability_id","title","summary","status","command_ids","input_kinds"],"title":"CapabilityDescriptor","type":"object"},"CategoryDescriptor":{"additionalProperties":false,"properties":{"category_id":{"title":"Category Id","type":"string"},"label":{"title":"Label","type":"string"},"order":{"title":"Order","type":"integer"},"topics":{"items":{"$ref":"#/$defs/TopicDescriptor"},"title":"Topics","type":"array"}},"required":["category_id","label","order","topics"],"title":"CategoryDescriptor","type":"object"},"CommandDescriptor":{"additionalProperties":false,"properties":{"arguments":{"items":{"$ref":"#/$defs/ParameterDescriptor"},"title":"Arguments","type":"array"},"command_id":{"title":"Command Id","type":"string"},"options":{"items":{"$ref":"#/$defs/ParameterDescriptor"},"title":"Options","type":"array"},"path":{"items":{"type":"string"},"title":"Path","type":"array"},"summary":{"title":"Summary","type":"string"}},"required":["command_id","path","summary","options","arguments"],"title":"CommandDescriptor","type":"object"},"ExampleDescriptor":{"additionalProperties":false,"properties":{"after":{"minLength":1,"title":"After","type":"string"},"before":{"minLength":1,"title":"Before","type":"string"},"expected_severity":{"enum":["warning","error"],"title":"Expected Severity","type":"string"},"id":{"minLength":1,"title":"Id","type":"string"},"language":{"enum":["json","text","toml","yaml"],"title":"Language","type":"string"},"title":{"maxLength":56,"minLength":1,"title":"Title","type":"string"}},"required":["id","title","language","before","after","expected_severity"],"title":"ExampleDescriptor","type":"object"},"JSONScalar":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"JSONValue":{"anyOf":[{"$ref":"#/$defs/JSONScalar"},{"items":{"$ref":"#/$defs/JSONValue"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/JSONValue"},"type":"object"}]},"ParameterDescriptor":{"additionalProperties":false,"properties":{"choices":{"items":{"type":"string"},"title":"Choices","type":"array"},"default":{"$ref":"#/$defs/JSONValue"},"help":{"title":"Help","type":"string"},"names":{"items":{"type":"string"},"title":"Names","type":"array"},"repeatable":{"title":"Repeatable","type":"boolean"},"required":{"title":"Required","type":"boolean"},"value_type":{"title":"Value Type","type":"string"}},"required":["names","value_type","required","default","choices","help","repeatable"],"title":"ParameterDescriptor","type":"object"},"PolicyDescriptor":{"additionalProperties":false,"properties":{"bindings":{"items":{"$ref":"#/$defs/PolicyRuleBinding"},"title":"Bindings","type":"array"},"policy_id":{"title":"Policy Id","type":"string"},"policy_version":{"exclusiveMinimum":0,"title":"Policy Version","type":"integer"},"title":{"title":"Title","type":"string"}},"required":["policy_id","policy_version","title","bindings"],"title":"PolicyDescriptor","type":"object"},"PolicyRuleBinding":{"additionalProperties":false,"properties":{"classification":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Classification"},"default_activation":{"const":"disabled","default":"disabled","title":"Default Activation","type":"string"},"evidence_level":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Evidence Level"},"precedence":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Precedence"},"rule_id":{"title":"Rule Id","type":"string"},"rule_version":{"exclusiveMinimum":0,"title":"Rule Version","type":"integer"},"severity":{"enum":["warning","error"],"title":"Severity","type":"string"}},"required":["rule_id","rule_version","severity"],"title":"PolicyRuleBinding","type":"object"},"ProductDescriptor":{"additionalProperties":false,"properties":{"distribution":{"title":"Distribution","type":"string"},"executables":{"items":{"type":"string"},"title":"Executables","type":"array"},"name":{"title":"Name","type":"string"},"product_id":{"const":"repo-standards","title":"Product Id","type":"string"},"repository_url":{"title":"Repository Url","type":"string"},"summary":{"title":"Summary","type":"string"},"title":{"title":"Title","type":"string"},"website_url":{"title":"Website Url","type":"string"}},"required":["product_id","name","title","summary","distribution","executables","repository_url","website_url"],"title":"ProductDescriptor","type":"object"},"ProvenanceDescriptor":{"additionalProperties":false,"properties":{"content_digest":{"title":"Content Digest","type":"string"},"distribution":{"title":"Distribution","type":"string"},"package_version":{"title":"Package Version","type":"string"},"repository_url":{"title":"Repository Url","type":"string"}},"required":["distribution","package_version","repository_url","content_digest"],"title":"ProvenanceDescriptor","type":"object"},"RuleDescriptor":{"additionalProperties":false,"properties":{"category_id":{"title":"Category Id","type":"string"},"default_severity":{"enum":["warning","error"],"title":"Default Severity","type":"string"},"description":{"minLength":1,"title":"Description","type":"string"},"examples":{"items":{"$ref":"#/$defs/ExampleDescriptor"},"minItems":1,"title":"Examples","type":"array"},"fix":{"minLength":1,"title":"Fix","type":"string"},"kind":{"const":"rule","default":"rule","title":"Kind","type":"string"},"references":{"items":{"pattern":"^https://","type":"string"},"title":"References","type":"array"},"rule_id":{"pattern":"^[a-z0-9][a-z0-9-]*(/[a-z0-9][a-z0-9-]*){2,}$","title":"Rule Id","type":"string"},"rule_version":{"exclusiveMinimum":0,"title":"Rule Version","type":"integer"},"slug":{"maxLength":64,"minLength":3,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","title":"Slug","type":"string"},"source":{"$ref":"#/$defs/SourcePointer"},"title":{"maxLength":72,"minLength":1,"title":"Title","type":"string"},"topic_id":{"title":"Topic Id","type":"string"},"why":{"minLength":1,"title":"Why","type":"string"}},"required":["rule_id","slug","rule_version","title","category_id","topic_id","default_severity","description","why","fix","references","examples","source"],"title":"RuleDescriptor","type":"object"},"SafetyDescriptor":{"additionalProperties":false,"properties":{"inspection_input":{"title":"Inspection Input","type":"string"},"mutation":{"title":"Mutation","type":"boolean"},"network_default":{"title":"Network Default","type":"boolean"},"network_mode":{"title":"Network Mode","type":"string"},"repository_code_execution":{"title":"Repository Code Execution","type":"boolean"}},"required":["mutation","repository_code_execution","network_default","network_mode","inspection_input"],"title":"SafetyDescriptor","type":"object"},"SchemaDescriptor":{"additionalProperties":false,"properties":{"cli_selector":{"title":"Cli Selector","type":"string"},"document":{"$ref":"#/$defs/JSONValue"},"media_type":{"const":"application/schema+json","title":"Media Type","type":"string"},"schema_id":{"title":"Schema Id","type":"string"},"title":{"title":"Title","type":"string"}},"required":["schema_id","title","media_type","cli_selector","document"],"title":"SchemaDescriptor","type":"object"},"SourcePointer":{"additionalProperties":false,"properties":{"path":{"minLength":1,"pattern":"^(?!/|~)(?!.*(?:^|/)\\.\\.(?:/|$)).+$","title":"Path","type":"string"},"symbol":{"minLength":1,"title":"Symbol","type":"string"}},"required":["path","symbol"],"title":"SourcePointer","type":"object"},"TopicDescriptor":{"additionalProperties":false,"properties":{"label":{"title":"Label","type":"string"},"order":{"title":"Order","type":"integer"},"topic_id":{"title":"Topic Id","type":"string"}},"required":["topic_id","label","order"],"title":"TopicDescriptor","type":"object"}},"$id":"https://repo-standards.sarj.ai/schema/catalog.schema.json","additionalProperties":false,"properties":{"capabilities":{"items":{"$ref":"#/$defs/CapabilityDescriptor"},"title":"Capabilities","type":"array"},"catalog_version":{"title":"Catalog Version","type":"string"},"categories":{"items":{"$ref":"#/$defs/CategoryDescriptor"},"title":"Categories","type":"array"},"commands":{"items":{"$ref":"#/$defs/CommandDescriptor"},"title":"Commands","type":"array"},"kind":{"const":"repo-standards.catalog","default":"repo-standards.catalog","title":"Kind","type":"string"},"policies":{"items":{"$ref":"#/$defs/PolicyDescriptor"},"title":"Policies","type":"array"},"product":{"$ref":"#/$defs/ProductDescriptor"},"provenance":{"$ref":"#/$defs/ProvenanceDescriptor"},"rules":{"items":{"$ref":"#/$defs/RuleDescriptor"},"title":"Rules","type":"array"},"safety":{"$ref":"#/$defs/SafetyDescriptor"},"schemas":{"items":{"$ref":"#/$defs/SchemaDescriptor"},"title":"Schemas","type":"array"}},"required":["catalog_version","product","provenance","safety","capabilities","categories","policies","rules","commands","schemas"],"title":"Catalog","type":"object"},"media_type":"application/schema+json","schema_id":"catalog","title":"Repo Standards public catalog"}]}
