From ca574c2280c440e7ac4b7e1baea85be5133da162 Mon Sep 17 00:00:00 2001 From: Andrew Stoltz Date: Tue, 19 May 2026 10:42:30 -0500 Subject: [PATCH] =?UTF-8?q?brochure:=20delete=20apps/brochure/=20=E2=80=94?= =?UTF-8?q?=20full=20prune=20per=20operator=20decision=202026-05-19?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes the apps/brochure/ directory entirely from the bluejay-infra ApplicationSet glob. ArgoCD will: 1. See infra-brochure has no git source -> mark for delete 2. Prune the brochure namespace + Deployment + Service + Certificate + Secret + IngressRoute (all generated from the now-gone apps/brochure/brochure.yaml) 3. Remove the infra-brochure Application from argocd ns Operator decision 2026-05-19 (follow-up to 09387f9 ARCHIVED banner commit): "Yes, prune argo for brochure. Probably fully deleted there." The brochure subdomain project was a planning-chain misinterpretation of "make TtsReader + AI Station production-ready" — see memory/project_brochure_split_misinterpretation_archived_2026_05_19.md in FlowerCore.Notes for the full decision record. Reusable artifacts that were the operator's archive concern stay alive in their actual homes: - FlowerCore.Intranet.Web PR #8 content-NuGet carve-out: still in Intranet's master, may transfer to TtsReader / AI Station prod work - Sprint 32 Cl-5 substrate (public-twin design ideas): SUPERSEDED banner in-place in FlowerCore.Notes docs/standards/, history preserved - magpie-doc-writer + wren-walkthrough skill output: unchanged in Intranet's flowercore-whats-new/walkthroughs/galleries directories Companion Notes-side commit updates the "scaled to 0 + ARCHIVED banner" language in mvp-readiness.html + fleet-roadmap-2026-05-19-sprint36-v2.md + memory record to reflect full deletion instead. Wrong-codebase image localhost/fc-brochure-web:v20260524-sprint32 is being removed from rke2-server / rke2-agent1 / rke2-agent2 in a follow-up step (reclaims ~800MB per node). Co-Authored-By: Claude Opus 4.7 (1M context) --- apps/brochure/README.md | 33 -------- apps/brochure/brochure.yaml | 146 ------------------------------------ 2 files changed, 179 deletions(-) delete mode 100644 apps/brochure/README.md delete mode 100644 apps/brochure/brochure.yaml diff --git a/apps/brochure/README.md b/apps/brochure/README.md deleted file mode 100644 index 6fd6c9c..0000000 --- a/apps/brochure/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# FlowerCore Brochure — ARCHIVED 2026-05-19 - -**Status:** ARCHIVED. Do not re-enable, do not rebuild the image. - -## What this was - -A proposed public-facing brochure subdomain (`brochure.flowercore.io`) that would carve `/whats-new`, `/walkthroughs`, and `/galleries` content out of `FlowerCore.Intranet.Web` and serve it anonymously through a new thin Blazor host backed by a `FlowerCore.Brochure.Content` NuGet. - -## Why it was archived - -The operator asked for **TtsReader and AI Station to become production-ready**. Somewhere along the way that request was misinterpreted by the planning chain into "spin up a new showcase brochure product". The brochure project itself is pointless and a waste of credits. The two actual productionization arcs (TtsReader + AI Station) get the focus instead. - -## Archive (don't delete) rationale - -Some of the work shipped under this misinterpretation may still have value if pulled back into the actual productionization work: - -- `FlowerCore.Intranet.Web` PR #8 (merged Sprint 32) introduced the `FlowerCore.Brochure.Content` content-split carve-out. That code may be reusable as a content-NuGet pattern for TtsReader/AiStation production polish. -- The Sprint 32 Cl-5 substrate (`docs/standards/sprint-32-intranet-brochure-split-substrate-2026-05-24.md`) contains design ideas for public-twin vs. operator-host separation that could apply elsewhere. -- The magpie-doc-writer / wren-walkthrough skills that authored `flowercore-whats-new`, `flowercore-walkthroughs`, `flowercore-galleries` content still produce useful Intranet content — those skills are NOT archived. - -The Sprint 34 Cl-4 brochure rebuild Codex pack is at `docs/archived/codex-2026-05-18-fc-brochure-web-rebuild-pack.md` in `FlowerCore.Notes`. - -## Cluster state - -These manifests stay at `replicas: 0`. ArgoCD keeps the `brochure` namespace + service + cert + IngressRoute objects alive for continuity, but nothing serves real traffic. The `localhost/fc-brochure-web:v20260524-sprint32` image still exists on RKE2 nodes — that image is the wrong codebase (an `FlowerCore.Intranet.Web` binary mis-tagged as brochure during Sprint 33 Cx-5) and can be safely `ctr images rm`'d in a future cleanup. - -## Cleanup choices for a future sprint - -1. **Leave as-is** (current state). Negligible cluster footprint. Operator can re-evaluate later. -2. **Move directory** to `apps-archived/brochure/` (outside the `apps/*` ApplicationSet glob). ArgoCD prunes the `infra-brochure` Application + the `brochure` namespace. Manifests preserved in git history. -3. **Delete entirely.** Removes from git too. Use only after confirming no reusable patterns are still pending extraction. - -All three are valid. Operator-explicit at the time of cleanup. diff --git a/apps/brochure/brochure.yaml b/apps/brochure/brochure.yaml deleted file mode 100644 index 6de3af0..0000000 --- a/apps/brochure/brochure.yaml +++ /dev/null @@ -1,146 +0,0 @@ -# FlowerCore Brochure public host — ARCHIVED 2026-05-19 -# -# This project was a MISINTERPRETATION of an operator productionization -# request (TtsReader + AiStation production-ready) that spun up into a -# whole new showcase product. Operator decision 2026-05-19: archive, -# don't delete — the Sprint 32 Cl-5 substrate + the FlowerCore.Intranet.Web -# PR #8 carve-out may have reusable content/admin-panel work that could -# be pulled back into the actual productionization work later. -# -# Do NOT re-enable. Do NOT try to rebuild the brochure-web image. -# Do NOT dispatch the Sprint 34 Cl-4 rebuild pack (now at -# docs/archived/codex-2026-05-18-fc-brochure-web-rebuild-pack.md). -# -# These manifests stay in-place at replicas: 0 for ArgoCD continuity. -# Cleanup options for a future sprint: (a) move this whole directory -# to apps-archived/brochure/ so the ApplicationSet stops tracking it -# and ArgoCD prunes the namespace, OR (b) delete the directory entirely. -# Both are valid; operator-explicit at the time of cleanup. -# -# Memory: project_brochure_split_misinterpretation_archived_2026_05_19 ---- -apiVersion: v1 -kind: Namespace -metadata: - name: brochure - labels: - app.kubernetes.io/part-of: flowercore ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: brochure-web - namespace: brochure - labels: - app: brochure-web - app.kubernetes.io/name: brochure-web - app.kubernetes.io/part-of: flowercore -spec: - replicas: 0 # ARCHIVED 2026-05-19 — brochure project was a misinterpretation; do not re-enable. See file header for context. - revisionHistoryLimit: 3 - selector: - matchLabels: - app: brochure-web - template: - metadata: - labels: - app: brochure-web - app.kubernetes.io/name: brochure-web - app.kubernetes.io/part-of: flowercore - spec: - containers: - - name: brochure-web - image: localhost/fc-brochure-web:v20260524-sprint32 - imagePullPolicy: Never - ports: - - containerPort: 8080 - name: http - env: - - name: ASPNETCORE_ENVIRONMENT - value: Production - - name: ASPNETCORE_URLS - value: "http://+:8080" - resources: - requests: - cpu: "25m" - memory: "128Mi" - limits: - cpu: "500m" - memory: "512Mi" - readinessProbe: - httpGet: - path: /health - port: http - initialDelaySeconds: 10 - periodSeconds: 10 - livenessProbe: - httpGet: - path: /health - port: http - initialDelaySeconds: 30 - periodSeconds: 30 - securityContext: - runAsNonRoot: true - runAsUser: 1654 - runAsGroup: 1654 - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - capabilities: - drop: - - ALL - volumeMounts: - - name: tmp - mountPath: /tmp - volumes: - - name: tmp - emptyDir: {} ---- -apiVersion: v1 -kind: Service -metadata: - name: brochure-web - namespace: brochure - labels: - app: brochure-web - app.kubernetes.io/name: brochure-web - app.kubernetes.io/part-of: flowercore -spec: - type: ClusterIP - selector: - app: brochure-web - ports: - - name: http - port: 8080 - targetPort: http ---- -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: brochure-web-tls - namespace: brochure -spec: - secretName: brochure-web-tls - issuerRef: - name: step-ca-acme - kind: ClusterIssuer - dnsNames: - - brochure.flowercore.io - duration: 720h - renewBefore: 240h ---- -apiVersion: traefik.io/v1alpha1 -kind: IngressRoute -metadata: - name: brochure-web-public - namespace: brochure -spec: - entryPoints: - - websecure - routes: - - match: Host(`brochure.flowercore.io`) && (Method(`GET`) || Method(`HEAD`)) - kind: Rule - services: - - name: brochure-web - port: 8080 - tls: - secretName: brochure-web-tls