diff --git a/docs/authoring-guide.md b/docs/authoring-guide.md index d3f486d..94bb315 100644 --- a/docs/authoring-guide.md +++ b/docs/authoring-guide.md @@ -361,8 +361,12 @@ construction-args channel — `args` configures it BEFORE `bind`: `tz` is `chrono_tz`'s own exact, case-sensitive IANA name (`"berlin"` refuses; `"Europe/Berlin"` accepts); `open` is strict zero-padded local `HH:MM` -(`"9:30"` refuses; `"09:30"` accepts) — the accepted string IS the canonical -form, no normalization. Giving `Session` no `args` at all refuses the `add` +(`"9:30"` refuses; `"09:30"` accepts); a `Count` arg (`LinComb`/`CostSum`'s +arity) is a plain positive decimal — no sign, no leading zeros (`"03"` +refuses; `"3"` accepts). The accepted string IS the canonical form, no +normalization — and note the deliberate asymmetry: each kind's canonical +form is its domain's conventional notation, fixed-width for wall-clock +times, minimal for numbers. Giving `Session` no `args` at all refuses the `add` op (`node is missing required arg "tz"`) — an arg-bearing type never silently enters the graph half-configured. `aura graph introspect --node Session` lists both declared `arg` rows with their kind and hint text before diff --git a/docs/glossary.md b/docs/glossary.md index 9370278..3abe727 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -13,7 +13,7 @@ Entries are alphabetical. ### arg kind **Avoid:** ArgKind, construction-arg type -The closed vocabulary of construction-arg value shapes (`Tz`/`TimeOfDay`/`Count`, #271) — deliberately NOT a `scalar base type`: args are bootstrap metadata, never streamed, so the two closedness axes stay separate. Each kind's accepted strict form IS its canonical form (an exact IANA name, zero-padded `HH:MM`, a plain positive decimal count) — there is no normalization layer, so a near-miss string refuses rather than being rewritten. +The closed vocabulary of construction-arg value shapes (`Tz`/`TimeOfDay`/`Count`, #271) — deliberately NOT a `scalar base type`: args are bootstrap metadata, never streamed, so the two closedness axes stay separate. Each kind's accepted strict form IS its canonical form (an exact IANA name; zero-padded `HH:MM`; a plain positive decimal count, no sign or leading zeros) — there is no normalization layer, so a near-miss string refuses rather than being rewritten. The per-kind forms are deliberately asymmetric (`"03"` refuses as a count while `"09:30"` requires the pad): canonical is each domain's conventional notation — fixed-width for wall-clock times, minimal for numbers. ### atomic sim unit **Avoid:** atomic unit, sim unit