Skip to content

Releases: alexnodeland/lattice

stackr: v0.1.0

Choose a tag to compare

@alexnodeland-lattice alexnodeland-lattice released this 17 Oct 17:17
caf3fcb

0.1.0 (2026-10-17)

⚠ BREAKING CHANGES

  • grantr: a service principal's id can't pass for the libraries' own actors (#112)
  • stackr: access with grantr in the template: tenants from memberships, keys, and every command and read checked (#69)
  • stackr: copier.yml no longer has artifactr_rev and reflexr_rev, and make bump-libraries is gone. An application generated from gh:alexnodeland/stackr first changes _src_path in its .copier-answers.yml to gh:alexnodeland/lattice, then moves to lattice's sources with copier update.

Features

  • artifactr: leave restricted threads and artifacts out of every read (#97) (47131df)
  • grantr: a stored rule acts as itself, in its own workspace (#121) (23330f4)
  • grantr: the application installs the rules people accept (#108) (3353706)
  • grantr: the application lists tenants and workspaces, and writes for code rules (#99) (22ee3e0)
  • portalr: acceptance against a two-tenant stack, and the UIs in the wheel (#98) (82c91a5)
  • portalr: admin's Tools, links into Langfuse and Grafana, and a record of making them (#215) (7fb93db)
  • reflexr: ExternalAgentActor gains on_behalf_of (#74) (dca9e52)
  • relayr: a rule changed in reflexr directly is proposed back to its artifact (#136) (eee4893)
  • relayr: row-level security in the SQL ledger, with the followers' start on the owner's engine (#106) (437ae71)
  • stackr,portalr: people by email in the template, scenarios against a generated application, size budgets (#294) (2a59931)
  • stackr: a security group per service in the AWS recipe, from its callers (#161) (a5c12a1)
  • stackr: a single host behind Caddy, with GoTrue alone as the auth profile (#129) (7760e9f)
  • stackr: access with grantr in the template: tenants from memberships, keys, and every command and read checked (#69) (6167895)
  • stackr: check that GoTrue's image follows the Supabase CLI's (#207) (1292d34)
  • stackr: envs/prod and envs/floci, the AWS recipe's roots (#164) (b5268b8)
  • stackr: one tenant attribute on every signal, and prom-label-proxy for portalr (#95) (984e309)
  • stackr: relayr in the template, with the incident timeline example (#101) (01bd55b)
  • stackr: row-level security in the template, with make db-roles (#105) (29fa7af)
  • stackr: rules from chat in the template (#130) (14c26e7)
  • stackr: the AWS recipe's edge, services and state host (#146) (ffac8ba)
  • stackr: the AWS recipe's one-off tasks' images, stackr-db-init and stackr-auth-keys (#174) (5d87d79)
  • stackr: the AWS recipe's thin images that carry a service's configuration (#170) (6b00bda)
  • stackr: the AWS recipe's tools, tier 1, and its network, secrets and data modules (#139) (5e3b5ac)
  • stackr: the AWS state host backs ClickHouse up to S3, and proves it restores (#209) (9fb0196)
  • stackr: the incident experiment, and its postmortem (#141) (1d8b54a)
  • stackr: the single host's backups, with pgBackRest and ClickHouse's BACKUP, and the restore drill (#134) (dbf0dbe)
  • stackr: the stack module, which puts the AWS recipe together (#154) (f0b6b90)
  • stackr: the template gains portalr, with the UIs and the audit trail (#224) (a267cf1)
  • stackr: the template pins the libraries at its own commit, and CI checks them from the checkout (#51) (cbc28f6)
  • stackr: tier 2, the AWS recipe applied against Floci, smoked and destroyed (#182) (e16c8c5)

Bug Fixes

  • artifactr,reflexr: redact an access token from the spans' URLs, and the template from uvicorn's logs (#163) (398d258)
  • grantr: a service principal's id can't pass for the libraries' own actors (#112) (77b7ab3)
  • stackr: ClickHouse's admin, apart from Langfuse's user (#143) (25a0520)
  • stackr: Langfuse's worker starts after the web server's migrations (#157) (b47baa5)
  • stackr: Langfuse's worker waits for the web server's migrations on AWS (#167) (e989865)
  • stackr: local Supabase publishes at STACKR_BIND, on the loopback by default (#135) (68ce5f6)
  • stackr: tier 2 waits for LiteLLM's readiness before its smoke asks it (#269) (00870cb)
  • template: check the generated application with lattice's uv, and only when stackr changes (#3) (47c577f)

Images

For envs/prod, by version and digest:

  • `ghcr.io/alexnodeland/stackr-auth-keys:0.1.0@sha256:42aafae25653b420b...
Read more

relayr: v0.1.1

Choose a tag to compare

@alexnodeland-lattice alexnodeland-lattice released this 17 Oct 18:57
0984945

0.1.1 (2026-10-17)

Bug Fixes

  • deps: raise the floors on sibling packages to their released versions (#333) (54ff956)

relayr: v0.1.0

Choose a tag to compare

@alexnodeland-lattice alexnodeland-lattice released this 17 Oct 16:49
43714aa

0.1.0 (2026-10-17)

⚠ BREAKING CHANGES

  • reflexr: Storage has a new method, rule_history, which a storage implemented outside reflexr must add. Migration 0008 adds a column and a partial index to reflexr_events, holding the table while it runs. relayr's INSTALLS_READ is removed.
  • grantr: a service principal's id can't pass for the libraries' own actors (#112)
  • relayr: Followers and bridged_turns no longer take read_back. turn_cause now takes (ledger, workspace, message_ids), the turn's workspace key and its messages, in place of (ledger, source, turn, *, before_seq, read_back).

Features

  • artifactr,reflexr: LiteLLM requests carry the trace tags Langfuse propagates (#203) (f8423ca)
  • lattice-core: the OpenTelemetry setup, Langfuse's span filters, the LiteLLM model and the logging guard (#187) (508d276)
  • lattice-core: the SQL helpers the libraries' storages share, behind a sql extra (#186) (9b6a571)
  • reflexr: a stored rule's history, read by its name, so relayr finds its installs however far back (#151) (66e096a)
  • relayr: a retried send asks again, and turns are traced by their messages (#109) (1cb0d20)
  • relayr: a rule changed in reflexr directly is proposed back to its artifact (#136) (eee4893)
  • relayr: an allowlist for a whole rule namespace (#122) (2c1f33d)
  • relayr: proposal outcomes as feedback, and measures of the bridge's rules (#138) (f742084)
  • relayr: row-level security in the SQL ledger, with the followers' start on the owner's engine (#106) (437ae71)
  • relayr: rules from chat, drafted, previewed, and installed once a person accepts (#119) (3d49ba4)
  • relayr: the inbound adapter, with followers, the ledger and the bridged types (#70) (ce51f03)
  • relayr: the outbound adapter, allowlists and chains that continue across the bridge (#77) (3ceaa57)
  • relayr: traces linked across the bridge, sessions tagged with each other, and counters (#87) (0a08698)

Bug Fixes

  • grantr: a service principal's id can't pass for the libraries' own actors (#112) (77b7ab3)
  • relayr: wait for every span the bridge's trace test reads (#107) (3d24cbc)

reflexr: v0.1.1

Choose a tag to compare

@alexnodeland-lattice alexnodeland-lattice released this 17 Oct 20:13
a4eb808

0.1.1 (2026-10-17)

Bug Fixes

  • deps: raise the floors on sibling packages to their released versions (#333) (54ff956)

reflexr: v0.1.0

Choose a tag to compare

@alexnodeland-lattice alexnodeland-lattice released this 17 Oct 16:18
97c5eeb

0.1.0 (2026-10-17)

⚠ BREAKING CHANGES

  • reflexr: Storage has a new method, rule_history, which a storage implemented outside reflexr must add. Migration 0008 adds a column and a partial index to reflexr_events, holding the table while it runs. relayr's INSTALLS_READ is removed.

Features

  • acceptance tests, with Bruno and Schemathesis against docplan and oncall (#68) (64ad30e)
  • artifactr,reflexr: LiteLLM requests carry the trace tags Langfuse propagates (#203) (f8423ca)
  • grantr: SQL storage, the admin API, and telemetry (#60) (d75c4f7)
  • lattice-core: a tenant-workspace tag on every LiteLLM request, so spend reads per tenant's workspace (#190) (95ffe96)
  • lattice-core: one package for what the libraries share, starting with tag_required and the NUL check (#175) (e3074fc)
  • lattice-core: the OpenTelemetry setup, Langfuse's span filters, the LiteLLM model and the logging guard (#187) (508d276)
  • lattice-core: the routers' refusal schema, shared by artifactr, reflexr and portalr (#200) (1b335b1)
  • lattice-core: the SQL helpers the libraries' storages share, behind a sql extra (#186) (9b6a571)
  • reflexr: a stored rule's history, read by its name, so relayr finds its installs however far back (#151) (66e096a)
  • reflexr: ExternalAgentActor gains on_behalf_of (#74) (dca9e52)
  • reflexr: reserved publishers, the actors that alone may publish a type (#72) (dd51dd4), closes #8
  • reflexr: row-level security in the SQL adapter, with the scheduler's reads on the owner's engine (#102) (4cb71dd)
  • reflexr: the protocol schema names reflexr's own events, and portalr types them (#162) (db8bd5e)
  • relayr: row-level security in the SQL ledger, with the followers' start on the owner's engine (#106) (437ae71)
  • relayr: the inbound adapter, with followers, the ledger and the bridged types (#70) (ce51f03)
  • stackr: one tenant attribute on every signal, and prom-label-proxy for portalr (#95) (984e309)

Bug Fixes

  • a caller the resolver refuses is answered 403, or 400, on every route and stream (#75) (1c0c66d)
  • a NUL character in any string is validation_failed, on every storage (#84) (218d6a6), closes #67
  • artifactr,reflexr: redact an access token from the spans' URLs, and the template from uvicorn's logs (#163) (398d258)
  • reflexr: an epoch fences each attempt, so a cancelled and retried one cannot record (#247) (bc2adfe)
  • the OpenAPI documents describe every refusal, and every tag is required (#90) (0e09c4b), closes #66 #82
  • what ty's trial found: missing @override, context managers' types, and a callable without a name (#62) (6bca781)

portalr: v0.1.1

Choose a tag to compare

@alexnodeland-lattice alexnodeland-lattice released this 17 Oct 18:40
684e600

0.1.1 (2026-10-17)

Bug Fixes

  • deps: raise the floors on sibling packages to their released versions (#333) (54ff956)

portalr: v0.1.0

Choose a tag to compare

@alexnodeland-lattice alexnodeland-lattice released this 17 Oct 16:41
17fe2d5

0.1.0 (2026-10-17)

⚠ BREAKING CHANGES

  • reflexr: Storage has a new method, rule_history, which a storage implemented outside reflexr must add. Migration 0008 adds a column and a partial index to reflexr_events, holding the table while it runs. relayr's INSTALLS_READ is removed.
  • grantr: a service principal's id can't pass for the libraries' own actors (#112)

Features

  • artifactr: run_started names the messages its turn carries out (#93) (30023de), closes #81
  • grantr: a tenant's creation is also an entry in the deployment's audit log (#216) (188bd33)
  • grantr: read the audit log from its end, with before_seq and last (#176) (3350daa)
  • grantr: restrict a thread or artifact, and hide it from who holds nothing on it (#94) (68f7b1a)
  • grantr: the audit log, read by type and by actor (#152) (20e4451)
  • grantr: the catalog, read: the roles a tenant's admins grant, and what a custom role may hold (#165) (ba086a6)
  • lattice-core: one package for what the libraries share, starting with tag_required and the NUL check (#175) (e3074fc)
  • lattice-core: the routers' refusal schema, shared by artifactr, reflexr and portalr (#200) (1b335b1)
  • portalr: acceptance against a two-tenant stack, and the UIs in the wheel (#98) (82c91a5)
  • portalr: Access's Roles and Grants, on grantr's catalog (#173) (1036ecb)
  • portalr: admin's Access: members, groups and keys, each where grantr allows its read (#168) (af80c5d)
  • portalr: admin's Audit, newest on top, filtered by type and maker (#177) (d621047)
  • portalr: admin's Feedback, summed by day, with the first charts (#181) (4c5f80b)
  • portalr: admin's Logs without their lines, and a Health section (#208) (d487bf5)
  • portalr: admin's Runs, with Retry, Skip and Cancel (#210) (90897b6)
  • portalr: admin's shell and Home: its own tenant, every tenant for operators, and a card per read (#160) (6b2436a)
  • portalr: admin's Tenants, created with their owner by email, and the deployment's audit log (#212) (883cc3e)
  • portalr: admin's Tools, links into Langfuse and Grafana, and a record of making them (#215) (7fb93db)
  • portalr: admin's Traces, and a trace view written for ui (#204) (4f8988e)
  • portalr: admin's Usage: spend per day, each day against its share of the budget, and each workspace's part (#188) (6fcfba7)
  • portalr: colour-blind mode as a setting in the account menu, kept per browser (#292) (3e9efd8)
  • portalr: one chart theme, violet-led series, and a hook for colour-blind mode (#221) (4bd62f1)
  • portalr: people shown by email, not by their Supabase id (#225) (5587b4a)
  • portalr: portalr's and grantr's marks, and ui's tokens and first primitives (#64) (cbbeb93)
  • portalr: restricting and sharing a thread, from its menu (#145) (18db54e)
  • portalr: the app's shell: signing in, and the tenant and workspace pickers (#111) (1927b94)
  • portalr: the app's Threads area: a workspace's threads, and a chat in each (#120) (d00552c)
  • portalr: the areas on the frame, a danger colour, budget badges, and admin's frame (#148) (d1d2c79)
  • portalr: the Artifacts and Proposals areas: renderers by kind, and diffs by revision (#123) (99871b1)
  • portalr: the chat's store and components, and Markdown through Streamdown (#118) (549bfa7)
  • portalr: the client: generated types, the REST clients and queries, and resumable stream stores (#79) (9747465)
  • portalr: the kit's look: a frame, its parts, four tokens and the family's typefaces (#131) (ad6f74b)
  • portalr: the router and its readers (#88) (5548521)
  • portalr: the Rules area: stored rules installed, edited and archived as reflexr's JSON (#142) (1431ab1)
  • portalr: the Runs area, and thumbs with a comment on runs, turns and artifacts (#125) (6e8d729)
  • portalr: the UI polish pass: charts and a colour-blind hook, form controls, elevation, status colours, alerts and density (#236) (633dd88)
  • portalr: third-party notices for the JavaScript the UIs bundle (#211) (2939b6b)
  • reflexr: a stored rule's history, read by its name, so relayr finds its installs however far back (#151) (66e096a)
  • reflexr: the protocol schema names reflexr's own events, and portalr types them (#162) ([db8bd5e](https://github.com/alexnodeland/l...
Read more

lattice-core: v0.1.0

Choose a tag to compare

@alexnodeland-lattice alexnodeland-lattice released this 17 Oct 08:35
6d7d743

0.1.0 (2026-10-17)

Features

  • artifactr,reflexr: LiteLLM requests carry the trace tags Langfuse propagates (#203) (f8423ca)
  • lattice-core: a tenant-workspace tag on every LiteLLM request, so spend reads per tenant's workspace (#190) (95ffe96)
  • lattice-core: one package for what the libraries share, starting with tag_required and the NUL check (#175) (e3074fc)
  • lattice-core: the OpenTelemetry setup, Langfuse's span filters, the LiteLLM model and the logging guard (#187) (508d276)
  • lattice-core: the routers' refusal schema, shared by artifactr, reflexr and portalr (#200) (1b335b1)
  • lattice-core: the SQL helpers the libraries' storages share, behind a sql extra (#186) (9b6a571)

grantr: v0.1.0

Choose a tag to compare

@alexnodeland-lattice alexnodeland-lattice released this 17 Oct 15:57
0fabb84

0.1.0 (2026-10-17)

⚠ BREAKING CHANGES

  • grantr: a service principal's id can't pass for the libraries' own actors (#112)
  • stackr: access with grantr in the template: tenants from memberships, keys, and every command and read checked (#69)

Features

  • grantr: a stored rule acts as itself, in its own workspace (#121) (23330f4)
  • grantr: a tenant's creation is also an entry in the deployment's audit log (#216) (188bd33)
  • grantr: grantr's core: the model, roles, groups, keys, checks, hooks and the audit log (#54) (b17bed9)
  • grantr: members list the workspaces they may open (#85) (fd62b36)
  • grantr: portalr's admin reads, for a tenant's owners and admins and for operators (#89) (c4cfc72)
  • grantr: provision_tenant gives a tenant the admins it lacks (#76) (4cc7b31)
  • grantr: read the audit log from its end, with before_seq and last (#176) (3350daa)
  • grantr: restrict a thread or artifact, and hide it from who holds nothing on it (#94) (68f7b1a)
  • grantr: SQL storage, the admin API, and telemetry (#60) (d75c4f7)
  • grantr: the application installs the rules people accept (#108) (3353706)
  • grantr: the application lists tenants and workspaces, and writes for code rules (#99) (22ee3e0)
  • grantr: the audit log, read by type and by actor (#152) (20e4451)
  • grantr: the catalog, read: the roles a tenant's admins grant, and what a custom role may hold (#165) (ba086a6)
  • grantr: the runtime's roles, the deployment's own tools, and the role matrix (#65) (6c71b8f)
  • lattice-core: the SQL helpers the libraries' storages share, behind a sql extra (#186) (9b6a571)
  • portalr: portalr's and grantr's marks, and ui's tokens and first primitives (#64) (cbbeb93)
  • reflexr: row-level security in the SQL adapter, with the scheduler's reads on the owner's engine (#102) (4cb71dd)
  • relayr: row-level security in the SQL ledger, with the followers' start on the owner's engine (#106) (437ae71)
  • relayr: the inbound adapter, with followers, the ledger and the bridged types (#70) (ce51f03)
  • row-level security in grantr's and artifactr's SQL adapters (#100) (bc0ab8e)
  • stackr: access with grantr in the template: tenants from memberships, keys, and every command and read checked (#69) (6167895)

Bug Fixes

  • grantr: a service principal's id can't pass for the libraries' own actors (#112) (77b7ab3)
  • reflexr: an epoch fences each attempt, so a cancelled and retried one cannot record (#247) (bc2adfe)
  • the thread claim and owner bugs that TLC and the stateful tests found (#271) (907cad9)
  • what ty's trial found: missing @override, context managers' types, and a callable without a name (#62) (6bca781)

evalr: v0.1.0

Choose a tag to compare

@alexnodeland-lattice alexnodeland-lattice released this 17 Oct 15:23
dea3ba7

0.1.0 (2026-10-17)

Features

  • stackr,portalr: people by email in the template, scenarios against a generated application, size budgets (#294) (2a59931)

Bug Fixes

  • what ty's trial found: missing @override, context managers' types, and a callable without a name (#62) (6bca781)