KeiSeiKit-1.0/_primitives/_rust/kei-runtime/src
Parfii-bot 1bc6fbf4e3 fix(substrate): E3 — CLI contract compliance (exit codes + invoke Err)
Four audit findings on CLI contract violations per locked §Runtime schema:

- crit#7: invoke returned Ok with error payload — now returns
  Err(InvokeError::NotImplemented) → exit 64
- crit#5: typed errors collapsed via anyhow::anyhow!("{e}") in kei-task —
  replaced with CliError { code, msg } + classify_*_error helpers;
  validation errors exit 2, storage errors exit 1 (spec-compliant)
- crit#8: lint.rs wikilink parser accepted [[[foo]] — strict parse_wikilink
  from kei-atom-discovery used; emits finding for malformed entries
- crit#15: draft-07 detection was substring match — is_draft07_uri exact
  match against canonical URIs only

Tests: 4/4 kei-runtime (was 2; +2 invoke exit-code tests) + 8/8 kei-task
(was 7; +1 empty-title exit-2 test) = 12/12 green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 00:49:49 +08:00
..
discover.rs feat(stream-d): kei-runtime — discover + validate + lint (invoke stub) 2026-04-23 00:09:58 +08:00
invoke.rs fix(substrate): E3 — CLI contract compliance (exit codes + invoke Err) 2026-04-23 00:49:49 +08:00
lib.rs feat(stream-d): kei-runtime — discover + validate + lint (invoke stub) 2026-04-23 00:09:58 +08:00
lint.rs fix(substrate): E3 — CLI contract compliance (exit codes + invoke Err) 2026-04-23 00:49:49 +08:00
main.rs fix(substrate): E3 — CLI contract compliance (exit codes + invoke Err) 2026-04-23 00:49:49 +08:00
validate.rs feat(stream-d): kei-runtime — discover + validate + lint (invoke stub) 2026-04-23 00:09:58 +08:00