Skip to main content

Backlog

Investigations and plans waiting for implementation, sorted by last updated date.

DocumentGoalUpdated
---Make public reachability a property a service declares, instead of a2026-09-19
INVESTIGATE backlog — priority view2026-09-19
---Ship oauth2-proxy as an ordinary UIS service — `uis enable2026-09-18
Investigate: exposure is a property of the tunnel, not of the service — and exactly one service has a loginDecide how a UIS service becomes reachable from the internet, and what2026-09-18
Plan: a command that loads the data, and a command that reports on it2026-09-14
Plan: one deliberate pass over the error pathsEvery path that runs only when something has already failed is2026-09-12
Plan: the definition is pinned by digest, the code that runs is notuis template install must record, print, and — if the chart allows2026-09-12
Plan: uis undeploy exits 0 and keeps the dataafter an undeploy, an operator must know exactly what still exists —2026-09-12
Plan: the install verifies the IngressRoute was created, not that it routesan install must not report a working URL for a route that cannot serve2026-09-12
Plan: uis dagster run launches duplicates silentlylaunching a job that is already running must be a deliberate act, not2026-09-12
Plan: what UIS's workflows would need from a self-hosted runner, and why they should not move yetIf UIS's CI ever moves to self-hosted runners, the three properties2026-09-11
Plan: this repository is public and names one installation's private networkDecide what a public repository may say about the installation it was2026-09-10
Plan: pin and verify the binaries the image installs2026-09-10
Plan: four dependency alerts on the docs site, and why bumping does not clear themThe repository's open dependency alerts are either cleared or2026-09-10
Plan: an unmarked proxy and no StatefulSet is the one revert that warns nothinguis deploy <svc> cannot roll out an in-cluster workload on top of a2026-09-10
Plan: UIS assumes its Postgres Service is its own, and cannot tell if it is notUIS knows whether the Postgres server it is about to write to is a2026-09-10
Plan: "leaves the database alone" is not what a failed init: doesWhen an init: fails part-way through on a database that already2026-09-10
Plan: configure postgresql --purge, or an honest refusalA per-app database, its owning role, and the Secret written by2026-09-10
Plan: install an application from the catalogue, in one command./uis template install <application> installs an application on any UIS2026-09-09
Monitor the components that are not in the clusterThe parts of a production install that live outside Kubernetes — the2026-09-09
Ship a dashboard with the serviceuis deploy <service> on a cluster with Grafana yields a dashboard for2026-09-09
Baseline alert rules, and somewhere for them to gouis stack install observability produces a platform that **tells you2026-09-09
Ship container logs to LokiLogs from every pod are searchable in Grafana, automatically, so that2026-09-09
Ship the monitor pipeline as part of the serviceuis deploy uptime-kuma gives a watchdog that is **already monitoring2026-09-09
Make the watchdog able to wake someone — and watch itselfAn alert reaches a human away from home, and the watchdog's own death2026-09-09
Define what the watchdog watches2026-09-09
Deploy Uptime Kuma as an external watchdog2026-09-09
Plan: The Grafana deploy gate reports the stack, not the raceMake uis deploy grafana succeed deterministically on a healthy stack,2026-09-09
Plan: reject a valid config: key on the wrong service, at parse timeA template declaring a supported config: key on a service that does2026-09-08
---2026-09-08
Investigate: install an application that spans several services, from one declarationLet one declaration install an application that needs several platform2026-09-08
Declare external dependencies as shim ServicesEvery dependency UIS has on something outside the cluster is declared2026-09-07
Ship neko as an optional add-on — the honest case for and against2026-09-07
Plan: advertise only the configure handlers that existSCRIPT_CONFIGURABLE="true" appears only on services that actually have a2026-09-07
---2026-08-31
A workflow's paths: filter and what the job actually depends on drift apart, silentlyDecide how a workflow's declared paths: can be kept honest against what its job really2026-08-30
Investigate: should a service bring its own availability probe, and can Uptime Kuma accept one?Decide how the external watchdog's monitors get created and stay in2026-08-30
uis deploy reports one exit code for two different outcomesAn operator or a script can tell "the topology change failed" apart from "the topology2026-08-30
Investigate: a green UIS test run must not depend on the development topology2026-08-26
---2026-08-25
---2026-08-25
---2026-08-25
---2026-08-24
---2026-08-24
---2026-08-24
Fix: the provisioning rules teach the kubectl run --rm -i idiom that loses outputStop the platform's own rules document from recommending a test idiom2026-08-23
Plan: Registering a verify command is a three-place changeMake every registered verify playbook reachable from both invocation2026-08-23
---2026-08-23
Investigate: Dagster Orchestration Platform for UISUIS today has no data-pipeline orchestrator. Applications that need to ingest, transform, and catalogue data have three options — each with drawbacks:2026-08-23
Fix: configure postgrest cannot tell "configured" from "was configured once"A PostgREST instance whose database no longer carries its grants is2026-08-22
Review: bring Alloy in line with how other services are deployed and verified2026-08-22
Investigate: Alloy and the OTel Collector — the consequences nobody scheduledAct on the consequences the Alloy decision recorded and nobody followed2026-08-22
Fix: the provision-host ships a Kubernetes client 12 major versions too oldThe Ansible layer talks to the cluster with a client the collection2026-08-21
Fix: 16 of 24 Helm-based services take whatever the chart repo serves that dayEvery helm upgrade --install in UIS names the chart version it was2026-08-21
Fix: 21 playbooks declare a variable named namespace, which Ansible reservesNo playbook shadows an Ansible reserved name.2026-08-21
Fix: test-all hides work in --dry-run and skips a service permanentlytest-all reports what it will do and what it did not do.2026-08-21
Plan: one constructor for a monitor, not twoprovision-host/uis/lib/monitors.py builds a monitor object in one2026-08-21
INVESTIGATE: Verification Playbooks Usage and CoverageThe ansible/playbooks/utility/ folder contains a mix of verification playbooks, task includes, setup helpers, and one-off utilities. Several of these files appear to have no active caller in the current repo.2026-08-21
Analysis: NAIS and UIS — what transfers, what doesn't, and what UIS already does better2026-08-21
Investigate: services that run outside the cluster in production, and inside it on a laptopMake every UIS service deployable on a developer's laptop, including the2026-08-14
Investigate: OpenBao — deployable on a laptop, and the same interface in production2026-08-14
Investigate: a secret that works in dev, and what happens to it in production2026-08-14
Plan: AKS Manual Setup — variable-by-variable runbook for first-run provisioningProvide a self-contained runbook for the first manual run-through of platforms/azure-aks/ against an Azure subscription. Explains every config variable (what it is, where to find it, what changes if you change it), every authentication step, and every script in the order it must run. Companion to PLAN-001-aks-step1-verification.md — that plan's Phase 2 lists the eight scripts to run; this plan is the detailed how and why for someone doing it for the first time.2026-08-13
INVESTIGATE: Platform Provisioning Layer2026-08-13
Investigate: migrate hosts/* to platforms/* (or formally retire)2026-08-13
Investigate: Metabase Internal BI / Data Exploration for UISDeploy Metabase as the internal data-exploration and validation tool for UIS-hosted applications, providing visual SQL exploration, ad-hoc questions, and dashboards for development teams — starting with Atlas, with reusability for future apps.2026-08-13
Investigate: DCT One-Command ArgoCD DeploymentEnable a developer to deploy their current project to the UIS Kubernetes cluster from inside the DCT devcontainer with a single command.2026-08-13
Investigate: ./uis deploy <service> semantics for services without a playbookDecide what ./uis deploy <service> should do when the target service has SCRIPT_PLAYBOOK="" (and SCRIPT_MANIFEST="") — the "metadata-only" case introduced when service-postgrest.sh shipped without a playbook (PLAN-001 documentation gate; PLAN-002 will add the playbook).2026-08-13
Investigate: UIS Connect Commands for All ServicesBuild a generic uis service connect <service> [arg] surface that opens an interactive client into any deployed service. Replaces the per-service-verb framing (uis connect postgresql …) with a single umbrella verb under uis service <verb> (alongside future uis service logs, uis service describe, etc.).2026-08-13
Ship an availability probe with every serviceuis deploy <service> results in that service being monitored by the2026-08-09
Plan: Grafana runs with only the datasources that existMake Grafana deployable with Prometheus alone, provisioning Loki and2026-08-07
Investigate: Registry cache — a UIS cluster cannot currently restart without the internetGive UIS a pull-through registry cache so a cluster can restart,2026-08-07
Investigate: Observability — the stack deploys, but the signals don't arriveMake a UIS deployment actually observable. The observability stack2026-08-07
Investigate: Backup and scheduling — UIS deploys stateful services it cannot back upGive UIS (a) a backup capability for the stateful services it deploys,2026-08-07
Investigate: an external watchdog — does Uptime Kuma overlap the observability stack?Decide whether UIS needs an availability watchdog that runs outside2026-08-07
Investigate: a stack installs the same way on a laptop and a serverGive UIS a way to express how much of a stack to install and *how2026-08-07
Fix: default LiteLLM config only works on Docker DesktopA first-time uis deploy litellm should produce a usable model list on2026-08-06
Feature: let uis undeploy remove the database it createdMake a genuinely clean reinstall possible, so install bugs cannot hide2026-08-06
Fix: pin the LiteLLM chart and image to reproducible versionsTwo installs of the same UIS revision must deploy the same LiteLLM.2026-08-06
Investigate: uis deploy litellm reports success on a broken installMake uis deploy litellm produce a working install every time from a2026-08-06
INVESTIGATE: Top-level UIS CLI doc + keeping command examples in syncTwo related issues:2026-05-20
INVESTIGATE: Harmonise the UIS CLI grammar — uis <noun> <verb> [target] everywhere2026-05-20
Investigate: First UIS Stack TemplateDecide which UIS stack template to create first, then build it as the reference implementation for uis template.2026-05-15
INVESTIGATE: Version Pinning for Helm Charts and Container ImagesEverything works today, but 18 of 21 Helm charts and several container images have no version pinning. Any upstream release — intentional or accidental — can break the system without warning. A single ./uis deploy could pull a new chart version with breaking changes.2026-05-15
Investigate: Version Metadata in Service ScriptsDecide how service scripts should expose version information for docs generation and CLI display2026-05-15
INVESTIGATE: Remote Deployment Targets & Target Management2026-05-15
INVESTIGATE: Provision-Host Tools and Provider Authentication2026-05-15
Notes for installing EspoCRM in UIS2026-05-15
Investigate: Enonic Deployment (apps + content)Design how artefacts get into the Enonic XP instance running in UIS. Two related artefact types:2026-05-15
Investigate: Add an email/SMTP capability to UISProvide a single, project-wide way to send email from UIS-deployed services. Today no UIS service can send email because there is no SMTP relay deployed in the cluster and no shared SMTP_* configuration in the secrets layer. This blocks user-onboarding flows in several services we already ship (and several we plan to add). Decide whether to host an SMTP relay inside UIS (dev-only catcher, prod-ish relay) or to point all services at an external provider via shared SMTP credentials, then wire up the chosen pattern once so every service consumes it the same way.2026-05-15
Investigate: Backstage EnhancementsEvaluate and prioritize additional Backstage features beyond the initial deployment (PLAN-002)2026-05-15
Investigate: Backstage Authentik OIDC AuthenticationInvestigate adding Authentik OIDC authentication to Backstage (replacing guest access)2026-05-15
INVESTIGATE: Authentik User Config MigrationUser-configurable Authentik data (test users, domains, protected services, OAuth apps) is hardcoded in manifests/ where users shouldn't be editing files. This data should live in .uis.extend/ so users can customize their setup without touching infrastructure code.2026-05-15
---2026-05-15
Investigate: Surface in-cluster service port on services.jsonAdd the primary in-cluster Kubernetes Service port to each service entry in website/src/data/services.json so that downstream consumers (documentation generators, template tooling, dashboards) can render accurate <service>.<namespace>.svc.cluster.local:<port> references without hardcoding per-service ports or guessing from conventions.2026-05-15
Investigate: Docs Markdown Generator Update LogicAdd logic to uis-docs-markdown.sh to update metadata-driven sections of existing markdown pages without overwriting manually written content2026-05-15
Investigate: customer onboarding flow for "I need a database for my app"2026-05-15
---2026-05-15
Investigate: ./uis deploy <svc> should auto-regenerate stale kubernetes-secrets.ymlDecide whether (and how) ./uis deploy <svc> should detect a stale generated kubernetes-secrets.yml and either regenerate it automatically or refuse to deploy until the user does. Today, edits to default-secrets.env, 00-common-values.env.template, or 00-master-secrets.yml.template silently no-op for any service that's already deployed unless the user remembers to run ./uis secrets generate && ./uis secrets apply between the template edit and the next deploy.2026-05-15
Investigate: Make 00-common-values.env.template defaults visibly sourced from default-secrets.envEliminate the silent-overwrite confusion in the secrets-template flow. A reader of provision-host/uis/templates/secrets-templates/00-common-values.env.template should see, at the line where a DEFAULT_* value is defined, that the value is auto-populated from provision-host/uis/templates/default-secrets.env at init time. Today the template ships with placeholder values (e.g. DEFAULT_ADMIN_PASSWORD=TestPassword@123) that are sed-overwritten by the seven canonical values from default-secrets.env during init_secrets() — the substitution is invisible to a contributor reading either file in isolation.2026-05-07