# Attribution allowlist — every rendered clause that credits an authority or
# asserts a rank, across the four disjoint scenarios in
# tests/test_invariant_output.py, in all four formats.
#
# Format:  KIND | citation | normalised clause (digits collapsed to N)
#
#   CITED    a document, and a year / round / section. The gate additionally
#            requires a digit in the citation, so "CDFI Fund guidance" alone
#            will not pass — a year, section or number must appear.
#   HOUSE    this tool's own judgement. The gate does NOT require a digit, but
#            the RENDERED text must say so on its face; an allowlist entry
#            claiming HOUSE while the document reads as a Fund figure is the
#            defect, not the fix.
#   PLACEHO  inside bracketed [CDE TO COMPLETE] / [NARRATIVE PLACEHOLDER]
#            guidance — marked on its face as instruction, not assertion
#   LABEL    a bare column or row label containing a trigger word
#
# NO ENTRY IS MARKED "PROVENANCE UNVERIFIED" ANY MORE, AND THAT IS THE POINT.
# Six were, in the first version of this file. A primary-source pass on those
# six established that the publication they cited — a "CDFI Fund NMTC Program
# Annual Report, FY2018-FY2023" — DOES NOT EXIST, that the Fund publishes no
# jobs-per-QEI figure in any denominator, and that no distribution exists to
# make 20.0 a "top quartile". The rendered text was relabelled as this tool's
# own screening bands, so those six clauses no longer render at all and their
# entries are gone. They were not re-cited and not downgraded to HOUSE — the
# claims were withdrawn. See nmtcapp/data/schema.py.
#
# NO ENTRY READS "DOCUMENT RETRIEVABLE, CONTENT NOT LOCATED" ANY MORE EITHER.
# Three did, all three for the distress-level definitions. That queue is now
# closed, and closing it found a defect worse than the missing citation.
#
# The rendered text read:
#
#     "Deep distress = poverty rate >30% or unemployment >1.5x national
#      average. Severe distress = LIC plus additional qualifying factors."
#
# Those thresholds are real. They are the CDFI Fund's definition of SEVERE
# distress, printed under the label DEEP. Verified by opening the Fund's own
# NMTC LIC Eligibility workbook — the .xlsb this package downloads and loads —
# and reading columns O and P verbatim:
#
#     Column O. Severe Distress
#         "Severe distress=LIC AND (Poverty>30%; MFI<=60%;Unemployment>=1.5)"
#     Column P. Deep Distress
#         "Deep distress=LIC AND (Poverty>40%; MFI<=40%;Unemployment>=2.5)"
#
# AMENDED IN 1.2.1. The first version of this note cited "columns 14 and 15".
# Those are the 0-BASED POSITIONAL INDICES of the two columns in the data
# sheet's header row. The Fund's own NOTES sheet labels them "Column O. Severe
# Distress" and "Column P. Deep Distress", and a reader who opened the workbook
# at columns 14 and 15 would land on N and O — the unemployment ratio and
# severe distress — and conclude the quotation was wrong. A citation-precision
# defect inside the text round nine added to fix a citation defect. The same
# 0-based citation was live on the published docs site at
# docs/reference/data-sources.md and is corrected there too; note that the docs
# fix does not reach gh-pages without a manual `mkdocs gh-deploy`.
#
# So the tool had the two tiers' thresholds swapped, dropped the median-family-
# income limb from both, dropped the "AND LIC" term from both, and attributed
# the result to "CDFI Fund NMTC Program guidance and the NMTC Allocation
# Application Review Process" — neither of which carries that wording. A CDE
# reading the old note was told a 32%-poverty tract is "deep distress"; the
# Fund's deep-distress bar is 40%.
#
# The classification DATA was never wrong — distress_level comes from these same
# workbook columns via nmtc-mapper. Only the printed definition was. That is its
# own lesson: correct data under an incorrect legend is still a wrong document.
#
# Cite the file you actually load. It is more retrievable than the prose
# document describing it, and it is the thing the numbers came from.

PLACEHO | Wrapped continuation of the [NARRATIVE PLACEHOLDER] block. Reclassified from CITED in 1.2.0: it is guidance addressed to the CDE about what to write, not a figure, and the claim about reviewer emphasis was never located in a Fund document. N2 misses it only because the PDF extractor wraps the line away from its opening bracket. | cdfi fund reviewers score on specificity, evidence, and alignment with
PLACEHO | Wrapped tail of INVESTOR_TABLE_NOTE, a [CDE TO COMPLETE] block. Names the Fund as the audience a CDE must defend a row to. | cdfi fund, and delete any row you cannot.] (see attachment: investor commitments table)
PLACEHO | Inside the has_prior_reporting_issues [CDE TO COMPLETE] block. A statement about the Fund's own recordkeeping, in guidance addressed to the CDE, not a figure in the CDE's voice. | do not omit this — the cdfi fund holds prior
LABEL | Column header in the Section B distress-documentation table. Names an ACS field; the value beneath it renders 'See ACS'. Claims nothing. | median family income
LABEL | 'tiers' here names the two levels the Fund's own workbook defines; the clause states a structural fact about both definitions (each requires LIC) and claims no rank. | both tiers additionally require the tract to be a low-income community.
HOUSE | The clause NAMES the CDFI Fund only to disclaim it: the credit price and the CDE fee rate are this model's market assumptions and the sentence says so in the same breath. The statutory figure in the same note — the 39% credit rate over 7 years — is cited to IRC §45D(a)(2) inline. Added 1.2.1 when the methodology appendix moved to renderers/_methodology and gained the credit rate, which through 1.2.0 was the one deal-economics figure with no attribution anywhere in the document. | assumed credit price $N/credit and cde fee N% of qei are market assumptions of this model, not cdfi fund parameters.
HOUSE | Wrapped continuation of the same disclaimer. | assumptions of this model, not cdfi fund parameters.
PLACEHO | Inside the Section E [CDE TO COMPLETE] block added in 1.2.1 L-5. The sentence above it used to promise "details on each prior award, including states served, sectors financed, and outcomes achieved" and print it over rows reading "States: N/A. Sectors: N/A." — neither field is collected by this tool's CDE profile scaffold. This clause names the Fund as the party that asks for the two fields, in guidance addressed to the CDE about what to add, not as a figure in the CDE's voice. | the cdfi fund's section e asks for both and this tool does

# --- FIX-3: the Section B BASIS NOTE, which names the Fund in order to state
#     that no share this package renders answers its commitments -----------
CITED | CY 2024-2025 NMTC Program Review Process, 'Targeting Areas of Higher Distress (Question 25)': 'at least 85% of its QLICIs in specified areas of severe distress and/or areas characterized by multiple indicia of distress ... at least 20% of its QLICIs to "Deep Distress" areas'. Downloaded and text-extracted; the document contains no 'FAQ #79', which is what the two entries this replaced in 1.2.1 used to cite. FIX-3 restored the Fund's own words, INCLUDING 'of its QLICIs', because the rendered line's subject is that the commitment's denominator is not the one this package computes. | basis note — the cdfi fund's two distress commitments are measured on qlicis, not on qei
CITED | CY 2024-2025 NMTC Program Review Process, 'Targeting Areas of Higher Distress (Question 25)': 'at least 85% of its QLICIs in specified areas of severe distress and/or areas characterized by multiple indicia of distress ... at least 20% of its QLICIs to "Deep Distress" areas'. Downloaded and text-extracted; the document contains no 'FAQ #79', which is what the two entries this replaced in 1.2.1 used to cite. FIX-3 restored the Fund's own words, INCLUDING 'of its QLICIs', because the rendered line's subject is that the commitment's denominator is not the one this package computes. | basis note — the cdfi fund's two distress commitments are measured on qlicis, not on qei:** the cy N-N nmtc program review process (targeting areas of higher distress, question N) states two commitments, and both are measured on qlicis: at least N% of qlicis in specified areas of severe distress and/or areas characterized by multiple indicia of distress, and at least N% of qlicis to 'deep distress' areas.
HOUSE | This package's own behaviour, checkable in its source: intelligence/distress_analysis.analyze_distress_concentration divides qei_request and never reads qlici_amount, and qlici_amount reaches only tables/pipeline_table.py (the 'Total QLICI ($)' column of Appendix A) and validation/consistency_check.py (the QLICI <= QEI rule). The clause names the Fund only to say what this tool does NOT compute for it, which is a statement about this package, not a figure credited to the Fund. | nmtc-application-builder computes neither qlici-denominated figure — it reads this pipeline's qlici amounts only to print them in appendix a and to check that each is no larger than its qei — so no figure above answers either commitment, and none may be presented to the cdfi fund as doing so.

# --- FIX-4: the same two clauses, after 'verbatim' became 'quoted ... with
#     spacing normalised for legibility' ------------------------------
CITED | CDFI Fund NMTC LIC Eligibility workbook (NMTC_LIC_Eligibility_2016_2020.xlsb), sheet '2016-2020', columns O and P (NOTES sheet: 'Column O. Severe Distress', 'Column P. Deep Distress'), quoted verbatim: 'Severe distress=LIC AND (Poverty>30%; MFI<=60%;Unemployment>=1.5)' and 'Deep distress=LIC AND (Poverty>40%; MFI<=40%;Unemployment>=2.5)'. Read directly off the .xlsb this tool downloads and loads, not off a secondary description. Replaces the three CONTENT NOT LOCATED entries this file used to carry. FIX-4: the rendered sentence introduced these with the word 'verbatim' and no longer does. The workbook holds 'Severe distress=LIC AND (Poverty>30%; MFI<=60%;Unemployment>=1.5)'; the document renders a space either side of the '=' and after the second ';' — three insertions per line, six across both. Every threshold, operator and separator is the workbook's, and the quotations themselves are byte-unchanged by that fix; only the claim made about them changed, to 'quoted ... with spacing normalised for legibility'. | distress levels (quoted from the cdfi fund nmtc lic eligibility workbook,
CITED | CDFI Fund NMTC LIC Eligibility workbook (NMTC_LIC_Eligibility_2016_2020.xlsb), sheet '2016-2020', columns O and P (NOTES sheet: 'Column O. Severe Distress', 'Column P. Deep Distress'), quoted verbatim: 'Severe distress=LIC AND (Poverty>30%; MFI<=60%;Unemployment>=1.5)' and 'Deep distress=LIC AND (Poverty>40%; MFI<=40%;Unemployment>=2.5)'. Read directly off the .xlsb this tool downloads and loads, not off a secondary description. Replaces the three CONTENT NOT LOCATED entries this file used to carry. FIX-4: the rendered sentence introduced these with the word 'verbatim' and no longer does. The workbook holds 'Severe distress=LIC AND (Poverty>30%; MFI<=60%;Unemployment>=1.5)'; the document renders a space either side of the '=' and after the second ';' — three insertions per line, six across both. Every threshold, operator and separator is the workbook's, and the quotations themselves are byte-unchanged by that fix; only the claim made about them changed, to 'quoted ... with spacing normalised for legibility'. | distress levels (quoted from the cdfi fund nmtc lic eligibility workbook, N–N acs, columns o and p — the file this tool loads to classify every tract;
