Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
361 lines
11 KiB
JSON
361 lines
11 KiB
JSON
[
|
|
{
|
|
"id": "F001",
|
|
"description": "Create a new appliance operator tool under ee/appliance instead of extending the existing Nushell developer CLI.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F002",
|
|
"description": "Separate the appliance operator into an interactive TUI shell and a reusable non-interactive operator core.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F003",
|
|
"description": "Implement appliance environment discovery that can resolve the active site config, talosconfig, kubeconfig, and release manifests without requiring the operator to type those paths.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Problem",
|
|
"Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F004",
|
|
"description": "Structure path and asset resolution so the operator core can support both repo-based use and future standalone packaging.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Goals",
|
|
"Rollout / Migration"
|
|
]
|
|
},
|
|
{
|
|
"id": "F005",
|
|
"description": "Add a terminal home screen with primary actions for Bootstrap, Upgrade, Reset, and Status.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F006",
|
|
"description": "Show the selected appliance, node IP, release version, and high-level connectivity state in a persistent header or summary area.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F007",
|
|
"description": "Implement a guided bootstrap flow that gathers node IP, hostname, app URL, release version, bootstrap mode, and network settings through forms instead of raw flags.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F008",
|
|
"description": "Drive bootstrap through the existing historical removed bootstrap script script rather than reimplementing Talos or Flux bootstrap logic.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F009",
|
|
"description": "Display bootstrap progress as readable phases and streamed output instead of exposing raw shell commands as the primary UX.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Observability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F010",
|
|
"description": "Classify bootstrap failures into host, Kubernetes, Flux, Helm, or workload layers for operator guidance.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Observability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F011",
|
|
"description": "Implement an upgrade flow that shows the current installed appliance release and lets the operator select a published target release version.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F012",
|
|
"description": "Drive upgrades through the existing historical removed upgrade script behavior and release manifest model instead of asking for raw component tags.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F013",
|
|
"description": "Make the upgrade flow explicitly reflect the no-auto-rollback policy and point to support-bundle collection on failure.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Observability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F014",
|
|
"description": "Implement a separate reset flow with strong destructive confirmation before invoking reset-appliance-data.sh.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Functional Requirements",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F015",
|
|
"description": "State exactly what reset wipes before allowing the operator to continue.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F016",
|
|
"description": "Implement a status dashboard that summarizes Talos reachability and key host health without showing raw talosctl commands.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F017",
|
|
"description": "Include Kubernetes node readiness and basic cluster availability in the status dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F018",
|
|
"description": "Include Flux GitRepository, Kustomization, and appliance HelmRelease readiness in the status dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F019",
|
|
"description": "Include PSA workload status for alga-core, db, redis, pgbouncer, temporal, workflow-worker, email-service, and temporal-worker in the status dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F020",
|
|
"description": "Show the selected appliance release, release metadata, app URL, and resolved config paths in the status experience.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F021",
|
|
"description": "Normalize host, cluster, Flux, and workload data into one internal appliance status model for the UI and command outputs.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F022",
|
|
"description": "Handle partial-failure states cleanly, including Talos-only availability, Kubernetes down, Flux degraded, or workload unhealthy while the cluster remains reachable.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Observability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F023",
|
|
"description": "Provide a non-interactive appliance command surface that mirrors the interactive flows for automation and scripted support use.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F024",
|
|
"description": "Keep direct kubectl and talosctl usage hidden for standard operator flows while preserving support for advanced fallback use outside the TUI.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Goals",
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F025",
|
|
"description": "Update appliance documentation so the new operator TUI is the preferred user-facing workflow and the shell scripts are documented as lower-level internals or fallbacks.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Rollout / Migration"
|
|
]
|
|
},
|
|
{
|
|
"id": "F026",
|
|
"description": "Replace the current readline-based interactive shell with an Ink-based full-screen application shell while preserving the existing operator core.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"UX / UI Notes",
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F027",
|
|
"description": "Implement a persistent full-screen layout with dedicated header, action navigation, main content, and progress/help regions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F028",
|
|
"description": "Convert bootstrap, upgrade, and reset from sequential prompts to keyboard-navigable form and confirmation panels inside the Ink UI.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F029",
|
|
"description": "Render long-running lifecycle progress inside a dedicated live panel that preserves surrounding UI context while scripts stream output.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Observability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F030",
|
|
"description": "Present status as an always-available dashboard panel within the Ink UI rather than only as printed report sections.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F031",
|
|
"description": "Keep the non-interactive appliance commands and the operator core intact while swapping only the interactive UI layer to Ink.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Goals",
|
|
"Rollout / Migration"
|
|
]
|
|
},
|
|
{
|
|
"id": "F032",
|
|
"description": "Add a top-level Workloads operation in the Ink UI for appliance-relevant pod inspection without sending operators to raw kubectl.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F033",
|
|
"description": "Restrict the workload console to appliance-relevant namespaces and pods by default, including msp, alga-system, and flux-system components needed for appliance operation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F034",
|
|
"description": "Present a refreshable workload list that shows pod name, namespace, phase/status, ready containers, restart count, and age/uptime.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F035",
|
|
"description": "Auto-refresh the workload list on a short interval while preserving the current selection and current view state.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Observability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F036",
|
|
"description": "Add a full-screen pod log viewer that opens from the workload list and restores the prior workload layout when the operator presses Escape.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F037",
|
|
"description": "Implement bounded-memory log loading using chunked older-log retrieval so operators can scroll back through long logs without unbounded in-memory accumulation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"UX / UI Notes",
|
|
"Observability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F038",
|
|
"description": "Support live log follow while the operator is at the bottom of the log stream and pause live-follow when the operator scrolls away from the bottom.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F039",
|
|
"description": "Add keyboard navigation for the workload list and log viewer, including pod selection, vertical scrolling, loading older logs near the top, and Escape-to-return behavior.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F040",
|
|
"description": "Introduce a workload/log adapter layer over kubectl that supplies appliance-scoped pod inventory and pod logs to the TUI without exposing raw kubectl usage to the operator.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Data / API / Integrations",
|
|
"Goals"
|
|
]
|
|
}
|
|
]
|