=== RESEARCH ===
{'issue': 282, 'kind': 'docs', 'defect_status': 'confirmed', 'category': 'prose-fix', 'target_files': ['docs/src/favar.md'], 'summary': 'Rewrite the FAVAR Complete Example interpretation (:344) and the two-step interpretation (:131) so the quoted factor/panel/augmented-system/draw counts match the actual code (2 factors, 7-variable panel, 4-variable augmented system, n_draws=100).', 'current_state': 'Stale numbers are STILL present in the working tree at release/v0.6.6 tip. docs/src/favar.md:344 reads: "The two-step FAVAR extracts 3 factors from the 50-variable panel, removes the component spanned by the 2 key variables, and estimates a VAR(2) on the resulting 5-variable augmented system. The panel-wide IRFs map structural shocks to all 50 variables ... through 5000 Gibbs draws". docs/src/favar.md:131 reads: "...orthogonalizes them against the 2 key variables, and fits a VAR(2) on the resulting 5-variable system." Both contradict the code. Additionally the Complete Example intro at :315 mislabels the data as "simulated data" — the setup loads real FRED-MD.', 'proposed_change': 'Fix three prose spots in docs/src/favar.md; all numbers re-derived from source, NOT from issue/audit text.\n\nTRUE dimensions (source of truth):\n- estimate_favar signature is `estimate_favar(X, key_indices::Vector{Int}, r::Int, p::Int; ...)` at src/favar/estimation.jl:173 (also documented src/favar/estimation.jl:27/169) → 3rd positional arg = r = number of factors, 4th = p = lags.\n- Complete Example calls `estimate_favar(X, [4, 5], 2, 2)` at favar.md:319 (two-step) and `estimate_favar(X, [4, 5], 2, 2; method=:bayesian, n_draws=100, burnin=50)` at favar.md:332-333 → r=2 factors, p=2 lags, n_key=2 key vars, so augmented system [F, Y^key] has 2+2 = 4 variables; Bayesian n_draws=100 (favar.md:333).\n- Panel width N: the @setup builds X from `slow_names` (3: INDPRO, CPIAUCSL, UNRATE) + `fast_names` (4: M2SL, FEDFUNDS, TB3MS, GS10) = 7 columns (favar.md:17-19) → N=7. (X is trimmed to 60 rows at favar.md:22 but that is time length, not panel width.)\n- Data source is real FRED-MD: `fred = load_example(:fred_md)` (favar.md:16), NOT simulated.\n\nEDIT 1 — line 344, replace the whole interpretation paragraph with:\n"The two-step FAVAR extracts 2 factors from the 7-variable panel, removes the component spanned by the 2 key variables, and estimates a VAR(2) on the resulting 4-variable augmented system. The panel-wide IRFs map structural shocks to all 7 variables through the ``N \\times r`` loading matrix ``\\Lambda``. The Bayesian FAVAR additionally quantifies uncertainty in the factor extraction through 100 Gibbs draws, producing wider credible intervals that account for estimation error in both the factors and the VAR parameters."\n\nEDIT 2 — line 131, change "the resulting 5-variable system" → "the resulting 4-variable system" (2 factors + 2 key = 4). Leave "2 key variables" and "VAR(2)" unchanged (both correct).\n\nEDIT 3 (recommended, same Complete Example region, not owned by any other issue) — line 315, change "estimates a FAVAR on simulated data" → "estimates a FAVAR on FRED-MD data" to match `load_example(:fred_md)` at :16.\n\nNo rendered numeric quantities (variance shares, IRF magnitudes) are quoted in these paragraphs, so only the structural dimension/draw counts (derived statically from the code) need changing; no need to read rendered output.', 'verify': 'julia --project=docs docs/verify_examples.jl docs/src/favar.md  (expect OK; draft mode is already env-switched and defaults to false per docs/make.jl:10, so the page renders). Optional grep gate after edit: `grep -nE "3 factors|50-variable|5-variable|5000|simulated data" docs/src/favar.md` should return nothing.', 'dependencies': [], 'collisions': ['docs/src/favar.md — #287 (T188): edits the static julia identification block at favar.md:303-307 (~lines 296-309), different region from :131/:315/:344', 'docs/src/favar.md — #292 (T193 LOW polish): removes dead Y_slow/Y_fast in @setup (favar.md:23-24), fixes uncited ref and non-alphabetical References list (favar.md:362-376), different regions'], 'effort': 'S', 'risk': 'low'}

=== VERIFY ===
{'issue': 282, 'verdict': 'CONFIRMED', 'assessment': 'Defect is real and still present in the current working tree (release/v0.6.6 tip). I independently re-derived every number from source and confirmed all three stale prose spots.\n\nEDIT 1 (favar.md:344): current text says "3 factors / 50-variable panel / 5-variable augmented system / all 50 variables / 5000 Gibbs draws". The code shown in the Complete Example is estimate_favar(X, [4, 5], 2, 2) (favar.md:319) and the Bayesian variant with n_draws=100 (favar.md:332-333). Signature (src/favar/estimation.jl:69 and :173) makes 3rd positional = r (factors), 4th = p (lags), so r=2 factors, p=2 lags. Key indices [4,5] → n_key=2, augmented [F,Y_key] = r+n_key = 4 variables. Panel width from @setup: slow_names(3)+fast_names(4)=7 columns (favar.md:17-19), so N=7 (the end-59 slice at :22 is time length, not width). Proposed replacement (2 factors, 7-variable panel, 2 key, VAR(2), 4-variable augmented, all 7 variables, 100 Gibbs draws) is exactly correct.\n\nEDIT 2 (favar.md:131): "5-variable system" for estimate_favar(X, [4, 5], 2, 2) at :127 → should be 4-variable (2 factors + 2 key). "2 key variables" and "VAR(2)" are correct and left unchanged. Correct.\n\nEDIT 3 (favar.md:315): "simulated data" contradicts load_example(:fred_md) at :16 (real FRED-MD). Fix to "FRED-MD data" is correct. This spot is not owned by #287 (static block :303-307) or #292 (dead Y_slow/Y_fast :23-24; uncited ref / alphabetize refs :362-377); it is a genuine prose-contradicts-code defect in the same Complete Example region, so including it is appropriate and low-risk.\n\nChange obeys docrule (Data & Output Integrity / prose-contradicts-code): it makes prose match the small, fast example rather than scaling the code up. No rendered numeric quantities (variance shares, IRF magnitudes) are quoted in these paragraphs, so no rendered-output read is needed. draft defaults to false (docs/make.jl:10), so the page renders. All three edits are correct and complete as written.', 'corrections': 'Guard-rail (does not change the three edits, which are correct): the spec\'s OPTIONAL grep gate `grep -nE "3 factors|50-variable|5-variable|5000|simulated data"` will NOT return nothing after the edits — line 152 legitimately contains `5000` as the correct keyword-default table entry (source default `n_draws::Int=5000` at src/favar/estimation.jl:46 and :72). Line 152 must be PRESERVED, not "fixed". Read the gate as: after editing :131/:315/:344, the only remaining `5000` match should be line 152 (the keyword table), and there should be zero matches for "3 factors", "50-variable", "5-variable", or "simulated data".', 'collision_issues': [287, 292], 'discriminating_power': 'n/a (docs prose fix; no test assertions involved)', 'final_effort': 'S'}