Skip to content

Ephemeral mappers#449

Open
augustuswm wants to merge 6 commits into
mainfrom
ephemeral-mappers
Open

Ephemeral mappers#449
augustuswm wants to merge 6 commits into
mainfrom
ephemeral-mappers

Conversation

@augustuswm
Copy link
Copy Markdown
Collaborator

@augustuswm augustuswm commented May 18, 2026

Adds the concept of ephemeral mappers. Ephemeral mappers are mappers that exist only within the runtime memory of the server. Their purpose is to solve a pain point around defining mappers by configuration as opposed to database state.

Main differences:

  1. Ephemeral mappers are defined at VContext create time.
  2. Ephemeral mappers are not persisted to backend storage (i.e. database).
  3. Ephemeral mappers do not support activation limits or counts.
  4. Ephemeral mappers can not be updated or deleted.

Generally an application will require at least one mapper rule to bootstrap itself. This is something like an admin group with a user that should be the initial admin. From here, that admin can create groups, and additional dynamic mappers that are stored alongside the data of the application. This bootstrapping mapper is a good use case for an ephemeral mapper. The user defines a configuration for an ephemeral mapper that is passed to the v-api context builder at runtime, and that mapper is installed in memory. An admin can then log in and be granted permissions. On restart, the user can decide if they still want to pass this configuration to the v-api context or not. If they don't then the mapper rule acts as if it never existed.

Because these mappers are ephemeral, we also need to include the ability to record when they are processed. This change adds a log table that records the execution results of mappers so that independent of a mapper being ephemeral or dynamic, we still know when it was used to grant permissions

@augustuswm augustuswm requested a review from notpeter May 18, 2026 21:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant