Repository navigation
Releases: alexnodeland/lattice
Releases · alexnodeland/lattice
Release list
stackr: v0.1.0
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_pathin its.copier-answers.ymlto 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...
relayr: v0.1.1
relayr: v0.1.0
0.1.0 (2026-10-17)
⚠ BREAKING CHANGES
- reflexr:
Storagehas a new method,rule_history, which a storage implemented outside reflexr must add. Migration 0008 adds a column and a partial index toreflexr_events, holding the table while it runs. relayr'sINSTALLS_READis removed. - grantr: a service principal's id can't pass for the libraries' own actors (#112)
- relayr:
Followersandbridged_turnsno longer takeread_back.turn_causenow 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
reflexr: v0.1.1
reflexr: v0.1.0
0.1.0 (2026-10-17)
⚠ BREAKING CHANGES
- reflexr:
Storagehas a new method,rule_history, which a storage implemented outside reflexr must add. Migration 0008 adds a column and a partial index toreflexr_events, holding the table while it runs. relayr'sINSTALLS_READis 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
portalr: v0.1.0
0.1.0 (2026-10-17)
⚠ BREAKING CHANGES
- reflexr:
Storagehas a new method,rule_history, which a storage implemented outside reflexr must add. Migration 0008 adds a column and a partial index toreflexr_events, holding the table while it runs. relayr'sINSTALLS_READis 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...
lattice-core: v0.1.0
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
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)