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