UML — folio-assistant-core/qa

Generated by cat-harness-tools/scripts/gen-uml-overview.ts — do not edit. The qa sub-graph of folio-assistant-core (folio-assistant-core/test/results), with every attribute read from its node schema.

Sources (same model): PlantUML · Mermaid · Graphviz DOT

Layout
UML class diagram of folio-assistant-core/qa: one package per named sub-graph, one class per node schema, with its data fields. Portrait layout.
UML class diagram of folio-assistant-core/qa: one package per named sub-graph, one class per node schema, with its data fields. Landscape layout.

The interactive view lays this diagram out in your browser with Graphviz, and needs JavaScript. Without it, pick Portrait or Landscape, or read the DOT source.

sub-graphdirectorygraph typologiesnode schemanodescohesioninout
folio-assistant-core/qafolio-assistant-core/test/resultsqaKgQaReportSchema; KgQaManifestSchema; BlockQaReport; ts: QaWitness; ts: QaResult; QaIndexSchemanot measured

Nodes, cohesion, in and out are the detangler’s pinned measurements for the same directory (bun run cat kg:detangle; skill graph-detanglement). Not measured means the detangler does not scan that directory, not that it has no edges.

Sub-graphs

The same model, drawn by Mermaid

Kept so the page renders even where the PlantUML image is missing, and because Mermaid nodes carry the CSS class that colours them from uml.css.

classDiagram
  direction TB
  namespace folio_assistant_core__qa {
    class folio_assistant_core_qa_kg_qa_v1_Flag["Flag"] {
      <<json: KgQaReportSchema>>
      id [1] string
      category [0..1] enum(8)
      severity [1] critical | major | minor
      weight [1] blocking | suggestion | praise
      where [1] string
      evidence [0..1] string
      detail [0..1] string
      status [0..1] open | resolved | overridden
      resolution [0..1] object
    }
    class folio_assistant_core_qa_kg_qa_v1_Finding["Finding"] {
      <<json: KgQaReportSchema>>
      id [1] string
      category [0..1] enum(8)
      severity [1] critical | major | minor
      weight [1] blocking | suggestion | praise
      where [1] string
      evidence [0..1] string
      detail [0..1] string
      status [0..1] open | resolved | overridden
      resolution [0..1] object
    }
    class folio_assistant_core_qa_kg_qa_v1_Adversarial_review["Adversarial_review"] {
      <<json: KgQaReportSchema>>
      reviewer [1] object
      author_sessions [0..*] string[]
      skill_hash [1] string
      at [1] string
      coverage [1] object
      result [1] pass | fail | unknown
      flags [0..*] Flag[]
      findings [0..*] Finding[]
    }
    class folio_assistant_core_qa_kg_qa_v1_kg_qa_v1["kg-qa/v1"] {
      <<json: KgQaReportSchema>>
      $schema [1] 'kg-qa/v1'
      subject [1] object
      source_hash [1] string | null
      criteria [1] map~object~
      totals [1] map~number~
      pair_attestations [0..1] any
      voice_reviews [0..1] any
      adversarial_reviews [0..*] Adversarial_review[]
    }
    class folio_assistant_core_qa_kg_qa_manifest_v1_kg_qa_manifest_v1["kg-qa-manifest/v1"] {
      <<json: KgQaManifestSchema>>
      $schema [1] 'kg-qa-manifest/v1'
      auditor [1] object
    }
    class folio_assistant_core_qa_block_qa_v1_block_qa_v1["block-qa/v1"] {
      <<json: BlockQaReport>>
      $schema [1] 'block-qa/v1'
      label [1] string
      kind [1] string
      paths [1] object
      source_hashes [1] object
      criteria [1] map~object[]~
      updated_at [1] string
    }
    class folio_assistant_core_qa_qa_witness_v1["qa-witness/v1"] {
      <<ts: QaWitness>>
      kind [1] 'script' | 'agent' | 'human'
      id [1] string
      version [0..1] string
      at [0..1] string
      sha [0..1] string
      scriptHash [0..1] string
      scriptCommitSha [0..1] string
      depsHash [0..1] string
      model [0..1] string
      session [0..1] string
      skill [0..1] string
      method [0..1] string
      freshness [1] QaFreshness
      changed [0..1] string[]
      notCompared [0..1] string[]
      notes [0..1] string
    }
    class folio_assistant_core_qa_qa_results_v1["qa-results/v1"] {
      <<ts: QaResult>>
      $schema [1] 'qa-results/v1'
      producer [1]  /** Repo-relative path to the script. */ script: string; /** 12-char SHA-256 prefix of that script's source, as `script-qa` writes. */ script_hash: string; 
      subject [1]  kind: string; id: string 
      families [1] Record~string, QaResultFamily~
      total [1] number
    }
    class folio_assistant_core_qa_folio_qa_index_v1_folio_qa_index_v1["folio-qa-index/v1"] {
      <<json: QaIndexSchema>>
      $schema [1] 'folio-qa-index/v1'
      page [1] string
      corpus [0..1] present | absent
      badges [1] map~object~
      unswept [0..*] string[]
    }
  }
  folio_assistant_core_qa_kg_qa_v1_Adversarial_review *-- "0..*" folio_assistant_core_qa_kg_qa_v1_Flag : flags
  folio_assistant_core_qa_kg_qa_v1_Adversarial_review *-- "0..*" folio_assistant_core_qa_kg_qa_v1_Finding : findings
  folio_assistant_core_qa_kg_qa_v1_kg_qa_v1 *-- "0..*" folio_assistant_core_qa_kg_qa_v1_Adversarial_review : adversarial_reviews
  cssClass "folio_assistant_core_qa_kg_qa_v1_Flag" fa_uml_kind_qa
  cssClass "folio_assistant_core_qa_kg_qa_v1_Finding" fa_uml_kind_qa
  cssClass "folio_assistant_core_qa_kg_qa_v1_Adversarial_review" fa_uml_kind_qa
  cssClass "folio_assistant_core_qa_kg_qa_v1_kg_qa_v1" fa_uml_kind_qa
  cssClass "folio_assistant_core_qa_kg_qa_manifest_v1_kg_qa_manifest_v1" fa_uml_kind_qa
  cssClass "folio_assistant_core_qa_block_qa_v1_block_qa_v1" fa_uml_kind_qa
  cssClass "folio_assistant_core_qa_qa_witness_v1" fa_uml_kind_qa
  cssClass "folio_assistant_core_qa_qa_results_v1" fa_uml_kind_qa
  cssClass "folio_assistant_core_qa_folio_qa_index_v1_folio_qa_index_v1" fa_uml_kind_qa

folio-assistant — code under the Apache License 2.0, documentation under CC BY 3.0. Generated schema and API references are rebuilt from source on every push to main.

deployed b08c961 · 2026-10-23T23:11:09Z