fix(ci): make the secret scanner run, and repair a parse-dead instant-sync - #53
Merged
Conversation
The job key `scan:` sat at column 0, a sibling of `jobs:` rather than a child, so `jobs:` parsed as null and Actions refused the workflow before allocating a runner. Every `Secret Scanner` run in this repository has ended in startup_failure, which means **gitleaks has never executed here**. This is valid YAML but invalid Actions, so YAML-based linting does not catch it: a `yaml.safe_load` sweep over this repo's workflows passes the file. Only Actions' own schema rejects it. The practical consequence is that the job-level `permissions:` block — granting the pull-requests: write and actions: read that the reusable's gitleaks job requires — was attached to a top-level key Actions ignores, so it never took effect. The reusable SHA pin is untouched. Fix: indent `scan:` by two spaces. Its child keys were already at four, so the block nests correctly. Signature worth recognising: the runs are listed by FILE PATH rather than workflow name, and `gh run view --log-failed` returns "log not found". `gh pr checks` shows nothing at all, because a parse-rejected workflow creates no check run. Estate context: a scan of all 13,330 workflow files across hyper-repos/, meta-repos/ and repos/ found this fault in exactly two repositories — this one and wokelang, byte-identical in shape. wokelang is fixed in hyperpolymath/wokelang#129. Branched from origin/main deliberately: the local checkout carried two unpushed sweep-authored commits that are not part of this fix. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A sweep appended a "K9-SVC Validation" step at two-space indentation — the level of a job key under `jobs:` — instead of the six spaces that would place it inside the `dispatch` job's `steps:` list. YAML then hit a sequence item where it expected a block mapping, and the file failed to parse at line 36. Consequence: Instant Sync has been startup_failure in this repository, so forge propagation has not been running. Re-indented the step and its body into the steps list. The job now parses with three steps as intended. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Two workflows in this repository are rejected by Actions at parse time, so neither has ever produced a result.
1.
secret-scanner.yml—jobs:was emptyThe job key
scan:sat at column 0, a sibling ofjobs:rather than a child, sojobs:parsed asnulland Actions refused the file. EverySecret Scannerrun in this repository has ended instartup_failure, meaning gitleaks has never executed here.This is valid YAML but invalid Actions, so YAML-based linting doesn't catch it — a
yaml.safe_loadsweep over this repo's workflows passes the file happily. Only Actions' own schema rejects it.The knock-on: the job-level
permissions:block granting thepull-requests: writeandactions: readthat the reusable's gitleaks job requires was attached to a top-level key Actions ignores, so it never took effect. The reusable SHA pin is untouched.Fix: indent
scan:by two spaces. Its child keys were already at four.2.
instant-sync.yml— misplaced step broke the parseA sweep appended a
K9-SVC Validationstep at two-space indentation — job-key level — instead of the six spaces that would put it inside thedispatchjob'ssteps:list. YAML hit a sequence item where it expected a block mapping and failed at line 36.Consequence: Instant Sync has been
startup_failurehere, so forge propagation has not been running.Re-indented the step and its body. The job now parses with its three steps as intended.
Recognising this class
Both faults share a signature:
gh run view --log-failedreturns "log not found"gh pr checksshows nothing — a parse-rejected workflow creates no check runOnly
gh run list --json conclusionreveals them.Estate context
jobs:fault is narrow: a scan of all 13,330 workflow files acrosshyper-repos/meta-repos/reposfound it in exactly two repositories — this one andwokelang, byte-identical in shape. wokelang is fixed in fix(ci): make the secret scanner and the Lean proof gate actually run wokelang#129.K9-SVC Validationstep is not narrow — the same mis-indentation appears in 59 workflow files estate-wide (against 12 correctly indented). Reported separately.Note on branching
Branched from
origin/maindeliberately. The local checkout carried two unpushed sweep-authored commits (chore: estate-wide security compliance,chore: remove duplicate GOVERNANCE files) that are not part of this fix and were not inherited.🤖 Generated with Claude Code