SPB Git forge

spb/ai-atlas

Public
41commits 1branches 0releases
4.6 MBsize
maindefault branch
12 days agolast push
HTML 77.2% TypeScript 10.5% Python 9.6% JavaScript 2.5%

page 1

  1. Sat, Sep 12, 2026 22

    1. web: label the record score 'data quality'
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file +1 −1
    2. deploy: exclude per-stream build dirs and QA screenshots from sync; v1.1.0 notes
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file +75 −11
    3. 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>
      Simon-Pierre Boucher committed 12 days ago · 13 files +280 −71
    4. web: remove duplicated D3 block in client-api.ts
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file −26
    5. web: .table-scroll is a positioned container so sr-only children cannot widen the page
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file +1
    6. web D2: intelligence surfaces — frontier, price terminal, calculator, run-locally, find-a-model, open, pulse, providers 2.0, hardware 2.0, typed listings
      - /frontier flagship (SectionNav; latest majors, benchmark/price/context/open-weight/efficiency (Pareto scatter)/agentic/multimodal frontiers, movements ticker; API methodology per section; OG image)
      - /prices Price History Terminal on TerminalLayout: rail filters (provider · org · family · modality · window · sort incl. cheapest_frontier, URL state), AI Price Index strip + InteractiveLineChart (5 medians, linear/log, sample sizes in tooltip, ≥2-snapshot honesty), distribution histogram, cheapest-frontier strips, movers with %, listings/delistings, offers table with lazy per-row price history (client fetch); OG image
      - /calculator (client, same-origin /cost + /cost/context): every deployment side by side, cheapest bold ≠ verdict, price rows used + source; Context-cost tab with 128K/200K/1M/2M presets; URL state via replaceState
      - /run-locally Local AI Explorer (rail form: platform · memory presets Apple/NVIDIA/AMD + custom · GPU count · quant · context · batch · use case · openness; ?hardware=<slug> mode via /hardware/{slug}/fit; fit breakdown, artifact rows with observed/estimated tags, multi-GPU note, Estimated everywhere)
      - /find-a-model Model Finder (guided rail form → /find-a-model: why chips, observed dimensions, estimated fit, deployments in API mode, Compare/Watch; rules from the API; no single winner)
      - /open Open Model Frontier (summary strip with /methodology openness definitions, rail filters, licence permission glyphs, ranks, providers, 64 GB@4bit / 128 GB@8bit estimates, openness explorer: category bar + licence-permission matrix; OG image)
      - /pulse Ecosystem Pulse (DataStrip of counters with definitions, 7/30/90 windows, new benchmark leaders, price changes, ≥1M-context models, stats-history sparklines when ≥2 days; OG image)
      - /providers 2.0 (TerminalLayout table: models · orgs · input/output distribution range bars on a shared log axis · Δ price 30 d · ± models 30 d · features) and dedicated /providers/[slug] (aggregate strip, deployments with expandable StepChart history, added/removed, price events, features & native price keys, organizations covered, attributes with evidence, JSON-LD, OG)
      - /hardware 2.0 (rail: kind · manufacturer · memory ≥; precision/interconnect/TDP columns honest dashes), /hardware/frontier (memory & bandwidth step charts by release + per-manufacturer tables connected to /hardware/{slug}/fit counts) and dedicated /hardware/[slug] (KeyValue specs with evidence, fit table with quant/context/configuration chips, multi-unit note, JSON-LD, OG)
      - Typed listings on a new IntelListing (per-page enrichment, honest empty states with connector names): /agents (new), /tools, /datasets (used-to-train + papers from relations, access), /frameworks (canonical kind, stars sparkline from claim history)
      - Shared lib: D2 blocks in types.ts / api.ts (`intel`) / client-api.ts (`clientIntel`); reuses the D1 Deployment/Group/LeaderboardRow/LicenseInfo/Pareto shapes
      - QA: qa/d2.mjs — 33 routes × 320…1920 × dark/light (status, console errors, overflow, Estimated label, price-index chart or note), flows (offer history, mobile filter sheet, calculator tabs + URL, provider history, run-locally submit, frontier scatter), OG images
      
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 37 files +4,974 −255
    7. web D1: models terminal 3.0, model page 3.0, artifacts, model diff, compare 3.0, benchmarks 2.0 (directory · leaderboard · matrix · cost-vs-performance), families, licences, per-type OG images, qa/d1.mjs
      - /models: TerminalLayout with API facets (orgs, families, openness, canonical licences, modalities, status, years, identity trust), 7B/128K range inputs, include-artifacts toggle, understood-as chips, dense sortable table with column chooser (localStorage), keyboard row focus, inspector pane (mobile: sheet), Compare + Watch
      - /models/[slug]: identity strip + SectionNav (Overview … Provenance), identity panel, openness block from ontology dimensions, grouped benchmarks with trust/comparability + vs-leader delta, deployments table, price-history step charts with evidence, version-history transitions, hardware fit (estimated), SVG lineage tree, artifacts by kind, change history + as-of; artifact and folded-variant slugs 308 to their canonical URL
      - /artifacts/[slug], /models/[a]/diff/[b], /compare (modes, row groups, hide-identical, diff_only, use-case emphasis, per-cell evidence, stacked mobile layout)
      - /benchmarks (family-grouped directory, honesty line), /benchmarks/[slug] (comparability-group picker, trust/org/comparable-only filters, one-row-per-model leaderboard, frontier over time, definition with evidence), /benchmarks/matrix (Heatmap by within-column rank), /benchmarks/[slug]/cost-vs-performance (Pareto, client-only scatter)
      - /families, /families/[slug] (release lanes, members, lineage mini-graph, licence mix, benchmark progress), /licenses, /licenses/[key]
      - lib: D1 blocks in types.ts / api.ts (apiD1)
      
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 41 files +6,726 −487
    8. 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>
      Simon-Pierre Boucher committed 12 days ago · 4 files +62 −3
    9. docs: canonical upgrade rollout procedure (migrate 0003, seed, canonicalize dry-run/apply)
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file +12
    10. web: NEXT_DIST_DIR override for parallel dev servers/builds
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 3 files +4
    11. 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>
      Simon-Pierre Boucher committed 12 days ago · 34 files +4,815 −476
    12. Web foundation (D0): atlas-plate brand, terminal shell, command palette, evidence drawer, density, charts, watchlist, homepage 3.0
      Brand: new "atlas plate" mark (grid plate, A-as-graph constellation, timeline "now" node) shared by logo.svg,
      lockups, favicon (simplified grid), apple/PWA icons, root OG wallpaper with live counters; theme-inverting
      --brand-* tokens. Shell: header nav Models · Frontier · Benchmarks · Prices · Research · Graph · Changes · More ▾
      (keyboard menu), mobile tab bar with grouped More sheet, footer with credits line, About page rewritten.
      Command palette: commands with fuzzy match, recents, type prefixes (m: b: o: p: h:), ">" mode, theme/density
      actions. Evidence drawer (right panel / bottom sheet) fed by /provenance → /history → inline fallback, wired
      into KeyValue (slug prop) and ProvenanceInline; SpecTable/Capabilities pass slug. Density toggle
      (comfortable | compact | dense) via CSS variables; pre-paint scripts moved to lib/prepaint.ts (server-safe —
      client-module string exports reached the server as stubs). Charts: InteractiveLineChart, StepChart,
      Sparkline trend, ScatterChart, Heatmap, TimelineLanes, lineLayout. Terminal primitives: TerminalLayout,
      FilterSheet, DataStrip, Ticker, SectionNav; Sheet + Hint UI. Local watchlist + WatchButton + /watchlist.
      Homepage 3.0: compact hero, live strip with definitions, ticker, editorial grid (today, frontier moves,
      leaders, price moves, open weights, research), release timeline lanes, graph teaser, signature products.
      QA: screens.mjs shell sweep 320–1920 + touch targets, SHELL_ONLY mode; shell.mjs flows. docs/FRONTEND.md §2 §4 §9.
      
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 52 files +3,931 −659
    13. 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>
      Simon-Pierre Boucher committed 12 days ago · 33 files +2,331 −442
    14. 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>
      Simon-Pierre Boucher committed 12 days ago · 4 files +1,381
    15. 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>
      Simon-Pierre Boucher committed 12 days ago · 13 files +1,757 −133
    16. 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>
      Simon-Pierre Boucher committed 12 days ago · 4 files +350 −21
    17. Simon-Pierre Boucher committed 12 days ago · 12 files +1,624 −1
  2. Fri, Sep 11, 2026 18

    1. Worker reclaims this host's running jobs at start-up (restart-safe)
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file +10 −2
    2. admin requeue-dead: honour the dedupe partial unique index
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file +11 −3
    3. Simon-Pierre Boucher committed 12 days ago · 2 files +13 −6
    4. Simon-Pierre Boucher committed 12 days ago · 2 files +20 −4
    5. writer: normalise nested dict values before comparison
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 2 files +3 −1
    6. 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>
      Simon-Pierre Boucher committed 12 days ago · 2 files +5 −1
    7. Breakage detection only on full re-extraction; first-run crawls each connector once
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 2 files +6 −7
    8. Lint fixes
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 20 files +113 −52
    9. Simon-Pierre Boucher committed 12 days ago · 77 files +6,501 −253
    10. API polish: provenance source names, methodology labels, status vocabulary, zero-filled stats
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 7 files +106 −7
    11. Simon-Pierre Boucher committed 12 days ago · 81 files +8,142 −1
    12. LLM facts: one tier below source, plausible model names only, status vocabulary normalised
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file +34 −6
    13. Simon-Pierre Boucher committed 12 days ago · 29 files +3,317 −4
    14. Worker: acquire the concurrency slot before claiming a job
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file +8 −4
    15. Extraction schemas: tolerant coercion of LLM output (null lists, string booleans/ints)
      Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 12 days ago · 1 file +73 −11
    16. Simon-Pierre Boucher committed 12 days ago · 7 files +226 −2