Skip to content

test: exercise scaffold through Platform tenant RBAC#92

Merged
devantler merged 3 commits into
mainfrom
claude/tenant-rbac-91
Jul 19, 2026
Merged

test: exercise scaffold through Platform tenant RBAC#92
devantler merged 3 commits into
mainfrom
claude/tenant-rbac-91

Conversation

@devantler

@devantler devantler commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

🤖 Generated by the Daily AI Engineer

Why

The scaffold could pass schema, policy, and Pod Security validation while Platform's tenant reconciliation identity lacked permission for one of its eight rendered resource kinds. That drift would only surface after onboarding as a forbidden Flux reconciliation.

What changed

  • exercise Platform's live aggregate tenant-edit role in the existing pinned Kind user path
  • require all seven reconciliation verbs for every rendered scaffold kind
  • deny five cluster-scoped or interactive privilege boundaries
  • fail closed when the rendered GVK inventory, workflow wiring, role fragments, permissions, or tenant-owned sync guidance drifts
  • document the new scaffold-time validation contract

Validation

  • live Kind: 56 required authorizations allowed; 5 privilege boundaries denied
  • Pod Security restricted: valid Pod admitted; 3 unsafe mutations denied
  • tenant RBAC contract: happy path plus 14 safety mutations and 3 runtime error controls
  • existing scaffold, agent, workflow, shell, and supply-chain checks pass

Fixes #91
Part of #6

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Daily AI Engineer

Exact-head validation — ebde265852fedbfe52fad23c901180ba5150e50f

  • TDD: the new contract first failed with FAIL: tenant RBAC runtime is missing; the completed contract now passes its happy path and 10 safety mutations.
  • Real user path: against Platform main at eda11112aac8a401230f7af19f7122093a65756c, a pinned Kind v1.36.1 API admitted the scaffold's restricted Pod and denied all 3 unsafe Pod mutations. The actual rendered 8-GVK inventory then exercised the same tenant ServiceAccount/RoleBinding shape Platform uses for Flux: all 56 required verb/resource combinations were allowed and all 5 cluster-scoped or interactive privilege probes were denied.
  • Regression suite: placeholder rename, agent safety, Pod Security contract, manifest render, actionlint, shellcheck, zizmor, and git diff --check all pass.
  • Cleanup: the run-owned Kind cluster was deleted; only a separately owned sibling cluster remained.

The PR remains draft while CI and an exact-head Codex review complete.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Daily AI Engineer

@codex review

Please review exact head ebde265852fedbfe52fad23c901180ba5150e50f, focusing on fail-closed workflow wiring, the SubjectAccessReview resource parsing, and privilege-boundary coverage.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ebde265852

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread README.md
Comment thread scripts/tenant-rbac.test.sh Outdated
Comment thread scripts/tenant-rbac.test.sh Outdated
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Daily AI Engineer

Exact-head validation — a2f01f4a0f6907dabc1bfedc492486c4810d90d0

  • Review findings: the actual .templatesyncignore is now enforced; SAR request/parsing failures cannot count as denials; aggregation waits for one permission from all five role fragments.
  • Adversarial coverage: 14 structural mutations fail, and 3 executable runtime controls prove request failure, malformed response, and partial aggregation each fail closed.
  • Real user path: with Platform main at eda11112aac8a401230f7af19f7122093a65756c, pinned Kind v1.36.1 admitted the valid restricted Pod, denied 3 unsafe Pod mutations, allowed all 56 required tenant RBAC checks, and denied all 5 privilege boundaries.
  • Regression suite: placeholder rename, agent safety, Pod Security contract, manifest render, actionlint, shellcheck, zizmor, and git diff --check all pass. The run-owned Kind cluster was deleted; the final cluster list was empty.

The PR remains draft while the new-head CI and exact-head review complete.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Daily AI Engineer

@codex review

Please re-review exact head a2f01f4a0f6907dabc1bfedc492486c4810d90d0. The three prior findings are addressed with executable failure controls; focus on whether the SAR tri-state handling and five-fragment readiness loop now fail closed.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. You're on a roll.

Reviewed commit: a2f01f4a0f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@devantler
devantler marked this pull request as ready for review July 19, 2026 21:53
@devantler
devantler requested a review from a team as a code owner July 19, 2026 21:53
@devantler
devantler merged commit 49268ae into main Jul 19, 2026
14 checks passed
@devantler
devantler deleted the claude/tenant-rbac-91 branch July 19, 2026 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Exercise scaffold through Platform tenant RBAC

1 participant