Methodology

FireApproved is a citation layer. It records listings, tests, adopted code, and public AHJ practice. It does not grant approval.

Voice

We write to ISO 24495-1:2023 plain-language principles (relevant, findable, understandable, usable) and to the Federal Plain Language Guidelines. We borrow term discipline from Simplified Technical English: one word per concept. We are not ISO-certified and we do not claim full ASD-STE100 compliance. See how we write.

Direct answer first. Then complete the topic. No padding. No synonym hopping for “listed,” “tested,” and “adopted.”

Pages do not repeat a personal byline. Editorial responsibility is recorded on who writes this.

What a claim needs

Listing claims need a listing-body or official source and a listing ID or listing URL. Listed means a named model is on a listing body’s current record. It is not “FireApproved approved,” and it is not a permit. OSFM listing is usually voluntary. Absence from the handbook is not a ban. Presence is not a permit. See OSFM listing is usually voluntary and how to read a listing.

Class A, B, and C describe a tested assembly, not a bag of covering. See covering versus assembly.

A plant's status is computed from its evidence rows by a published rule (amended 2026-08-24), never hand-assigned: verdicts tally by independent Tier-1 lineage, so a rater cannot outvote themselves through republication; the majority direction classifies the plant (a single Tier-1 lineage lists it as limited-evidence, and a majority over live dissent always shows the dissent); ties publish as conflicts, never averaged; and direct fire evidence is never silently outvoted by curation. The plant directory currently shows 1382 fire-resistant and 366 keep-away records, conflicts in full, and an awaiting-evidence pool in the Grow list — no directional primary verdict yet, not a third recommendation grade. Zone 0 is not a planting list.

Dataset rows need a public source URL. AHJ interpretations may cite a public seminar or published FAQ, not a private email. If no public source contains the claim, the claim does not ship.

How to cite the data

The live pages are the source of truth. Two frozen snapshots are also published CC BY 4.0 so a paper or staff report can cite a DOI. GitHub release v2026.08.25 is the version pin. Do not cite Crunchbase competitor chips or any rating invented by a dataset host.

Photo fields in the plants export are metadata only; images are not included and are not CC BY. The six-row ORSC R327 adoption table is not a standalone DOI.

Publish gate

Phase 1 has no human review workflow. npm test content lint fails the build on the rules above.

Place

Product, plant, standard, category, and guide URLs stay canonical and shared. Geographic rows compile into cited local claims with an explicit scope kind, a scalar or multi-place ID when the claim names political authorities, an exact-or-descendants reach rule, stable anchor, source, and date. The location lens promotes exact rows, then inherited rows; sibling and other-place rows stay in accessible <details> in the same server-rendered HTML. Nothing is fetched, rewritten, or removed for a crawler or a visitor.

Agents do not run the location control. They fetch /places.json (and /places/{id}.json for ancestors and children), then filter guide JSON twins such as /guides/r327-vs-cwuic.json. Read each row's scopeKind. Place rows carry placeId or placeIds plus scopeMode; distinguish exact IDs, allowed ancestors in the selected stack, and child evidence reached through children. National, program, standard, research, region, and service rows are separate evidence classes. A sibling is elsewhere evidence, never a local match. State and local landing twins expose the normalized claims and application records used by the HTML.

A five-digit ZIP is optional and is the only way to set a place. It resolves to the most specific sourced city, county, or state node available, but it is a postal match, not a legal boundary, hazard map, or parcel determination. There is no hand-picked state list. Every state has a landing at /places/; unreviewed construction status says "not yet reviewed" and asserts nothing. A local landing is generated from a typed sourced authority record: code adoption, local code, code administration, fire access, inspection, or fire service. Those types prevent an access guide from being presented as an ordinance. Oregon and California ZIPs resolve from a GeoNames-derived table (/data/or-ca-zips.json, CC BY 4.0). Sourced city and county overlays in other states use the same table with kind-aware matching (/data/sourced-local-zips.json, CC BY 4.0): city names match city nodes, county names match county nodes. USDA plant-hardiness zone for a ZIP comes from the 2023 USDA PHZM ZIP listing (/data/phzm-zip-zones.json; PRISM Group, Oregon State University; zone designations unaltered). That listing is not a FireApproved CC BY dataset and is not a building code.

Jurisdiction identity and code application are different layers. An application record joins a cited instrument to an exact place and preserves its status, geographic scope, requirement IDs, and unresolved predicates: local adoption, official boundary, official hazard map, project type, effective date, and official confirmation. Requirement placeIds alone never activate a rule. Oregon R327 is recorded as available for local adoption, with exact adopter records where sourced; California CWUIC retains map and project gates; Colorado CWRC retains local-adoption, map, and project gates.

Plant locality is deliberately multi-dimensional. Fire classification, documented state distribution, documented native range, USDA hardiness, invasive/noxious rows, source region, placement, and maintenance remain separate. Setting a location reorders and annotates records; it does not silently hide a flagged plant. “Hide records flagged here” is an explicit filter, and absence of a flag row is not regulatory clearance. Oregon and California hubs are views, not reprints. Build returns the sourced rule and product cards for each part of the house. Product JSON twins still carry resolveAt. Unknown rows stay in both HTML and JSON.

Place is not an approval. State landings aggregate and link; they never reprint the shared object URLs, which stay shared.

Related records

License

Structured JSON is CC BY 4.0. Editorial text is all rights reserved.

Disambiguation

This organization is not CAL FIRE, not OSFM, not IBHS, and not a building department.

Place

Product, plant, standard, category, and guide URLs stay canonical and shared. Geographic rows compile into cited local claims with an exact placeId, stable anchor, source, and date. The location lens promotes exact rows, then inherited rows; sibling and other-place rows stay in accessible <details> in the same server-rendered HTML. Nothing is fetched, rewritten, or removed for a crawler or a visitor.

Agents do not run the location control. They fetch /places.json (and /places/{id}.json for ancestors and children), then filter guide JSON twins such as /guides/r327-vs-cwuic.json. Keep national rows whose placeId is omitted; distinguish exact IDs, ancestors in the selected stack, and descendants reached through children. A sibling is elsewhere evidence, never a local match. State and local landing twins expose the normalized claims and application records used by the HTML.

A five-digit ZIP is optional and is the only way to set a place. It resolves to the most specific sourced city, county, or state node available, but it is a postal match, not a legal boundary, hazard map, or parcel determination. There is no hand-picked state list. Every state has a landing at /places/; unreviewed construction status says "not yet reviewed" and asserts nothing. A local landing is generated from a typed sourced authority record: code adoption, local code, code administration, fire access, inspection, or fire service. Those types prevent an access guide from being presented as an ordinance. Oregon and California ZIPs resolve from a GeoNames-derived table (/data/or-ca-zips.json, CC BY 4.0). Sourced city and county overlays in other states use the same table with kind-aware matching (/data/sourced-local-zips.json, CC BY 4.0): city names match city nodes, county names match county nodes. USDA plant-hardiness zone for a ZIP comes from the 2023 USDA PHZM ZIP listing (/data/phzm-zip-zones.json; PRISM Group, Oregon State University; zone designations unaltered). That listing is not a FireApproved CC BY dataset and is not a building code.

Jurisdiction identity and code application are different layers. An application record joins a cited instrument to an exact place and preserves its status, geographic scope, requirement IDs, explicit requirement coverage (none, partial, or complete), and unresolved predicates: local adoption, official boundary, official hazard map, project type, effective date, and official confirmation. Requirement placeIds alone never activate a rule. Oregon R327 is recorded as available for local adoption, with exact adopter records where sourced; California CWUIC retains map and project gates; Colorado CWRC retains local-adoption, map, and project gates.

Plant locality is deliberately multi-dimensional. Fire classification, documented occurrence, native and introduced range, USDA hardiness, ecological and regulatory status, source region, placement, fire-performance conditions, and sourced horticultural maintenance remain separate. A minimum-only hardiness value is a cold threshold, not a one-half-zone range. Exact source temperatures retain their units and conversion basis. One canonical C/F conversion validates the containing PHZM half-zone; same-band derived comparisons stay uncertain unless the source endpoint proves the threshold, values outside Zones 1a–13b are not clamped, and uncertain or inapplicable rows project no legacy zone. An applicable below-scale minimum remains discoverable in every published warmer zone but retains its outside-scale marker and never becomes an invented 1a; an above-scale minimum matches no published zone. Contradictory applicable rows publish as unresolved conflict rather than allowing source order to choose a zone. Lower-48 status is broader context only in conterminous states, never Alaska or Hawaii; doubtful or extinct range rows do not establish current presence. Introduced/established context is not an invasive warning. Status imports preserve the source record, taxon, designation, normalized rank plus separate raw rank, and any name or subordinate-taxon projection; exception-bearing genus regulations require an explicit target review. An irrigated test row describes fire evidence and never creates garden irrigation advice. Setting a location reorders and annotates records; it does not silently hide a flagged plant. “Hide records flagged here” is an explicit filter, and absence of a flag row is not regulatory clearance. USDA Forest Service FEIS rows are section-reviewed fire-ecology context: ecosystem and fuel conditions, immediate effects, postfire response, management, and invasive–fire feedback. They are admitted only for a cited taxon match, retain the review section and anchor, and never vote in the computed plant classification. Fire behavior around a taxon is not a substitution for a flammability recommendation or a local planting rule. Oregon and California hubs are views, not reprints. Can I use this here returns evidence found, conditional, not accepted, or unknown, followed by the complete evidence and application trace. Agents fetch resolveAt on a product JSON twin. Unknown rows stay in both HTML and JSON.

Product attributes carry field-level evidence. A value may come from a manufacturer technical document, an official listing, a test report, or a standard body, and the source type remains visible. The requirement matcher uses only documented fields; a listing or category name does not manufacture an attribute.

Place is not an approval. State landings aggregate and link; they never reprint the shared object URLs, which stay shared.