From 51f306945490c8acb730bd72d62b5744b4871b34 Mon Sep 17 00:00:00 2001 From: Deepak Muley Date: Wed, 18 Mar 2026 15:23:59 +0530 Subject: [PATCH] Add PROJECT_TODO.md and todo.sh script for catalog task management - PROJECT_TODO.md: Persistent TODO list with sections for version updates, test plans, unit tests, legal approval, and new apps - scripts/todo.sh: CLI for view, add, and complete tasks (use via just todo, just todo-add, just todo-complete) Made-with: Cursor --- PROJECT_TODO.md | 125 ++++++++++++++++++++++++++++++++++++++++++++++++ scripts/todo.sh | 76 +++++++++++++++++++++++++++++ 2 files changed, 201 insertions(+) create mode 100644 PROJECT_TODO.md create mode 100755 scripts/todo.sh diff --git a/PROJECT_TODO.md b/PROJECT_TODO.md new file mode 100644 index 0000000..5d14845 --- /dev/null +++ b/PROJECT_TODO.md @@ -0,0 +1,125 @@ +# NKP AI Applications Catalog — Project TODO + +Persistent TODO list for catalog release. Use `just todo` to view, `just todo-add "task"` to add, `just todo-complete ` to mark complete. + +--- + +## 1. Add latest versions for each existing app + +Update all existing apps to their latest available versions. + +**Existing apps:** agentgateway, coder, demo-full-rag, flowise, jupyterhub, kagent, katib, kserve, kubeflow-central-dashboard, kubeflow-model-registry, kubeflow-pipelines, milvus-operator, mlflow, ollama, open-webui, spark-operator, tensorboard-controller, training-operator, vllm, weaviate + +- [ ] agentgateway +- [ ] coder +- [ ] demo-full-rag +- [ ] flowise +- [ ] jupyterhub +- [ ] kagent +- [ ] katib +- [ ] kserve +- [ ] kubeflow-central-dashboard +- [ ] kubeflow-model-registry +- [ ] kubeflow-pipelines +- [ ] milvus-operator +- [ ] mlflow +- [ ] ollama +- [ ] open-webui +- [ ] spark-operator +- [ ] tensorboard-controller +- [ ] training-operator +- [ ] vllm +- [ ] weaviate + +--- + +## 2. Create test plan for each app + +Create a test plan document per app. Test matrix: + +- [ ] **Basic test matrix** — document baseline scenarios +- [ ] **Enable app on mgmt and/or workload** — verify install on management vs workload cluster +- [ ] **Edit app custom config** — workspace-level and cluster-specific config overrides +- [ ] **Edit app by deploying on one or more clusters** — multicluster deployment +- [ ] **Upgrade** — upgrade from previous version +- [ ] **Disable app** — uninstall/disable flow +- [ ] **Verify metadata.yaml and UI view** — overview correctness in NKP UI +- [ ] **Verify dependencies and requiredDependencies** — install order, dependency resolution +- [ ] **UI apps: verify all paths** — if app has UI, open and verify paths work + +--- + +## 3. Add unit tests (catalog-apptests) + +Add unit tests similar to [dm-nkp-gitops-app-catalog/catalog-apptests](https://github.com/deepak-muley/dm-nkp-gitops-app-catalog/tree/main/catalog-apptests). + +- [ ] Create `catalog-apptests/` directory structure +- [ ] Port discovery, cluster, app, and suite logic for NKP AI catalog +- [ ] Integrate with CI (e.g. `just test` or `./catalog-workflow.sh test --catalog-apptests`) + +--- + +## 4. Legal approval for Rapid Fort images + +Get legal approval to finalize whether to use Rapid Fort images for open source app containers. + +- [ ] Document current image sources +- [ ] Evaluate Rapid Fort image availability for catalog apps +- [ ] Legal review and approval +- [ ] Update manifests if approved + +--- + +## 5. Make repo public + +Make the repository public after testing is complete. + +- [ ] Complete testing (see items 2, 3) +- [ ] Remove or sanitize any private/sensitive content +- [ ] Update visibility to public + +--- + +## 6. Add new or missing apps (final release) + +Add the following apps with their latest versions: + +### Devtools + +- [ ] JupyterHub (already present — verify latest) +- [ ] Flowise (already present — verify latest) +- [ ] Apache Zeppelin + +### MLOps + +- [ ] Kubeflow (kubeflow-* components already present — verify/consolidate) +- [ ] Mlflow (already present — verify latest) +- [ ] Ray + +### VectorDB + +- [ ] Milvus (milvus-operator present — verify/complete) +- [ ] Weaviate (already present — verify latest) +- [ ] Elastic + +### Agentic + +- [ ] LangGraph +- [ ] crewAI +- [ ] Sim + +### NVIDIA + +- [ ] NVIDIA NIM +- [ ] NVIDIA DOCA + +--- + +## Quick reference + +| Command | Description | +|---------|-------------| +| `just todo` | View this TODO file | +| `just todo-list` | List tasks (same as view) | +| `just todo-add "task"` | Append a new task to PROJECT_TODO.md | +| `just todo-complete ` | Mark a task complete (e.g. `just todo-complete agentgateway`) | diff --git a/scripts/todo.sh b/scripts/todo.sh new file mode 100755 index 0000000..88e0cd4 --- /dev/null +++ b/scripts/todo.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env bash +# Manage PROJECT_TODO.md — add, list, view, complete tasks +# Usage: ./scripts/todo.sh [view|list|add "task"|complete ] +set -e + +REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +TODO_FILE="$REPO_ROOT/PROJECT_TODO.md" + +view() { + if [[ -f "$TODO_FILE" ]]; then + cat "$TODO_FILE" + else + echo "PROJECT_TODO.md not found at $TODO_FILE" + exit 1 + fi +} + +add() { + local task="$1" + if [[ -z "$task" ]]; then + echo "Usage: todo add \"task description\"" + exit 1 + fi + if [[ ! -f "$TODO_FILE" ]]; then + echo "PROJECT_TODO.md not found at $TODO_FILE" + exit 1 + fi + # Append before the "Quick reference" section if it exists, else at end + if grep -q "## Quick reference" "$TODO_FILE"; then + local tmp + tmp=$(mktemp) + awk -v task="$task" ' + /^## Quick reference/ && !done { print "- [ ] " task; print ""; done=1 } + { print } + ' "$TODO_FILE" > "$tmp" + mv "$tmp" "$TODO_FILE" + else + echo "" >> "$TODO_FILE" + echo "- [ ] $task" >> "$TODO_FILE" + fi + echo "Added: $task" +} + +complete_task() { + local pattern="$1" + if [[ -z "$pattern" ]]; then + echo "Usage: todo complete " + echo "Example: todo complete agentgateway" + exit 1 + fi + if [[ ! -f "$TODO_FILE" ]]; then + echo "PROJECT_TODO.md not found at $TODO_FILE" + exit 1 + fi + if grep -q "\- \[ \].*$pattern" "$TODO_FILE"; then + if [[ "$(uname)" == "Darwin" ]]; then + sed -i '' "/$pattern/s/\- \[ \]/\- [x]/" "$TODO_FILE" + else + sed -i "/$pattern/s/\- \[ \]/\- [x]/" "$TODO_FILE" + fi + echo "Marked complete: $pattern" + else + echo "No unchecked task matching '$pattern' found" + exit 1 + fi +} + +case "${1:-view}" in + view|list) view ;; + add) add "${2:-}" ;; + complete) complete_task "${2:-}" ;; + *) + echo "Usage: $0 [view|list|add \"task\"|complete ]" + exit 1 + ;; +esac