v3.12.0 — predictalot v0.2.1 → v1.0.1 + merged talkies voices endpoint

Minor release. Two unrelated streams bundled.

PREDICTALOT v0.2.1 → v1.0.1
  - BREAKING (direct REST callers only): FM forecast / ensemble /
    models endpoints move from /v1/<type>/… to /v1/timeseries/<type>/….
    No upstream redirect compat layer. MCP tool names unchanged so MCP
    callers are unaffected.
  - New sibling family /v1/tabular/* — 9 supervised backends (lightgbm,
    xgboost, hist-gbt, random-forest, logistic, mlp, svm-rbf, knn,
    naive-bayes) × 3 modes (direction, value, quantile) + 3 meta-
    learners (calibrated, stacking, diversified). REST-only in v1.0.x
    (not MCP-wrapped upstream).
  - FM per-call escape hatches: ForecastConfig.extra + ensemble
    memberOverrides.
  - v1.0.1 itself is a docs-only patch over v1.0.0 (no source changes,
    no behavior change — upstream restructured the README into
    docs/{timeseries,tabular,mcp,configuration,architecture,accuracy,
    errors}.md). Our doc links repointed at the new tree.

MERGED /v1/audio/voices ENDPOINT
  - mcp aggregates talkies CPU + CUDA voice catalogs (130 voices with
    both enabled) and annotates each voice with the LiteLLM model
    alias(es) so callers go straight from voice pick to /v1/audio/
    speech without a second lookup. Tolerates either upstream being
    unconfigured or unreachable.
  - Nginx gains a `location = /v1/audio/voices` block proxying to
    mcp:8000 before the LiteLLM catch-all (LiteLLM doesn't route this
    non-OpenAI-standard endpoint).
  - proxq pathFilter narrowed from `^/v1/audio` to the three explicit
    inference paths so the listing endpoint isn't accidentally queued
    under /q/.

Live-verified: 16/16 predictalot tests green; old /v1/<type>/ paths
404, new /v1/timeseries/<type>/ paths 200; tabular surface reachable
at /v1/tabular/backends; merged voices endpoint returns 130 voices.

Full per-file breakdown in CHANGELOG.md.