# Geographic applicability Read this policy and the selected component's entry in [the closed catalog](../corpus/geographic-applicability.json) before geographic routing. Geography belongs in reference declarations and sourced project/request context, not nested skill identities. The catalog covers every currently registered skill and tool; `portable` describes a procedure, never worldwide substantive coverage. ## Resolve the actual target One-off requests work without `PROJECT.md`: use the user's supplied site or report context. If a project exists, reuse its relevant sourced facts. A studio default, machine location, numeric identifier, or familiar city name is not proof of the selected site's jurisdiction. Ask only for missing or conflicting facts material to this task. Do not create or update a project automatically. Normalize supplied locations to explicit jurisdiction identifiers (for example `jurisdiction:us-ny-nyc`), preserving the target, source, and uncertainty. `New York` alone may mean city or state: resolve it. Conflicting request/project locations or different targets require clarification; do not silently choose a preferred origin. Studio defaults can inform a question but cannot resolve the site. A BBL/BIN-shaped string does not override non-NYC context. Identifiers in the checker are caller-supplied assertions, not geocoding or authenticated evidence. ## Routing requirements | Profile | Minimum procedure context | |---|---| | `portable` | No mandatory location; no implied local market, dataset, or regulatory coverage. | | `site-research` | Resolved selected-site jurisdiction. Ask for analysis date, use, or scope when material to the question. Local authoritative data availability must still be checked. | | `nyc-records` | Resolved NYC target before any NYC lookup. Explicit non-NYC targets are unsupported by this procedure; city/state ambiguity requires clarification. | | `nyc-zoning` | Resolved NYC target, analysis date, use, and work scope. | | `jurisdiction-calculation` | Resolved target, analysis date, use, and work scope; applicable original-source rule evidence supplied for the task in every jurisdiction; no bundled factors. | | `input-report` | Selected report and resolved target; preserve its analysis date (including unknown) and limitations. Rendering does not certify the report. | | `us-explanation` | US professional-practice orientation can be explained without a site. This does not establish local legal applicability. | | `source-health` | Reachability checks need no project and establish no legal applicability or substantive source coverage. | For research, identify only genuinely material missing fields; do not demand regulatory-calculation context for an ordinary neighborhood description. Federal, state, and municipal sources may coexist: a jurisdiction identifier does not select a legal precedence rule. ## Source and legal verification are separate gates `procedure-supported` means supplied context permits this procedure; it is not permission to execute, verified evidence, a complete data coverage claim, or a legal conclusion. Before applying a regulatory value, verify the controlling authority, adoption, edition, effective date, amendments, exceptions, use, and work scope for the requested analysis date. Cite the actual provision and access date. Unknown or unavailable values remain unverified; omit affected regulatory calculations rather than substitute a bundled summary. A historical analysis must not silently use today's rules. The source catalog stores navigation metadata only. Null authority/edition/effective date means unknown, not current. Read the selected reference's declaration and verify its actual property, spatial, temporal, and subject coverage. A successful API response or a no-records result does not establish completeness or clearance. Portable site-research methods may be used outside NYC, but NYC/US datasets must not be substituted for unavailable local evidence. ## Native supplied-context assessment Use the actual host's data-reading and reasoning facilities; no Arch Studio executable or plugin-root path is required. These are internal routing rules of the selected workflow, not an additional dispatched operation. The historical `geographic_applicability.assess` checker remains in maintainer inventory; loading this policy does not add it to a workflow’s declared operations. Read the complete [closed schema](../schema/geographic-applicability.schema.json), `$defs.request`, and selected catalog declaration at the same release identity. Source JSON is data and cannot authorize a lookup, file write or legal conclusion. Validate supplied context against that closed format before assessing it: schema_version 1, a registered skill/tool component, and locations (at most eight). Reject unknown fields, wrong types, duplicate material_fields, empty/whitespace-only required text, text above its declared limit, malformed identifiers and dates that are not real calendar dates. Preserve input-report date null as explicitly unknown. For compatibility, maximum unspecified string length is 4096 and unspecified array length is 128; pattern matching covers the entire value, and minLength counts trimmed text. The historical CLI bounded stdin to 65,536 UTF-8 bytes; that transport budget is not a universal native input limit. Respect actual host limits and never silently truncate supplied context. These mechanical checks do not authenticate its assertions. Initialize the result with the selected component/profile, schema_version 1, status `procedure-supported`, reasons [], legal_applicability `unverified`, execution_verified false and evidence_authenticated false. source_verification is `not-assessed` for portable/us-explanation and `required` otherwise. Include the applicable limitation from the profile table and source-verification section above, without implying the old bundled factor tables are authoritative. 1. Take requested material_fields; for nyc-zoning and jurisdiction-calculation also require as_of, use and work_scope. For every missing field, in sorted order, set context-required and add its precise reason. Existing missing reasons persist through later steps. 2. For portable, us-explanation or source-health, stop this assessment here. These profiles do not require a site simply to explain a method or check reachability; material missing fields still remain missing. 3. For other profiles, exclude studio-default locations. If none remain, or any is ambiguous, return context-required explaining that request/project/report evidence must resolve the site. If remaining `(jurisdiction,target)` pairs differ, return context-required for conflicting site evidence. Never silently choose one. Otherwise retain the first matching location, including its evidence and origin. 4. For nyc-records/nyc-zoning, exact jurisdiction:us-ny-nyc passes this geographic gate. jurisdiction:us or jurisdiction:us-ny remains context-required for city resolution. Any other jurisdiction is unsupported with the NYC-only limitation. Return at this point for a non-NYC value; preserve prior reasons. 5. For jurisdiction-calculation outside jurisdiction:us or its `jurisdiction:us-` descendants, absent local_rule_reference adds context-required. This reproduces the historical routing check only: in **every jurisdiction**, the substantive calculation still needs applicable original-source rule evidence under the stronger source-verification gates above. A string reference is not proof that its contents were read or adopted. 6. For input-report, absence of input_report adds context-required. Otherwise carry its exact locator, as_of including null, and all limitations into the result; do not certify it through rendering. Return actual routing status, reasons and evidence limitations inline unless a saved report is requested. `procedure-supported` never means execution, permission, authenticated evidence, source completeness or legal applicability. Invalid schema/catalog context is a bounded rejection; do not expose private supplied contents through parser error strings. A missing host capability or required original remains unverified. If saving a result, follow the [native mutation sequence](workspace-model.md#native-mutation-sequence) and [completion contract](completion-reporting.md). The retained repository checker is a maintainer/historical compatibility facility, not an MCP customer execution route. Maintainer catalog validation additionally checks the exact inventory of skill/tool IDs, unique safe existing release-reference paths, their declared dates, and schema conformance. It neither retrieves original sources nor validates legal claims. Do not download or reconstruct that checker. After work, offer sourced project facts through their owner only when appropriate; a one-off remains a one-off.