Skip to content

chore(chart): release 0.8.0 with Edge v3.8.0 and routing kinds enabled - #24

Merged
alextoulps merged 1 commit into
mainfrom
chore/release-0.8.0
Nov 7, 2026
Merged

alextoulps merged 1 commit into
mainfrom
chore/release-0.8.0

Conversation

@alextoulps

Copy link
Copy Markdown
Member

Summary

Release nofire-edge chart 0.8.0 targeting Edge v3.8.0 (NOFireAI/edge#164):

  • Chart.yaml: Bump version: 0.8.0 and appVersion: "v3.8.0".
  • values.yaml / examples/production-values.yaml / manifests.yaml: Bump image.tag to "v3.8.0" (nofireai/edge:v3.8.0) and enable the 13 routing kinds (ingressclasses, gatewayclasses, gateways, httproutes, grpcroutes, tlsroutes, tcproutes, udproutes, referencegrants, ingressroutes, ingressroutetcps, ingressrouteudps, traefikservices) by default in config.kube.resources. Edge v3.8.0 probes discovery at startup and skips Gateway API or Traefik informers when their CRDs are absent.
  • tests/configmap_test.yaml / tests/examples_test.yaml / tests/manifests/check.sh: Assert that the default ConfigMap, the production example ConfigMap, and manifests.yaml include the routing kinds in kube.resources.

Testing

  • helm lint .
  • helm unittest . (4 suites, 29 tests passed)
  • EDGE_SRC=../edge tests/render/run.sh (66 cases passed, validated against edgecheck)
  • tests/render/harness_test.sh
  • tests/manifests/check.sh

AI assistance: Drafted and verified with Antigravity.


Refs NOFireAI/engineering#1954

Bump the chart version to 0.8.0 and appVersion / default image tag to
v3.8.0 (Chart.yaml, values.yaml, examples/production-values.yaml,
manifests.yaml).

Enable ingressclasses, Gateway API (gatewayclasses, gateways,
httproutes, grpcroutes, tlsroutes, tcproutes, udproutes,
referencegrants) and Traefik (ingressroutes, ingressroutetcps,
ingressrouteudps, traefikservices) by default in config.kube.resources
now that the chart defaults to Edge v3.8.0, which probes discovery at
startup and skips any CRD not installed in the cluster.

Refs NOFireAI/engineering#1954

Signed-off-by: Alexandros Touloupis <atouloupis@gmail.com>
@alextoulps

Copy link
Copy Markdown
Member Author

@claude-fleet review

@claude-fleet

claude-fleet Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

Review task queued.

Task: 649c4d2b-1290-4b63-b578-87bcff522dfe
Commit: 0ac25c2
Model: claude-opus-5 (effort medium)
Executor: rp1
Status: done. Review posted.

@claude-fleet claude-fleet Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve: no blocking or should_fix finding. Two nits, both about documentation and test coverage of the new defaults.

Findings:

  • nit, values.yaml:12 — new default kinds require Edge >= v3.8.0, not stated next to the pinnable image.tag
  • nit, tests/configmap_test.yaml:16 — 8 of the 13 new kinds are asserted nowhere

Verified:

  • All 13 routing kinds appear exactly once each in values.yaml (lines 208-220), examples/production-values.yaml (lines 70-82) and manifests.yaml (lines 174-186), with names identical to the ClusterRole resources in templates/rbac.yaml:33-37 and manifests.yaml:106-111 — no typo, no kind watched without RBAC.
  • manifests.yaml embedded config.json is valid JSON, 28 kinds, no duplicates, still no services — so the check.sh comment ("its list differs from the chart default, which has services") still holds; chart default is the same set plus services (29).
  • The ClusterRole grants get/list/watch on gateway.networking.k8s.io and traefik.io/traefik.containo.us in both the template and manifests.yaml, so the "ClusterRole already grants" claim in values.yaml:223 is true for the enabled kinds as well as the opt-in ones.
  • The rewritten opt-in comment (values.yaml:223-229) matches what stayed commented: only cronjobs, priorityclasses, RBAC and the three calico* kinds — same for the production example comment at examples/production-values.yaml:52-53.
  • tag: "v3.8.0" and appVersion: "v3.8.0" agree, and manifests.yaml:22 uses nofireai/edge:v3.8.0, which is what check.sh:59 compares against Chart.yaml.
  • Chart.yaml 0.7.1 -> 0.8.0 is a minor bump for a default-behavior change; the RBAC grants (1a08413) are unreleased on main, so permissions and resource list ship in the same release — no upgrade window where the config watches kinds the role cannot read.

Checks run:

  • jq over the config.json embedded in manifests.yaml: valid, 28 entries, 0 duplicates, index("services") null
  • grep cross-check of each of the 13 kinds across values.yaml, examples/production-values.yaml, manifests.yaml and the three test files

Smaller things:

  • The new assertions match a regex against the whole data["config.json"] string rather than against kube.resources, so they would also pass if a kind name appeared in some other field. Low risk today (none of these names occur elsewhere in the rendered config), but tests/render/cases/ with an expect.jq like .kube.resources | index("httproutes") would pin it exactly, and that harness already exists.
  • tests/e2e/kind.sh:86 asserts only the endpoints informer in the startup log. The kind cluster has neither Gateway API nor Traefik CRDs, so it is the one place that would actually exercise the "skips the informer when the CRD is absent" claim — a ! grep -q on a Gateway API informer error there would turn the claim into a test.

Not checked:

  • Edge v3.8.0's discovery probing itself. The claim in the PR body and in values.yaml:226-229 ("the agent skips them otherwise ... when their CRDs are absent") is about code in NOFireAI/edge; no edge checkout is reachable here, so I could not confirm that a cluster without Gateway API or Traefik CRDs starts clean. Everything else in this release depends on that claim being true.
  • helm lint, helm unittest, tests/render/run.sh, tests/render/harness_test.sh and tests/manifests/check.sh — helm, helm-unittest and yq are not installed in this environment. I read the new assertions and confirmed the strings they look for are present in the rendered sources, but I did not execute the suites. CI runs all of them except the e2e.

Not checked:

  • NOFireAI/edge v3.8.0 discovery probing: no edge checkout reachable, so the 'skips Gateway API and Traefik informers when their CRDs are absent' claim in the PR body and values.yaml:226-229 is unverified
  • helm lint, helm unittest, tests/render/run.sh, tests/render/harness_test.sh, tests/manifests/check.sh were not executed (helm, helm-unittest and yq are not installed in this environment)

Task 649c4d2b-1290-4b63-b578-87bcff522dfe on rp1, model claude-opus-5, effort medium.

Comment thread values.yaml
# Released tags carry the "v" prefix (nofireai/edge:v3.8.0); a bare "3.8.0"
# does not exist in the registry.
tag: "v3.7.1"
tag: "v3.8.0"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: The new default kube.resources entries depend on Edge v3.8.0's discovery probing, but nothing next to the pinnable image.tag says so. Failure: a user who upgrades the chart to 0.8.0 while keeping image.tag: "v3.7.1" in their own values file (the comment on lines 10-11 documents exactly this pinning style) gets a config listing 13 kinds that only v3.8.0 is claimed to skip when the CRDs are absent; the chart renders fine and the problem only shows at pod startup. Evidence: values.yaml:10-12 documents tag pinning with no minimum version; values.yaml:226-229 states the skipping behavior unconditionally, without naming the Edge version that implements it. Suggest adding "the routing kinds enabled by default need Edge >= v3.8.0" to the tag comment.

Comment thread tests/configmap_test.yaml
path: data["config.json"]
- matchRegex:
path: data["config.json"]
pattern: '"ingressclasses"'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Only 5 of the 13 newly enabled kinds are asserted anywhere; gatewayclasses, gateways, grpcroutes, tlsroutes, tcproutes, udproutes, ingressroutetcps and ingressrouteudps appear in no test. Failure: a typo or dropped entry in any of those 8 (in values.yaml, examples/production-values.yaml or manifests.yaml) ships with every suite green, and the kind is silently never watched. Evidence: tests/configmap_test.yaml:14-28 covers ingressclasses, httproutes, referencegrants, ingressroutes, traefikservices; tests/examples_test.yaml:12-23 covers three; tests/manifests/check.sh:24-29 covers five; grep for the other 8 across all three files returns nothing. One assertion on the full list (a count, or jq set equality in a tests/render case) would cover all 13 without 13 more asserts.

@alextoulps
alextoulps merged commit 61293e1 into main Nov 7, 2026
2 checks passed
@alextoulps
alextoulps deleted the chore/release-0.8.0 branch November 7, 2026 13:47
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.

1 participant