Skip to content

v0.1.47

Choose a tag to compare

@github-actions github-actions released this 12 Jul 22:06

Added

  • YAML language parser — parses .yaml/.yml files with multi-doc support (---). Each document becomes a Resource concept with raw parsed dict stored in body_extra.yaml_doc for downstream classification. PyYAML-based — no tree-sitter dependency.
  • Domain classification engine — new Layer 3 architecture (okf/domains/engine.py) that re-classifies YAML concepts using data-driven rule files. Rules are pure YAML data — no Python code required for new domains.
  • Crossplane domain rules — built-in okf/domains/rules/crossplane.yaml with 8 rules: XRD, Composition V1/V2, ProviderConfig, Provider, Configuration, catch-all ManagedResource. V1 vs V2 Compositions are distinguished via has_key and spec.mode matching.
  • has_key match primitive — presence-check operator for rule matching (has_key: spec.resources). Used for V1 legacy style detection.
  • okf domains list — lists all discoverable domain rule sets (built-in + project-local).
  • okf domains validate <file> — validates a rule file against the schema (required fields, valid operators, extract/link structure).
  • Rule audit loggingclassify() logs per-rule match counts so users can verify their rules fired correctly.
  • Crossplane V2 function name extractionspec.pipeline[*].functionRef.name is extracted into concept fields, surfacing function names like function-kro.
  • --domains CLI flagokf generate --domains crossplane loads built-in domain rules.
  • --domain-rules CLI flagokf generate --domain-rules ./my-rules.yaml loads custom rule files.

Changed

  • Language count — 17 → 18 (added YAML). Docs updated across README, docs/index.html, docs/index.md, languages-and-manifests.md.
  • Crossplane rules restructured — three Composition rules (V2 pipeline, V1 resources, generic fallback) with distinct tags instead of a single generic Composition rule.
  • generator.pyscan_codebase() accepts optional domain_rules param; domain classification runs after link_all().

Fixed

  • Catch-all guarddefault: true rules now support require_keys to prevent misclassifying non-k8s YAML (CI configs, Helm values) as ManagedResource.
  • Linker hashability — Concept set usage replaced with concept_id list to avoid TypeError: unhashable type.