ci: keep resource-writer credentials ephemeral - #80
Draft
Jeremy1844 wants to merge 2 commits into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Root cause
The two automated resource-writer paths construct a Git remote containing the write credential. That can expose the value through process/config diagnostics and leave it in repository metadata; one path also retained checkout credentials.
Change
EXITtrapThis draft addresses only
ADV-2026-0057/RC-0057. TLS policy remains the separate #78 root; dispatch validation, action provenance/permissions, token scope/rotation, and deployment atomicity are unchanged.Evidence
stage@9d237dd4fb37dd1fb936e3f9649020cc43a374c805658679a440710283520b4f6cfbeceadaaf9185— 0/2 introduced cases pass4d20fea900801bc315eadd717df2f2c4370210c2/ec74e48894b050186c81b342fa3fd87263c7c9db— 2/2 passjs-yaml4.1.0; both decoded write scripts passbash -ngit diff --checkand added-secret-pattern checks pass+80/-2;src,assets,ops,package.json, andyarn.lockGit objects are unchangedNo workflow/deployment credential was resolved, printed, captured, or used, and no authenticated stage/production fetch or push was attempted.
Open-PR composition
a28b334c396af71736266d6058f233aa7dec0ce5deploy-assets.yml; exact pair treefb7b6c37af532d691cda5df04bfad6e8678d4d87, with 5/5 combined cases passing4fe586802f55beb612aa02e9861f3f62a4b4abce, with 4/4 combined cases passing166a07b44083a4598abaed01b3309fed33a27a04c09e14c215fab1705546e807bbbb1676522299e4; the materialized composition passes 15/15 focused cases, all eight YAML parses, diff checks, and the synthetic no-secret harnessThese remain independent root causes and should remain separate pull requests.
Rollout, recovery, and remaining gates
There is no user-data, schema, content, package, lockfile, or artifact migration. On authentication failure, pause automated writing, preserve the source/base SHA and generated output, and use a reviewed recovery path; do not restore a credential-bearing remote.
Before merge, maintainers should run a no-content synthetic fetch/push in an authorized staging repository with redacted process/config/remote/log capture, confirm least scope and short lifetime (preferably GitHub App issuance), privately review retained history and rotate/restrict credentials if warranted, validate the exact composition on hosted runners, and land #78 independently. No lesson, translation, image, audio, video, PDF, Ellen G. White material, or other rights-controlled content changes.