Skip to content

    News

    1.23.0

    archied

    Archied is no longer a single process. The State Store (archie-state-store) now owns archie.db outright, the Gateway serves its contract over authenticated gRPC, and the dashboard ships as a standalone UI Service (archie-ui). Upgrading is not a binary swap: these processes must be running and addressable before archied will start clean. See deployments/ for the supported profiles.

    archied — Service decomposition

    • feat(contracts): add gateway service seams and protobuf toolchain
    • feat(gateway): extract ChatContract service
    • feat(gateway): delete in-process ChatContract path, make remote the only mode
    • feat(gateway): authenticate the gRPC contract and allow off-loopback listeners
    • fix(gateway): drop services.gateway.mode, remote is the only transport
    • feat(state-store): generalize storerpc as the State Store gRPC contract (#770)
    • feat(state-store): stand up archie-state-store binary and own archie.db (#771)
    • refactor(state-store): migrate capture/mapping/binding consumers to State Store (#772)
    • refactor(state-store): migrate workflow/intake/task lifecycle consumers to State Store (#773)
    • refactor(state-store): cut daemon/Gateway over to the remote State Store (#774)
    • fix(state-store): task-scope container credentials, stream large capture lists, validate Update
    • feat(archieui): standalone UI process over remote Gateway and State Store
    • refactor(archied): cut the dashboard over to the archie-ui process
    • refactor(ui): sever the archie-ui binary from every daemon runtime package
    • refactor(archied): move the update relay to the process that owns updates
    • refactor(archied): move webhook capture intake to the process that owns work intake
    • feat(archieui): mount the capture intake receiver over the State Store
    • refactor(workflow): relocate Task/Status/Source and define workflow.Store (#754)
    • refactor(store): move the producer-owned contracts to internal/contracts/store/v1
    • feat(messaging): migrate gateway session persistence onto domain types
    • feat(gateway): flip channel boundary onto messaging.Message

    archied — Pull request review

    • feat(gateway): operator-triggered PR review with selectable reviewer model
    • feat(forge): pull request review read surface (ListReviews/ListReviewComments/ReplyToReview)
    • feat(workflow): surface adversarial review findings on the PR body
    • feat(workflow): review calibration, checked properties and style nits out of contract
    • fix(archied): share one PR reviewer across channels; harden forge and worktree
    • fix(workflow): order findings before footer; test the report stash

    archied — Dashboard

    • feat(webui): render configuration from a published snapshot
    • feat(staterpc): carry the dashboard’s configuration snapshot
    • refactor(webui): take configuration off the dashboard server
    • feat(webui): report which dashboard sections a process can serve
    • feat(webui): deliver live dashboard events by polling the State Store cursor
    • feat(webui): route dashboard task actions through the Gateway contract
    • feat(gateway): give the dashboard operator its own task-action contract
    • feat(webui): add /health and /health/detailed readiness endpoints (#717)
    • fix(webui): distinguish refused vs broken task actions, handle 401 (#753)

    archied — Daemon, gateway and workflow

    • feat(archied): add shutdown watchdog that force-exits a hung graceful shutdown (#716)
    • feat(archied): serve the daemon’s own health endpoint
    • feat(drain): honour external drain marker with instantiation epoch (#718)
    • feat(gateway): wire progressive tool disclosure (bridge tools)
    • feat(gateway): render workspace, managed repos and operator into chat env
    • feat(gateway): add session_transcript tool for full JSON export
    • feat(gateway): consolidate task actions and repair daemon default path
    • feat(eda): thread Playbook ID/Version and DispatchInput task identity
    • feat(worktree): Resume re-syncs a worktree onto its branch tip
    • fix(staterpc): attach the bearer token to State Store streams
    • fix(archieui): resolve service tokens from env, without requiring a config file
    • fix(archied): initialize conversation persistence on daemon startup
    • fix(archied): preserve channel turn ledger with remote gateway
    • fix(gateway): share NATS and session ownership
    • fix(update): probe the dashboard’s real address after a self-update
    • fix(store): migrate binding owner and repo columns

    archie-agent

    The agent runtime now reaches task state through the State Store gRPC contract (STATE_STORE_URL/STATE_STORE_TOKEN, injected by the daemon) instead of the NATS storerpc transport, which is deleted. Credentials handed to a task container are scoped to that task rather than being the daemon’s own token. Running a 1.23.0 daemon against an older agent image will not work; rebuild or pull the archie-agent image with this release.

    • feat(state-store): generalize storerpc as the State Store gRPC contract (#770)
    • feat(state-store): stand up archie-state-store binary and own archie.db (#771)
    • refactor(state-store): cut daemon/Gateway over to the remote State Store (#774)
    • fix(state-store): task-scope container credentials, stream large capture lists, validate Update
    • fix(staterpc): attach the bearer token to State Store streams
    • feat(staterpc): carry the dashboard’s configuration snapshot
    • refactor(workflow): relocate Task/Status/Source and define workflow.Store (#754)
    • refactor(store): move the producer-owned contracts to internal/contracts/store/v1
    • feat(contracts): add gateway service seams and protobuf toolchain
    • fix(gateway): drop services.gateway.mode, remote is the only transport
    • feat(forge): pull request review read surface (ListReviews/ListReviewComments/ReplyToReview)
    • feat(gateway): operator-triggered PR review with selectable reviewer model
    • feat(workflow): surface adversarial review findings on the PR body
    • feat(workflow): review calibration, checked properties and style nits out of contract
    • fix(workflow): order findings before footer; test the report stash
    • fix(archied): share one PR reviewer across channels; harden forge and worktree
    • feat(worktree): Resume re-syncs a worktree onto its branch tip
    • feat(telegram): support secret refs for bot tokens (#705)
    • feat(gateway): wire progressive tool disclosure (bridge tools)
    • feat(archied): serve the daemon’s own health endpoint
    • feat(archieui): standalone UI process over remote Gateway and State Store
    • refactor(archied): move webhook capture intake to the process that owns work intake
    • refactor(ui): sever the archie-ui binary from every daemon runtime package
    • fix(archieui): resolve service tokens from env, without requiring a config file

    1.22.0

    archied

    • feat(telegram): support secret refs for bot tokens (#705)
    • fix(update): make daemon rollback schema-safe (#704)
    • fix(archied): preserve ephemeral gateway ports (#707)
    • fix(webui): bound log limit parsing and add endpoint regression coverage (#706)
    • fix(deps): upgrade x/crypto to v0.56.0 for security fixes (#708)

    1.21.0

    archied

    • feat(workflow): make kind-to-workflow routing YAML-overridable
    • feat(workflow): route arbitrary forge labels to workflows via playbook YAML
    • feat(workflow): load kind/label bindings from multiple playbook directories
    • fix(extract): regenerate stale Yaegi symbol tables; fix wfextract directive
    • feat(eda): Module position first slice – registry + side-effect-free log kind
    • feat(eda): CEL expression environment (compile/validate at load, evaluate at dispatch)
    • feat(eda): playbook document + event coordinator, single-action workflow-kind dispatch
    • fix(skillcurator): document and scope the intentional nilerr in reviewOne
    • fix(binding): add Owner/Repo pin, fixing multi-repo dispatch
    • feat(webui): bindings dashboard UI; fix app-wide Preact render regression
    • fix(binding): split ValidateForUpdate so edits can preserve the secret
    • refactor(ui): extract Pill to ui/src/base/, closing archie-core-mlro
    • refactor(eda): extract helpers to satisfy cyclop/gocognit gates
    • fix(webui): stretch HEALTH row cards to equal height
    • fix(eda): make playbook key collision reporting deterministic
    • fix(gateway): split /status (health) and /tasks (work) apart

    archie-agent

    • feat(workflow): make kind-to-workflow routing YAML-overridable
    • feat(workflow): route arbitrary forge labels to workflows via playbook YAML
    • feat(workflow): load kind/label bindings from multiple playbook directories
    • fix(extract): regenerate stale Yaegi symbol tables; fix wfextract directive
    • feat(eda): Module position first slice – registry + side-effect-free log kind
    • feat(eda): playbook document + event coordinator, single-action workflow-kind dispatch
    • fix(binding): add Owner/Repo pin, fixing multi-repo dispatch
    • fix(binding): split ValidateForUpdate so edits can preserve the secret
    • refactor(eda): extract helpers to satisfy cyclop/gocognit gates
    • fix(eda): make playbook key collision reporting deterministic

    1.20.0

    archied

    • fix: baseline gate repair (go test ./… -count=1)
    • fix(logging): propagate bound slog attrs to wrapped handler in FeedHandler
    • feat(image): define provider-neutral image capability contract and config
    • fix(channels): call MarkRunning once a channel is actually up
    • fix(workflow): stop discarding baseline-fix commits as ‘no changes’
    • fix(webui): wire the Logs page to per-task attempt-log detail
    • fix(workflow): net cache hits from token totals, trim gate-retry output
    • feat(workflow): dynamic triage instead of defaulting every task to implement
    • fix(gateway): stop SOUL from forging the prompt invariant tags
    • fix(curator): stop curator actions from serializing a zero timestamp
    • feat(webui): hand-author the configuration field descriptor catalog
    • feat(webui): attach the config field schema to GET /api/config
    • feat(webui): render scalar config sections generically from the schema
    • feat(webui): surface allow_concurrent/max_retries/review_enabled on the repositories card
    • feat(webui): inline editing for per-repo allow_concurrent/max_retries/review_enabled
    • feat(webui): playbook bindings – matcher + mapping + workflow, HMAC-gated
    • fix: resolve golangci-lint funlen, nilerr, and empty branch issues
    • feat(store): encrypt playbook binding secrets at rest
    • feat(webhook): harden captured payload redaction
    • fix(store): satisfy makezero when building cipher payload
    • feat(webui): refactor chat module to Preact component and add unit tests

    archie-agent

    • fix: baseline gate repair (go test ./… -count=1)
    • fix(logging): propagate bound slog attrs to wrapped handler in FeedHandler
    • feat(image): define provider-neutral image capability contract and config
    • fix(workflow): stop discarding baseline-fix commits as ‘no changes’
    • fix(workflow): net cache hits from token totals, trim gate-retry output
    • feat(workflow): dynamic triage instead of defaulting every task to implement
    • feat(webui): playbook bindings – matcher + mapping + workflow, HMAC-gated
    • feat(store): encrypt playbook binding secrets at rest
    • fix(store): satisfy makezero when building cipher payload

    1.19.10

    archied

    • feat(curator): session-memory curator reference implementation

    1.19.9

    archied

    • feat(memory): typed memory engine contract, registry, and registrar
    • feat(memory): builtin engine implementing the domain/memory contract
    • feat(config): config surface for memory engine selection
    • feat(daemon): wire the domain/memory engine registry at boot
    • feat(curator): bind curators to memory engines
    • fix(config): reject memory.provider instead of silently ignoring it
    • feat(curator): skill curator reference implementation

    archie-agent

    • feat(config): config surface for memory engine selection

    1.19.8

    archied

    • fix(update): drop dev-facing wording from the unconfirmed-update message
    • fix(telegram): stop adjacent rich blocks from rendering glued together
    • fix(telegram): send undelivered-media fallback after finalize as its own message

    1.19.7

    archied

    • fix(logging): make Tail/Page allocation bound explicit for CodeQL

    archie-agent

    • fix(logging): make Tail/Page allocation bound explicit for CodeQL

    1.19.6

    archied

    • fix(build): stamp gatewayVersion/runtimeVersion in the right package

    1.19.5

    archied

    • feat(webui): dashboard-aware chat — Archie sees the page, points you there
    • fix(telegram): drop retry_after bandaid, bump go-telegram/bot to v1.24.0
    • feat(curator): track and expose recent activity per curator
    • fix: go.mod bumped to 1.27.0 and stupid tests removed
    • refactor: remove unnecessary AI-generated scaffolding
    • refactor: go modernisation fixes
    • refactor: remove unused Operator param.
    • fix(gateway): fix broken system prompt template and scrub real telegram ID from tests
    • fix(plugin): add missing CLAUDE.md reference to plugin engine rule
    • fix(app): repoint archied wiring contract test at internal/app/archied
    • refactor(agentexec): use ai-sdk NewTypedTool for pluginToolSet and scriptToolSet
    • fix(config): standardize Provenance to pointer receivers (recvcheck)
    • refactor(lint): reduce cyclomatic/cognitive complexity in tools, workflow, webui
    • fix(app): repoint capability-host wiring contract test at internal/app/archied
    • refactor(lint): extract more helpers to clear nestif/gocyclo findings
    • refactor(lint): split AgentStage.Stage into resolveModel/buildRequest/handleResult
    • refactor(lint): split TurnRunner.Run and dispatchLocal further
    • refactor(lint): extract markdownBlockParser and list/quote helpers in richblocks.go
    • refactor(lint): extract Apply/findWalkVisitor helpers; go fix modernization
    • fix(lint): noctx fixes and dead-code cleanup
    • feat(workflow): adversarial self-review stage before PR open

    archie-agent

    • feat(tasks): allow rejecting a task from any non-terminal state
    • feat(tasks): serve the lifecycle presentation catalog from /api/task-meta
    • fix: go.mod bumped to 1.27.0 and stupid tests removed
    • refactor: go modernisation fixes
    • refactor: remove unused Operator param.
    • fix(plugin): add missing CLAUDE.md reference to plugin engine rule
    • fix(app): repoint archied wiring contract test at internal/app/archied
    • refactor(agentexec): use ai-sdk NewTypedTool for pluginToolSet and scriptToolSet
    • refactor(lint): reduce cyclomatic/cognitive complexity in tools, workflow, webui
    • fix(app): repoint capability-host wiring contract test at internal/app/archied
    • refactor(lint): extract more helpers to clear nestif/gocyclo findings
    • refactor(lint): split AgentStage.Stage into resolveModel/buildRequest/handleResult
    • refactor(lint): extract Apply/findWalkVisitor helpers; go fix modernization
    • fix(lint): noctx fixes and dead-code cleanup
    • feat(workflow): adversarial self-review stage before PR open

    Page 6 of 10