Hermes 284313f908
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
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

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"
]
}
]