Skip to content

refactor(eol): define lifecycle semantics in YAML#63

Merged
bakayolo merged 1 commit intoblock:mainfrom
bakayolo:fix/lambda-deprecated-support-yellow
Apr 29, 2026
Merged

refactor(eol): define lifecycle semantics in YAML#63
bakayolo merged 1 commit intoblock:mainfrom
bakayolo:fix/lambda-deprecated-support-yellow

Conversation

@bakayolo
Copy link
Copy Markdown
Collaborator

@bakayolo bakayolo commented Apr 29, 2026

Summary

  • add a declarative lifecycle schema for endoflife.date products with non-standard field semantics
  • move EKS and Lambda lifecycle behavior into resources.yaml instead of product-specific Go adapters
  • validate lifecycle field mappings and lifecycle actions when config loads
  • keep the built-in standard schema for common endoflife.date products
  • update adapter docs, architecture docs, and the add-resource skill example so future products can be configured from YAML

Why

Some products use the same endoflife.date fields differently. EKS has no true EOL but does have an unsupported-after boundary. Lambda has a deprecated-support window but no extendedSupport field. Encoding every one-off as a Go adapter does not scale. This makes those differences explicit in YAML, similar to the existing inventory transform model.

Verification

  • go test ./...
  • pre-push hook passed: gofmt, goimports, golangci-lint, go test ./... -race -timeout=300s
  • docker compose build version-guard
  • docker compose up -d temporal minio minio-init endoflife version-guard
  • docker compose full scan completed: snapshot a40f2bcb-7b2a-4847-902f-4bc6a5b9b255
  • scan completed all 10 resource types: 28,367 findings, 81.77107202030528 compliance
  • Lambda scan result: 19,316 findings; 549 RED, 4,087 YELLOW, 14,680 GREEN
  • regenerated dashboard json from the compose snapshot

Deployment

@bakayolo bakayolo requested a review from a team as a code owner April 29, 2026 18:49
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 29, 2026

Codecov Report

❌ Patch coverage is 76.71233% with 34 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
pkg/eol/endoflife/adapters.go 82.14% 12 Missing and 8 partials ⚠️
pkg/config/loader.go 40.00% 6 Missing and 6 partials ⚠️
pkg/eol/endoflife/provider.go 85.71% 1 Missing and 1 partial ⚠️
Files with missing lines Coverage Δ
pkg/eol/endoflife/provider.go 92.10% <85.71%> (ø)
pkg/config/loader.go 81.08% <40.00%> (ø)
pkg/eol/endoflife/adapters.go 89.84% <82.14%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@bakayolo bakayolo force-pushed the fix/lambda-deprecated-support-yellow branch from ab9b1a9 to 5e842bf Compare April 29, 2026 19:13
@bakayolo bakayolo changed the title fix(eol): classify Lambda deprecated support as yellow fix(eol): make non-standard lifecycles declarative Apr 29, 2026
@bakayolo bakayolo changed the title fix(eol): make non-standard lifecycles declarative refactor(eol): define lifecycle semantics in YAML Apr 29, 2026
@bakayolo bakayolo merged commit 57807dc into block:main Apr 29, 2026
8 checks passed
@Kiran01bm Kiran01bm mentioned this pull request Apr 30, 2026
Kiran01bm added a commit that referenced this pull request Apr 30, 2026
## What and Why ?

The `add-version-guard-resource` skill was added in #33 and only had two
incidental touches since (#57, #63), but ~10 intervening PRs changed the
formats / schemas / workflows it teaches. Walked the skill end-to-end
against current `resources.yaml` + `loader.go` and fixed every
staleness an agent would hit today.

Markdown-only. No code changes.

## Fixes

| Spot | Was | Now |
|------|-----|-----|
| `SKILL.md` Step 1 (no-product STOP) | Stop on any missing product |
Fall back to upstream product when AWS-flavored is missing (Valkey /
Memcached pattern from #53); only stop if no product exists at all |
| `SKILL.md` Step 3 (`native_type_pattern` examples) |
`rds/AmazonAurora*/cluster`, `eks/Cluster`, `elastiCache/*/cluster` |
Actual current patterns from `resources.yaml` + note that `*` only
matches whole path segments (partial-segment globs silently match
nothing) |
| `SKILL.md` Step 4 (schema overview) | Standard = 3 fields; declarative
= "EKS only" | Three real cycle shapes the standard adapter handles;
declarative covers EKS *and* Lambda; inline lifecycle block; full
field/action set incl. `supported`; accurate loader behavior (loader
auto-fills `schema: declarative` when `lifecycle:` is present) |
| `SKILL.md` Step 6 (OpenSearch example) | `native_type_pattern:
"opensearch/Domain"` | `"elasticSearchService\|OpenSearch Domain"` (old
value matched zero rows) |
| `SKILL.md` Step 6 (examples menu) | `elasticache.yaml` = "wildcard
patterns" | Per-engine split (#53); the example file itself warns
against wildcard + single product |
| `SKILL.md` Completion | Steered toward Go adapter | Steers toward
declarative YAML; Go adapter is now exceptional (#63) |
| `references/troubleshooting.md` ("Non-Standard Schema") | `schema:
{resource}-adapter` + "refer to EKS adapter" | `schema: declarative` +
`lifecycle:` block, link to `ADAPTERS.md`; EKS Go adapter no longer
exists |
| `SKILL.md` Step 7 footer | "Proceed to Step 7" | "Proceed to Step 8" |

## Driving PRs since #33

#36, #38, #42, #44, #45, #53, #54, #56, #62, #63.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants