Skip to content

v0.2.9

Choose a tag to compare

@github-actions github-actions released this 14 Aug 07:35
· 9 commits to main since this release
78b7157

Fixed

  • Go 1.26.6 security toolchain. go.mod now pins Go 1.26.6 for builds,
    addressing GO-2026-6218 (CVE-2026-56860, quadratic-time URL path
    resolution) and GO-2026-6090 (CVE-2026-56862, TLS KeyUpdate denial of
    service).

  • Bounded source context for high-fanout concepts (#146). buildSourceContext
    now caps the total assembled source context to a configurable token budget
    (default 100,000 tokens). Sources are prioritized by match density so
    high-relevance sources are kept when budget pressure forces truncation. A
    visible warning is logged with concept name, sources kept/dropped, and budget.
    Previously, a concept cited across many documents could silently exceed the
    model's context window, producing a 400 error and no article.

  • Deterministic document-budget timeout attribution. Summarization and
    triple extraction now identify compile_doc_timeout from the exact child
    context deadline instead of comparing a separately started elapsed-time
    counter. Parent cancellation and provider timeouts remain distinct, and typed
    timeout diagnostics no longer report consumed time below the configured
    limit.

  • Project prompt overrides apply to every compilation surface (#143).
    Overrides in a workspace's prompts/ directory now take effect for
    standard sage-wiki compile, serve background worker cycles, and MCP/REST
    on-demand topic compilation.

  • SQLite writer reservation at transaction begin. A second handle on the
    same SQLite path could enter a write transaction while another handle held
    a deferred snapshot, commit, and force the paused handle's later snapshot
    upgrade to fail with SQLITE_BUSY_SNAPSHOT mid-callback — the
    cross-handle contention class behind hosted CI flakes. The writer DSN now
    uses _txlock=immediate, so both WriteTx and BeginWrite take the
    writer lock at BEGIN, where the existing busy-handler arbitration applies,
    instead of at first write.

  • Deterministic idle-close and worker-cycle tests. The engine manager's
    idle-close tests drive the idle evaluator directly with explicit
    timestamps instead of real-time sleeps, and the compile worker harness now
    mirrors serve backend ownership (one handle, same backend, for every pass
    store) — removing the stray second handle that distorted worker-cycle runs
    with BUSY_SNAPSHOT flakes. The cross-handle production class stays
    covered by the dedicated two-handle storage test.

Added

  • Opt-in in-memory compile providers for Go embedders. pkg/engine now
    exposes WithCompileProvider, allowing Workspace.Compile completions to
    use a caller-owned pkg/provider.Provider without storing its credential in
    config.yaml. Existing WithProvider behavior remains search-only, and
    callers that do not opt in remain config-backed. Injected completion errors
    fail closed without config fallback; usage accounting, compile-key mode
    separation, structured-output validation, and synchronous-mode enforcement
    remain active.

  • CI responsibility foundation (advisory). Quality responsibility is now
    machine-readable: ci/standards.yaml records every standard with owner,
    witness, purpose/authority evidence, diagnostics, and qualification state;
    ci/package-ownership.yaml partitions all Go packages exactly once;
    ci/platform-contracts.yaml inventories platform-sensitive source against
    focused Windows/macOS contracts. A fail-closed validator
    (tools/civalidate) checks these manifests against the live tree — exact
    package partition, aggregate membership, Make targets, determinism roles,
    and platform-signal ownership — and a Go-test JSON summarizer
    (tools/testsummary) produces actionable annotations while preserving the
    source command's exit status. make ci is redefined as the accurate local
    fast gate (formatting, module verification, builds, vet, new-issue lint,
    responsibility validation, determinism, generated/API/skill drift,
    translation checks, non-race tests) and prints the hosted-only evidence it
    does not cover; make ci-race is the canonical local race contract. A new
    advisory CI job runs the checker self-tests and live validation: it may
    turn red but is deliberately outside the CI required aggregate, which is
    unchanged. Current required jobs remain required-requalifying; target
    jobs are candidates that must earn promotion through the qualification
    window.

  • Hosted CI aggregate check-run (CI required). The main CI workflow
    now emits a single stable check-run that explicitly inspects every
    required job (build, parity, go-test, fuzz-short, skill-drift, postgres,
    minio, lint, frontend, translations) and reports failure unless all
    succeed — including on runs where a dependency failed. One stable status
    for pre-main merges: make ci stays mandatory local evidence, and a green
    CI required on the latest PR SHA is the gate maintainers hold before
    merging — a policy gate today, mechanical once branch protection requires
    the check on main.