← ClaudeAtlas

noyalib-debugging-playbooklisted

Symptom-driven triage for noyalib: failing tests, a no_std build that broke despite green CI, surprising parse results, wrong spans, unexpected budget errors, Value-vs-struct disagreement, column desync. Use when answering 'why does the parse differ' fast.
sebastienrousseau/agtmls · ★ 1 · AI & Automation · score 80
Install: claude install-skill sebastienrousseau/agtmls
# noyalib debugging playbook Repo: `github.com/sebastienrousseau/noyalib` — pure-Rust YAML 1.2 library, workspace `crates/noyalib`, current release `v0.0.14`. Run every command below from the repo root. > **Reference material** (full 6-row loader-routing table, full 14-row > symptom table, full 12-knob/6-variant budget inventory, and traps > (d) `NaN` key equality + (e) `cargo vet fmt` strips TOML comments): > see `reference.md` in this directory. Load when the top-N runbook > paths below don't pin the bug, when you need the exhaustive symptom > row set, or when you need the complete `BudgetBreach`-vs-other-Error > mapping. ## THE cardinal triage question > **Which of the THREE loaders is my bug in?** `from_str_with_config` in `crates/noyalib/src/de.rs` routes to one of three code paths. Almost every "same input, different result" report resolves once you know which path fired. The routing decision lives around `de.rs:396-499`. Read it — it changes. As of v0.0.14 the shape is: ```rust // crates/noyalib/src/de.rs (approx line 415) let value_target_bypass = is_value_target::<T>() && config.tag_registry.is_none(); let stream_eligible = config.merge_key_policy == MergeKeyPolicy::Auto && !config.ignore_binary_tag_for_string && config.policies.is_empty() && properties_inactive(config) && includes_inactive(config) && !value_target_bypass; ``` ### Routing table (top 3 rows — full 6-row matrix in `reference.md` §routing-full) | T |