Skip to main content

Pending work checklist — 2026-05-20 snapshot

Authored: 2026-05-20. Supersedes: 2026-05-18-pending-work-checklist.md (preserved for history). Method: Verified each prior-checklist item in code per feedback_verify-engineering-debt-claims-in-code memory — git log + manifest review across hmp-infrastructure + hmp-docs since 2026-05-18.

How to use:

  • Hard blockers at the top — track these to dated deadlines.
  • Per-plan sections below — pick up the next-actionable item per plan.
  • Cross off (or change status) as items close; commit each closure with the evidence file in compliance/audit/.
  • This doc is a snapshot — when the situation changes meaningfully, re-snapshot under a new dated filename rather than mutating this one.

🔴 HARD BLOCKERS (dated deadlines)​

IDItemDeadlineOwnerEvidence/Runbook
FU-51Provision real SendGrid prod live key via AWS SSM keynova/prod/sendgrid + apply hmp-third-party-secrets ExternalSecret. Stub still in kubernetes/overlays/prod/hmp-notification-service/kustomization.yaml. Real email sends will silently 401 until done.Before first-property onboarding (~2026-06-15)Operatorhmp-infrastructure/compliance/follow-ups.md#fu-51
FU-46RS256 JWT keys for staging+prod; remove ALLOW_HS256: "true" stub from prod overlay configmaps (hmp-api-gateway, hmp-auth-service, hmp-housekeeping-service, hmp-pos-service). scripts/rs256-rotation.sh exists, awaiting operator execution.Before first-property onboardingOperator + Enghmp-infrastructure/compliance/follow-ups.md#fu-46 + scripts/rs256-rotation.sh
Reloader prod validationForce-rotate test cluster RDS to validate Reloader works end-to-end, then monitor prod natural rotation. Reloader v2.1.5 deployed to all 4 envs 2026-05-17; NOT YET force-tested.2026-05-24 (next prod RDS rotation, 4 days away)Operatorhmp-infrastructure/monitoring/runbooks/fu-52-reloader-rollout.md
Plan 6 Q4On-call rotation set up with ≥3 named approvers (2-of-N gate requires 3 humans; currently 1)2026-06-15VP Eng + SRE Leadhmp-docs/docs/platform-registry/plan-6-decision-log.md#q4
Plan 6 Q5Backup retention recommendation sign-off (current 30d prod / 7y CloudTrail satisfies SOC 2 + DPDPA)2026-06-15Legal/DPO + CISO + SRE Lead…plan-6-decision-log.md#q5

🟡 Plan 4 — Demo tenant on prod (status clarified)​

TaskStatusAction
Task 24 prod demo-tenant seed✅ Job manifest + runbook authored. Auto-seed pipeline (new, see Plan 4-bis below) handles test+qa equivalent. Prod execution STILL gated by 2-of-N approval per monitoring/runbooks/plan-4-seed-prod-demo.md.Operator: get 2-of-N approval → apply via kubectl
Plan 4-bis Asset-mgmt demo data enrichment (3 phases)✅ SHIPPED 2026-05-20 — all 4 envs. Includes PPM schedules, AMC-asset links, vendor encryption-safety, Brand/Model/SerialNo/PurchaseDate/PurchaseCost on demo assets.—

🟡 Plan 5 — Cutover (in 7-day burn-in)​

ItemStatusAction
api.keynova.ai + live.keynova.ai✅ Live on prod EKS ALB (verified 2026-05-17 with ResAvenue handler 400-on-bad-XML)—
7-day prod burn-in observability🟢 In flight — day 3 of 7 (cutover 2026-05-17; closes 2026-05-24)Daily check via monitoring/runbooks/resavenue-cert-reissuance.md "7-day burn-in" section
ResAvenue first hotel onboarding🟡 Waiting on first hotel's dataOperator: replace placeholders in seeds/seed-resavenue-prod-connection.sql + apply
FU-6 ResAvenue cert v3 closure🟡 Closes after burn-in completes~2026-05-24

🟡 Plan 6 — Prod-launch baseline (no progress since 2026-05-18)​

IDItemStatusAction
Baseline re-run🔴 Operator must re-run YAML after AWS profiles + flags fixed → expect 17-22 PASSOperator
B-17Renovate.json propagation to 25 repos🟡 Template + script authoredOperator runs scripts/propagate-renovate-config.sh
B-18First quarterly access review🟡 Runbook + 2026-Q2 schedule shippedFirst review due 2026-06-30
B-19DR drill execution (failover ap-south-1 → ap-south-2)🔴 Not executedOperator (SRE) — author DR drill script next
B-20Backup-restore drill against keynova-prod-vault🔴 Not executedOperator (SRE)
B-21Pentest report🔴 Vendor not engagedExternal — 2-4 week procurement lead time
B-23CIC-1..5 sign-offs (all currently signed=0)🔴 OpenProduct / Security / SRE / CS / Payments stakeholders
B-24Spec §14 5 decisions (see Plan 6 decision log)🟡 Recommendations draftedSign-offs pending (Q4+Q5 are hard blockers above)

🟡 Plan 7 — Legacy retirement (in progress)​

PhaseStatusAction
Phase 1 inventory + 2-of-N approval✅ Authored—
Phase 2 data-snapshotSkipped per operator confirmation (seed-only data)—
Phase 3 destroy🟢 Operator manually deleting legacy account 730335256638 via AWS Console (in progress 3+ days)Continue Console deletions; small footprint (1 EC2, 1 RDS, 1 Redis, 1 S3, 1 Secret)
Phase 4 code cleanup (git rm legacy Terraform stacks + compose files + deploy scripts)🟡 PENDING — terraform/{pilot-aws,staging-aws,prod-aws}/ directories STILL EXIST (verified 2026-05-20)Author single cleanup commit when Phase 3 done
Phase 5 cost verification (T+7d post-destroy)🟡 PendingOperator pulls AWS Cost Explorer 7 days after final destroy
FU-3 legacy module dedup✅ Closes when Phase 4 commits—

🔵 Engineering hardening for scale (preparing for 100s of hotels) — UNCHANGED​

All levels still 🔴 NOT STARTED. Verified 2026-05-20: no preStop hooks, no terminationGracePeriodSeconds, no deregistration_delay annotations, no HPA minReplicas bumps, no RDS IAM auth migration in app code.

LevelItemWhyEffortStatus
L1Add preStop hook (sleep 10) to 20 base DeploymentsEliminates ALB target-deregistration race → ~95% of rolling-restart 502s gone30 min🔴 Not started
L1Bump terminationGracePeriodSeconds to 60s on all DeploymentsCleaner pod shutdown alignment with ALB drain15 min (same commit)🔴 Not started
L2Tune ALB deregistration_delay.timeout_seconds=30 (currently default 300)Faster target removal; tighter rolling-restart window30 min (per-Ingress annotation)🔴 Not started
L2Bump prod HPA minReplicas from 2 to 3 on critical servicesRotation window only affects 1/3 not 1/230 min🔴 Not started
L3Migrate to RDS IAM authEliminates password-rotation impact entirely — Plan 2 already enabled enabled_iam_authentication = true on prod RDS; app needs to use it~2 days engineering🔴 Not started
L4AWS RDS Proxy (optional)Transparent rotation + pool; +~$15/mo per proxy~1 day🔴 Not started
OpSchedule prod RDS rotation for off-peak (02:00 IST)Operator-controlled timing1h ops setup🔴 Not started

Recommendation: L1 + L2 land BEFORE first-property onboarding. L3 lands before scaling beyond 10 hotels.


🟡 Other open follow-ups (compliance/follow-ups.md)​

No new FU entries since 2026-05-17 23:46. Current list unchanged from 2026-05-18:

IDItemOwner
FU-2Tooling installation runbook (tflint / tfsec / checkov local install guide)Plan 0 carry-over
FU-5AWS Config delivery channel + S3 Object Lock incompatibility (needs separate bucket)Plan 6
FU-11IDC OIDC ArgoCD app — operator console registrationOperator
FU-12ArgoCD per-env PAT population in Secrets ManagerOperator
FU-13/14Windows DNS poisoning + TCP parallelismWorkaround in place
FU-18Kustomize v5 namespace transformer ID conflictArchitecture follow-up
FU-19IDC group→permission-set assignments don't include mgmt accountOperator
FU-20ArgoCD SSO needs SAML 2.0 refactor (FU-11 blocked path)Operator
FU-21A.1 stored bot PAT in mgmt account; ESO IRSA is env-localOperator
FU-22.gitattributes did not cover .tf filesWorkaround applied
FU-23Mgmt-account Azure DevOps OIDC + deploy role wasn't created in Plan 0Resolved via gap-fill stack
FU-24Hotfix pipeline assumes Jira; we don't have onePlan 6 hardening
FU-25Migrate deploy notifications Slack → TeamsQ3 sign-off + operator config
FU-26ArgoCD ci-bot tokens are non-expiring + no revocation runbookPlan 6 hardening
FU-27ArgoCD helm_release timeout false-negativeWorkaround documented
FU-28Self-approval allowed on staging/prod during pilotCloses when Q4 lands
FU-29Plan 3 T27/T28 per-service overlay subdirectoriesResolved (Plan 3 SHIPPED)
FU-30Per-service ServiceAccounts missing IRSA annotationsPlan 6 hardening
FU-32Plan 3 templates had trigger:/pr: blocksResolved
FU-43Per-env auth-service-runtime-env propagationOperator runtime secret rotation
FU-44@hmp/cache + @hmp/messaging TLS support✅ Resolved per recent commits
FU-45Service runtime secret rotation policy + LambdaPlan 6 hardening
FU-46RS256 JWT keys for staging+prod (also hard blocker above)Operator
FU-47@hmp/observability HealthService paramtypes broken✅ Resolved per recent commits
FU-48Asset-service migration history resetOperator playbook at monitoring/runbooks/fu-48-asset-migration-reset.md
FU-49Notification-service device_tokens orphan migrationSame playbook as FU-48
FU-50promote-image.sh git push rebase-retry✅ Resolved (2026-05-17)
FU-52RDS auto-rotation breaks pods (Reloader fix)✅ Deployed 2026-05-17; validation due 2026-05-24
FU-51Real SendGrid prod key (also hard blocker above)Operator
FU-53metrics-server install on test + qaEngineering authoring (~30 min) — mirror FU-52 pattern

✨ NEW since 2026-05-18​

Auto-seed pipeline (ci-cd/azure-pipelines/auto-seed-test-qa.yml) — SHIPPED + LIVE​

ItemStatusNotes
Auto-seed pipeline for test + qa✅ LIVE 2026-05-19Trigger: changes to seeds/** or kubernetes/jobs/seed-runner/** on master. Runs in-cluster seed-runner Job via kubectl apply. Test + qa only — hard guards prevent staging/prod execution (separate service connections + context checks).
batch: true gate added✅ 2026-05-20 (e497667)Prevents concurrent-update races when manual trigger collides with CI-triggered run
Server-side apply for ConfigMap (eb02d72)✅ Fixes 262KB annotation limitseed-runner uses kubectl apply --server-side for the seeds ConfigMap
Idempotent ConfigMap create-then-apply (3dc465c)✅ Race-safe ConfigMap updates—

Asset-mgmt demo data enrichment (Plan 4-bis, 3 phases)​

Shipped 2026-05-20 across all 4 envs:

  • Phase 1: PPM schedules + AMC-asset links + vendor encryption-safety (c1465cb)
  • Phase 2: Brand/Model/SerialNo/PurchaseDate/PurchaseCost on demo assets (2b9deb1)
  • Phase 3: consolidated merge + documentation (6e8375a)

2 minor self-fixes (no broken state remaining)​

  • cbce524 (2026-05-19 revert) — duplicate SQL files from a parallel merge; reverted cleanly. Sourced the verify-engineering-debt-claims-in-code memory update ("git log BEFORE re-authoring" rule).
  • e497667 (2026-05-20) — auto-seed pipeline batching to prevent concurrent-trigger collisions. Fix not a regression.

🟡 Sales & Marketing sign-offs (per 2026-05-16 playbook) — UNCHANGED​

ItemOwner
VP Sales + CFO sign-off on pricing tiersStakeholder
CMO + CEO sign-off on marketing planStakeholder
Board sign-off on KPIs + org/comp planStakeholder

Reference: hmp-docs/docs/sales-and-marketing/ (25 files, 10 sections).


🔴 Property #1 Readiness Audit (2026-04-28 verdict: NO-GO) — STILL NOT TRIAGED​

SeverityCountStatus
P047🔴 Closure rate STILL not tracked in this snapshot
P141🔴
P239🔴

Mandatory reading per project CLAUDE.md:

  • hmp-docs/docs/platform-registry/property-1-readiness-audit-2026-04-28.md
  • hmp-docs/docs/platform-registry/property-1-gold-standard-fix-plan-2026-04-28.md

Recommendation: schedule a dedicated session to triage current closure rate + prioritize remaining items relative to first-property timing (now <4 weeks away).


✅ Recently completed (full visibility into past 7 days)​

ItemDateNotes
Asset-mgmt demo enrichment (3 phases)2026-05-18 to 2026-05-20All 4 envs; PPM/AMC/vendor encryption-safety + asset detail fields
Auto-seed pipeline for test+qa2026-05-19New auto-seed-test-qa.yml removes operator friction on demo iteration
Auto-seed batching race-fix2026-05-20batch: true gate prevents concurrent-trigger collisions
Plan 3 D.2 (CI/CD pipelines, 24/24)2026-05-17All envs deploying via Azure Pipelines
Plan 5 PROD DNS cutover2026-05-17api.keynova.ai + live.keynova.ai verified end-to-end
FU-52 Reloader deployed all 4 envs2026-05-17 18:06-18:13 ISTCloses 2026-05-24 prod RDS rotation risk
FU-50 promote-image.sh rebase-retry2026-05-17Self-tested live during session
Plan 6 baseline checklist execution2026-05-171 PASS / 7 FAIL / 13 NOCREDS / 2 AUTOMODE
FU-7 Kyverno rewrite2026-05-11Cluster-wide enforcement restored
Plan 4 Tasks 17/19/20/212026-05-13Foundation + 5 cross-service guards
Schema/Seed Audit Phases A/B/C/D2026-05-159 migrations + 3 CI gates + 13 demo-data generators
Sales & Marketing playbook folder2026-05-1625 files / 10 sections / ~5k lines

  1. Force-rotate test cluster to validate Reloader works end-to-end before 2026-05-24 prod rotation (10 min, zero customer risk)
  2. Run scripts/rs256-rotation.sh to provision RS256 keys + remove ALLOW_HS256 stub (FU-46 — hard blocker for first-property)
  3. Provision real SendGrid prod key via Secrets Manager (FU-51 — hard blocker for first-property)
  4. Ship Level 1 hardening — preStop hooks + grace period on all 20 Deployments (1h authoring; closes ~95% of rolling-restart 502s)
  5. Complete Plan 7 Phase 3 + commit Phase 4 cleanup — small footprint remaining; gets dual-spend off our books

Re-snapshot triggers​

Re-author this checklist (as a new dated file, don't mutate this one) when any of these happen:

  • 2026-05-24 — prod RDS rotation event validates or invalidates FU-52 Reloader fix
  • Any hard blocker closes (FU-51 / FU-46 / Q4 / Q5)
  • Plan 7 Phase 3 destroy completes — reflect Plan 7 progress + close FU-3
  • Property #1 Readiness Audit re-triaged — new P0/P1/P2 numbers
  • Plan 4 Task 24 prod demo seed executes — closes Plan 4 prod side
  • Plan 5 7-day burn-in completes 2026-05-24 — closes Plan 5
  • Any L1/L2/L3/L4 hardening lands — flip status + reassess priorities
  • First-property onboarding kicks off (~2026-06-15) — re-baseline against actual first-customer needs