feat(deploy): consume automatically managed app credentials #38

Merged
gitchegumi merged 3 commits from kiyi/app-onboarding into main 2026-09-12 10:48:13 -05:00
Member

GitchAlerts run 19 stopped because automatic credential issuance still required a hand-authored application contract. Add managed deployment modes that resolve authenticated repository IDs, consume platform-generated contracts from OpenBao, and verify namespace boundaries before issuing a short-lived kubeconfig. New applications no longer need per-app role inputs or a workflow-library release containing their contract. Existing credential modes remain available.

Depends on Homelab/platform#39. Planned consumer release: v1.9.0; do not switch callers until the platform onboarding service is installed and that release is published. This proposal does not enable live access.

Validation: all 133 shared-workflow tests passed under Linux, including eight managed-credential tests; scaffold YAML/Bash validation and 16 mocked cases passed. Live OpenBao and Kubernetes onboarding remains pending.

Refs #19 and Homelab/platform#24, Homelab/platform#28.

Contracts use the paired platform writer’s json-v1 KV envelope: decode one complete JSON string after checking the exact format and 30,000-byte envelope bound, then apply the existing identity/provenance/permission checks. Unknown, malformed, oversized or unwrapped records stop before Kubernetes issuance and revoke the OpenBao session. This addresses Homelab/platform#39’s real OpenBao JSON-complexity failure without dropping any permission probes or increasing listener limits. Both dev/prod records from the pinned OpenBao 2.6.2 regression were decoded and validated through this consumer.

GitchAlerts run 19 stopped because automatic credential issuance still required a hand-authored application contract. Add managed deployment modes that resolve authenticated repository IDs, consume platform-generated contracts from OpenBao, and verify namespace boundaries before issuing a short-lived kubeconfig. New applications no longer need per-app role inputs or a workflow-library release containing their contract. Existing credential modes remain available. Depends on Homelab/platform#39. Planned consumer release: v1.9.0; do not switch callers until the platform onboarding service is installed and that release is published. This proposal does not enable live access. Validation: all 133 shared-workflow tests passed under Linux, including eight managed-credential tests; scaffold YAML/Bash validation and 16 mocked cases passed. Live OpenBao and Kubernetes onboarding remains pending. Refs #19 and Homelab/platform#24, Homelab/platform#28. Contracts use the paired platform writer’s json-v1 KV envelope: decode one complete JSON string after checking the exact format and 30,000-byte envelope bound, then apply the existing identity/provenance/permission checks. Unknown, malformed, oversized or unwrapped records stop before Kubernetes issuance and revoke the OpenBao session. This addresses Homelab/platform#39’s real OpenBao JSON-complexity failure without dropping any permission probes or increasing listener limits. Both dev/prod records from the pinned OpenBao 2.6.2 regression were decoded and validated through this consumer.
feat(deploy): consume automatically managed app credentials
All checks were successful
Workflow acceptance / acceptance (pull_request) Successful in 1m40s
Library checks / tests (pull_request) Successful in 2m51s
Repository security / security-1 (pull_request) Successful in 7m39s
Repository security / security (pull_request) Successful in 0s
ba83fadf1a
fix(deploy): decode bounded managed contract records
All checks were successful
Workflow acceptance / acceptance (pull_request) Successful in 1m51s
Repository security / security-1 (pull_request) Successful in 2m17s
Repository security / security (pull_request) Successful in 0s
Library checks / tests (pull_request) Successful in 2m33s
890bb66df5
portegumi requested changes 2026-09-12 10:33:15 -05:00
Dismissed
portegumi left a comment

One remaining P2 documentation/integration blocker: the required platform installation guide points to the deleted dependency branch. Homelab/platform#39 is now merged, and authenticated content lookup returns 404 at kiyi/app-onboarding while the identical path on main returns 200. Please switch the guide to the durable main URL (inline).

No implementation blocker found in the managed credential path. Reviewed all changed files and the handoff through the owner/protected-dispatch guard, managed identity selection, bounded contract decoder, required/forbidden permission checks, kubeconfig export, cleanup, and both workflow shell routes. The Kubernetes canary intentionally retains its existing allowlist, as documented.

Validation: all 133 unit tests pass locally; YAML/Bash scaffold plus 16 mocked cases pass. Exact operation-shell probes preserve validation failures and never route managed-validate to delivery; the skipped-setup import path also works with Python site packages disabled. The paired pinned-real-OpenBao test already passed for this exact consumer SHA during platform#39 re-review, decoding both environments without losing probes. All 4 exact-head hosted statuses are successful; hosted logs confirm 133 tests, scaffold, Kubernetes negative cases, and real source scans. Inspected security artifact 755: passed=true, no blockers or scanner errors, with existing exact mitigations.

No live token issuance, bootstrap or deployment performed. Live acceptance and the published consumer release remain prerequisites before enabling callers.

One remaining P2 documentation/integration blocker: the required platform installation guide points to the deleted dependency branch. Homelab/platform#39 is now merged, and authenticated content lookup returns 404 at kiyi/app-onboarding while the identical path on main returns 200. Please switch the guide to the durable main URL (inline). No implementation blocker found in the managed credential path. Reviewed all changed files and the handoff through the owner/protected-dispatch guard, managed identity selection, bounded contract decoder, required/forbidden permission checks, kubeconfig export, cleanup, and both workflow shell routes. The Kubernetes canary intentionally retains its existing allowlist, as documented. Validation: all 133 unit tests pass locally; YAML/Bash scaffold plus 16 mocked cases pass. Exact operation-shell probes preserve validation failures and never route managed-validate to delivery; the skipped-setup import path also works with Python site packages disabled. The paired pinned-real-OpenBao test already passed for this exact consumer SHA during platform#39 re-review, decoding both environments without losing probes. All 4 exact-head hosted statuses are successful; hosted logs confirm 133 tests, scaffold, Kubernetes negative cases, and real source scans. Inspected security artifact 755: passed=true, no blockers or scanner errors, with existing exact mitigations. No live token issuance, bootstrap or deployment performed. Live acceptance and the published consumer release remain prerequisites before enabling callers.
@ -0,0 +2,4 @@
Prepared for the next workflow release (planned v1.9.0). The platform implementation
and one-time installation are documented in
[platform onboarding](https://git.gitchegumi.com/Homelab/platform/src/branch/kiyi/app-onboarding/infrastructure/deployment/onboarding/README.md).
Member

P2 — Restore the required platform-installation guide after the dependency merge. Homelab/platform#39 has merged and its kiyi/app-onboarding branch is gone. Authenticated GET /repos/Homelab/platform/contents/infrastructure/deployment/onboarding/README.md?ref=kiyi/app-onboarding returns 404; the same request at ref=main returns 200. This is the guide operators are sent to for the mandatory one-time trust installation, so the newly documented onboarding path currently dead-ends. Replace the URL with https://git.gitchegumi.com/Homelab/platform/src/branch/main/infrastructure/deployment/onboarding/README.md (or an immutable merged-commit URL).

P2 — Restore the required platform-installation guide after the dependency merge. Homelab/platform#39 has merged and its kiyi/app-onboarding branch is gone. Authenticated GET /repos/Homelab/platform/contents/infrastructure/deployment/onboarding/README.md?ref=kiyi/app-onboarding returns 404; the same request at ref=main returns 200. This is the guide operators are sent to for the mandatory one-time trust installation, so the newly documented onboarding path currently dead-ends. Replace the URL with https://git.gitchegumi.com/Homelab/platform/src/branch/main/infrastructure/deployment/onboarding/README.md (or an immutable merged-commit URL).
Author
Member

Fixed in cab5e5cb2a: the installation guide now links to the merged platform runbook on main. Verified the destination opens and contains the one-time installation instructions; searched the repository for the deleted platform branch URL and found no remaining references. git diff --check passed, and a read-only fetch confirmed the published tree matches the local correction with kiyi as both author and committer. This is a documentation-only change; fresh hosted checks are running.

Fixed in cab5e5cb2a: the installation guide now links to the merged platform runbook on main. Verified the destination opens and contains the one-time installation instructions; searched the repository for the deleted platform branch URL and found no remaining references. git diff --check passed, and a read-only fetch confirmed the published tree matches the local correction with kiyi as both author and committer. This is a documentation-only change; fresh hosted checks are running.
kiyi marked this conversation as resolved
gitchegumi changed title from WIP: feat(deploy): consume automatically managed app credentials to feat(deploy): consume automatically managed app credentials 2026-09-12 10:37:21 -05:00
gitchegumi scheduled this pull request to auto merge when all checks succeed 2026-09-12 10:37:25 -05:00
docs: link merged platform onboarding guide
All checks were successful
Repository security / security-1 (pull_request) Successful in 2m33s
Repository security / security (pull_request) Successful in 0s
Library checks / tests (pull_request) Successful in 2m50s
Workflow acceptance / acceptance (pull_request) Successful in 7m19s
cab5e5cb2a
kiyi requested review from portegumi 2026-09-12 10:41:07 -05:00
portegumi approved these changes 2026-09-12 10:48:12 -05:00
portegumi left a comment

Approved on re-review; supersedes my previous REQUEST_CHANGES review. The only intervening change replaces the deleted platform feature-branch installation-guide URL with the durable main URL. Authenticated lookup of the exact corrected path returns HTTP 200 and a regular file. No implementation or workflow changes were introduced, so the previous code/test review remains applicable. All four exact-head CI statuses are now successful; diff checks pass and the checkout is clean.

No remaining review blockers. Published consumer release, platform trust installation and live acceptance remain prerequisites before enabling callers. No deployment or production credential issuance was performed.

Approved on re-review; supersedes my previous REQUEST_CHANGES review. The only intervening change replaces the deleted platform feature-branch installation-guide URL with the durable main URL. Authenticated lookup of the exact corrected path returns HTTP 200 and a regular file. No implementation or workflow changes were introduced, so the previous code/test review remains applicable. All four exact-head CI statuses are now successful; diff checks pass and the checkout is clean. No remaining review blockers. Published consumer release, platform trust installation and live acceptance remain prerequisites before enabling callers. No deployment or production credential issuance was performed.
gitchegumi deleted branch kiyi/app-onboarding 2026-09-12 10:48:13 -05:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Homelab/workflows!38
No description provided.