Skip to content

docs(security): record tb-client-dev-templates EKS substrate-verified seal row (client-runtime#199) - #809

Merged
saqlainsyed007 merged 1 commit into
developfrom
docs/199-seal-check-eks-dev-substrate
Aug 24, 2026
Merged

docs(security): record tb-client-dev-templates EKS substrate-verified seal row (client-runtime#199)#809
saqlainsyed007 merged 1 commit into
developfrom
docs/199-seal-check-eks-dev-substrate

Conversation

@saqlainsyed007

@saqlainsyed007saqlainsyed007 commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

What

Records the substrate-verified SEAL-CHECK row for the dev EKS fleet tb-client-dev-templates, per the RFC-0003 D6 flip runbook on client-runtime#199 (which explicitly permits pre-verifying a fleet's substrate row without flipping). Docs-only; read-only cluster inspection — no chart/config/cluster change.

Why held, not flipped

The dev flip was scoped to CV / non-NLP fleets only. On dev there is exactly one client-runtime fleet — tracebloc / tracebloc-templates — and it is a mixed template-validation fleet whose ingest configs include substantial NLP (masked_language_modeling ×36, text_classification ×15, token_classification, sentence_pair_classification, causal_language_modeling, embeddings) alongside CV/tabular/time-series. The jobs-manager sets noTRANSFORMERS_OFFLINE / HF_HUB_OFFLINE, so NLP templates still runtime-fetch HuggingFace today; sealing egress now would break them by design (the #1501 gate). Per the runbook guard, NLP fleets are not flipped per-fleet — so the flip is held until HF runtime-fetch support is removed.

Substrate evidence (2026-08-24)

kube-system/aws-node runs the VPC CNI network-policy agent — aws-network-policy-agent:v1.2.7-eksbuild.2, --enable-network-policy=true, NETWORK_POLICY_ENFORCING_MODE=standard. The cluster does enforce NetworkPolicy egress (chart's 60s retry covers standard-mode reconcile), so the fleet is sealable in principle and the egress-enforcement probe is expected to PASS once flipped.

Also noted: this fleet currently sets networkPolicy.training.enabled: false (no netpol rendered — kubectl get netpol -A empty), so any future flip must additionally set networkPolicy.training.enabled=true before routeWorkloads=true / allowExternalHttps=false.

🤖 Generated with Claude Code


Note

Low Risk
Documentation-only update to SEAL-CHECK.md; no chart, cluster, or runtime behavior changes.

Overview
Records that the EKS training-egress guarantee is substrate-verified (not fully sealed) for the tb-client-dev-templates fleet, matching the existing k3d pattern.

The §8.3 matrix EKS cell now cites VPC CNI netpol agent v1.2.7 (--enable-network-policy=true, standard mode, 2026-08-24). A new status section is the single record of that read-only inspection: the cluster can enforce NetworkPolicy egress, but the full-chart egress-enforcement probe is held (NLP HuggingFace runtime-fetch; training NetworkPolicy currently disabled). The fleet stays UNSEALED until the lockdown flip.

Reviewed by Cursor Bugbot for commit ab586a5. Bugbot is set up for automated code reviews on this repo. Configure here.

… seal row (client-runtime#199)
Pre-verify the dev fleet's SEAL-CHECK substrate row (the runbook on
client-runtime#199 permits recording this without flipping). Read-only
cluster inspection only — no chart/config change.
- EKS cluster tb-client-dev-templates enforces NetworkPolicy egress: VPC
CNI aws-network-policy-agent v1.2.7, --enable-network-policy=true,
NETWORK_POLICY_ENFORCING_MODE=standard. Substrate VERIFIED; full-chart
egress-enforcement probe not recorded because the per-fleet flip is HELD.
- The flip is held: the only dev fleet (tracebloc/tracebloc-templates) is a
mixed template-validation fleet that still runtime-fetches HuggingFace for
NLP templates (no TRANSFORMERS_OFFLINE/HF_HUB_OFFLINE set), so it is out of
the RFC-0003 D6 CV/non-NLP scope until HF runtime-fetch support is removed.
- Also notes the fleet currently disables the training NetworkPolicy
(networkPolicy.training.enabled=false), so a future flip needs that too.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@LukasWodkaLukasWodka left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Substrate claims independently confirmed from a second source — one thing the record is missing

This is a PR whose claims are the deliverable, so I checked them against AWS rather than re-reading the prose. The EKS addon API is an independent source from the DaemonSet spec you inspected, and it agrees:

$ aws eks describe-cluster --name tb-client-dev-templates
{ "status": "ACTIVE", "version": "1.36", "vpc": "vpc-08a4ede4dc64572c4" }
$ aws eks describe-addon --cluster-name tb-client-dev-templates --addon-name vpc-cni
{ "version": "v1.20.5-eksbuild.1",
"status": "ACTIVE",
"config": "{\"enableNetworkPolicy\":\"true\"}" }
  • amazon-k8s-cni:v1.20.5-eksbuild.1 — exact match with the recorded image.
  • --enable-network-policy=true — confirmed from the addon's own configurationValues, so the flag isn't just a container arg someone could have read off a stale pod.
  • mode standard — corroborated indirectly and worth stating that way: configurationValues sets onlyenableNetworkPolicy, so nodeAgent.enforcingMode is unset and takes the addon default, which is standard. Same conclusion by a different route.
  • enforcementProbeTimeoutSeconds: 60 is genuinely the chart default (client/values.yaml:302), so the sentence about the retry covering the standard-mode reconcile window is accurate rather than aspirational.

The cluster is also in vpc-08a4ede4dc64572c4, which is the same VPC I've been measuring on backend#2068 this morning — consistent with the topology recorded there (three public subnets, one main route table, no NAT).

Holding UNSEALED rather than claiming a seal is the right call, and the reason is the interesting part: the fleet is mixed template-validation with substantial NLP, and with no TRANSFORMERS_OFFLINE / HF_HUB_OFFLINE injected, sealing egress would break HuggingFace runtime-fetch by design. Recording "substrate verified, probe not run, fleet UNSEALED" is exactly the distinction a seal document exists to keep straight — a substrate that can enforce is not a fleet that does.


One finding, non-blocking: the record states the state but not the reason, and here the reason is the load-bearing half.

this fleet currently sets networkPolicy.training.enabled: false … so a future flip must additionally set networkPolicy.training.enabled=true

The chart default is true (client/values.yaml:274). So this isn't a fleet that hasn't got around to enabling it — it's an explicit override away from the chart's default posture, and the doc's phrasing reads like a routine extra checkbox on the flip. It might be the riskiest step in it: if the training NetworkPolicy was turned off because it broke something on this fleet, re-enabling it is the change that needs the care, and the two lockdown flags are the easy part.

For a document whose whole job is telling a future operator what they're walking into, one clause would close it — either why it's off, or "reason not established; determine before flipping". Right now a reader could reasonably assume false is the norm and that flipping is additive.

Not approving yet:Unit tests and Bugbot are still IN_PROGRESS. Nothing else outstanding from me.

@LukasWodkaLukasWodka left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Approving — green at ab586a5e, substrate claims confirmed from a second source

Gate: 15/15 checks pass, MERGEABLE, no threads, no change-request.

Since this is a PR whose claims are the deliverable, I checked them against AWS rather than re-reading the prose — and the EKS addon API is independent of the DaemonSet spec you inspected. It agrees:

$ aws eks describe-cluster --name tb-client-dev-templates
{ "status": "ACTIVE", "version": "1.36", "vpc": "vpc-08a4ede4dc64572c4" }
$ aws eks describe-addon --cluster-name tb-client-dev-templates --addon-name vpc-cni
{ "version": "v1.20.5-eksbuild.1", "status": "ACTIVE",
"config": "{\"enableNetworkPolicy\":\"true\"}" }

amazon-k8s-cni:v1.20.5-eksbuild.1 is an exact match; --enable-network-policy=true is confirmed from the addon's own configurationValues rather than a container arg off a possibly-stale pod; and mode standard follows because configurationValues sets onlyenableNetworkPolicy, leaving nodeAgent.enforcingMode at the addon default. Same conclusion by a different route. enforcementProbeTimeoutSeconds: 60 is genuinely the chart default (client/values.yaml:302), so the sentence about the retry covering the standard-mode reconcile window is accurate rather than aspirational.

Recording it as substrate-verified-but-UNSEALED is the right call, and it's the distinction this document exists to keep straight: a substrate that can enforce is not a fleet that does. The held-not-flipped reasoning is sound — a mixed template-validation fleet with substantial NLP, and no TRANSFORMERS_OFFLINE / HF_HUB_OFFLINE injected, so sealing egress would break HuggingFace runtime-fetch by design.


Carrying my one note forward as a follow-up rather than holding the PR for it. The record says the fleet sets networkPolicy.training.enabled: false and that a future flip must set it true — but the chart default is true (client/values.yaml:274), so that's an explicit override away from the default posture, not a box left unticked. If the training NetworkPolicy was disabled because it broke something on this fleet, re-enabling it is the step that needs care and the two lockdown flags are the easy part.

One clause would close it — why it's off, or "reason not established; determine before flipping". As written, a reader could reasonably assume false is the norm and that the flip is purely additive. Worth adding whenever you next touch the section; the PR is a clear improvement either way.

@aptraceblocaptracebloc left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Docs-only seal-check record. Reviewed the substrate-verification note — it's careful and honest: it marks tb-client-dev-templates substrate-VERIFIED (VPC CNI netpol agent v1.2.7, --enable-network-policy=true, mode standard) but deliberately keeps the fleet UNSEALED for egress, with the two real reasons spelled out (NLP templates still runtime-fetch HuggingFace with no TRANSFORMERS_OFFLINE, so sealing would break them per the #1501 gate; and networkPolicy.training.enabled=false means a flip needs that set first). The matrix cell and the new section agree. No overclaiming.

LGTM.

— drafted with Claude Code

@saqlainsyed007
saqlainsyed007 merged commit ccbad87 into developAug 24, 2026
15 checks passed
@saqlainsyed007
saqlainsyed007 deleted the docs/199-seal-check-eks-dev-substrate branch August 24, 2026 14:13
saqlainsyed007 pushed a commit that referenced this pull request Aug 24, 2026
…#817 probe under the flip
Merges origin/develop (#809/#817). #817 adds _verify_nodes_see_host_data (a
hostpath-only host-mount probe) to both installers.
Review/Bugbot fixes on top:
- cluster.sh guard_leftover_data: the "a fresh install would silently adopt it"
warning is hostpath-only. Under node-local (the default) a fresh install does
NOT adopt host data — it's stranded — so the lead line contradicted the very
next node-local line. Make the lead mode-aware (Bugbot Medium, client#456).
- cluster.sh:78: flip the one _verify_nodes_see_host_data fallback #817 added
after the sweep — ${TB_STORAGE_MODE:-hostpath} -> :-node-local — so the whole
tree carries a single default value again.
- cluster.bats: pin TB_STORAGE_MODE=hostpath in #817's 17 probe tests (they
exercise the hostpath-only probe; the sourced default is now node-local, which
correctly skips it) and add two leftover-guard tests for the contradiction fix.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for freeto 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.

3 participants

@saqlainsyed007@LukasWodka@aptracebloc