v0.2.9
Fixed
-
Go 1.26.6 security toolchain.
go.modnow 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 identifycompile_doc_timeoutfrom 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'sprompts/directory now take effect for
standardsage-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 withSQLITE_BUSY_SNAPSHOTmid-callback — the
cross-handle contention class behind hosted CI flakes. The writer DSN now
uses_txlock=immediate, so bothWriteTxandBeginWritetake 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
withBUSY_SNAPSHOTflakes. 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/enginenow
exposesWithCompileProvider, allowingWorkspace.Compilecompletions to
use a caller-ownedpkg/provider.Providerwithout storing its credential in
config.yaml. ExistingWithProviderbehavior 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.yamlrecords every standard with owner,
witness, purpose/authority evidence, diagnostics, and qualification state;
ci/package-ownership.yamlpartitions all Go packages exactly once;
ci/platform-contracts.yamlinventories 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 ciis 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-raceis 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 theCI requiredaggregate, which is
unchanged. Current required jobs remainrequired-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 cistays mandatory local evidence, and a green
CI requiredon the latest PR SHA is the gate maintainers hold before
merging — a policy gate today, mechanical once branch protection requires
the check onmain.