refine: author domain_knowledge/personal-finance/domain_pack.md (Layer 7) - #93
Conversation
…r 7) Adds the Triage Pass-2 / Editor / Critic prompt overlay scoped to the personal-finance domain — Layer 7 of the 4-layer knowledge model for V2 §4 domain 5 of 10. Closes personal-finance 6/8 → 7/8. Mirrors uniform Mechanism E posture of immigration/domain_pack.md (PR #53) + health-insurance/domain_pack.md (PR #88). Personal-finance is the canonical Mechanism E gating case named in ROADMAP §5 — the strictest posture in the V2 ontology adds a dollar-specific-investment- guidance gate on top of the uniform decision-support / specific- professional-referral language. Per-decision selective-professional-referral matrix keyed to D1–D10: fee-only fiduciary CFP (NAPFA / XY-Planning / Garrett) for D3 / D4 / D7 / D8; retirement-experienced CPA for D1 / D2 / D6 / D7 / D9 / D10; fee-only SS-claiming specialist for D8; state-bar estate attorney for D10; ERISA attorney for D1 + D10 fiduciary / QDRO disputes; SHIBA / SHIP for D8 Medicare-coordination side; SEC IAPD / FINRA BrokerCheck verification on every individual professional named.
…up flip 7 + advance 1; ROADMAP denominator off-by-one corrected 13 → 12) POST-PIVOT BASELINE run — first refine iteration since the scope-narrow pivot (commit f250013, PR #94). V2-narrow Status moves from 0/13 (off-by-one + uncounted pivot work) to 8/12 = 67%. This run advanced 2 V2-narrow items via subagent PRs: - v2-narrow/cn-sde-jobhunt/fixtures-md COMPLETED via PR #96 (3 → 10 per-fixture YAMLs; D1-D12, 4 communities, 6+ personas) - v2-narrow/infra/eval-fixtures-replaced ADVANCED via PR #95 (fixtures/eval_situations.yaml 13 → 16 situations; coverage for day-1-CPT, postdoc EB-1A, H-4-EAD-primary-switch) ROADMAP catch-up — 7 items completed at pivot but never flipped: - sources.yaml (15 source-views, 4 communities) - communities/ (4 profiles, 5-7 KB each) - domain_pack.md (119 lines, Triage / Editor / Critic) - Triage prompts updated (single-vertical narrow) - Source registry replaced (data/source_registry.yaml) - Tag taxonomy replaced (data/tag_taxonomy_seed.yaml) - Eval fixtures replaced (now 16 situations after PR #95) V2-narrow remaining (4 items, all are voice-work or gated): - decisions.md / framings.md / blindspots.md paragraph content (user-authored only per SKILL.md §5; refine MAY only add structural skeletons) - eval-pass: ≥0.75 quality_score over ≥8 fixtures × 3 consecutive main runs (gated on VOYAGE_API_KEY restoration) Recovery: 2 anomalies, both logged - PRs #92 + #93 (V2-orig stale pre-pivot orphans, both target archived folders) — gh pr close blocked by auto-mode classifier; left open for user to close manually - ROADMAP V2-narrow denominator drift (stated 0/13, actual 12 checkboxes) — corrected to 8/12 in this commit aggregate quality_score unchanged (env-degraded-skip both branches — VOYAGE_API_KEY not set in worktree environment) 🤖 Generated by refine-blindspot skill (scope-narrowed)
|
@claude review this, if good, merge |
|
Claude finished @mokashang's task in 3m 49s —— View job PR #93 Review —
|
| Section | health-insurance | personal-finance | Status |
|---|---|---|---|
| Header + irrevocability classes | 2 classes | 3 classes | ✅ (personal-finance is stricter — canonical case) |
| Companion files list | ✅ | ✅ | ✅ |
| Triage: Decision matching | ✅ | ✅ | ✅ |
| Triage: Persona refinement | 19 personas | 25 personas | ✅ (higher density justified for most cross-cutting domain) |
| Triage: Risk-surface vocabulary | 8 categories | 9 categories | ✅ |
| Triage: Framing-signal vocabulary | 7 pairs | All 14 pairs + meta-framings | ✅ |
| Triage: Cross-domain routing flags | 5 domains | 8 domains | ✅ (personal-finance is the most cross-cutting) |
| Editor: Numeric specificity | ✅ | ✅ | ✅ |
| Editor: Decision-support label | ✅ | ✅ | ✅ |
| Editor: No-dollar-guidance gate | ❌ absent | ✅ added | ✅ (canonical new gate for this domain) |
| Editor: Opportunity-cost framing | ❌ absent | ✅ added | ✅ |
| Editor: Selective referral matrix | 8 categories | 7 categories | ✅ |
| Editor: High-density blindspot anchors | D3/D4/D5/D7/D8 | D1/D5/D6/D7/D10 | ✅ |
| Editor: Opposing-framing surfacing | ✅ | ✅ | ✅ |
| Critic: Per-claim citation mandatory | ✅ | ✅ | ✅ |
| Critic: Specificity bar examples | 10 fails listed | 9 fails listed | ✅ |
| Critic: Non-obviousness +1 | ✅ | ✅ | ✅ |
| Critic: Referral check (both directions) | ✅ | ✅ | ✅ |
| Critic: Dollar-guidance gate | ❌ absent | ✅ added | ✅ (canonical) |
| Critic: Mechanism E label check | ✅ | ✅ | ✅ |
| Notes for refine | ✅ | ✅ | ✅ |
Companion file verification
All companion files referenced by the PR exist:
domain_knowledge/personal-finance/decisions.md✅domain_knowledge/personal-finance/framings.md✅domain_knowledge/personal-finance/blindspots.md✅domain_knowledge/personal-finance/sources.yaml✅domain_knowledge/personal-finance/communities/✅domain_knowledge/personal-finance/fixtures/✅
ROADMAP alignment
ROADMAP §4 line 245 explicitly names personal-finance domain_pack.md as item (1) of the current "Next up" queue. This PR closes personal-finance 6/8 → 7/8, matching the stated roadmap item.
Statutory accuracy spot-check
Sampled key citations against the file content — all checked out:
IRC §408A(d)(6)(B)(iii)Roth recharacterization elimination (TCJA 2017) ✅SECURE 2.0 §107RMD ages 73/75 ✅SECURE 2.0 §302RMD excise reduction 50%→25%→10% ✅SECURE 2.0 §109age-60–63 super catch-up ✅*Egelhoff v Egelhoff Ex rel Breiner*, 532 U.S. 141 (2001)✅*Clark v Rameker*, 573 U.S. 122 (2014)inherited IRA creditor protection ✅*Bobrow v Commissioner*, TC Memo 2014-21once-per-12-month rollover ✅Social Security Fairness Act 2024 (Public Law 118-273)WEP/GPO repeal ✅Treas. Reg. §20.2010-1anti-clawback ✅11 USC §522(n)IRA bankruptcy exemption cap ✅IRC §1091/Rev. Rul. 2008-5wash-sale / household-aggregation ✅
Date-stamp risk items are appropriately flagged in "Notes for refine" with explicit watch items.
Mechanism E posture
The three-tiered enforcement (uniform — not partial like housing; plus dollar-specific-investment-guidance gate not present in health-insurance) is correctly grounded in the three irrevocability classes: tax-year-boundary one-shot windows, permanent SS/Medicare penalties, and compounding-cost-of-procrastination. This is the strictest posture in the V2 ontology and is appropriate for the canonical Mechanism E case named in ROADMAP §5.
Minor observations (non-blocking)
- Line count: 1227 lines vs 700–900 target. The PR body and "Notes for refine" both acknowledge and justify this on the canonical-gate basis. The health-insurance precedent (PR refine: author domain_knowledge/health-insurance/domain_pack.md (Layer 7) #88) at ~774 lines shows the gap is driven by the dollar-guidance gate (~150 lines) plus denser persona/risk-surface coverage. Not a reject criterion.
- Cross-reference to
[ROADMAP §5 Mechanism E](../../docs/specs/ROADMAP.md#mechanism-e--high-stakes-domain-gating): anchor appears throughout; ROADMAP §5 was not directly read but the ROADMAP link structure is consistent with the file tree. - No code changes: This is a pure knowledge file addition with zero impact on any executing code path. No test changes needed or expected.
Merge note
I reviewed and approved this PR. However, my merge attempt (gh pr merge 93) was blocked by the harness permission mode — the gh CLI is not in the allowlist for this session. You can merge directly on GitHub, or add gh to allowed tools via /update-config to enable future autonomous merges.
What changed
Adds
domain_knowledge/personal-finance/domain_pack.md— Layer 7 ofthe 4-layer knowledge model for V2 §4 domain 5 of 10. This is the
Triage Pass-2 / Editor / Critic prompt overlay scoped to the
personal-financedomain.Why
personal-financeishigh_stakes: trueper_meta_ontology.md§5AND is the canonical Mechanism E gating case named in ROADMAP §5
— dollar-specific investment guidance is exactly the harm class the
gate was written to prevent. Without a domain_pack.md, Triage Pass-2
has no domain-specific persona enumeration, the Editor has no
mandatory numeric-specificity rules or selective-professional-
referral matrix, and the Critic has no per-numeric-claim citation
floor or dollar-specific-investment-guidance gate. This file supplies
all three.
Roadmap item
v2/personal-finance/domain-pack-md— Layer 7 of the 4-layerknowledge model for V2 §4 domain 5 of 10. Closes personal-finance
6/8 → 7/8 (joining housing 7/8 + immigration 7/8 + health-insurance
7/8 at the "eval pass only remaining" status).
This change mirrors
health-insurance/domain_pack.md(PR #88, mergecommit a911acb) uniform Mechanism E posture — NOT housing PR #69
partial-gating. Personal-finance is the canonical ROADMAP §5
Mechanism E gating case.
Mechanism E posture
Uniform high-stakes — mirrors immigration PR #53 + health-insurance
PR #88; NOT housing PR #69 partial-gating.
ROADMAP §5 names personal-finance as the canonical Mechanism E
gating case. Three irrevocability classes drive the posture:
year-N+1; Roth-conversion irrevocable since TCJA 2017
IRC §408A(d)(6)(B)(iii); 60-day-indirect-rollover; once-per-12-
month-rollover per IRC §408(d)(3)(B) and Bobrow v Commissioner;
Mega-Backdoor plan-document feature window).
permanent ~30% reduction at age 62; survivor-floor locked by
higher-earner-claim per 42 USC §402(e)(2); RMD 25%-excise-tax-
reduced-to-10% per IRC §4974 SECURE 2.0 §302; IRMAA 2-year-
lookback per 42 CFR §418.1115).
contribution at 30 compounds to ~$76k at 65 at 7% real return;
annual caps under IRC §219(b) / §408A(c)(2) are per-year-use-it-
or-lose-it.
The uniform Mechanism E posture adds on top of the standard
specific-professional-referral requirement a dollar-specific-
investment-guidance gate that is the canonical case for the entire
V2 ontology: no specific securities, no specific dollar amounts
tailored to the asker's portfolio, no specific allocation percentages
personalized to the asker's stated net worth. Categorical
recommendations (US-total-stock-index, intermediate-Treasury-bond-
fund, target-date-fund) PASS as decision-support framings; specific
tickers / specific dollar amounts / specific personalized allocations
FAIL.
Per-decision selective-professional-referral matrix
Keyed to D1–D10 from
decisions.md:only NOT fee-based hybrid) → D3 (asset location), D4 (asset
allocation and glide path), D7 (Roth conversion ladder), D8
(withdrawal sequencing + SS coordination)
Mega-Backdoor experience) → D1 (Mega-Backdoor + pro-rata), D2
(Roth-vs-traditional), D6 (TLH + wash-sale), D7 (Roth-conversion
ladder sizing against IRMAA / ACA-MAGI / NIIT cliffs), D9 (529-vs-
Roth-vs-taxable), D10 (RMD + QCD + basis-step-up)
Social-Security software-run scenarios) → D8 (SS-claim-age 62 vs
FRA vs 70 + spousal + survivor coordination)
form audit, 2025 doubled-exemption sunset window — pre-2026
SLAT / GRAT / lifetime-gifting with anti-clawback Treas. Reg.
§20.2010-1)
Rule-of-55 / SEPP-72(t) review), D10 (QDRO drafting under 29 USC
§1056(d)(3), creditor-protection consultation, fiduciary-breach
under ERISA §404 / §405)
Medicare-coordination side (boundary
health-insuranceD4 / D8)procedural floor on ANY individual professional named (catches
disciplinary histories)
Companion files
Referenced by ID, content not duplicated:
decisions.md(D1–D10) — PR Claude/gifted margulis 9cf260 #62framings.md(F1–F14) — PR refine: author domain_knowledge/personal-finance/framings.md (Layer 2) #74blindspots.md— PR refine: author domain_knowledge/education-funding/framings.md (Layer 2) #82sources.yaml(per-domain source registry with community_tag) — PR refine: author domain_knowledge/health-insurance/sources.yaml (Layer 4) #76 lineagecommunities/*.md(Voice anchors / Mental model) — bogleheads-and-passive-index, erisa-and-fiduciary-rule-law, fee-only-fiduciary-cfp,
financial-economics-journalism, fire-and-mr-money-mustache,
retirement-economics-academics, social-security-claiming-and-rmd,
tax-and-cpa-practitioner
fixtures/*.yaml— PR refine: author domain_knowledge/personal-finance/fixtures/ (Layer 6) #90 (11 multi-route fixtures spanning D1 /D2 / D4 / D5 / D6 / D7 / D8 / D9 / D10 with cross-domain edges)
Predicted signal delta
Pure-additive Layer 7 knowledge file. The file activates once Triage
Pass-2 routing is wired to a fixture that selects
personal-financedomain. Predicted aggregate
quality_scoredelta when eval runs infuture: +0.0 to +0.02 (additive knowledge files don't activate
without Triage Pass-2 routing being wired to a fixture, which is the
eval-pass-time gating).
Predicted strategic value when V2 §4 personal-finance eval-pass runs:
citation floor + per-decision referral routing + dollar-specific-
guidance gate)
matched-persona spans multiple decisions or opposing-framing pairs)
Eval status
env-degraded-skip — VOYAGE_API_KEY / ANTHROPIC_API_KEY /
REDDIT_CLIENT_ID are UNSET in this environment. Eval requires
VOYAGE_API_KEY (embedding-based tag normalization + source-view
retrieval). Established precedent for additive Layer 1–7 knowledge
files: PRs #44, #48, #49, #54, #58, #63, #64, #66, #67, #68, #69,
#70, #71, #72, #73, #74, #75, #76, #77, #78, #79, #80, #81, #82, #83,
#84, #85, #86, #87, #88, #89, #90, #91 all flagged
eval_status="env-degraded-skip".refine: eval measurement #2 of 3 (55-min budget — first full eval since 2026-05-14) #43 / PR refine: eval measurement #3 of 3 for v1.x/eval-baseline-stability #57 / PR refine: eval measurement #4 (full 15/15 at 0.7964 — 3-consecutive ±0.03 met) #59 median)
Pure-additive knowledge file; cannot regress aggregate quality_score
because it is not wired into the pipeline until Triage Pass-2
routing is exercised at eval-pass time (gated on VOYAGE_API_KEY).
Files touched
domain_knowledge/personal-finance/domain_pack.md(new, 1227lines / 8761 words — exceeds the 700–900 target line count flagged
in the brief; the dollar-specific-investment-guidance gate adds
load above the health-insurance precedent because personal-finance
is the canonical Mechanism E case named in ROADMAP §5 with the
strictest posture in the V2 ontology)
Risk assessment
The file is a pure additive knowledge artifact that does not
modify any executing code path. Risks:
IRMAA brackets, estate exemption, NIIT thresholds, ACA-MAGI cliff)
are date-stamped to 2025/2026 and need annual re-verification. The
"Notes for refine" section enumerates specific watch items: 2025
doubled-estate-exemption sunset Dec 31 2025, TCJA 2017 income-tax-
bracket sunset Dec 31 2025, ARPA / IRA enhanced-subsidy sunset
end of 2025, 2026 IRS contribution caps, 2026 IRMAA brackets,
SECURE 2.0 §126 529-to-Roth $35k rollover final regs, Social
Security Fairness Act 2024 WEP/GPO repeal effective Jan 2025.
per-numeric-claim citation rule is strict; eval may show
regressions if the source-view inventory in
sources.yamldoesn't cover every cited statute. Mitigation: the rule names
specific IRC sections and SCOTUS precedents that match
community_tags already in
sources.yaml(bogleheads, fee-only-fiduciary-cfp, tax-and-cpa-practitioner, erisa-and-fiduciary-rule-
law, social-security-claiming-and-rmd, retirement-economics-
academics).
(7 distinct categories); the Critic's over-referral check
counterweights by flagging wrong-category referrals as failures.
The uniform Mechanism E posture trades the over-referral risk for
the canonical-gate enforceability.
700–900 brief target; flagged here per brief instruction. The
dollar-specific-investment-guidance gate (canonical to this
domain) adds ~150 lines beyond the health-insurance template.
The file is
delta, not duplication — companion files(decisions.md, framings.md, blindspots.md, sources.yaml,
communities/.md, fixtures/.yaml) supply the underlying content;
domain_pack.md only adds the Triage / Editor / Critic prompt
overlay deltas.
🤖 Generated by refine-blindspot skill (parallel attempt, run-20260518-2024)