f449cb06f2
A second, closed construction channel beside the scalar bind seam (refs #271): ArgKind (Tz / TimeOfDay / Count — deliberately NOT ScalarKind, which stays invariant 4's streamed set), ArgSpec, ArgValue, ConstructionArg (verbatim strict-form strings, the id-bearing twin of BoundParam), ArgOpError, and an ArgsState on PrimitiveBuilder: pending(name, doc, specs, make) declares an arg-bearing recipe that is introspectable but not constructible; try_args validates strictly (exact IANA name, zero-padded HH:MM, plain positive decimal — the accepted form IS the canonical form, no normalization layer), then runs make and returns the configured builder. build() on a pending builder panics — the bind panic-contract twin; the data path always goes through try_args. chrono-tz enters aura-core for the typed Tz value (already a workspace dependency of four crates; typed values at the seam beat a validated-string re-parse split across two coupled sites). One test per ArgOpError variant plus strict-form refusal pins.
17 lines
485 B
TOML
17 lines
485 B
TOML
[package]
|
|
name = "aura-core"
|
|
edition.workspace = true
|
|
version.workspace = true
|
|
license.workspace = true
|
|
publish.workspace = true
|
|
|
|
[dependencies]
|
|
serde = { workspace = true }
|
|
# ArgValue::Tz carries chrono_tz::Tz (the closed IANA table, exact names only) —
|
|
# already a workspace dependency of four other crates (see docs/specs/
|
|
# construction-args.md § Dependency note).
|
|
chrono-tz = { version = "0.10", default-features = false }
|
|
|
|
[dev-dependencies]
|
|
serde_json = { workspace = true }
|