Follow-up to #177 (ISIN capability, paxman/capabilities/ISIN/).
Status quo: validation is structure + check digit (ISO 6166:2021 PARSER) plus prefix membership (ANNA Guidelines V25 LOOKUP_TABLE). Whether an ISIN is actually allocated/registered is not checked — liveness was explicitly deferred.
Ask: add an opt-in rule (e.g. kind=registry citing the ANNA Service Bureau / ISIN Lookup Service) gated behind requires_features (dropped when the feature is absent → INVALID per the two-locus gating model), following the deferred-liveness pattern used by sibling capabilities. Must stay offline/deterministic by default; network-backed checks, if any, belong behind the feature gate, never in the default path.
Acceptance sketch: default contract behavior unchanged (all existing vectors in tests/integration/test_isin_pipeline.py green); feature-gated contract exercises the new rule with pinned fixtures, no network in CI.
Follow-up to #177 (ISIN capability,
paxman/capabilities/ISIN/).Status quo: validation is structure + check digit (ISO 6166:2021 PARSER) plus prefix membership (ANNA Guidelines V25 LOOKUP_TABLE). Whether an ISIN is actually allocated/registered is not checked — liveness was explicitly deferred.
Ask: add an opt-in rule (e.g.
kind=registryciting the ANNA Service Bureau / ISIN Lookup Service) gated behindrequires_features(dropped when the feature is absent → INVALID per the two-locus gating model), following the deferred-liveness pattern used by sibling capabilities. Must stay offline/deterministic by default; network-backed checks, if any, belong behind the feature gate, never in the default path.Acceptance sketch: default contract behavior unchanged (all existing vectors in
tests/integration/test_isin_pipeline.pygreen); feature-gated contract exercises the new rule with pinned fixtures, no network in CI.