noyalib-debugging-playbooklisted
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 |