=== RESEARCH ===
{'issue': 277, 'kind': 'docs', 'defect_status': 'confirmed', 'category': 'api-register+nav-mention', 'target_files': ['docs/src/api_types.md', 'docs/src/api_functions.md', 'docs/src/dsge_ha.md', 'docs/src/dsge_continuous.md', 'docs/src/dsge_olg.md', 'docs/src/panel_reg.md', 'docs/src/data.md', 'docs/src/index.md', 'src/var/types.jl'], 'summary': 'Register the 5 non-HA/CT/OLG undocumented exports in the API reference and add a narrative @ref mention for all 17 fully-undocumented exports on their owning pages; add one-line docstrings for ncoefs/nlags.', 'current_state': 'CONFIRMED still-broken. All 17 symbols are absent from every file under docs/src/ (verified: `grep -rln` over docs/src/ for all 17 returns empty; mentions exist only in docs/build/, docs/plans/, docs/superpowers/). Proof of absence per file: api_types.md "DSGE Models" @docs block (docs/src/api_types.md:471-490) lists no HA/CT/OLG type and its "Panel Regression Models" block (:500-505) has PanelRegModel/PanelIVModel/PanelLogitModel/PanelProbitModel but NOT PanelTestResult; api_functions.md "Data Management > Validation and Cleaning" (:11-15 = diagnose/fix/validate_for_model, no keeprows), "Data Accessors and Conversion" (:51 nvars only, no ncoefs/nlags), and no warranty entry anywhere; dsge_ha.md documents inequality_irf (:57,:523) and den_haan_test (:346-356) but never HADSGESpec/IncomeProcess/IndividualProblem/KrusellSmithSolution/DenHaanAccuracy/distribution_irf. All 17 are confirmed exported (src/MacroEconometricModels.jl:527,528,531,534,538,540,725,795,969,1009) and all have docstrings on their definitions EXCEPT ncoefs and nlags (src/var/types.jl:54-55 are bare one-line accessors with no docstring; distribution_irf DOES have one at src/dsge/heterogeneous/analysis.jl:171-181; IndividualProblem DOES have one ending at src/dsge/heterogeneous/types.jl:356 above its leading comment). make.jl uses checkdocs=:exports with warnonly=[:missing_docs,:cross_references] (docs/make.jl:106,110), so bare-export symbols emit :missing_docs warnings today. NOTE: the issue body\'s routing of PanelTestResult to tests_panel.md is STALE/wrong — hausman_test/breusch_pagan_test/f_test_fe/pesaran_cd_test/wooldridge_ar_test/modified_wald_test (which return PanelTestResult, src/preg/tests.jl:36-516) are documented in panel_reg.md ("## Specification Tests", docs/src/panel_reg.md:406-469), NOT tests_panel.md (which covers panel unit-root/PVAR tests returning PesaranCIPSResult/PANICResult, not PanelTestResult).', 'proposed_change': 'Precondition: land T177 (#276) first; it registers the HA/CT/OLG type + function surface into the API reference. Do NOT re-add those to @docs (double-registration errors). This task adds only (A) the 5 non-HA/CT/OLG API entries, (B) 2 source docstrings, (C) the 17 narrative mentions.\n\n(A) API REFERENCE — add only these 5 (all others assumed placed by T177; after T177 lands, grep-confirm each of the 17 resolves in a @docs/@autodocs block before building):\n- api_types.md: in the "## Panel Regression Models" @docs block (docs/src/api_types.md:500-505), append `PanelTestResult` after `PanelProbitModel`.\n- api_functions.md: (1) in "### Validation and Cleaning" @docs block (docs/src/api_functions.md:11-15) append `keeprows` after `validate_for_model`; (2) in "### Data Accessors and Conversion" @docs block (around docs/src/api_functions.md:51, which has `nvars`) append `ncoefs` and `nlags`; (3) `warranty` is NOT picked up by the "## Utility Functions" @autodocs (that block scans Pages=["core/utils.jl"] but warranty is defined in src/MacroEconometricModels.jl:1021) — add an explicit ```@docs\\nwarranty\\nconditions\\n``` block under "## Utility Functions" (docs/src/api_functions.md:841). Registering `conditions` (exported same line src/MacroEconometricModels.jl:1009) as well pre-empts a companion :missing_docs warning; both share the GPL-warranty docstrings.\n\n(B) SOURCE DOCSTRINGS — ncoefs and nlags are among the accepted undocumented exports; add a one-line docstring each. In src/var/types.jl above the accessor definitions (currently `# Accessors` at :52, bare `nlags(model::VARModel) = model.p` :54, `ncoefs(model::VARModel) = ...` :55), attach `"""\\n    nlags(model) -> Int\\n\\nNumber of lags in a fitted model.\\n"""` above the nlags method and `"""\\n    ncoefs(model) -> Int\\n\\nNumber of estimated coefficients per equation.\\n"""` above the ncoefs method. A docstring on one method of each generic satisfies checkdocs=:exports (other methods live in src/vecm/types.jl:69,71, src/favar/types.jl:119, src/lp/types.jl:105). Do NOT touch nvars/effective_nobs (out of scope; not in the 17).\n\n(C) NARRATIVE MENTIONS — one @ref sentence each on the owning page (all @ref targets resolve once the symbols are in the API @docs blocks). Line anchors are current working-tree; re-grep before editing:\n- dsge_ha.md: (1) HADSGESpec — after Recipe 1 (docs/src/dsge_ha.md:23-28) note `load_ha_example` returns a [`HADSGESpec`](@ref). (2) IncomeProcess — before the fields table at :148-155, note `rouwenhorst`/`tauchen` return an [`IncomeProcess`](@ref) (the table already lists its transition/states/stationary_dist fields). (3) IndividualProblem — in "## Individual Problem" (:74) note the household problem is encoded as an [`IndividualProblem`](@ref). (4) KrusellSmithSolution — in "## Krusell-Smith Method" (:294, Recipe uses `solve(...; method=:krusell_smith)`) note it returns a [`KrusellSmithSolution`](@ref). (5) DenHaanAccuracy — in "## Accuracy: the Den Haan (2010) Test" (:334-356) note `den_haan_test` returns a [`DenHaanAccuracy`](@ref). (6) distribution_irf — add a short subsection under "## Distribution Tracking" (:169-195), parallel to the inequality_irf usage, documenting [`distribution_irf`](@ref) and linking [`inequality_irf`](@ref); a one-line prose ref satisfies acceptance (avoid adding a heavy new @example unless you keep it minimal, to limit verify_examples cost).\n- dsge_continuous.md: (1) CTPoissonIncome — at the two-state Poisson income prose (docs/src/dsge_continuous.md:51) note the income block is a [`CTPoissonIncome`](@ref) (built in CTAiyagari, src/ct/continuous_aiyagari.jl:73). (2) CTSteadyState — in "## Stationary Equilibrium" (:84-95) note `ct_steady_state` returns a [`CTSteadyState`](@ref) (src/ct/continuous_aiyagari.jl:266). (3) CTTransition — in "## MIT-Shock Transitions" (:108-131) note `ct_mit_shock` returns a [`CTTransition`](@ref) (returned at src/ct/continuous_aiyagari.jl:435). (4) CTTwoAssetSolution — in "## Two-Asset HANK" (:142-158) note `ct_two_asset_solve` returns a [`CTTwoAssetSolution`](@ref) (returned at src/ct/two_asset.jl:284).\n- dsge_olg.md: (1) BlanchardOLGSteadyState — in "## Steady State" (docs/src/dsge_olg.md:85-90) note `blanchard_steady_state` returns a [`BlanchardOLGSteadyState`](@ref) (returned at src/olg/blanchard.jl:150,209). (2) BlanchardOLGSolution — in "## Transitional Dynamics" (:125-132) note `blanchard_solve` returns a [`BlanchardOLGSolution`](@ref) (returned at src/olg/blanchard.jl:252).\n- panel_reg.md (CORRECTED target, not tests_panel.md): PanelTestResult — at the top of "## Specification Tests" (docs/src/panel_reg.md:406) add a sentence: all six tests return a [`PanelTestResult`](@ref) container (statistic, p-value, dof). Confirmed these tests return it (src/preg/tests.jl:142,206,267,347,454,516).\n- data.md: keeprows — in the "## Validation"/"### Fixing Issues" area (docs/src/data.md:296-320, near `fix`/`dropna`) add a one-line mention that [`keeprows`](@ref) retains rows by BitVector mask or integer index (src/data/validation.jl:517-538).\n- index.md: warranty — add a one-line reference to [`warranty`](@ref)/[`conditions`](@ref) (GPL notices) in a suitable spot (e.g. near the License/Overview or References area, docs/src/index.md:1-9 or :172); a bare @ref is sufficient.\n\nFollow docs/docrule.md: cross-refs use `[Name](@ref target)` (docrule.md:342); pure API-signature/prose mentions need no @example; do not convert existing static blocks. checkdocs=:exports means each of the 17 must appear in exactly one @docs/@autodocs block (docs/make.jl:106).', 'verify': 'After T177 lands and edits applied: (1) build/render check — `julia --project=docs docs/make.jl` and confirm no NEW :missing_docs warnings and all 17 render (grep the built api pages). (2) Per edited narrative page: `julia --project=docs docs/verify_examples.jl docs/src/dsge_ha.md`, `... docs/src/dsge_continuous.md`, `... docs/src/dsge_olg.md`, `... docs/src/panel_reg.md`, `... docs/src/data.md`, `... docs/src/index.md`. (3) Acceptance grep: each of the 17 symbols now returns a hit under docs/src/ (`grep -rl <sym> docs/src/`).', 'dependencies': [276], 'collisions': ['docs/src/api_types.md — #276 (T177 registers HA/CT/OLG types into DSGE Models block)', 'docs/src/api_types.md — #291 (T192 rewrites the api_types type-hierarchy tree)', 'docs/src/api_types.md — #301 (T202 splits the API reference into per-domain pages and drops :missing_docs from warnonly)', 'docs/src/api_functions.md — #276 (T177 registers HA/CT/OLG functions incl. distribution_irf)', 'docs/src/api_functions.md — #301 (T202 restructures API pages)', 'docs/src/dsge_ha.md — #289 (T190 DSGE sweep: ha println fix)', 'docs/src/dsge_ha.md — #302 (T203 narrative backfill)', 'docs/src/dsge_continuous.md — #289 (T190 CT maturation)', 'docs/src/dsge_olg.md — #289 (T190 OLG maturation)', 'docs/src/panel_reg.md — #288 (T189 panel pages sweep)', 'docs/src/panel_reg.md — #302 (T203 narrative backfill)', 'docs/src/data.md — #302 (T203 narrative backfill)', 'docs/src/index.md — #294/#295 (T195/T196 hub-page + nav restructure)', 'docs/src/index.md — #302 (T203)'], 'effort': 'L', 'risk': 'med'}

=== VERIFY ===
{'issue': 277, 'verdict': 'CONFIRMED', 'assessment': "Defect is real and still-broken on the current release/v0.6.6 tip: grep -rl over docs/src/ for all 17 symbols returns empty. Every source-of-truth file:line the research cites is accurate as read independently: (A) api_types.md Panel Regression @docs block (498-503) lacks PanelTestResult (which has a docstring at src/preg/types.jl:259-270); api_functions.md Validation block (11-15) lacks keeprows (docstring at src/data/validation.jl:505-516); Data Accessors block has nvars at :51 but not ncoefs/nlags; warranty/conditions are in src/MacroEconometricModels.jl (:1021/:1054), have docstrings (:1015/:1048), and are NOT captured by any @autodocs (the Utility Functions block at :845 scans only core/utils.jl) — verified no existing @docs/@autodocs already lists warranty/conditions/ncoefs/nlags/keeprows/PanelTestResult, so no double-registration. (B) ncoefs/nlags are bare accessors at src/var/types.jl:54-55 with no docstring; the spec's rationale is sound — nvars renders in the same block only because it has a documented method (src/data/types.jl:285-286), while ncoefs/nlags are VARModel-only and must get docstrings before @docs registration. (C) every narrative anchor verified: dsge_ha.md (Recipe1 21-28, IncomeProcess fields 145-149, Individual Problem 74, Krusell-Smith 294, Den Haan 334, Distribution Tracking 169), dsge_continuous.md (51/84/108/142), dsge_olg.md (85/125), panel_reg.md Specification Tests 406 with all six tests returning PanelTestResult (tests.jl:142/206/267/347/454/516 exact), data.md Fixing Issues 296, index.md Overview 1-9. The spec's own corrections are correct: the panel_reg.md re-routing (vs the issue body's stale tests_panel.md) is right, and the bare [`Name`](@ref) form is an established repo convention (11 uses, e.g. [`IOData`](@ref)) and valid Documenter syntax — consistent with docrule.md. The change obeys docrule (prose @ref mentions need no @example; no static blocks converted). Minor non-blocking note: the plan also registers `conditions` defensively, so the true undocumented-export count is effectively 18 not 17, but the plan handles it — no gap. The one load-bearing item is ordering: the 12 HA/CT/OLG @ref targets resolve only after #276/T177 registers them (correctly declared as dependency).", 'corrections': '', 'collision_issues': [276, 288, 289, 291, 294, 295, 301, 302], 'discriminating_power': 'n/a — docs-only task (API @docs registration, source docstrings, and narrative @ref prose); no test assertions involved.', 'final_effort': 'L'}