//! # CVKG Agentic Development Guidelines (v1.2)
//!
//! All AI agents contributing to this crate MUST follow ALL seven rules:
//!
//! ── Karpathy Guidelines (1–4) ────────────────────────────────────────────
//! 1. THINK FIRST     -- State assumptions. Surface ambiguity. Push back on complexity.
//! 2. STAY SIMPLE     -- Minimum code. No speculative features. No unasked-for abstractions.
//! 3. BE SURGICAL     -- Touch only what's required. Own your orphans. Don't improve neighbors.
//! 4. VERIFY GOALS    -- Turn tasks into checkable criteria. Loop until they pass. Never commit broken.
//!
//! ── CVKG Extended Protocols (5–7) ────────────────────────────────────────
//! 5. TRIPLE-PASS     -- Read the target, its surrounding context, and its full call graph
//!                      at least THREE TIMES before making any edit or revision.
//! 6. COMMENT ALL     -- Every major pub fn, unsafe block, and non-trivial algorithm in
//!                      every .rs/.ts/.h/.wgsl file MUST have a descriptive doc comment.
//!                      Comments describe WHY and WHAT CONTRACT, not HOW mechanically.
//! 7. MONITOR LOOPS   -- Check every tool call / command for progress every 30 seconds.
//!                      After 3 consecutive identical failures, stop, write BLOCKED.md,
//!                      and move to unblocked work. Never silently accept a broken state.
//!
//! Sources:
//!   Karpathy: https://github.com/multica-ai/andrej-karpathy-skills
//!   CVKG Extended: Section 2 of the CVKG Design Specification

//! CVKG Accessibility — tree management, focus, and screen reader integration.
//!
//! # Why this exists
//! Finding #10 from the crosscrate audit and Finding #7 (Native UI Parity):
//! cvkg-vdom had ARIA properties and some accesskit integration but no unified
//! architecture for accessibility. This crate provides:
//! - `AccessibilityTree` — platform-facing tree derived from the VDOM
//! - `FocusManager` — keyboard navigation model (tab order, focus ring)
//! - `ScreenReaderBridge` — platform abstraction for announcements
//! - `SemanticRole` — a richer role enum than the string roles in VDOM

pub mod bridge;
pub mod focus;
pub mod tree;

pub use bridge::{Announcement, AnnouncementPriority, NullScreenReaderBridge, ScreenReaderBridge};
pub use focus::{FocusDirection, FocusManager, FocusResult};
pub use tree::{AccessNode, AccessibilityTree, SemanticRole};
