-
Sat, Sep 12, 2026 12
-
API 1.1 follow-ups: per-database cache namespace (frontier×price fix), pulse/index items, provider deployments, best_price, matrix/pareto fields
…
Root cause of the null cheapest_frontier: the Redis API cache was not scoped to the database, so the dev API (:8331) and the production-copy API (:8332), which share redis db 5, served each other's cached bodies and the cached frontier id set — prod joined dev ids against its prices (0 rows) while `sample.frontier_offers` came from a body cached by the other process. Cache keys are now `aia:api:<sha1(DATABASE_URL)[:8]>:…` and the frontier id set is re-validated against live canonical models on every cache hit. Regression test asserts cheapest_frontier / sort=cheapest_frontier / price_frontier are non-null whenever frontier offers exist. Also: PRICE_CHANGED old/new values are {input,output} dicts → price_delta() (pulse median_percent, pulse/index/frontier items with % and provider); /prices/index 30-day counters → {count, items[], definition}; /providers/{slug} deployments + removed (90 d); /deployments status=active|delisted|all (current=0 ⇒ all); framework/library kind (normalised) + dataset summary attributes + license_key derived on read; /open new_30d by release_date (first_seen_at only when unknown); /models best_price (one lateral join); /families benchmark_best with scores (list + members); /benchmarks/matrix since/until on release_date and observed_at/evaluated_at per cell; /pareto points carry context_length, parameter_count, release_date. docs/API.md updated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> -
OpenRouter routers are products, not models; official-org quantisations are artifacts with a same-org canonical (None when unsure)
…
`openrouter/*` ids (auto, auto-beta, pareto-code, free, fusion…) → `product` entities (kind router) operated by OpenRouter, price booked against the product when not dynamic. Hugging Face: a quant/precision token in the repo name makes the repo an artifact even under the developer's own org (nvidia/Gemma-4-31B-IT-NVFP4, tencent/HY-MT1.5-1.8B-FP8, LiquidAI/LFM2.5-230M-GGUF, black-forest-labs/FLUX.2-klein-4b-fp8); canonical = the model built from the stripped name under the family's developer (medium confidence), or None when nothing can be stripped or the developer is unknown — never an invented model. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
canonicalize: re-home benchmark results onto registry variant benchmarks (config.variant/board match, LiveBench category:<Name> → livebench-<slug>, aider well-formed), recompute keys/current rows and evaluated_on; family slugs use <slug>-family on collision and existing families are re-slugged with the old slug kept as alias
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
API 1.1 (Stream C): canonical model universe, comparability-grouped leaderboards, deployments & cost, intelligence surfaces, admin workbenches
…
Existing routes (additive, v1 shapes kept): /models canonical universe + include=artifacts, family_id join, canonical licence matching, families/licenses/trust facets, /models/{slug} accepts artifacts and reports redirected_from; EntityDetail adds family, artifacts, deployments, identity, licence, openness, version_history, grouped benchmarks and runs in <= 4 connection groups; /stats adds organizations_total, artifacts, model_families, change_events_live_24h and counter definitions; /changes, /changes/daily ("Today in AI 2.0" with group_key folding), /timeline, entity timelines and /diff default to is_backfill=false on occurred_at (include_backfill, date_field restore v1); /benchmarks exposes family/variant/metric/direction/groups/trust_mix and resolves aliases; /compare groups benchmark dimensions by (benchmark, metric, config_key) with comparability, diff_only and mode; /prices adds family/org/modality filters and sort=cheapest_frontier; /prices/index becomes the AI Price Index; /providers adds distributions, 30-day churn, organizations_covered, features_supported; /search compiler v2 (compiled/sort/residual/unrecognised, org verified against aliases, guarded casts, FTS fallback when pgvector is absent); /methodology, /trending?kind=. New routes: /benchmarks/{slug}/leaderboard, /benchmarks/{slug}/frontier, /benchmarks/matrix, /models/{a}/diff/{b}, /deployments, /cost, /cost/context, /frontier, /pareto, /pulse, /open, /find-a-model, /run-locally, /hardware/{slug}/fit, /families, /families/{slug}, /graph/explore, /time-machine, /claims/{id}, /entities/{slug}/claims, /entities/{slug}/provenance/{property}, /licenses, /licenses/{key}; admin: /admin/quality, /admin/entity-resolution (GET + POST decisions via merge_entities mode= when available), /admin/anomalies, /admin/extractions/{snapshot_id}, /admin/quarantine (501 until services.canonical ships), /admin/audit, /admin/runs/{run_id}/rollback, /admin/cache/flush?after_run=1. Services: frontier.py (comparability groups, one-row-per-model leaderboards, frontier model set, leader_at), finder.py, pareto.py, cost.py, hardware_fit.py (architecture-aware KV cache, observed artifact sizes, multi-GPU), search.py v2, stats.py definitions. Security/perf: rate_limit("admin") before require_admin, failed-auth limiter 10/min/IP, x-forwarded-for only with AIA_TRUST_PROXY, set_limit GUC leak removed, weak ETag + Cache-Control + 304 on public GETs, admin audit log on every admin call. EXPLAIN ANALYZE on the production copy: every read path < 20 ms, no index migration needed. Docs: docs/API.md rewritten as the 1.1 contract (changelog, 1.1 additions, semantics changes, deprecations: none). Tests: tests/test_api_v11.py (contract) and tests/test_api_services.py (pareto, cost, compiler, hardware fit); 44 API tests pass. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> -
resolver: rename reserved LogRecord key 'name' in alias-collision log; artifacts are published, not developed: writer redirects develops→artifact to published_by, canonicalizer closes historic develops edges into artifacts and re-emits published_by
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
scheduler: nightly canonicalize --apply (03:30 local, Redis lock 2 h) + light pass every 6 h with one-line summary; full API cache flush after each connector run documented; taxonomy: Apache Software License/Apache License → Apache-2.0, BSD License → BSD-3-Clause, framework kind 'model' and org_kind 'organization' no longer reported as unmapped
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
Connectors + registry on the canonical ontology (Stream B): artifacts, effort variants as configurations, benchmark families, identity helper
…
Hugging Face: repositories are models or artifacts (quantization / conversion / packaging) with `canonical` → base model (base_model tag or analysed name, family org), `family` hints, canonical licence (+license_raw), `access: gated|open` instead of openness=restricted, weights_available + derived openness, modalities from pipeline tags, parameter_count kept on artifacts only; converters `publish`, never `develop`. Leaderboards: Artificial Analysis / LiveBench / aider / SWE-bench fold effort variants ("(xhigh)", "-thinking-64k-high-effort", non-reasoning) into the base model with the setting in config; LiveBench categories become `livebench-<category>` benchmarks; aider well-formed rate → `aider-polyglot-well-formed`; AA GPQA → gpqa-diamond, τ² → Telecom; trust_level / variant / run_group on every result; bookkeeping out of config; free-text tags are aliases, identifiers only for trusted pinned vendor ids. New shared `connectors/_identity.py` (provider prefixes, first-party patterns, effort stripping with size-tier guard, family hints). Registry: benchmarks gain family / variant / version / family_head / canonical metric / bounds / higher_is_better / harness / comparability_note + 14 entries (gpqa-diamond, aime-2024, swe-bench-pro, arc-agi-2, terminal-bench-2, mmteb, livebench ×7, aider-polyglot-well-formed); seed writes them and `variant_of` relations, org_kind from `kind`. Organisations: kind + country fields, upstage / stepfun / kwaipilot / kuaishou / thinking-machines / lg-ai-research / xiaomi / inclusionai entries with hub aliases. Repositories: canonical kinds, agents (agent_kind) and tools get their own entity types. OpenRouter: prices booked on the OpenRouter provider only (features.upstream_provider), `created` → openrouter_listed_at (no release_date), canonical modalities, identity helper. Provider pricing: fireworks_model_id (+ legacy scheme), org from the id, family hints. Labs: no hard-coded Anthropic modalities/tool constants (table-driven), Google pdf → document + google_model_id, canonical licence/status/ capabilities/api_aliases helpers in labs/_common.py, family_model hints everywhere. arXiv/OpenReview: researchers only with an identifier (ORCID / OpenReview profile). GitHub/PyPI: canonical kind (+kind_raw), licence keys. docs/CONNECTORS.md rewritten on the canonical vocabulary. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> -
aia canonicalize: duplicates → variants → artifacts → families → licences → taxonomy → results → events → anomalies (dry-run by default, idempotent --apply); aia anomalies; aia quarantine list|release|discard
…
Every step plans from reads and reports counts + examples; --apply executes the plan through merge_entities / upsert_relation / a tier-2 derived FactWriter. No deletes, snapshots untouched, a second --apply is a no-op. Optional entity scope for targeted runs and tests. docs/CANONICALIZATION.md documents every rule, what is never done, counting rules and how to re-run. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
SDK hardening: SSRF guard with per-hop redirect validation, run_id on every fact, same-source loophole closed, taxonomy at write time, result comparability, event semantics, hierarchy hints, quarantine
…
- fetch: validate_destination() on every request and redirect hop (max 5, manual loop): non-http(s), localhost/.local/.internal, RFC1918, loopback, link-local (metadata), CGNAT, IPv6 loopback/link-local/ULA, unspecified → FetchError("blocked destination") - facts: facts_to_json / facts_from_json (tagged datetimes) for quarantined runs - writer: run_id/source_key/is_first_run; a claim supersedes only when tier <= current or same source AND same extractor (LLM never overwrites deterministic from the same URL); licence/openness/modalities/status/kind/org_kind normalised via the ontology with value_raw + taxonomy_mappings, same assertion in another spelling re-encoded in place (no event); license_key claim; results get config_key, trust_level, variant, run_group, extractor, effort config for variant refs, one current row per (model, benchmark, metric, config_key), out-of-range scores → confidence low + anomaly; events get recorded_at, is_backfill (classify_backfill), group_key, deterministic importance; family/canonical hints materialised (family_id, canonical_id, artifact_kind, member_of_family, artifact_of); NEW_ARTIFACT 0, NEW_MODEL_FAMILY 1; conflicting claims recorded once; derived writers never open review items and mark their events backfill - resolver: model/artifact compatible lookups; keep_separate decisions honoured; digit-collapsing aliases require the same variant_key; first_seen_hint → first_seen_at = min(now, hint); resolve_variant() folds evaluator-only effort variants onto the canonical model - connector: run_id/source_key/first-run flag into the writer; --url reprocess rebuilds Targets from documents.meta._target (key, doc_type, meta, needs_llm, entity persisted at first fetch); quarantine for tier ≥ 2 connectors (rolling median baseline of the last 5 full runs: new entities > max(50, 1.3×), prices > 3×, entities < 0.8× / results < 0.5× on full extraction) → quarantined_runs + review item, nothing written - services/events: classify_backfill, group_key_for, importance_for · services/anomalies: record / run_checks / list_anomalies - merge: modes merge|alias|variant|family_member, keep_separate refusal, org-type and model/artifact pairs, dedupe/config_key recompute with collision handling, one current result per key, embeddings/sources/domains/review_queue/family_id/canonical_id re-pointed, resolution_decisions + admin_audit_log rows - handlers: LLM extraction writer carries the snapshot's run_id Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> -
ontology: official family orgs, effort-config helpers, chained/budget effort suffixes, hyphenated family versions, property-level normalisation, run keys split from task keys
…
- models: FAMILY_ORGS / official_orgs / is_official_org; effort_config() and base_name() shared by the writer and the canonicalizer; effort suffixes chain ("-thinking-64k-high-effort"), LiveBench budgets ("32k thinking", "(no thinking)"); "max"/"fast"/"instant" are model tiers (Qwen3-Max, GPT-5.1-Codex-Max, Grok 4.1 Fast), no longer effort markers; family_release_hint reads "gpt-5-4" as 5.4 and never a size (38B) - taxonomy: normalize_property(entity_type, prop, value) → (canonical, value_raw, mappings); unknown values kept, mapped to NULL - benchmarks: RUN_KEYS (release, index_version, version, dataset_revision) leave config_key so a newer run replaces the older one; they are condition keys for comparability (partially comparable) - tests/test_ontology.py: licence table, openness derivation, taxonomy, 22 model names, comparability trio, metric bounds/trust Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> -
Canonical upgrade foundation: ontology package (licences, openness, taxonomy, model naming, benchmarks, anomalies), migration 0003, Facts hierarchy hints, implementation audit
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
-
Fri, Sep 11, 2026 18
-
Worker reclaims this host's running jobs at start-up (restart-safe)
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
admin requeue-dead: honour the dedupe partial unique index
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
Worker sticks to one job kind while any remain; embeddings only queued when no extraction is pending (no model thrash on llm-api)
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
LLM gateway: wait-and-retry on 503/429 while the local server loads or swaps models; one LLM job at a time in production
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
writer: normalise nested dict values before comparison
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
SDK: never lose a failed target silently, order-insensitive list comparison, unique result dedupe suffix; scheduler runs connectors sequentially; ecosystem connector fixes and registry fragments
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
arXiv: documented robots exception for the export API (arXiv API Terms of Use), 4 req/min
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
Breakage detection only on full re-extraction; first-run crawls each connector once
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
Lint fixes
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
Connectors: 11 official labs + Hugging Face, arXiv, OpenReview, GitHub, PyPI, OpenRouter, provider pricing, leaderboards, hardware specs; SDK fixes (tree-preserving text extraction, entity unescape, resolver identifier guard)
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
API polish: provenance source names, methodology labels, status vocabulary, zero-filled stats
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
Web core: Next 16 app (design system, shell, home, search, models, companies, entity pages, changes, explore, methodology, sources, developers, sitemap); provider slugs -api
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
LLM facts: one tier below source, plausible model names only, status vocabulary normalised
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
API v1: FastAPI routers per docs/API.md (public + admin), detail builder, hardware fit, entity merge, indexes, tests
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
Worker: acquire the concurrency slot before claiming a job
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
Extraction schemas: tolerant coercion of LLM output (null lists, string booleans/ints)
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
Deploy: mld manifest for M2M32c, render/first-run scripts, off-node backup, DEPLOY.md; embedding model id
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
AI Atlas foundation: schema, connector SDK, archive, temporal writer, LLM gateway, scheduler, registry, CLI, Anthropic connector
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-