| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(catalog): verify signed cloud facts and freeze dispatch prices Add an optional signed catalog layer through the existing config, provider lake, route resolver and dispatch-pricing receipt. Cloud prices are captured at admission and remain stable after refresh, disable and session reload; old turns without a quote cannot borrow later cloud prices. Provider live rosters, exact identities/endpoints, hand tiers and billing modes retain authority. Preserve separate legacy Chat and Anthropic route identities. Bound and authenticate HTTP/disk/cache envelopes, applicability, expiry and rollback history. One ticket gate rejects superseded callbacks and guards publication with atomic cache writes. Reject unsafe file inputs, untrusted future cache hints and provider cache attempts to claim cloud/config price authority. Keep cloud endpoint scope static, independent of operator URL overrides, and retain the existing provider-live wire receipt compatibility. Add fail-closed web transport, strict HEAD/ETag handling, bounded KV reads, fixture validation and guarded authoring. Production trust tables remain empty and cloud facts default off. Public test keys do not activate a feed. Generated website facts remain reserved for combined release integration. Validation on final source: - Rust selected suite: 3396 passed, 0 failed, 9436 skipped (674 config, 17 cloud-facts, 2705 TUI). - Web: 440 passed across 49 files; TypeScript, generated route types, scoped ESLint and cloud-facts fixture/key parity passed. - Production/test cargo check, cargo fmt and diff whitespace checks passed. - Two negative controls: 0 passed, 2 failed as required; digest rejection and late-publication guards restored and hash-verified before final tests. - Earlier executed TUI run: 2509 passed, 2 failed; first combined run: 3394 passed, 1 failed. Fixed status width, explicit MiniMax PAYG fixture authority and the actual legacy identity-parser bug; logs retained. - Required root npm test / check:web both fail: those scripts are absent. Web check:facts reports deferred generated crate/credential-label drift. Local macOS fixture evidence only; Windows checks are source-reviewed. No hosted CI, live provider calls, production key reads, remote database changes, public push, publication or deployment are claimed. Local commit uses an empty per-command hooks path to omit optional session capture; shared hooks configuration is unchanged. Harvested and adapted from PR #5752; donor head 98785c585c3f4f04809438024eac760dda4700fc. Excludes stale synchronization merges and unrelated release history. Exact ownership, hashes, commands and failure logs: /private/tmp/cw-5752-verification-20260907/REPORT.md Co-authored-by: Hmbown <101357273+Hmbown@users.noreply.github.com> | 16 天前 | |
Show the supported model catalog on /models with recency sorting The public site advertised providers but never the models themselves, and nothing carried a notion of recency. facts-lib now derives a ModelFact list: SEED_MODEL_IDS from model_registry.rs merged with the bundled catalog's context/reasoning metadata, provider-prefixed wire spellings collapsed to one canonical row, and an `addedAt` per model from a single path-bounded -G/-p pass over the declaration paths (crates/config, crates/models, the registry, TUI model config). The date is "first entered the source" — the page says so plainly rather than claiming provider release dates. /models renders a sortable table (name, provider, context, added) defaulting to most recently added, with aria-sort, localized headers, and missing values pinned last in both directions. Drift coverage: check-facts compares models, isRepoFacts validates them, and the remote path carries them through the checked-in snapshot like toolCount since git history isn't fetchable. Verified: prebuild regenerates in ~1s (74 models, all dated), check:facts OK, vitest 51 files/471 tests, lint clean, next build clean; rendered en/zh + 390px, sort toggles verified in the browser. | 8 天前 |