@mrciphersmith/keryx 0.3.27 → 0.3.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -623,9 +623,12 @@ Grouped by what you are trying to do, not by internal module layout.
623
623
  rounds-with-cost/rounds-total count for partial coverage), project-wide
624
624
  trigger spend (never attributed to a flow — the run record carries no flow
625
625
  reference), who confirmed each acceptance criterion and who signed
626
- completion (with identity basis), and every `flow complete` attempt's gate
627
- outcomes. A figure nobody recorded is reported as "not recorded", never as
628
- zero. Writes `.metaproject/data/governance/artifacts/latest.{md,json}`, the
626
+ completion (with identity basis), every `flow complete` attempt's gate
627
+ outcomes, and each flow's acceptance coverage — how many criteria carry a
628
+ runnable `[verify: exec ...]` or `[verify: invariant ...]` marker (a flow
629
+ with no recorded kinds counts as fully unclassified; see `keryx flow ac kinds`
630
+ in the [CLI reference](docs/docs/cli-reference.md#verification-kinds)). A
631
+ figure nobody recorded is reported as "not recorded", never as zero. Writes `.metaproject/data/governance/artifacts/latest.{md,json}`, the
629
632
  same convention `keryx health run` uses; `--all-projects` also covers every
630
633
  project in the user-global registry. In the TUI, the sidebar's
631
634
  **Governance** row shows `no report — click to run`,
@@ -757,6 +760,24 @@ credential:
757
760
  - `keryx memory reflect --narrate` — a narrative summary of project memory
758
761
  - `keryx health explain <target> --narrate` — a readable explanation of a health result
759
762
  - `keryx wiki enrich` — model-written wiki pages (skips pages without a credential)
763
+ - the model-tier fallback — when discovered model names alone cannot say which model
764
+ is bigger, one short call on the light tier of your own provider orders the
765
+ candidate models (see below)
766
+
767
+ **Model tiers follow the session model and its generation.** `light`, `standard`
768
+ and `deep` are anchored on the model your session runs: `standard` is that model,
769
+ `deep` is the next size step above it, `light` the next size step below it (an Opus
770
+ session with Sonnet and Haiku discovered gets Sonnet for light, Haiku only when
771
+ nothing sits between). Within one family a newer version outranks an older one, and
772
+ an older-generation model that costs more than the session model is never picked as
773
+ `deep`. When the size words and versions cannot settle a tier (the ranking is refused,
774
+ or the only larger candidate is an older generation), keryx asks a small fallback
775
+ agent to order the candidates. It sees only the discovered model ids and the prices
776
+ in your model profiles, never a task, a diff or your text. Its answer is validated
777
+ (ids it was not given are dropped), cached by a hash of the catalogue, and recorded as
778
+ `tier_resolution: agent-ranked`; a failure, timeout or malformed answer keeps the
779
+ session model. `keryx review tier` prints the resolution, and the shell's tier row
780
+ shows tier, source and reason for every dispatch.
760
781
 
761
782
  Semantic embeddings and ML security classifiers are not bundled in the current
762
783
  release. Memory search uses lexical retrieval, and security scanning uses