Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Document Type Hierarchical Taxonomy Transition

Problem Statement

The current governance model suffers from Semantic Overloading. The analysis type is tasked with two mutually exclusive roles:

  1. Formal Evidence: High-rigor artifacts used for ADR elaboration (requiring id, status, and specific lifecycle tracking).

  2. Domain Research: Flexible technical deep-dives (requiring only identity and discovery blocks).

By forcing “Domain Research” into the guide type to bypass validation, the system introduces Metadata Decay—where the type field no longer represents the actual nature of the content, rendering the type registry useless for automated discovery and indexing.

The root cause is a Flat Taxonomy. The system implements a 1:1 mapping between type and validation_rules. Because the system lacks a “category” or “namespace” layer, any two document types that share the word “analysis” but have different rigor requirements must be treated as entirely unrelated entities or forced into an incorrect category.

Validation Gap Analysis

Subjective/Emotional ClaimFalsifiable Metric / RequirementEvidence Source / Validation Method
“Agents always struggle with this”↑\uparrow Rate of unknown_type or missing_field errors during check_frontmatter runs in ai_agents/.check_frontmatter.py logs / Git commit history of frontmatter fixes.
“Analysis is only used for ADR”%\% of type: analysis files located in architecture/evidence/analyses/ vs elsewhere.grep -r "type: analysis" .
“Describes it as ‘guide’ because...”↑\uparrow Correlation between “Analysis” in title and type: guide in frontmatter.Cross-reference of file titles vs options.type.

Approach Evaluation

Assumption Interrogation

AssumptionStatusFalsification Evidence
LLMs intuitively handle dot-notation (type: research.analysis)PlausibleAgent consistently fails to produce the correct string despite prompt instructions.
Migration to a new taxonomy is a one-time costVerifiedA regex-based migration script can update all .md files in a single pass.
The proposed [architecture, research] split is exhaustiveUnsupportedDiscovery of a third top-level category (e.g., operational, tutorial) that doesn’t fit either.
check_frontmatter.py is the only consumer of options.typePlausibleDiscovery of other scripts (e.g., indexers, site builders) that expect a flat string.

WRC Calculation & P-Score Audit

Proposed Methodology: Hierarchical Taxonomy via Dot-Notation (type: category.subtype)

P-Score Audit Summary:

WRC Calculation:

Methodology Comparison

MethodologyDescription (WRC)ProsConsBest ForSource
Flat NamespaceDistinct types: tech_analysis, arch_analysis (WRC 0.72)Zero script changes.Poor scalability; semantic clutter.Small sets of types.Community
Multi-Fieldtype + subtype fields (WRC 0.81)Clean data structure.High migration cost; breaks existing YAML parsers.Formal databases.Enterprise
Hierarchical (Dot)type: cat.sub (WRC 0.89)Intuitive; scalable; single-field.Requires minor script update.AI-native docs.Enterprise
Type InheritanceLogic-based inheritance in JSON (WRC 0.84)Most powerful.Over-engineered for current scale (SVA C4).Large-scale CMS.Academic

Recommendation: Hierarchical Dot-Notation. It provides the best balance between structural rigor and implementation simplicity, fitting the SVA “Smallest Viable Architecture” profile.

Key Insights

Viability Classification: Production-ready. The solution is vendor-neutral, Git-native, and the implementation risk is negligible (localized to one Python script). It achieves a WRC of 0.89.

Architectural Complexity Audit: No SVA violations detected. The refactoring is proportional to the problem.

Actionable Strategies

1. The Taxonomy Shift (WRC 0.89) [E: 0.8 / A: 0.9 / P: 0.95]

2. The Atomic Migration (WRC 0.92) [E: 0.9 / A: 0.9 / P: 0.9]

Pitfalls and Hidden Technical Debt

Security Implications

None. The change affects metadata and does not alter the execution logic of the system.

Immediate Next Step

Update .vadocs/conf.json to reflect the new hierarchical types and modify tools/scripts/check_frontmatter.py to support the split('.') logic for type resolution.

References