Help us shape the future of Go! Take the 2026 Go Developer Survey

go-oikumenea

module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 12, 2026 License: Apache-2.0

README

go-oikumenea

A generic, domain-agnostic personnel directory + multi-domain registry / authorization service for hierarchical, multi-tenant organizations (army, church, university, government, company). Think "Keycloak, but with a real policy-decision point over an org graph, and rich per-domain registries" — API-only, self-hosted, on operator-owned PostgreSQL, built on the Palantir OSS stack (witchcraft / conjure / gödel).

  • Authorization plane, not an IdP. Authentication is delegated to your external IdP; oikumenea validates inbound identities and decides authorization (a PDP). It never stores credentials or issues tokens.
  • A PDP over a unit DAG. Units can have multiple parents; role assignments are scoped unit | subtree; reads are trimmed by public/shadow visibility.
  • One directory, many organizations. Multiple domains (military/university/…) and organizations (US Army, Bundeswehr, KhNU) share one instance-global person directory.
  • Rich registries behind per-code permissions — documents, finance, watchlist/sanctions matches, physical identity, addresses, and more, each gated by its own permission.

The architecture specification is the source of truth — start at docs/README.md.


Quick start

Prerequisites: Go (version in go.mod), Docker, the Atlas CLI, and make. The bundled gödel wrapper (./godelw) needs no install. (Node.js is only needed for the optional web console.)

git clone https://github.com/olehmushka/go-oikumenea && cd go-oikumenea
cp .env.example .env          # local defaults; tweak ports/DSNs if 5432 is taken

make dev-up                   # start Postgres + a local Keycloak (OIDC IdP) in Docker
make migrate                  # apply database migrations

# create the non-superuser login role the server connects as (one-time, RLS backstop)
psql "$DATABASE_URL" -c "CREATE ROLE oikumenea LOGIN PASSWORD 'dev' IN ROLE oikumenea_app;"

make run                      # start the server: API on :8443, management on :8444

Confirm it is healthy (readiness goes green only when the DB schema matches the binary):

curl -sk https://localhost:8444/status/readiness
# {"ready":true,"schemaRevision":"…","expectedSchemaRevision":"…"}

Run make help at any time to see every task.

Prefer containers? make docker-up builds and starts the packaged stack from docker-compose.yml instead. In that topology the core publishes no host port (it sits behind the console facade on :8445, M52 / D-HeadlessTopology).


Configuration

The server is configured by environment variables, a YAML file, or both — whichever you prefer (D-EnvConfig):

  • Environment variables override everything and the YAML file is optional, so an env-only boot works (great for docker run and 12-factor deploys). Each field maps to an env var derived from its config path under the OIKUMENEA_ prefix (crypto.local-dev.kek → OIKUMENEA_CRYPTO_LOCAL_DEV_KEK).
  • var/conf/install.yml (witchcraft) holds the same settings as a file; secrets can be ECV-encrypted at rest.
  • Precedence: real env > .env (auto-loaded at boot) > YAML > built-in defaults.

A minimal env-only boot:

export OIKUMENEA_ENVIRONMENT=local
export OIKUMENEA_DB_HOST=localhost OIKUMENEA_DB_USER=oikumenea OIKUMENEA_DB_PASSWORD=dev OIKUMENEA_DB_NAME=postgres
export OIKUMENEA_LOGGING_LEVEL=info
oikumenea serve

The database can be one OIKUMENEA_POSTGRES_DSN or the discrete OIKUMENEA_DB_HOST/PORT/USER/PASSWORD/NAME/SSLMODE parts. The full, generated list of every variable is docs/reference/env-vars.md. The companion hermenea service uses the same scheme under the HERMENEA_ prefix.


Setting up an identity provider (Docker)

go-oikumenea never authenticates — it validates a JWT somebody else issued and decides authorization (L-AuthzOnly). So "setting up auth" means pointing it at an issuer you trust and telling it which audience is yours. Everything below is env-var only: the packaged app service mounts deploy/install.docker.yml read-only, so you configure issuers with OIKUMENEA_* variables rather than editing a file inside the image (D-EnvConfig).

Full per-provider walkthroughs — including registering the OAuth app in Google/GitHub/Entra/GitLab/Okta consoles — are in deploy/oauth/README.md. This section is the Docker deployment shape.

First: which variation are you in?
curl -fsS https://YOUR-PROVIDER/.well-known/openid-configuration | jq '{issuer, jwks_uri}'
Result Variation
JSON with issuer + jwks_uri A or B — your choice
404 / HTML / error (e.g. GitHub) C only — it is OAuth2 without OIDC, so nothing it issues is verifiable
Variation A — one OIDC provider, direct

The common case: Google, Entra, Okta, GitLab, Keycloak, Authentik… Two containers need to agree.

# docker-compose.override.yml
services:
  app:
    environment:
      # `_0_` is the first idp.issuers[] entry; use _1_, _2_ … for more (variation B).
      OIKUMENEA_IDP_ISSUERS_0_ISSUER: "https://accounts.google.com"   # EXACTLY as discovery printed it
      OIKUMENEA_IDP_ISSUERS_0_TYPE: "oidc"
      OIKUMENEA_IDP_ISSUERS_0_AUDIENCE: "<client-id>"                 # MANDATORY — see below
      OIKUMENEA_IDP_ISSUERS_0_LABEL: "Google"                         # display name in the console

  console-bff:
    environment:
      AUTH_URL: "https://console.example.org"        # the PUBLIC origin browsers use
      AUTH_SECRET: "<openssl rand -base64 32>"
      AUTH_GOOGLE_ID: "<client-id>"                  # the SAME client id as the audience above
      AUTH_GOOGLE_SECRET: "<client-secret>"

Register the redirect URI <AUTH_URL>/api/auth/callback/google with the provider.

Named variables exist for AUTH_KEYCLOAK_*, AUTH_GOOGLE_*, AUTH_ENTRA_*, AUTH_GITLAB_* and AUTH_OKTA_*. For anything else use a generic slot — no image rebuild, no code change:

      AUTH_OIDC_ACME_ISSUER: "https://id.acme.example/application/o/oikumenea/"
      AUTH_OIDC_ACME_ID: "…"
      AUTH_OIDC_ACME_SECRET: "…"
      AUTH_OIDC_ACME_LABEL: "Acme SSO"     # callback: <AUTH_URL>/api/auth/callback/acme

Two rules the deployment will enforce on you:

  • AUDIENCE is mandatory and the container will refuse to start without it. A public IdP's iss is shared by every application registered with it, so the audience is what binds a token to your deployment. Set it to the OAuth client id, not oikumenea.
  • The issuer string must equal the token's iss byte for byte — it is the routing key. A trailing slash, http vs https, or a missing /v2.0 (Entra) means every login 401s.
Variation B — several providers at once

Add issuer entries by index; the console offers a button per provider whose credentials are present.

  app:
    environment:
      OIKUMENEA_IDP_ISSUERS_0_ISSUER: "https://accounts.google.com"
      OIKUMENEA_IDP_ISSUERS_0_TYPE: "oidc"
      OIKUMENEA_IDP_ISSUERS_0_AUDIENCE: "<google-client-id>"
      OIKUMENEA_IDP_ISSUERS_0_LABEL: "Google"
      OIKUMENEA_IDP_ISSUERS_1_ISSUER: "https://login.microsoftonline.com/<tenant>/v2.0"
      OIKUMENEA_IDP_ISSUERS_1_TYPE: "oidc"
      OIKUMENEA_IDP_ISSUERS_1_AUDIENCE: "<entra-client-id>"
      OIKUMENEA_IDP_ISSUERS_1_LABEL: "Corporate Entra ID"

One person may hold one login point per provider on a single account, resolving to the same directory record whichever they use.

If one issuer serves several clients of the same deployment (a console and a CLI registered separately), it accepts a SET of audiences — but only the YAML file can express it (audiences: [a, b]). There is no …_AUDIENCES env var, because the env overlay binds only scalar fields of a list element. Mount your own install.yml over /app/var/conf/install.yml for that case.

Variation C — brokered (and the only way to use GitHub)

Put an IdP that speaks OIDC in front (Keycloak, Authentik, Auth0…), federate the providers into it, and point go-oikumenea at that issuer only. GitHub, Discord, Slack and friends reach you this way.

  app:
    environment:
      OIKUMENEA_IDP_ISSUERS_0_ISSUER: "https://sso.example.org/realms/oikumenea"
      OIKUMENEA_IDP_ISSUERS_0_TYPE: "oidc"
      OIKUMENEA_IDP_ISSUERS_0_AUDIENCE: "oikumenea"
      OIKUMENEA_IDP_ISSUERS_0_LABEL: "Company SSO"

go-oikumenea needs nothing per upstream provider: the broker mints every token, so iss stays the broker and sub is the broker's user id, never Google's or GitHub's. The dev stack ships a worked example — scripts/keycloak-brokers.sh configures Google/GitHub/Entra/GitLab/Okta on the bundled Keycloak realm from environment credentials.

Then: enrolling people

A verified token still has to map to a person. Unknown identities are rejected — the service is a personnel directory first, so a first login is a link, never a create (D-JIT).

  • Default — link explicitly. The person signs in once and is refused; the log line rejected unknown token identity carries the issuer, subject and email, and an admin links it in the console (Persons → the person → Account → Link external identity).

  • When you only know people's email addresses, invert it — create a login-less account carrying the address and let the first sign-in attach itself:

          OIKUMENEA_IDP_JIT_ENABLED: "true"
          OIKUMENEA_IDP_JIT_CLAIM: "email"
          OIKUMENEA_IDP_JIT_MATCH: "account-email"
          OIKUMENEA_ACCOUNT_IDENTITY_LINKING_ENABLED: "false"   # optional: cap one login point per person
    

    It requires a verified email (email_verified true) and still never creates a person. Understand what it delegates: every issuer you configure becomes trusted to verify addresses honestly, so anyone proving that address at any of them reaches the account.

Troubleshooting
Symptom Cause
Container exits: "pins no audience" An oidc issuer has no AUDIENCE. Deliberate and fail-closed — see above.
Console logs in, then "Your session has expired" That banner renders on any 401. Either the identity is not linked yet (expected — enrol it), or the audience/issuer does not match.
Every login 401s from the start iss mismatch — compare the configured string with the discovery document character by character.
Provider button missing from the login page Its AUTH_<PROVIDER>_ID/_SECRET are unset on console-bff.
redirect_uri_mismatch at the provider AUTH_URL is not the public origin, or the callback path was not registered.

Common tasks

Everything runs through make (which delegates to ./godelw, Atlas, and docker compose):

Task Command
Start / stop the dev stack (Postgres + Keycloak) make dev-up / make dev-down
Apply migrations make migrate (and make migrate-hermenea)
Run the server / the hermenea companion make run / make run-hermenea
Build both binaries make build
Build container images make docker-build / make docker-build-hermenea
Format, lint, test make format · make lint · make test
Full CI bundle make verify
Reset the dev DB (clean + migrate + re-seed admin) make db-reset
Web console (optional) make web-install && make web-dev

See make help for the complete list.


Using the API

The API is delegated-auth: send a bearer token from your IdP. In local dev, mint one from the bundled Keycloak and call the API as the seeded admin:

TOKEN=$(scripts/keycloak-token.sh)                       # OAuth2 password grant (default user: admin)
curl -sk https://localhost:8443/identity/v1/whoami -H "Authorization: Bearer $TOKEN"

The full hands-on login/token recipe is in deploy/keycloak/README.md.

Signing in with Google, GitHub, Entra ID, GitLab or Okta — deploy/oauth/README.md has working recipes in two topologies: brokered through Keycloak (one issuer, and the only route for GitHub, which is OAuth2 without OIDC and so publishes nothing this service could verify) and direct (one idp.issuers[] entry per provider).

Client libraries

The API is Conjure-first (api/*.conjure.yml), and every client below is generated from that one contract along with the server — so none of them can drift from it.

Language Package Install Source
Go Go Reference go get github.com/olehmushka/go-oikumenea/clients/go clients/go/
TypeScript npm npm i oikumenea-client clients/typescript/

Prefer raw HTTP? The OpenAPI reference is generated from the same contract — docs/api/README.md.

import (
    oik "github.com/olehmushka/go-oikumenea/clients/go"
    "github.com/olehmushka/go-oikumenea/clients/go/oikumenea/person"
)

c, err := oik.New("https://oikumenea.example.org:8443", token)  // token bound once, for every service
p, err := c.Person.GetPerson(ctx, personRID)                   // no per-call bearer argument
_ = person.IsPersonNotFound(err)                               // typed errors, per endpoint
import { createOikumeneaClient } from "oikumenea-client";

const client = createOikumeneaClient({
  baseUrl: "https://oikumenea.example.org:8443",
  token,   // omit behind a BFF that injects it server-side
});

The clients are versioned independently of the server: a contract-derived SDK moves only when that SDK actually changes, so most server releases leave them where they are. Publishing any of them is docs/releasing.md.

Container images. ghcr.io/olehmushka/oikumenea and docker.io/olegamysk/oikumenea (plus hermenea and oikumenea-console), built for linux/amd64 and linux/arm64.

Data ingestion (hermenea). An optional companion service ingests external reference datasets (country codes, gazetteers, watchlists, …) and loads them into oikumenea over HTTP. It has its own database and migrations and couples only through the public import endpoint. See docs/modules/hermenea.md and the run guide in CONTRIBUTING.md.


Web console (optional)

An optional Next.js admin console (web/, docs/web-ui.md) runs on port 8445. It is a pure API consumer — a Backend-for-Frontend with Keycloak login — so the server is unchanged whether or not it runs. In the packaged compose topology its console-bff tier is the only public port (M52 / D-HeadlessTopology): it forwards the end-user's own token to a core that is off the public network, holding no credential that widens access.

make web-install && make web-dev                          # http://localhost:8445 (dev)
docker compose --profile ui up --build                    # production-shaped (opt-in profile)

Project layout

Path What
cmd/ The two binaries: oikumenea (core) and hermenea (ingestion companion)
internal/<module>/ The modules (tenant, person, authorization, …), hexagonal layering
api/ Conjure API definitions (the contract)
migrations/ Versioned Atlas migrations (one schema oikumenea; migrations/hermenea/ for the companion)
pkg/ Framework-free shared kernel (RID, crypto, config overlay, …)
clients/ Generated Go + TypeScript SDKs
web/ Optional Next.js admin console
docs/ The source of truth — architecture, decisions, module docs

Contributing

Development setup, the migration workflow, code generation, testing, and coding conventions are all in CONTRIBUTING.md. In short: make verify runs what CI runs, and docs/architecture/decisions.md is binding — if the code and a recorded decision disagree, the code is wrong.

License

The software is licensed under the Apache License 2.0 — see LICENSE. Source files carry an SPDX header (./godelw license applies them; make verify enforces them).

The bundled reference data is not. The pinax presets (internal/pinax/presets/) are go:embed-ed into the binary and are derived from third-party datasets under their own terms — two of them are share-alike (countries.yaml is ODbL-1.0, religions.yaml is CC-BY-SA-4.0). Redistributing this software, a build of it, or a database derived from it means complying with those terms as well as Apache-2.0.

Data fetched at runtime by hermenea connectors (Who's On First, Wikidata, INTERPOL, sanctions lists) is never compiled in and is the operator's licensing decision — the INTERPOL and sanctions feeds in particular carry restrictions no license here grants.

Directories

Path Synopsis
clients
go module
cmd
hermenea command
Command hermenea is the companion ingestion + scheduler service (M16 / D-Hermenea): a witchcraft server with its OWN PostgreSQL that fetches → stages → maps external reference data and loads it into oikumenea over HTTP (POST /import/{objectType}) — it never touches oikumenea's database.
Command hermenea is the companion ingestion + scheduler service (M16 / D-Hermenea): a witchcraft server with its OWN PostgreSQL that fetches → stages → maps external reference data and loads it into oikumenea over HTTP (POST /import/{objectType}) — it never touches oikumenea's database.
oikumenea command
Link-descriptor wiring (review-2026-09 R-27 / D-LinkTraversal): composition glue registering every traversable reified link table's Descriptor on the generic link-traversal engine, plus the per-neighbor-type D-VisibilityScope adapter (R-30) each neighbor is trimmed through.
Link-descriptor wiring (review-2026-09 R-27 / D-LinkTraversal): composition glue registering every traversable reified link table's Descriptor on the generic link-traversal engine, plus the per-neighbor-type D-VisibilityScope adapter (R-30) each neighbor is trimmed through.
deploy
pinax-presets/gen command
Command gen is the reproducible generator for the pinax reference-plane preset bundle (D-Pinax, M45).
Command gen is the reproducible generator for the pinax reference-plane preset bundle (D-Pinax, M45).
internal
audit
Package audit is the composition seam for the audit module (docs/modules/audit.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the AuditService Conjure routes.
Package audit is the composition seam for the audit module (docs/modules/audit.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the AuditService Conjure routes.
audit/adapters
Package adapters implements the audit domain ports against infrastructure: the pgx/sqlc repository over oikumenea.audit_log.
Package adapters implements the audit domain ports against infrastructure: the pgx/sqlc repository over oikumenea.audit_log.
audit/application
Package application holds the audit module's application service — the flat orchestrator other modules call to record writes (in their transaction) and the transport layer calls to read the log (overview.md).
Package application holds the audit module's application service — the flat orchestrator other modules call to record writes (in their transaction) and the transport layer calls to read the log (overview.md).
audit/domain
Package domain holds the audit module's pure logic: the AuditEntry it records, its invariants, and the Repository port it needs from the outside world (overview.md layering).
Package domain holds the audit module's pure logic: the AuditEntry it records, its invariants, and the Repository port it needs from the outside world (overview.md layering).
audit/transport
Package transport implements the audit module's generated Conjure AuditService interface: it translates the wire contract to/from the application service and maps domain errors to Conjure SerializableErrors (overview.md; D-Conjure).
Package transport implements the audit module's generated Conjure AuditService interface: it translates the wire contract to/from the application service and maps domain errors to Conjure SerializableErrors (overview.md; D-Conjure).
authorization
Package authorization is the composition seam for the authorization module (docs/modules/authorization.md) — the centerpiece: RBAC + the PDP.
Package authorization is the composition seam for the authorization module (docs/modules/authorization.md) — the centerpiece: RBAC + the PDP.
authorization/adapters
Package adapters implements the authorization domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.authz_* tables.
Package adapters implements the authorization domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.authz_* tables.
authorization/application
Request-scoped authority context (review-2026-07 R-01.1).
Request-scoped authority context (review-2026-07 R-01.1).
authorization/domain
Package domain holds the authorization module's pure logic: the code-defined permission catalog, the seeded base-role definitions, the RBAC entities (Role, Assignment, InstanceAdmin), and the PDP engine (overview.md layering).
Package domain holds the authorization module's pure logic: the code-defined permission catalog, the seeded base-role definitions, the RBAC entities (Role, Assignment, InstanceAdmin), and the PDP engine (overview.md layering).
authorization/pep
Package pep is the Policy Enforcement Point seam every module's transport calls before a guarded operation.
Package pep is the Policy Enforcement Point seam every module's transport calls before a guarded operation.
authorization/scope
Package scope is the D-VisibilityScope adapter (review-2026-09 R-30): ONE interface answering "which of these objects may the subject read", with exactly three canonical implementations matching the three row-visibility policies that actually exist in the system — person scope (the D-PersonReadScope membership semi-join), unit scope (owning-unit mapping + the shadow gate), and catalog scope (the endpoint's read-permission gate is the entire decision; no row trim).
Package scope is the D-VisibilityScope adapter (review-2026-09 R-30): ONE interface answering "which of these objects may the subject read", with exactly three canonical implementations matching the three row-visibility policies that actually exist in the system — person scope (the D-PersonReadScope membership semi-join), unit scope (owning-unit mapping + the shadow gate), and catalog scope (the endpoint's read-permission gate is the entire decision; no row trim).
authorization/transport
Package transport implements the generated Conjure AuthorizationService interface: it translates the wire contract to/from the application service, assembles localized role name/description maps via the localization service (cross-module query — overview.md), enforces the endpoints' own permissions through the PEP, and maps domain errors to Conjure SerializableErrors (D-Conjure).
Package transport implements the generated Conjure AuthorizationService interface: it translates the wire contract to/from the application service, assembles localized role name/description maps via the localization service (cross-module query — overview.md), enforces the endpoints' own permissions through the PEP, and maps domain errors to Conjure SerializableErrors (D-Conjure).
company
Package company is the composition seam for the company module (docs/modules/company.md / D-Companies): it wires the pgx/sqlc repository, the audited application service, and the transport, then registers the CompanyService Conjure routes.
Package company is the composition seam for the company module (docs/modules/company.md / D-Companies): it wires the pgx/sqlc repository, the audited application service, and the transport, then registers the CompanyService Conjure routes.
company/adapters
Package adapters is the company module's pgx/sqlc-backed persistence adapter (implements domain.Repository).
Package adapters is the company module's pgx/sqlc-backed persistence adapter (implements domain.Repository).
company/application
Package application is the company module's orchestrator (D-Companies): audited writes, the positions/appointments one-holder rule (mirrors membership), registration-identifier validation, and the ownership/affiliation graph assembly.
Package application is the company module's orchestrator (D-Companies): audited writes, the positions/appointments one-holder rule (mirrors membership), registration-identifier validation, and the ownership/affiliation graph assembly.
company/domain
Package domain holds the company module's entities, ports, and invariants (docs/modules/company.md / D-Companies) — a generic legal-entity registry: companies, registrations, industry classification, locations, positions/appointments (mirrors membership), and the ownership/affiliation graph (foundings, shareholdings, beneficiaries, successions, branches).
Package domain holds the company module's entities, ports, and invariants (docs/modules/company.md / D-Companies) — a generic legal-entity registry: companies, registrations, industry classification, locations, positions/appointments (mirrors membership), and the ownership/affiliation graph (foundings, shareholdings, beneficiaries, successions, branches).
company/transport
Package transport implements the generated companyapi.CompanyService (D-Companies, M21).
Package transport implements the generated companyapi.CompanyService (D-Companies, M21).
connector
Package connector is the composition seam for the connector-plane module (M53 / D-ConnectorPlane): it wires the pgx repository, the audited application service, and the transport, then registers the ConnectorService Conjure routes.
Package connector is the composition seam for the connector-plane module (M53 / D-ConnectorPlane): it wires the pgx repository, the audited application service, and the transport, then registers the ConnectorService Conjure routes.
connector/adapters
Package adapters is the connector-plane module's pgx-backed persistence adapter (M53 / D-ConnectorPlane).
Package adapters is the connector-plane module's pgx-backed persistence adapter (M53 / D-ConnectorPlane).
connector/application
Package application is the connector-plane orchestrator (M53 / D-ConnectorPlane): audited self-registration and sync-run reporting by machine subjects, plus the operator read surfaces.
Package application is the connector-plane orchestrator (M53 / D-ConnectorPlane): audited self-registration and sync-run reporting by machine subjects, plus the operator read surfaces.
connector/domain
Package domain holds the connector-plane module's entities, ports and invariants (M53 / D-ConnectorPlane) — the registry of connectors (deployable agents beside the core, of which hermenea is the first), the sources they sync, and the sync runs they report.
Package domain holds the connector-plane module's entities, ports and invariants (M53 / D-ConnectorPlane) — the registry of connectors (deployable agents beside the core, of which hermenea is the first), the sources they sync, and the sync runs they report.
connector/transport
Package transport implements the generated connectorapi.ConnectorService (M53 / D-ConnectorPlane).
Package transport implements the generated connectorapi.ConnectorService (M53 / D-ConnectorPlane).
connectorcall
Package connectorcall is the ON-DEMAND-LOOKUP seam of the connector plane (M53 / D-ConnectorPlane): the one place oikumenea makes SYNCHRONOUS calls OUT to a connector.
Package connectorcall is the ON-DEMAND-LOOKUP seam of the connector plane (M53 / D-ConnectorPlane): the one place oikumenea makes SYNCHRONOUS calls OUT to a connector.
dataimport
Package dataimport is the composition seam for the data-import module (M16 / D-Hermenea): it wires the application service over the platform pool + audit, registers the available object-type upsert handlers (geo-countries first), and registers the generic ImportService Conjure route.
Package dataimport is the composition seam for the data-import module (M16 / D-Hermenea): it wires the application service over the platform pool + audit, registers the available object-type upsert handlers (geo-countries first), and registers the generic ImportService Conjure route.
dataimport/adapters
Package adapters — the external-organizations import store (D-ExternalOrgs, M30; set-based per chunk since R-05).
Package adapters — the external-organizations import store (D-ExternalOrgs, M30; set-based per chunk since R-05).
dataimport/application
Package application holds the data-import module's application service (M16 / D-Hermenea): the generic POST /import/{objectType} orchestrator the transport calls.
Package application holds the data-import module's application service (M16 / D-Hermenea): the generic POST /import/{objectType} orchestrator the transport calls.
dataimport/domain
Package domain holds the data-import module's framework-free core (M16 / D-Hermenea): the canonical record/provenance/summary types and the per-object-type upsert ports.
Package domain holds the data-import module's framework-free core (M16 / D-Hermenea): the canonical record/provenance/summary types and the per-object-type upsert ports.
dataimport/transport
Package transport implements the generated Conjure ImportService interface (M16 / D-Hermenea): it gates on the import service principal / import.manage (PEP), validates the envelope against the path object-type, maps the wire envelope onto the application type, and maps domain errors to Conjure SerializableErrors.
Package transport implements the generated Conjure ImportService interface (M16 / D-Hermenea): it gates on the import service principal / import.manage (PEP), validates the envelope against the path object-type, maps the wire envelope onto the application type, and maps domain errors to Conjure SerializableErrors.
document
Package document is the composition seam for the document module (docs/modules/document.md): it wires the pgx/sqlc repository, the application service (over the envelope cipher + personal-code validator registry), and the transport, then registers the DocumentService Conjure routes.
Package document is the composition seam for the document module (docs/modules/document.md): it wires the pgx/sqlc repository, the application service (over the envelope cipher + personal-code validator registry), and the transport, then registers the DocumentService Conjure routes.
document/adapters
Package adapters implements the document domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.document_* tables.
Package adapters implements the document domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.document_* tables.
document/application
Package application holds the document module's application service — the orchestrator the transport layer calls to read/mutate documents (papers), personal codes (encrypted national identifiers), and their catalogs, recording an audit row in the same transaction as each write (D-Audit).
Package application holds the document module's application service — the orchestrator the transport layer calls to read/mutate documents (papers), personal codes (encrypted national identifiers), and their catalogs, recording an audit row in the same transaction as each write (D-Audit).
document/domain
Package domain holds the document module's pure logic: person-held papers (Document) typed by a catalog (DocumentType), and government personal codes (PersonalCode) typed by a country-namespaced catalog (PersonalCodeScheme), plus the Repository port it needs from the outside world (overview.md layering).
Package domain holds the document module's pure logic: person-held papers (Document) typed by a catalog (DocumentType), and government personal codes (PersonalCode) typed by a country-namespaced catalog (PersonalCodeScheme), plus the Repository port it needs from the outside world (overview.md layering).
document/transport
Package transport implements the document module's generated Conjure DocumentService interface: it translates the wire contract to/from the application service, assembles localized type/scheme `name` maps via the localization service (cross-module query — overview.md), and maps domain errors to Conjure SerializableErrors (D-Conjure).
Package transport implements the document module's generated Conjure DocumentService interface: it translates the wire contract to/from the application service, assembles localized type/scheme `name` maps via the localization service (cross-module query — overview.md), and maps domain errors to Conjure SerializableErrors (D-Conjure).
education
Package education is the composition seam for the education module (docs/modules/education.md / D-Education): it wires the pgx/sqlc repository, the audited application service, and the transport, then registers the EducationService Conjure routes.
Package education is the composition seam for the education module (docs/modules/education.md / D-Education): it wires the pgx/sqlc repository, the audited application service, and the transport, then registers the EducationService Conjure routes.
education/adapters
Package adapters is the education module's pgx/sqlc-backed persistence adapter (implements domain.Repository).
Package adapters is the education module's pgx/sqlc-backed persistence adapter (implements domain.Repository).
education/application
Package application is the education module's orchestrator (D-Education): audited writes, the unit structure tree + maintained closure (mirrors tenant), and the positions/appointments one-holder rule (mirrors membership).
Package application is the education module's orchestrator (D-Education): audited writes, the unit structure tree + maintained closure (mirrors tenant), and the positions/appointments one-holder rule (mirrors membership).
education/domain
Package domain holds the education module's entities, ports, and invariants (docs/modules/education.md / D-Education) — external reference institutions, their recursive structure tree, buildings, groups, positions/appointments (mirrors membership), and the person bindings (enrollments, dorm stays).
Package domain holds the education module's entities, ports, and invariants (docs/modules/education.md / D-Education) — external reference institutions, their recursive structure tree, buildings, groups, positions/appointments (mirrors membership), and the person bindings (enrollments, dorm stays).
education/transport
Reference-layer transport (M20 extension): implements the generated educationrefapi .EducationReferenceService.
Reference-layer transport (M20 extension): implements the generated educationrefapi .EducationReferenceService.
externalorg
Package externalorg is the composition seam for the external-organizations module (docs/modules/external-organizations.md / D-ExternalOrgs, M30): it wires the pgx repository, the audited application service, and the transport, then registers the ExternalOrganizationService Conjure routes.
Package externalorg is the composition seam for the external-organizations module (docs/modules/external-organizations.md / D-ExternalOrgs, M30): it wires the pgx repository, the audited application service, and the transport, then registers the ExternalOrganizationService Conjure routes.
externalorg/adapters
Package adapters is the external-organizations module's pgx-backed persistence adapter (M30, D-ExternalOrgs).
Package adapters is the external-organizations module's pgx-backed persistence adapter (M30, D-ExternalOrgs).
externalorg/application
Package application is the external-organizations module's orchestrator (D-ExternalOrgs, M30): audited writes over the kind catalog + the external-organization node-space, with provisional/resolved resolution.
Package application is the external-organizations module's orchestrator (D-ExternalOrgs, M30): audited writes over the kind catalog + the external-organization node-space, with provisional/resolved resolution.
externalorg/domain
Package domain holds the external-organizations module's entities, ports, and invariants (docs/modules/external-organizations.md / D-ExternalOrgs, M30) — a registry of external organizations a person is tied to but which the deploying org neither owns nor commands (parties, government bodies, foreign military, NGOs, lobbying registrants).
Package domain holds the external-organizations module's entities, ports, and invariants (docs/modules/external-organizations.md / D-ExternalOrgs, M30) — a registry of external organizations a person is tied to but which the deploying org neither owns nor commands (parties, government bodies, foreign military, NGOs, lobbying registrants).
externalorg/transport
Package transport implements the generated externalorgapi.ExternalOrganizationService (D-ExternalOrgs, M30).
Package transport implements the generated externalorgapi.ExternalOrganizationService (D-ExternalOrgs, M30).
finance
Package finance is the composition seam for the finance module (docs/modules/finance.md / D-Finance, M44): it wires the pgx repository, the audited application service (envelope-encrypting IBAN/PAN), and the transport, then registers the FinanceService Conjure routes.
Package finance is the composition seam for the finance module (docs/modules/finance.md / D-Finance, M44): it wires the pgx repository, the audited application service (envelope-encrypting IBAN/PAN), and the transport, then registers the FinanceService Conjure routes.
finance/adapters
Package adapters is the finance module's pgx-backed persistence adapter (M44, D-Finance).
Package adapters is the finance module's pgx-backed persistence adapter (M44, D-Finance).
finance/application
Package application is the finance module's orchestrator (D-Finance, M44): audited writes over the account-type / card-network catalogs, bank accounts (envelope-encrypted IBAN), the polymorphic holder link, and payment cards (envelope-encrypted PAN + clear BIN/last-4).
Package application is the finance module's orchestrator (D-Finance, M44): audited writes over the account-type / card-network catalogs, bank accounts (envelope-encrypted IBAN), the polymorphic holder link, and payment cards (envelope-encrypted PAN + clear BIN/last-4).
finance/domain
Package domain holds the finance module's entities, ports, and invariants (docs/modules/finance.md / D-Finance, M44): bank accounts (envelope-encrypted IBAN), payment cards (envelope-encrypted PAN, no CVV), a polymorphic temporal holder link (person|company), and two reference catalogs.
Package domain holds the finance module's entities, ports, and invariants (docs/modules/finance.md / D-Finance, M44): bank accounts (envelope-encrypted IBAN), payment cards (envelope-encrypted PAN, no CVV), a polymorphic temporal holder link (person|company), and two reference catalogs.
finance/transport
Package transport implements the generated financeapi.FinanceService (D-Finance, M44).
Package transport implements the generated financeapi.FinanceService (D-Finance, M44).
geo
Package geo is the composition seam for the geo module (docs/modules/location.md): it wires the pgx/sqlc repository, the read-only application service, and the transport, then registers the GeoService Conjure routes.
Package geo is the composition seam for the geo module (docs/modules/location.md): it wires the pgx/sqlc repository, the read-only application service, and the transport, then registers the GeoService Conjure routes.
geo/adapters
Package adapters implements the geo domain ports against infrastructure: the pgx/sqlc repository over oikumenea.geo_countries.
Package adapters implements the geo domain ports against infrastructure: the pgx/sqlc repository over oikumenea.geo_countries.
geo/application
Location application logic (D-Location, M19): audited CRUD + spatial reads over the shared place entity.
Location application logic (D-Location, M19): audited CRUD + spatial reads over the shared place entity.
geo/domain
Package domain holds the geo module's pure logic: the Country registry entry and the Repository port it needs from the outside world (overview.md layering).
Package domain holds the geo module's pure logic: the Country registry entry and the Repository port it needs from the outside world (overview.md layering).
geo/transport
Location transport (D-Location, M19): implements the generated locationapi.LocationService — audited CRUD + spatial queries over the shared place entity.
Location transport (D-Location, M19): implements the generated locationapi.LocationService — audited CRUD + spatial queries over the shared place entity.
hermenea
Package hermenea is the composition seam for the hermenea companion service (M16 / D-Hermenea): it wires the store (its own DB), the connector registry, the loader (oikumenea's import endpoint), the application service, and the background runtime, then registers the HermeneaService routes.
Package hermenea is the composition seam for the hermenea companion service (M16 / D-Hermenea): it wires the store (its own DB), the connector registry, the loader (oikumenea's import endpoint), the application service, and the background runtime, then registers the HermeneaService routes.
hermenea/adapters
Package adapters implements the hermenea domain ports against its OWN PostgreSQL (M16 / D-Hermenea).
Package adapters implements the hermenea domain ports against its OWN PostgreSQL (M16 / D-Hermenea).
hermenea/application
Package application is the hermenea orchestrator (M16 / D-Hermenea): it registers sources/mappers, enqueues sync jobs (push trigger + cron), and runs one job's fetch → stage → map → load pipeline against oikumenea's import endpoint, recording import_runs lineage.
Package application is the hermenea orchestrator (M16 / D-Hermenea): it registers sources/mappers, enqueues sync jobs (push trigger + cron), and runs one job's fetch → stage → map → load pipeline against oikumenea's import endpoint, recording import_runs lineage.
hermenea/cldrscripts
Package cldrscripts implements the CLDR language-scripts Mapper (D-Languages, M18).
Package cldrscripts implements the CLDR language-scripts Mapper (D-Languages, M18).
hermenea/config
Package config defines hermenea's install configuration (M16 / D-Hermenea).
Package config defines hermenea's install configuration (M16 / D-Hermenea).
hermenea/db
Package db builds hermenea's own pgx connection pool (M16 / D-Hermenea).
Package db builds hermenea's own pgx connection pool (M16 / D-Hermenea).
hermenea/domain
Package domain holds the hermenea companion service's framework-free core (M16 / D-Hermenea): the ingestion + job-runtime types, the Connector / Mapper / Loader seams, the repository port, the backoff policy, and the (dependency-free) schedule-interval parser.
Package domain holds the hermenea companion service's framework-free core (M16 / D-Hermenea): the ingestion + job-runtime types, the Connector / Mapper / Loader seams, the repository port, the backoff policy, and the (dependency-free) schedule-interval parser.
hermenea/factbookethnicities
Package factbookethnicities implements the ethnicity-scheme PagedMapper (D-PhysicalIdentity amendment, M43) backed by the CIA World Factbook (US-government PUBLIC DOMAIN).
Package factbookethnicities implements the ethnicity-scheme PagedMapper (D-PhysicalIdentity amendment, M43) backed by the CIA World Factbook (US-government PUBLIC DOMAIN).
hermenea/fetcher
Package fetcher implements the hermenea Fetcher seam (M16 / D-Hermenea): pluggable strategies that pull a source's raw payload.
Package fetcher implements the hermenea Fetcher seam (M16 / D-Hermenea): pluggable strategies that pull a source's raw payload.
hermenea/geocountries
Package geocountries implements the ISO-3166 geo-countries Mapper (M16 / D-Hermenea) — hermenea's simplest, network-free proving consumer (the milestone's named "first consumer").
Package geocountries implements the ISO-3166 geo-countries Mapper (M16 / D-Hermenea) — hermenea's simplest, network-free proving consumer (the milestone's named "first consumer").
hermenea/glottolog
CLDFMapper is the LIVE language-scheme path (D-Languages, M18): it transforms the raw Glottolog CLDF snapshot (languages.csv + values.csv, fetched fresh from upstream master by the http-files streaming connector) into the same canonical language-scheme records the bundled-JSON Mapper produces — a Go port of deploy/language-presets/gen-presets.py's gen_glottolog.
CLDFMapper is the LIVE language-scheme path (D-Languages, M18): it transforms the raw Glottolog CLDF snapshot (languages.csv + values.csv, fetched fresh from upstream master by the http-files streaming connector) into the same canonical language-scheme records the bundled-JSON Mapper produces — a Go port of deploy/language-presets/gen-presets.py's gen_glottolog.
hermenea/loader
Package loader implements the hermenea Loader seam (M16 / D-Hermenea; chunked since R-05): it pushes canonical envelopes to oikumenea's public POST /import/{objectType} endpoint over HTTP — the ONLY oikumenea coupling (never the DB).
Package loader implements the hermenea Loader seam (M16 / D-Hermenea; chunked since R-05): it pushes canonical envelopes to oikumenea's public POST /import/{objectType} endpoint over HTTP — the ONLY oikumenea coupling (never the DB).
hermenea/regulatorysanctions
Package regulatorysanctions implements the person regulatory-sanction Mapper (M34 / D-Watchlists).
Package regulatorysanctions implements the person regulatory-sanction Mapper (M34 / D-Watchlists).
hermenea/reporter
Package reporter is hermenea's connector-plane REPORTING seam (M53 / D-ConnectorPlane): the thin outbound adapter by which hermenea makes itself VISIBLE in oikumenea's connector registry.
Package reporter is hermenea's connector-plane REPORTING seam (M53 / D-ConnectorPlane): the thin outbound adapter by which hermenea makes itself VISIBLE in oikumenea's connector registry.
hermenea/runtime
Package runtime is hermenea's background-job engine (M16 / D-Hermenea; N-worker since R-13): a configurable number of worker goroutines claim jobs from the queue (FOR UPDATE SKIP LOCKED, at-least-once — the claim is already safe under any number of claimers, in-process or across replicas) and one cron scheduler enqueues due syncs (idempotent per interval bucket, so extra replicas' schedulers fold into the same jobs).
Package runtime is hermenea's background-job engine (M16 / D-Hermenea; N-worker since R-13): a configurable number of worker goroutines claim jobs from the queue (FOR UPDATE SKIP LOCKED, at-least-once — the claim is already safe under any number of claimers, in-process or across replicas) and one cron scheduler enqueues due syncs (idempotent per interval bucket, so extra replicas' schedulers fold into the same jobs).
hermenea/transport
Package transport implements hermenea's generated Conjure HermeneaService (M16 / D-Hermenea): the push-trigger endpoint + the source/run/job read endpoints over hermenea's own DB.
Package transport implements hermenea's generated Conjure HermeneaService (M16 / D-Hermenea): the push-trigger endpoint + the source/run/job read endpoints over hermenea's own DB.
hermenea/watchlist
Package watchlist implements hermenea's live watchlist screening (D-Watchlists, M34): the first SYNCHRONOUS oikumenea→hermenea surface.
Package watchlist implements hermenea's live watchlist screening (D-Watchlists, M34): the first SYNCHRONOUS oikumenea→hermenea surface.
hermenea/wikidataorgs
Package wikidataorgs implements the external-organizations Mapper (M30 / D-ExternalOrgs) — hermenea's first registry consumer beyond geo/language.
Package wikidataorgs implements the external-organizations Mapper (M30 / D-ExternalOrgs) — hermenea's first registry consumer beyond geo/language.
hermenea/wof
Package wof implements the Who's-On-First geo-places PagedMapper (D-GeoPlaces, M16) — hermenea's first real connector mapper.
Package wof implements the Who's-On-First geo-places PagedMapper (D-GeoPlaces, M16) — hermenea's first real connector mapper.
identityfederation
Package identityfederation is the composition seam for the identity-federation module (docs/modules/identity-federation.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the IdentityFederationService Conjure routes.
Package identityfederation is the composition seam for the identity-federation module (docs/modules/identity-federation.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the IdentityFederationService Conjure routes.
identityfederation/adapters
Package adapters implements the identity-federation domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.account_* tables.
Package adapters implements the identity-federation domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.account_* tables.
identityfederation/application
Login security log (M37 / D-LoginSecurityLog) — the application-layer surface over domain.LoginEventRepository.
Login security log (M37 / D-LoginSecurityLog) — the application-layer surface over domain.LoginEventRepository.
identityfederation/bootstrap
Package bootstrap seeds the first instance admin (D-Bootstrap).
Package bootstrap seeds the first instance admin (D-Bootstrap).
identityfederation/domain
Package domain holds the identity-federation module's pure logic: the optional login Account (an attachment to a person), the verified (issuer, subject) ExternalIdentity that federates to it, and the Repository port it needs from the outside world (overview.md layering).
Package domain holds the identity-federation module's pure logic: the optional login Account (an attachment to a person), the verified (issuer, subject) ExternalIdentity that federates to it, and the Repository port it needs from the outside world (overview.md layering).
identityfederation/ipintel
Package ipintel is the IP-intelligence seam for the login security log (M37 / D-LoginSecurityLog): given a client IP, resolve country / ISP / VPN / Tor.
Package ipintel is the IP-intelligence seam for the login security log (M37 / D-LoginSecurityLog): given a client IP, resolve country / ISP / VPN / Tor.
identityfederation/middleware
Package middleware is the identity-federation inbound-token validation seam (identity-federation.md "Inbound token validation"): it verifies a bearer JWT against the configured issuer(s) — OIDC discovery + JWKS for production RS256, or a symmetric HS256 key for local-dev — maps the verified (issuer, subject) to a PDP subject (account -> person), and attaches it to the request context (pkg/authn).
Package middleware is the identity-federation inbound-token validation seam (identity-federation.md "Inbound token validation"): it verifies a bearer JWT against the configured issuer(s) — OIDC discovery + JWKS for production RS256, or a symmetric HS256 key for local-dev — maps the verified (issuer, subject) to a PDP subject (account -> person), and attaches it to the request context (pkg/authn).
identityfederation/transport
Package transport implements the identity-federation module's generated Conjure IdentityFederationService interface: it translates the wire contract to/from the application service and maps domain errors to Conjure SerializableErrors (D-Conjure).
Package transport implements the identity-federation module's generated Conjure IdentityFederationService interface: it translates the wire contract to/from the application service and maps domain errors to Conjure SerializableErrors (D-Conjure).
language
Package language is the composition seam for the language module (docs/modules/language.md; D-Languages, M18): it wires the pgx/sqlc repository, the read-only application service, and the transport, then registers the LanguageService Conjure routes.
Package language is the composition seam for the language module (docs/modules/language.md; D-Languages, M18): it wires the pgx/sqlc repository, the read-only application service, and the transport, then registers the LanguageService Conjure routes.
language/adapters
Package adapters implements the language domain ports against infrastructure: the pgx/sqlc repository over oikumenea.language_languoids + oikumenea.writing_systems.
Package adapters implements the language domain ports against infrastructure: the pgx/sqlc repository over oikumenea.language_languoids + oikumenea.writing_systems.
language/application
Package application holds the language module's application service — the read-only orchestrator the transport layer calls to browse the Glottolog languoid forest + ISO-15924 writing systems, and that other modules could call in-process to resolve a language.
Package application holds the language module's application service — the read-only orchestrator the transport layer calls to browse the Glottolog languoid forest + ISO-15924 writing systems, and that other modules could call in-process to resolve a language.
language/domain
Package domain holds the language module's pure logic: the Languoid + WritingSystem registry entries and the Repository port it needs (overview.md layering).
Package domain holds the language module's pure logic: the Languoid + WritingSystem registry entries and the Repository port it needs (overview.md layering).
language/transport
Package transport implements the language module's generated Conjure LanguageService interface: it translates the wire contract to/from the application service (overview.md; D-Conjure).
Package transport implements the language module's generated Conjure LanguageService interface: it translates the wire contract to/from the application service (overview.md; D-Conjure).
links
Package links is the composition seam for the generic link-traversal module (docs/modules/links.md / D-LinkTraversal, review-2026-09 R-27).
Package links is the composition seam for the generic link-traversal module (docs/modules/links.md / D-LinkTraversal, review-2026-09 R-27).
links/application
Package application is the generic link-traversal engine (D-LinkTraversal, review-2026-09 R-27).
Package application is the generic link-traversal engine (D-LinkTraversal, review-2026-09 R-27).
links/domain
Package domain holds the generic link-traversal model (D-LinkTraversal, review-2026-09 R-27): the Descriptor each module registers for one reified link table at composition time, the type-erased link row, and the composite keyset page token that federates the per-arm cursors.
Package domain holds the generic link-traversal model (D-LinkTraversal, review-2026-09 R-27): the Descriptor each module registers for one reified link table at composition time, the type-erased link row, and the composite keyset page token that federates the per-arm cursors.
links/transport
Package transport adapts the generated LinkService Conjure interface onto the traversal engine (D-LinkTraversal).
Package transport adapts the generated LinkService Conjure interface onto the traversal engine (D-LinkTraversal).
localization
Package localization is the composition seam for the localization module (docs/modules/localization.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the LocalizationService Conjure routes.
Package localization is the composition seam for the localization module (docs/modules/localization.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the LocalizationService Conjure routes.
localization/adapters
Package adapters implements the localization domain ports against infrastructure: the pgx/sqlc repository over oikumenea.i18n_locales and oikumenea.i18n_translations.
Package adapters implements the localization domain ports against infrastructure: the pgx/sqlc repository over oikumenea.i18n_locales and oikumenea.i18n_translations.
localization/application
Package application holds the localization module's application service — the orchestrator the transport layer calls to read the locale registry / translation store and to perform the instance-admin writes, and that other modules call in-process to assemble localized responses (overview.md).
Package application holds the localization module's application service — the orchestrator the transport layer calls to read the locale registry / translation store and to perform the instance-admin writes, and that other modules call in-process to assemble localized responses (overview.md).
localization/domain
Package domain holds the localization module's pure logic: the Locale registry entry and the polymorphic Translation it stores, their invariants, and the Repository port it needs from the outside world (overview.md layering).
Package domain holds the localization module's pure logic: the Locale registry entry and the polymorphic Translation it stores, their invariants, and the Repository port it needs from the outside world (overview.md layering).
localization/transport
Package transport implements the localization module's generated Conjure LocalizationService interface: it translates the wire contract to/from the application service and maps domain errors to Conjure SerializableErrors (overview.md; D-Conjure).
Package transport implements the localization module's generated Conjure LocalizationService interface: it translates the wire contract to/from the application service and maps domain errors to Conjure SerializableErrors (overview.md; D-Conjure).
membership
Package membership is the composition seam for the membership module (docs/modules/membership.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the MembershipService Conjure routes.
Package membership is the composition seam for the membership module (docs/modules/membership.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the MembershipService Conjure routes.
membership/adapters
Package adapters implements the membership domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.membership_* tables.
Package adapters implements the membership domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.membership_* tables.
membership/application
Package application holds the membership module's application service — the orchestrator the transport layer calls to read/mutate positions (unit-owned billets) and memberships (people belonging to / filling them), recording an audit row in the same transaction as each write (D-Audit).
Package application holds the membership module's application service — the orchestrator the transport layer calls to read/mutate positions (unit-owned billets) and memberships (people belonging to / filling them), recording an audit row in the same transaction as each write (D-Audit).
membership/domain
Package domain holds the membership module's pure logic: the unit-owned billet (Position), the reified person->unit belonging/filling Link (Membership), and the Repository port it needs from the outside world (overview.md layering).
Package domain holds the membership module's pure logic: the unit-owned billet (Position), the reified person->unit belonging/filling Link (Membership), and the Repository port it needs from the outside world (overview.md layering).
membership/transport
Package transport implements the membership module's generated Conjure MembershipService interface: it translates the wire contract to/from the application service, assembles localized position `title` maps via the localization service (cross-module query — overview.md), and maps domain errors to Conjure SerializableErrors (D-Conjure).
Package transport implements the membership module's generated Conjure MembershipService interface: it translates the wire contract to/from the application service, assembles localized position `title` maps via the localization service (cross-module query — overview.md), and maps domain errors to Conjure SerializableErrors (D-Conjure).
order
Package order is the composition seam for the order module (docs/modules/order.md): it seeds the order-type catalog, wires the pgx/sqlc repository, the application service (over the event bus), and the transport, then registers the OrderService Conjure routes.
Package order is the composition seam for the order module (docs/modules/order.md): it seeds the order-type catalog, wires the pgx/sqlc repository, the application service (over the event bus), and the transport, then registers the OrderService Conjure routes.
order/adapters
Package adapters implements the order domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.order_* tables.
Package adapters implements the order domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.order_* tables.
order/application
Package application holds the order module's application service — the orchestrator the transport layer calls to manage administrative orders (наказ) and their type catalog, recording an audit row in the same transaction as each write (D-Audit).
Package application holds the order module's application service — the orchestrator the transport layer calls to manage administrative orders (наказ) and their type catalog, recording an audit row in the same transaction as each write (D-Audit).
order/domain
Package domain holds the order module's core model and ports (docs/modules/order.md, D-Orders): administrative orders (наказ) — the formal acts that are the LEGAL BASIS for a change in a person's status.
Package domain holds the order module's core model and ports (docs/modules/order.md, D-Orders): administrative orders (наказ) — the formal acts that are the LEGAL BASIS for a change in a person's status.
order/events
Package orderevents holds the order module's intent events (order.md / D-OrderApply): the effect-typed events order.issue publishes, one per order item, that membership/person subscribers apply IN THE ISSUE TRANSACTION.
Package orderevents holds the order module's intent events (order.md / D-OrderApply): the effect-typed events order.issue publishes, one per order item, that membership/person subscribers apply IN THE ISSUE TRANSACTION.
order/transport
Package transport implements the order module's generated Conjure OrderService interface: it translates the wire contract to/from the application service, assembles localized type `name` maps via the localization service (cross-module query — overview.md), and maps domain errors to Conjure SerializableErrors (D-Conjure).
Package transport implements the order module's generated Conjure OrderService interface: it translates the wire contract to/from the application service, assembles localized type `name` maps via the localization service (cross-module query — overview.md), and maps domain errors to Conjure SerializableErrors (D-Conjure).
person
Package person is the composition seam for the person module (docs/modules/person.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the PersonService Conjure routes.
Package person is the composition seam for the person module (docs/modules/person.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the PersonService Conjure routes.
person/adapters
Package adapters is the person core module's pgx/sqlc-backed persistence adapter (D-PersonModuleSplit, review-2026-07 R-09).
Package adapters is the person core module's pgx/sqlc-backed persistence adapter (D-PersonModuleSplit, review-2026-07 R-09).
person/appkit
Package appkit holds the small transaction + audit plumbing shared by the person-family application services (person core, personprofile, personsensitive) after the R-09 split.
Package appkit holds the small transaction + audit plumbing shared by the person-family application services (person core, personprofile, personsensitive) after the R-09 split.
person/application
Name-alias orchestration (D-PhysicalIdentity, M31): alias name forms (aka/former_legal/maiden/ pseudonym/cover) held in person_name_variants.
Name-alias orchestration (D-PhysicalIdentity, M31): alias name forms (aka/former_legal/maiden/ pseudonym/cover) held in person_name_variants.
person/domain
Health & vulnerability records (D-HealthVulnerability, M36) — the strictest gate.
Health & vulnerability records (D-HealthVulnerability, M36) — the strictest gate.
person/events
Package personevents holds the person module's domain events (D-OverlayFoundation, M29).
Package personevents holds the person module's domain events (D-OverlayFoundation, M29).
person/transport
Package transport (R-09 file split): citizenship, residence, contact-channel and language handlers for the one PersonService Conjure surface.
Package transport (R-09 file split): citizenship, residence, contact-channel and language handlers for the one PersonService Conjure surface.
personprofile
Package personprofile is the composition seam for the person directory's non-encrypted, person-owned directory data (R-09 split): citizenships, residences, addresses, contact channels, SPEAKS languages, person↔person relationships, and the non-encrypted institutional ties.
Package personprofile is the composition seam for the person directory's non-encrypted, person-owned directory data (R-09 split): citizenships, residences, addresses, contact channels, SPEAKS languages, person↔person relationships, and the non-encrypted institutional ties.
personprofile/adapters
Package adapters is the personprofile module's pgx/sqlc-backed persistence adapter (D-PersonModuleSplit, review-2026-07 R-09).
Package adapters is the personprofile module's pgx/sqlc-backed persistence adapter (D-PersonModuleSplit, review-2026-07 R-09).
personprofile/application
Address orchestration (D-PersonAddresses, M32): a person's precise, effective-dated addresses over the shared M19 Location entity.
Address orchestration (D-PersonAddresses, M32): a person's precise, effective-dated addresses over the shared M19 Location entity.
personsensitive
Package personsensitive is the composition seam for the person directory's sensitive-data module (R-09 split): physical identity, the envelope-encrypted declared ethnicity, the financial/behavioural/ psychological overlays, the encrypted declared party membership, and watchlist matches + regulatory sanctions.
Package personsensitive is the composition seam for the person directory's sensitive-data module (R-09 split): physical identity, the envelope-encrypted declared ethnicity, the financial/behavioural/ psychological overlays, the encrypted declared party membership, and watchlist matches + regulatory sanctions.
personsensitive/adapters
Package adapters is the personsensitive module's pgx/sqlc-backed persistence adapter (D-PersonModuleSplit, review-2026-07 R-09).
Package adapters is the personsensitive module's pgx/sqlc-backed persistence adapter (D-PersonModuleSplit, review-2026-07 R-09).
personsensitive/application
Health & vulnerability orchestration (D-HealthVulnerability, M36).
Health & vulnerability orchestration (D-HealthVulnerability, M36).
pinax
Package pinax is the reference-plane boot autoseeder (D-Pinax, M45).
Package pinax is the reference-plane boot autoseeder (D-Pinax, M45).
platform
Package platform is the composition seam for the platform module: it wires the shared services (DB pool, readiness gate) and registers the operational Conjure routes onto the witchcraft router.
Package platform is the composition seam for the platform module: it wires the shared services (DB pool, readiness gate) and registers the operational Conjure routes onto the witchcraft router.
platform/catalog
The per-domain color catalog (D-Color): platform's first RID-bearing reference Object, sitting next to the lawful-basis catalog.
The per-domain color catalog (D-Color): platform's first RID-bearing reference Object, sitting next to the lawful-basis catalog.
platform/config
Package config defines the platform install + runtime configuration types (ECV + refreshable; docs/modules/platform.md).
Package config defines the platform install + runtime configuration types (ECV + refreshable; docs/modules/platform.md).
platform/db
Advisory-lock helper (R-13 / M49): cross-process mutual exclusion for the boot-time seeding paths (pinax autoseed + first-admin bootstrap).
Advisory-lock helper (R-13 / M49): cross-process mutual exclusion for the boot-time seeding paths (pinax autoseed + first-admin bootstrap).
platform/health
Package health holds the platform readiness-gating reporters (witchcraft-go-health; docs/modules/platform.md).
Package health holds the platform readiness-gating reporters (witchcraft-go-health; docs/modules/platform.md).
platform/outbox
Package outbox is the after-commit half of the transactional outbox (review-2026-07 R-10 / D-EventOutbox): it drains oikumenea.platform_outbox (migration 0036) and delivers each `notify`-class event to its registered handlers OUT OF PROCESS, after the producing transaction has committed.
Package outbox is the after-commit half of the transactional outbox (review-2026-07 R-10 / D-EventOutbox): it drains oikumenea.platform_outbox (migration 0036) and delivers each `notify`-class event to its registered handlers OUT OF PROCESS, after the producing transaction has committed.
platform/transport
The platform catalog transport implements the generated PlatformCatalogService (D-OverlayFoundation, M29): the GDPR lawful-basis reference catalog.
The platform catalog transport implements the generated PlatformCatalogService (D-OverlayFoundation, M29): the GDPR lawful-basis reference catalog.
rank
Package rank is the composition seam for the rank module (docs/modules/rank.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the RankService Conjure routes.
Package rank is the composition seam for the rank module (docs/modules/rank.md): it wires the pgx/sqlc repository, the application service, and the transport, then registers the RankService Conjure routes.
rank/adapters
Package adapters implements the rank domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.rank_* tables.
Package adapters implements the rank domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.rank_* tables.
rank/application
Package application holds the rank module's application service — the orchestrator the transport layer calls to read/mutate the single system-wide rank scheme, recording an audit row in the same transaction as each write (D-Audit).
Package application holds the rank module's application service — the orchestrator the transport layer calls to read/mutate the single system-wide rank scheme, recording an audit row in the same transaction as each write (D-Audit).
rank/domain
Package domain holds the rank module's pure logic: the three-level scheme (category -> type -> rank), its containment invariants, and the Repository port it needs from the outside world (overview.md layering).
Package domain holds the rank module's pure logic: the three-level scheme (category -> type -> rank), its containment invariants, and the Repository port it needs from the outside world (overview.md layering).
rank/transport
Package transport implements the rank module's generated Conjure RankService interface: it translates the wire contract to/from the application service, assembles localized `name` maps via the localization service (cross-module query — overview.md), and maps domain errors to Conjure SerializableErrors (D-Conjure).
Package transport implements the rank module's generated Conjure RankService interface: it translates the wire contract to/from the application service, assembles localized `name` maps via the localization service (cross-module query — overview.md), and maps domain errors to Conjure SerializableErrors (D-Conjure).
religion
Package religion is the composition seam for the religion module (docs/modules/religion.md / D-Religion, M22): it wires the raw-pgx repository, the audited application service (which reuses the tenant service to build canonical-graph governance trees), and the transport, then registers the ReligionService Conjure routes.
Package religion is the composition seam for the religion module (docs/modules/religion.md / D-Religion, M22): it wires the raw-pgx repository, the audited application service (which reuses the tenant service to build canonical-graph governance trees), and the transport, then registers the ReligionService Conjure routes.
religion/adapters
Lay-affiliation persistence (D-ReligiousAffiliation / D-SpecialPII, M24): the affiliation-type catalog + the pii:special affiliation Link.
Lay-affiliation persistence (D-ReligiousAffiliation / D-SpecialPII, M24): the affiliation-type catalog + the pii:special affiliation Link.
religion/application
Lay-affiliation orchestration (D-ReligiousAffiliation / D-SpecialPII, M24): audited writes with the belief value envelope-encrypted (Seal) on write and decrypted (Open) on read; crypto-erased on purge.
Lay-affiliation orchestration (D-ReligiousAffiliation / D-SpecialPII, M24): audited writes with the belief value envelope-encrypted (Seal) on write and decrypted (Open) on read; crypto-erased on purge.
religion/domain
Lay-affiliation domain (D-ReligiousAffiliation / D-SpecialPII, M24): the per-tradition affiliation-type catalog + the reified, GDPR Art.
Lay-affiliation domain (D-ReligiousAffiliation / D-SpecialPII, M24): the per-tradition affiliation-type catalog + the reified, GDPR Art.
religion/transport
Lay-affiliation transport (D-ReligiousAffiliation / D-SpecialPII, M24): catalog reads on religion.read, catalog writes on religion.catalog.manage; affiliation reads + writes on affiliation.manage (the value is GDPR Art.
Lay-affiliation transport (D-ReligiousAffiliation / D-SpecialPII, M24): catalog reads on religion.read, catalog writes on religion.catalog.manage; affiliation reads + writes on affiliation.manage (the value is GDPR Art.
search
Package search is the composition seam for the unified cross-type search module (docs/modules/search.md / D-UnifiedSearch, review-2026-09 R-26).
Package search is the composition seam for the unified cross-type search module (docs/modules/search.md / D-UnifiedSearch, review-2026-09 R-26).
search/application
Package application is the unified-search fan-in engine (D-UnifiedSearch, review-2026-09 R-26).
Package application is the unified-search fan-in engine (D-UnifiedSearch, review-2026-09 R-26).
search/domain
Package domain holds the search module's core model (D-UnifiedSearch, review-2026-09 R-26): the SearchProvider contract each searchable module registers at composition time, the type-erased hit, and the composite keyset page token that federates the per-provider cursors.
Package domain holds the search module's core model (D-UnifiedSearch, review-2026-09 R-26): the SearchProvider contract each searchable module registers at composition time, the type-erased hit, and the composite keyset page token that federates the per-provider cursors.
search/transport
Package transport adapts the generated SearchService Conjure interface onto the fan-in engine (D-UnifiedSearch).
Package transport adapts the generated SearchService Conjure interface onto the fan-in engine (D-UnifiedSearch).
tenant
Package tenant is the composition seam for the tenant module (docs/modules/tenant.md): it seeds the graph registry, wires the pgx/sqlc repository, the application service, and the transport, then registers the TenantService Conjure routes.
Package tenant is the composition seam for the tenant module (docs/modules/tenant.md): it seeds the graph registry, wires the pgx/sqlc repository, the application service, and the transport, then registers the TenantService Conjure routes.
tenant/adapters
Package adapters implements the tenant domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.tenant_* tables.
Package adapters implements the tenant domain ports against infrastructure: the pgx/sqlc repository over the oikumenea.tenant_* tables.
tenant/application
Domains (org-kind catalog), unit kinds (domain-scoped catalog), and organizations (the realm) — the two-tier model above the unit graph (D-TenantOrganizations, M40).
Domains (org-kind catalog), unit kinds (domain-scoped catalog), and organizations (the realm) — the two-tier model above the unit graph (D-TenantOrganizations, M40).
tenant/domain
Package domain holds the tenant module's pure logic: units (nodes), graphs (named hierarchies), the parent->child edge, the derived closure, lifecycle transitions, their invariants, and the Repository port it needs from the outside world (overview.md layering).
Package domain holds the tenant module's pure logic: units (nodes), graphs (named hierarchies), the parent->child edge, the derived closure, lifecycle transitions, their invariants, and the Repository port it needs from the outside world (overview.md layering).
tenant/transport
Package transport implements the tenant module's generated Conjure TenantService interface: it translates the wire contract to/from the application service, assembles localized `name` maps via the localization service (cross-module query — overview.md), and maps domain errors to Conjure SerializableErrors (D-Conjure).
Package transport implements the tenant module's generated Conjure TenantService interface: it translates the wire contract to/from the application service, assembles localized `name` maps via the localization service (cross-module query — overview.md), and maps domain errors to Conjure SerializableErrors (D-Conjure).
vehicle
Package vehicle is the composition seam for the vehicle module (docs/modules/vehicle.md / D-Vehicles): it wires the pgx repository, the audited application service, and the transport, then registers the VehicleService Conjure routes.
Package vehicle is the composition seam for the vehicle module (docs/modules/vehicle.md / D-Vehicles): it wires the pgx repository, the audited application service, and the transport, then registers the VehicleService Conjure routes.
vehicle/adapters
Package adapters is the vehicle module's pgx-backed persistence adapter (M26, D-Vehicles).
Package adapters is the vehicle module's pgx-backed persistence adapter (M26, D-Vehicles).
vehicle/application
Package application is the vehicle module's orchestrator (D-Vehicles, M26): audited writes over the brand/model/type catalogs, the vehicle object, the brand→manufacturer link, and the ownership+plate registration record.
Package application is the vehicle module's orchestrator (D-Vehicles, M26): audited writes over the brand/model/type catalogs, the vehicle object, the brand→manufacturer link, and the ownership+plate registration record.
vehicle/domain
Package domain holds the vehicle module's entities, ports, and invariants (docs/modules/vehicle.md / D-Vehicles) — a generic vehicle registry: a brand/model/type taxonomy, the physical vehicle (VIN), the brand→manufacturer link (to a M21 company), and the ownership+plate registration record.
Package domain holds the vehicle module's entities, ports, and invariants (docs/modules/vehicle.md / D-Vehicles) — a generic vehicle registry: a brand/model/type taxonomy, the physical vehicle (VIN), the brand→manufacturer link (to a M21 company), and the ownership+plate registration record.
vehicle/transport
Package transport implements the generated vehicleapi.VehicleService (D-Vehicles, M26).
Package transport implements the generated vehicleapi.VehicleService (D-Vehicles, M26).
watchlistclient
Package watchlistclient is the WATCHLIST lookup KIND of the connector plane's on-demand-lookup seam (D-Watchlists M34; generalized under D-ConnectorPlane M53).
Package watchlistclient is the WATCHLIST lookup KIND of the connector plane's on-demand-lookup seam (D-Watchlists M34; generalized under D-ConnectorPlane M53).
Package migrations embeds the repo-root Atlas migration files so binaries can derive their expected schema revision from the migrations themselves rather than a hand-bumped constant (architecture review R-15).
Package migrations embeds the repo-root Atlas migration files so binaries can derive their expected schema revision from the migrations themselves rather than a hand-bumped constant (architecture review R-15).
hermenea
Package hermeneamigrations embeds hermenea's versioned Atlas migration files so the hermenea binary can derive its expected schema revision from the migrations themselves rather than a hand-bumped constant (architecture review R-25, mirroring oikumenea's migrations.FS / R-15).
Package hermeneamigrations embeds hermenea's versioned Atlas migration files so the hermenea binary can derive its expected schema revision from the migrations themselves rather than a hand-bumped constant (architecture review R-25, mirroring oikumenea's migrations.FS / R-15).
pkg
action
Package action is the action-type registry (review-2026-09 R-29 / D-ActionTypes): the machine catalog of every named write the system audits.
Package action is the action-type registry (review-2026-09 R-29 / D-ActionTypes): the machine catalog of every named write the system audits.
authn
Package authn holds the request-scoped PDP subject: the (person, account) an inbound IdP token resolved to (docs/modules/identity-federation.md step 4).
Package authn holds the request-scoped PDP subject: the (person, account) an inbound IdP token resolved to (docs/modules/identity-federation.md step 4).
config
Package config holds framework-free helpers for reading hot-reloadable runtime configuration (docs/architecture/conventions.md: ECV + refreshable).
Package config holds framework-free helpers for reading hot-reloadable runtime configuration (docs/architecture/conventions.md: ECV + refreshable).
config/envoverlay
Package envoverlay layers process environment variables on top of a YAML config file so go-oikumenea can boot 12-factor style: env variables OVERRIDE the YAML, and the YAML file is OPTIONAL (an absent file plus env vars is a valid, fully env-only boot).
Package envoverlay layers process environment variables on top of a YAML config file so go-oikumenea can boot 12-factor style: env variables OVERRIDE the YAML, and the YAML file is OPTIONAL (an absent file plus env vars is a valid, fully env-only boot).
crypto
Package crypto is the envelope-encryption seam for pii:sensitive data (D-CryptoProvider): today the national-identifier values held by the document module (docs/modules/platform.md).
Package crypto is the envelope-encryption seam for pii:sensitive data (D-CryptoProvider): today the national-identifier values held by the document module (docs/modules/platform.md).
errors
Package errors holds the werror conventions shared across modules (docs/architecture/conventions.md): wrap with safe/unsafe params, where safe params may appear in logs/responses and unsafe params (PII, secrets) are logged redacted and never returned.
Package errors holds the werror conventions shared across modules (docs/architecture/conventions.md): wrap with safe/unsafe params, where safe params may appear in logs/responses and unsafe params (PII, secrets) are logged redacted and never returned.
events
Package events is the in-process domain-event bus (platform.md).
Package events is the in-process domain-event bus (platform.md).
facet
Package facet is the object-facet registry (M56 / D-ObjectFacets): the machine catalog of every declared, filterable, groupable dimension of a listable object type.
Package facet is the object-facet registry (M56 / D-ObjectFacets): the machine catalog of every declared, filterable, groupable dimension of a listable object type.
id
Package id holds UUIDv7 helpers that mirror the SQL oikumenea.uuid_v7() generator (docs/modules/platform.md).
Package id holds UUIDv7 helpers that mirror the SQL oikumenea.uuid_v7() generator (docs/modules/platform.md).
listing
Package listing is the shared kernel for token-paginated list endpoints (M56 / D-ObjectFacets): one keyset-cursor codec and one page-size clamp, replacing the per-module copies that had drifted into three incompatible shapes.
Package listing is the shared kernel for token-paginated list endpoints (M56 / D-ObjectFacets): one keyset-cursor codec and one page-size clamp, replacing the per-module copies that had drifted into three incompatible shapes.
personalcode
Package personalcode is the national-identifier validator registry (D-PersonalCodes): a compiled, reviewable set of scheme validators (UA RNOKPP checksum, US SSN format, PL PESEL checksum, …) keyed on the scheme code, plus the documented validation precedence the document module applies on personal-code create/update — code validator > the scheme's catalog regex fallback > accept-with- warning (docs/modules/platform.md).
Package personalcode is the national-identifier validator registry (D-PersonalCodes): a compiled, reviewable set of scheme validators (UA RNOKPP checksum, US SSN format, PL PESEL checksum, …) keyed on the scheme code, plus the documented validation precedence the document module applies on personal-code create/update — code validator > the scheme's catalog regex fallback > accept-with- warning (docs/modules/platform.md).
rid
Package rid decodes go-oikumenea Resource Identifiers (D-ResourceIdentifiers).
Package rid decodes go-oikumenea Resource Identifiers (D-ResourceIdentifiers).
stats
Package stats is the module-dashboard kernel (M57 / D-ObjectFacets): the half of a GET /<module>/v1/<collection>/stats response that is NOT SQL.
Package stats is the module-dashboard kernel (M57 / D-ObjectFacets): the half of a GET /<module>/v1/<collection>/stats response that is NOT SQL.
scripts
gen-wof-synthetic command
gen-wof-synthetic writes a synthetic Who's-On-First SQLite distribution for the R-05 / M49 acceptance run: a national-scale geo-places dataset (default 1,000,000 places — 1 country + regions + counties + localities, parent-first via wof:hierarchy) in exactly the shape the `wof-sqlite` connector + wof.GeoPlacesMapper consume (spr + geojson tables).
gen-wof-synthetic writes a synthetic Who's-On-First SQLite distribution for the R-05 / M49 acceptance run: a national-scale geo-places dataset (default 1,000,000 places — 1 country + regions + counties + localities, parent-first via wof:hierarchy) in exactly the shape the `wof-sqlite` connector + wof.GeoPlacesMapper consume (spr + geojson tables).
seed-demo command
seed-demo: realistic "used system" demo data generator.
seed-demo: realistic "used system" demo data generator.
seed-scale command
seed-scale: synthetic national-scale world generator (review-2026-07 Phase 0 / M46).
seed-scale: synthetic national-scale world generator (review-2026-07 Phase 0 / M46).
tools
gen-ontology-mirror command
Command gen-ontology-mirror generates the web console's RID decode tables from pkg/rid — the single source of truth for the ontology type registry (R-28, review-2026-09).
Command gen-ontology-mirror generates the web console's RID decode tables from pkg/rid — the single source of truth for the ontology type registry (R-28, review-2026-09).
genactionendpoints command
Command genactionendpoints derives the per-action HTTP endpoint binding (review-2026-09 R-33 seam, the action-invocation backbone) from the Conjure IR and pkg/action's catalog, writing pkg/action/endpoints_gen.go.
Command genactionendpoints derives the per-action HTTP endpoint binding (review-2026-09 R-33 seam, the action-invocation backbone) from the Conjure IR and pkg/action's catalog, writing pkg/action/endpoints_gen.go.
genactionparams command
Command genactionparams derives the per-action parameter schemas (review-2026-09 R-29 seam) from the Conjure IR and writes pkg/action/params_gen.go.
Command genactionparams derives the per-action parameter schemas (review-2026-09 R-29 seam) from the Conjure IR and writes pkg/action/params_gen.go.
genfacetargs command
Command genfacetargs derives, from the Conjure IR, the query-arg set of every list endpoint the facet catalog binds to, writing pkg/facet/args_gen.go (M56 / D-ObjectFacets).
Command genfacetargs derives, from the Conjure IR, the query-arg set of every list endpoint the facet catalog binds to, writing pkg/facet/args_gen.go (M56 / D-ObjectFacets).
ir2openapi command
Command ir2openapi converts the go-oikumenea Conjure IR into an OpenAPI 3.0 document.
Command ir2openapi converts the go-oikumenea Conjure IR into an OpenAPI 3.0 document.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL