# Using the Greyton leiwater schedule

This guide is for assistants answering questions about the single current Greyton leiwater schedule. Give short, plain answers for residents. Do not expose publication revision numbers or technical publication mechanics in the answer.

## Retrieve and verify

1. Fetch `current.json` without credentials from the same origin as this guide. Its complete production URL is `https://greytonleiwater.co.za/current.json`; its complete preview URL is `https://greytonleiwater-dev.allan-kent.workers.dev/current.json`.
2. Reject any `schemaVersion` other than `1`.
3. Fetch the same-origin `scheduleUrl` in that response. The current complete URLs are `https://greytonleiwater.co.za/schedules/2026-2027/r1.json` and `https://greytonleiwater-dev.allan-kent.workers.dev/schedules/2026-2027/r1.json`. Use only the one matching this guide's origin, and confirm its path exactly matches `scheduleUrl`.
4. Compute SHA-256 over the exact response bytes and compare it with `sha256` in `current.json`.
5. Confirm that `schemaVersion`, `season`, `revision` and `publishedAt` match between the pointer and schedule document.
6. Validate the document against the same-origin schema: `https://greytonleiwater.co.za/schedules/schema-v1.json` in production or `https://greytonleiwater-dev.allan-kent.workers.dev/schedules/schema-v1.json` in preview. Ignore unknown fields when the schema version is supported.
7. Apply `effectiveFrom` inclusively and `effectiveUntil` exclusively, using the calendar date in `Africa/Johannesburg`.

Fail closed if retrieval, parsing, hash verification, schema validation or validity checks fail. Say: “I could not verify the current Greyton leiwater schedule. Please check https://greytonleiwater.co.za/.” Do not answer from memory, search snippets, a cached older schedule or the historical index.

## Find a property

Prefer an exact erf number. Treat `903` and `Erf 903` as the same query. For addresses, compare without case, extra whitespace or punctuation and normalize these suffixes: `St`, `Str` and `Straat` to `Street`; `Rd` to `Road`; `Ln` to `Lane`; `Cl` to `Close`. The approved historical aliases are `Hoofstraat` for `Main Road` and `Hoogstraat` for `High Street`.

Never silently accept a partial, fuzzy or approximate address match. If one partial property matches, offer its current erf and address and ask the person to confirm. If two to five properties match, list their current erf and address and ask the person to choose. If more than five match, ask for an erf number or a more complete address. If none match, say the property was not found in the current allocation schedule; that does not establish whether it has leiwater rights.

## Interpret allocations

Each property appears once and can have more than one weekly allocation in `allocations`. Include every allocation when asked for a property’s schedule. Times use the 24-hour clock in `Africa/Johannesburg`.

For “now,” treat a turn’s start as inclusive and its end as exclusive. For “next,” choose the earliest future weekly occurrence. Several zones can flow at once; return every allocation tied at the requested time and group them by zone. Before `effectiveFrom` say that the published schedule is not yet in effect. At or after `effectiveUntil`, say that it is no longer current.

## Public answer boundary

Answer only from the current schedule: current property allocations, what is flowing now, and what flows next. Do not answer historical comparisons, prior allocations, changes between seasons, property names, ownership, unallocated properties, gate configuration, inferred water routes, administrative records or research data. Direct other questions to the public site or the responsible municipal contact.
