Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 10:40

Changelog

Features

  • 2f8d7cb feat(agents): Stage 8 tool-use AgentBrain with bounded loop and safe Tool seam
  • 5837e09 feat(app): wire Config into a ready router (catalog, selector, getMe boot, lifecycle) (ADR-0017 §0)
  • e400f61 feat(brain): orchestrator + WithModelID decorator + demo-brain (ADR-0014)
  • 4e9afc1 feat(bus): event bus + additive router event hook (ADR-0023, Stage 14 Phase 1a)
  • 65e0d6e feat(channel): add Channel interface, Manifest, and Registry
  • d5f574b feat(channel): add generic webhook adapter
  • 4ae51ed feat(cmd): thin korvun main wiring config + app + signal lifecycle (ADR-0017 §0)
  • 9b98a5e feat(config): JSON deployment descriptor parse + validate (ADR-0017 §1)
  • ac88478 feat(controlapi): Stage 13 read-only control API (ADR-0022)
  • d158918 feat(conversation): ConversationStore interface + in-memory impl + Brain injection (ADR-0018)
  • 18debff feat(conversation): durable SQLite conversation store (Stage 9 ADR-B)
  • 3ad59bf feat(envelope): add Keyboard, Callback, CallbackAck (Phase 2E.4)
  • 02e666c feat(envelope): add PartType.Location (Phase 2E.3)
  • b5b711c feat(envelope): add PartType.Reaction and OperationKind.OpSetReaction (Phase 2E.7)
  • b16d59a feat(envelope): add base domain types
  • 5af6a98 feat(envelope): add identity generation and builder
  • 371a4d4 feat(envelope): add validation and JSON serialization
  • 7be2f08 feat(envelope): introduce Operation, migrate CallbackAck (Phase 2E.6)
  • 1c4eb2c feat(liveview): SSE live-view + embedded UI; wake the event bus (ADR-0024, Stage 14 Phase 1b)
  • 3d6a815 feat(model): add cloud-shaped sentinels for Phase 4.2 (ADR-0010 commit A)
  • 2862476 feat(model): types + Model interface + ValidateRequest (Phase 4.1 commit 1)
  • 3892b5c feat(observability): add Metrics seam + Prometheus impl (ADR-0020 step 2)
  • 0e80292 feat(observability): admin HTTP server with /metrics + /healthz (ADR-0020 step 3)
  • 2937a43 feat(observability): standardize slog funnel fields (ADR-0020 step 1)
  • 0d4e79f feat(observability): wire metrics to the existing funnels (ADR-0020 step 4)
  • 9aabdb5 feat(packaging): hardened systemd unit + signature-verify docs (ADR-0026)
  • 901a022 feat(policy): consensus reducer + demo-policy (ADR-0013)
  • 6f56795 feat(policy): pre-dispatch privacy selector — per-Brain SelectModels (ADR-0015)
  • 62f4c24 feat(policy): priority reducer + Decision/Policy types (ADR-0012)
  • a8075f9 feat(release): packaging + release pipeline (GoReleaser, --version) (ADR-0025, Stage 15)
  • 6a4814b feat(release): sign checksums with keyless cosign + SLSA provenance (ADR-0026)
  • 0d69683 feat(router): implement Phase 3.1 routing core
  • bc01d29 feat(router): implement Phase 3.2 concurrency and resilience
  • 350d8c8 feat(router): inbound pump draining Channel.Receive into DispatchInbound (ADR-0017 §2)
  • 5fae774 feat(telegram): Adapter struct, functional options, New validation (Phase 2E.8 sub-A)
  • c0b7f2f feat(telegram): Send dispatch over the botClient interface (Phase 2E.8 sub-B)
  • 9413e4f feat(telegram): Start/Stop lifecycle, HTTP server, SetWebhook/DeleteWebhook (Phase 2E.8 sub-E)
  • b6730cc feat(telegram): add outbound keyboard markup and callback ack (Phase 2E.4)
  • 33cefd1 feat(telegram): dispatchUpdate with conversion and bounded backpressure (Phase 2E.8 sub-C)
  • 112a630 feat(telegram): edit/delete operations + inbound edited_message (Phase 2E.6)
  • 3f3293a feat(telegram): hand-rolled webhook handler with constant-time secret check (Phase 2E.8 sub-D)
  • 4554827 feat(telegram): implement Channel adapter for inbound and outbound
  • 594f7de feat(telegram): map Location inbound/outbound to Envelope (Phase 2E.3)
  • 3f76e50 feat(telegram): map inbound MessageReaction to Envelope (Phase 2E.7)
  • ad583e1 feat(telegram): map inbound callback_query to Envelope (Phase 2E.4)
  • 581d0d5 feat(telegram): map inbound media to Envelope (Phase 2E.1)
  • a241bc5 feat(telegram): map outbound OpSetReaction to SetMessageReactionParams (Phase 2E.7)
  • 57c2cf5 feat(telegram): map outbound media to Telegram Send*Params (Phase 2E.2)
  • 027e981 feat(telegram): parse bot_command entities into Meta (Phase 2E.5)
  • be5a48d feat: merge Stage 1 — canonical Envelope

Bug fixes

  • afaf4f8 fix(agents): /review hardening — empty-reply fallback, fenced tool line, calc bounds
  • 0714475 fix(conversation): atomic AppendTurns for contiguous turn groups (ADR-0018 review)
  • 7078289 fix(conversation): persist final turn through graceful shutdown (ADR-B review)
  • 51b86cb fix(observability): dropped-source registration returns error, never panics
  • e69502e fix(sqlite): build a valid file: DSN for Windows drive-letter paths
  • de6c45b fix(telegram): close the close(inbound) race with in-flight dispatchUpdate (Phase 2E.8 review fix)

Others

  • 5640e1c Add Apache License 2.0 to the project
  • 41f5ca1 Add copyright notice for 2026
  • f9c709e Initial commit
  • ab04ee3 Merge branch 'chore/repo-hygiene': professional repo presentation
  • 5e9baff Merge branch 'feat/2e8-webhook-lifecycle' — close Stage 02-EXT
  • 34d699d Merge branch 'feat/agents': Stage 8 tool-use agents (ADR-0021)
  • 464f8c2 Merge branch 'feat/bus': event bus + router hook (ADR-0023, Stage 14 Phase 1a)
  • 057ee73 Merge branch 'feat/conversation-store': conversation store (Stage 9 ADR-A)
  • cee4a20 Merge branch 'feat/observability': Stage 12 observability (ADR-0020)
  • 7703ebc Merge branch 'feat/router-inbound-pump': router inbound pump (ADR-0017 §2)
  • 65549cf Merge branch 'feat/sqlite-store': durable SQLite conversation store (Stage 9 ADR-B)
  • 4f36447 Merge branch 'feat/sse-liveview': SSE live-view + UI, bus woken (ADR-0024, Stage 14 Phase 1b)
  • 5c6d448 Merge branch 'fix/sqlite-dsn-windows-path': valid file: DSN for Windows drive-letter paths
  • 904bf68 Merge feat/4.3-fanout: close Stage 4 (Models)
  • 24769ba Revise README.md for Korvun project details
  • 6192fba ci(release): add workflow_dispatch snapshot dry-run to exercise signing/OIDC (ADR-0026)
  • f3d9907 ci(release): attest provenance on real releases only (private-repo limitation)
  • cdebe0b ci(release): least-privilege token permissions (Scorecard Token-Permissions)
  • 01f28bf ci: add CodeQL SAST analysis
  • c893638 ci: add CodeQL static analysis for Go (Scorecard SAST)
  • e979b83 ci: add Dependabot config for gomod and github-actions
  • c64e797 ci: add SBOM generation job (SPDX JSON)
  • cabe345 ci: add cross-compile job for {linux,windows,darwin}×{amd64,arm64}
  • 15ac37b ci: disable Scorecard triggers until repo is public — Stage 16
  • 2463bbe ci: enforce real coverage gate (≥85% core, ≥90% critical packages)
  • 548909d ci: fix cross-platform CI failures (coverage guard, CRLF, CodeQL perms)
  • 8a7becf ci: re-enable scorecard on public repo
  • f3d6763 docs(adr): add ADR-0001 for Telegram client dependency
  • d5cf121 docs(adr): add ADR-0003 — router design (correlation + backpressure)
  • d9f8c60 docs(adr): correct ADR-0008 polling design — Bot.GetUpdates is internal-only in v1.21.0
  • de859ae docs(bus): harden contract per concurrency /review (F1/F2/F3)
  • 4d35541 docs(model/fanout): clarify concurrent-reuse and distinct-instance contracts (P2 + I9)
  • b234200 docs(readme): cite exact Go version (1.26.4) from go.mod
  • 3fa8f23 docs(router): correct stale worker-exit comments
  • ad5a799 docs(stage-0): close Phase 0.3 with cross-compile, CodeQL, SBOM, Dependabot, coverage gate
  • 7b273b4 docs(stage-04): close Stage 4 + first HANDOFF.md
  • 2ae41ab docs(stage-2): close Phase 2.3 with Telegram adapter
  • 423ab58 docs(stage-2): record post-merge state, path convention, 2E.8 debt
  • 9ccdf2d docs(stage-3): close Phase 3.1 — routing core
  • 75d485e docs(stage-3): close Phase 3.2 and Stage 3
  • 39bf91d docs(stages): close Stage 02-EXT with STAGE-02-EXT.md
  • 38cb38a feat(cmd/demo-fanout): live skeleton fanning Ollama + Groq in parallel
  • 4d25e22 feat(cmd/demo-groq): live skeleton + scope coverage to internal/
  • 5f0fd5b feat(cmd/demo-model): live-skeleton CLI for Phase 4.1 end-to-end check
  • 3bca806 feat(model/fanout): Coordinator + Run + callOne with panic isolation and zero-value defense
  • f82f51f feat(model/fanout): sentinels (ErrNoModels, ErrNilModel) for mechanism-level validation
  • 51da3a0 feat(model/groq): hand-rolled Groq cloud adapter (ADR-0010 commits B+C)
  • 139f6ab feat(model/ollama): hand-rolled Ollama adapter against /api/chat (Phase 4.1 commit 2)
  • a8176b1 fix(model/fanout): capture Latency on panic path via always-run defer (I1)
  • e633874 fix(model/fanout): preserve sentinel grammar through panic recovery (P1)
  • 9d4c4b6 merge: Stage 2 / Phase 2.1 — Channel interface, Manifest, Registry
  • c37e80b merge: Stage 2 / Phase 2.2 — generic webhook adapter
  • c30becc refactor(brain): coord as Coordinator interface (ADR-0017 §3)
  • e83fb59 refactor(telegram): move internal/channels/telegram to internal/channel/telegram
  • f6db579 test(conversation): assert pair identity in concurrent AppendTurns; fix stale Handle comment
  • ae8efb5 test(model/fanout): replace sleep+sample goroutine leak detection with poll-with-retry (I11)
  • 2e1097c test(model/fanout): tighten invariants and remove dead state (I2 I3 I5 I7 I8)
  • 1780a35 test(router): add red tests for Phase 3.1 routing core
  • 9a1bfd4 test(router): add red tests for Phase 3.2 concurrency and resilience
  • ab23966 test(router): concurrent register-vs-shutdown + pin Add-under-lock invariant (review)
  • b5e94c2 test(sqlite): skip '?'-path test on Windows (illegal filename char)
  • 3ec8a6c test(telegram): add red tests for Phase 2E.1 inbound media
  • 2a16d03 test(telegram): add red tests for Phase 2E.2 outbound media
  • 2efc249 test(telegram): add red tests for inbound and outbound adapter