UML — cat-harness/qa
Generated by cat-harness-tools/scripts/gen-uml-overview.ts — do not edit. The qa sub-graph of cat-harness (cat-harness/test/results), with every attribute read from its node schema.
Sources (same model): PlantUML · Mermaid · Graphviz DOT
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-graph | directory | graph typologies | node schema | nodes | cohesion | in | out |
|---|---|---|---|---|---|---|---|
cat-harness/qa | cat-harness/test/results | qa | KgQaReportSchema; KgQaManifestSchema; BlockQaReport; TestRunSchema; ts: QaWitness; ts: QaResult; QaScriptKind; ts: TranslationBlockQaReport; QaIndexSchema; QaTranslationPagesSchema; ts: DetangleSidecar; ts: LsiSidecar; ToolRunRecordSchema; ViewerNavQaSchema | not 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 cat_harness__qa {
class cat_harness_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 cat_harness_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 cat_harness_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 cat_harness_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 cat_harness_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 cat_harness_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 cat_harness_qa_folio_test_run_v1_Case["Case"] {
<<json: TestRunSchema>>
input [1] any
output [1] any
}
class cat_harness_qa_folio_test_run_v1_folio_test_run_v1["folio-test-run/v1"] {
<<json: TestRunSchema>>
$schema [1] 'folio-test-run/v1'
skill [1] string
subject [1] string
data [1] object
process [1] object
outcome [1] map~any~
cases [0..*] Case[]
requirements [0..*] string[]
updated_at [1] string
plan [0..1] object
sut [0..1] object
}
class cat_harness_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 cat_harness_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 cat_harness_qa_qa_script_v1_qa_script_v1["qa-script/v1"] {
<<json: QaScriptKind>>
$schema [1] 'qa-script/v1'
criterion_id [1] string
source_file [1] string
script_hash [1] string
script_commit_sha [1] string
extra_inputs [0..*] string[]
deps_hash [0..1] string
last_run_at [1] string
last_run_sha [1] string
engine_version [0..1] string
}
class cat_harness_qa_translation_qa_v1["translation-qa/v1"] {
<<ts: TranslationBlockQaReport>>
$schema [1] 'translation-qa/v1'
label [1] string
block [0..1] string
locale [1] string
paths [1] md: string; ts?: string
po [1] string
source_hashes [1] TranslationFieldHash
criteria [1] Record~string, TranslationQaEntry[]~
updated_at [1] string
}
class cat_harness_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[]
}
class cat_harness_qa_folio_qa_translation_pages_v1_folio_qa_translation_pages_v1["folio-qa-translation-pages/v1"] {
<<json: QaTranslationPagesSchema>>
$schema [1] 'folio-qa-translation-pages/v1'
corpus [1] present | absent
pages [0..*] string[]
}
class cat_harness_qa_folio_detangle_sidecar_v1["folio-detangle-sidecar/v1"] {
<<ts: DetangleSidecar>>
$schema [1] 'folio-detangle-sidecar/v1'
group [1] string
size [1] number
internal [1] number
inbound [1] number
outbound [1] number
cohesion [1] number
enforcedBoundary [1] number
recordedBoundary [1] number
proseMentions [1] number
wrongDirection [1] number
undeterminedDirection [1] number
}
class cat_harness_qa_folio_lsi_index_v1["folio-lsi-index/v1"] {
<<ts: LsiSidecar>>
$schema [1] 'folio-lsi-index/v1'
method [1] string
instance [1] string
graph [1] string
path [1] string
docs [1] string[] | null
fingerprint [1] string
options [1] LsiOptions
units [1] number
terms [1] number
k [1] number
retained [1] number
dimensions [1] Array~ dim: number; sigma: number; positive: string[]; negative: string[] ~
findings [1] nearDuplicates: Array~ a: string; b: string; cosine: number ~; narrowDimensions: Array~ dim: number; units: string[] ~;
neighbours [1] Record~string, Array~[string, number]~~
}
class cat_harness_qa_folio_tool_run_v1_folio_tool_run_v1["folio-tool-run/v1"] {
<<json: ToolRunRecordSchema>>
$schema [1] 'folio-tool-run/v1'
tool [1] string
target [1] string
outcome [1] succeeded | failed
inputFingerprint [1] string
detail [0..1] string
}
class cat_harness_qa_viewer_nav_qa_v1_Page["Page"] {
<<json: ViewerNavQaSchema>>
path [1] string
source [1] string
verdict [1] railed | declined | linked | missing
reason [0..1] string
flags [0..*] enum(8)[]
}
class cat_harness_qa_viewer_nav_qa_v1_viewer_nav_qa_v1["viewer-nav-qa/v1"] {
<<json: ViewerNavQaSchema>>
$schema [1] 'viewer-nav-qa/v1'
root [1] string
totals [1] object
pages [0..*] Page[]
}
}
cat_harness_qa_kg_qa_v1_Adversarial_review *-- "0..*" cat_harness_qa_kg_qa_v1_Flag : flags
cat_harness_qa_kg_qa_v1_Adversarial_review *-- "0..*" cat_harness_qa_kg_qa_v1_Finding : findings
cat_harness_qa_kg_qa_v1_kg_qa_v1 *-- "0..*" cat_harness_qa_kg_qa_v1_Adversarial_review : adversarial_reviews
cat_harness_qa_folio_test_run_v1_folio_test_run_v1 *-- "0..*" cat_harness_qa_folio_test_run_v1_Case : cases
cat_harness_qa_viewer_nav_qa_v1_viewer_nav_qa_v1 *-- "0..*" cat_harness_qa_viewer_nav_qa_v1_Page : pages
cssClass "cat_harness_qa_kg_qa_v1_Flag" fa_uml_kind_qa
cssClass "cat_harness_qa_kg_qa_v1_Finding" fa_uml_kind_qa
cssClass "cat_harness_qa_kg_qa_v1_Adversarial_review" fa_uml_kind_qa
cssClass "cat_harness_qa_kg_qa_v1_kg_qa_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_kg_qa_manifest_v1_kg_qa_manifest_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_block_qa_v1_block_qa_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_folio_test_run_v1_Case" fa_uml_kind_qa
cssClass "cat_harness_qa_folio_test_run_v1_folio_test_run_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_qa_witness_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_qa_results_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_qa_script_v1_qa_script_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_translation_qa_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_folio_qa_index_v1_folio_qa_index_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_folio_qa_translation_pages_v1_folio_qa_translation_pages_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_folio_detangle_sidecar_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_folio_lsi_index_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_folio_tool_run_v1_folio_tool_run_v1" fa_uml_kind_qa
cssClass "cat_harness_qa_viewer_nav_qa_v1_Page" fa_uml_kind_qa
cssClass "cat_harness_qa_viewer_nav_qa_v1_viewer_nav_qa_v1" fa_uml_kind_qa