Skip to content

Fail-closed ARCHNET baseline: disable unsafe cloud deployment and correct CI/documentation - #1

Draft
EdwinJdevops wants to merge 26 commits into
mainfrom
hardening/fail-closed-baseline
Draft

EdwinJdevops wants to merge 26 commits into
mainfrom
hardening/fail-closed-baseline

Conversation

@EdwinJdevops

@EdwinJdevops EdwinJdevops commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

Reuse and release decision

For a repository that generates IAM trust policies, copy the plan-only test pattern from the verified workflow. Target the trust policy data source and assert on the decoded principal. Override only cloud lookup inputs, preserve actual policy rendering, and run a changed-principal control that must fail with the expected assertion. Install dependencies before disabling network access and run with no real AWS credentials. The two upstream roots needed one test file each. Independent onboarding time remains unmeasured.

Native Terraform met the tested job in both repositories. An ARCHNET integration should advance only when an independent repo exposes a concrete gap in this recipe and the integration demonstrably reduces setup or maintenance. Full untargeted plans and release licensing remain open. On 15 November 2026 GitHub reported main as unprotected and returned no active branch rules. Passing checks are currently evidence, with no verified merge enforcement.

Native acceptance from both upstream module roots

Acceptance run passed on 02efecf5bbadd8292151b9df50543200e23de156. EKS v20.37.2 and Cloud Posse 0c2347c each accepted the original generated trust principal and rejected the changed principal with the expected assertion. Each uses one added Terraform test file and no positive-case module edits. Cloud Posse overrides only the account lookup and supplies three inputs. Tests use targeted plan mode after dependency setup, with networking disabled and no AWS credentials. This verifies one policy per upstream root, not a complete untargeted plan. Setup effort for an independent adopter is unmeasured. Native Terraform met this gate without an ARCHNET-specific runtime.

Offline IAM experiment

Run passed all four controls at 093fd78fa42cda2b3d63196e3eaa75aa899218ad. Terraform rendered actual policy JSON for the extracted EKS and Cloud Posse policy blocks with synthetic inputs and networking disabled. Both original principals matched, and both changed principals failed the same assertion. This demonstrates a native recipe for extracted renderers. Full upstream modules, cloud read substitution within those modules, and external demand remain unverified. No redesign or rebrand is supported by this result alone.

Standalone product and submission decision

A local comparison used an inline SHA-256 file inventory with expected hashes established from the clean baseline. Both implementations accepted clean source and rejected the same extra-file and in-place declaration fixtures. This was a source-gate comparison only. A team can pair the inline gate with the same Terraform plan command. ARCHNET provides the documented fixtures and path-specific diagnostics, but the comparison establishes no adoption or maintenance advantage. Keep the work as an experimental reference and revisit a standalone product when an independent team shows an unmet need.

GitHub branch rules and classic protection endpoints were inaccessible from the available connection. Required-check enforcement on main remains unverified. The project license and maintainer file also remain unverified. Foundation submission is on hold pending target selection and eligibility review. No infrastructure or repository settings were changed.

Current verification

Commit 209439a7a86e1324690c2f50a39ce15875d5a65b passed CI run #24. The benchmark now appends the provider-free resource fixture directly to the approved terraform/main.tf in a temporary copy. The real guard rejected the modified file before Terraform ran. The clean plan still produced zero changes. The source benchmark and seven unit tests also passed locally.

The public README links to the reproduction instructions. Required-check enforcement on main, a comparison against a minimal check in existing CI, independent demand and foundation submission readiness remain open. AWS provisioning stays disabled.

Prior public evidence review

Commit 726a281b4e1f3c660b826dae84a2fa082c655198 passed all four checks in run #23. This revision updates the engineering audit. Public reports corroborate planning and credential friction. The only exact case of a cloud-disabled root retaining live AWS dependencies found in this review was ARCHNET itself. Keep the benchmark as a reusable engineering baseline and leave product expansion pending stronger evidence.

Required-check enforcement on main remains unverified. No settings changes, merge or live AWS activity were performed.

Benchmark measurements from run #22

Commit 628a382688e70ebc7cae04b4753832d9fda1ea5d passed Terraform, validation, security and Kubernetes in run #22.

Case Observed decision Elapsed
Clean source Accepted 0.023 s
Unexpected Terraform declaration Rejected before Terraform ran 0.023 s
Disabled plan Zero changes and JSON policy passed 0.028 s
Explicit enablement Rejected with the expected diagnostic 0.027 s

Elapsed times cover the individual commands on one runner and exclude setup, queue time and JSON inspection. The source fixture uses Terraform's built-in resource type in a temporary copy. The benchmark and seven existing tests passed locally with a workspace temporary directory. Terraform and Kubernetes ran in CI. See the exact Terraform job and reproduction instructions. This validates the engineering contract. External demand and adoption remain open.

Earlier hardening verification

Commit 1f5cb64e9dfd31766915ec75ae7db815034de40e passed CI run #21. All four jobs passed: validation, Terraform, Kubernetes and security.

  • Terraform 1.12.2 initialized without a remote backend, passed formatting and validation, and saved a zero-change plan. The JSON policy verified zero resource changes, drift, outputs, providers and module calls. Explicitly enabling cloud deployment returned the expected validation failure.
  • The disposable kind cluster reached node readiness, rolled out CoreDNS, passed a ConfigMap round trip and tore down. This ran on GitHub's Linux runner. The workstation lacks Docker and Terraform.
  • Direct GitHub Actions references use full commit SHAs. Checkout does not persist credentials. The pinned Trivy filesystem scan passed.
  • Seven ingress-guard unit tests and the source allowlist passed locally. A temporary unexpected Terraform JSON file was rejected.

Audit and failure history

Run #19 passed on the original requested commit. The architecture review found six unconditional networking resources and an AMI data source despite the disabled EC2 flag. The executable root now has zero providers, resources and data sources. Run #20 caught the remaining root-level AWS inputs, which were removed before run #21.

Engineering audit records the candidate workflow, public practitioner evidence and alternatives. The candidate is credential-free evidence that a cloud-disabled sandbox still proposes zero changes in a PR. Demand for ARCHNET and adoption remain unverified.

Scope and open verification

The infrastructure ceiling is $10/month. This PR authorizes $0 in live cloud spend. AWS provisioning is disabled and no AWS resources were created. Argo CD sync, workload deployment, recovery, independent operator reproduction and production readiness remain outside the verified scope. Required-check enforcement on the target branch has not been verified. Keep this PR in draft for review.

@EdwinJdevops EdwinJdevops changed the title Security baseline: close public control-plane ingress and fail CI on critical checks Fail-closed ARCHNET baseline: disable unsafe cloud deployment and correct CI/documentation Nov 7, 2026
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