Add CI and pre-commit validation for .fullsend/harness/*.yaml base URL SHA-256 integrity
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 55/100
Research direction
Start by reading scripts/lint.py, .pre-commit-config.yaml, and .github/workflows/ci-workflow.yaml to trace the existing validation flow; inspect the .fullsend/harness/*.yaml files and the fullsend-ai/agents rule in .github/renovate.json5. Run the existing lint command, then define validation for URL shape and hashes, with offline and online behavior matching the proposal. Done means invalid hashes fail with a useful error, valid hashes pass, and CI runs the check.
Written by the indexing model from the issue text.
Description
What happened
When Renovate opened PR #274, the post-upgrade task failed, resulting in an "Artifact update problem" comment and a renovate/artifacts: failure status.
However, all existing CI checks defined in .github/workflows/ci-workflow.yaml (Pre-commit checks, Go foundation checks, Specification store check, WMS validation and in-memory adapter checks, and Source Control Manager checks) passed cleanly. Neither .pre-commit-config.yaml nor scripts/lint.py inspects the base URLs or validates the #sha256= hashes in .fullsend/harness/*.yaml.
Because CI Workflow - Success was the only required status check in repository branch protection, and .github/renovate.json5 had platformAutomerge: true enabled for patch/minor updates, GitHub native auto-merge evaluated all required checks as passing. It enqueued and merged PR #274 into main despite:
- An explicit artifact failure comment posted by Renovate.
- A failing
renovate/artifactscommit status. - Completely broken agent harness configurations that break
fullsendruntime execution.
What could go better
A core principle of agent-driven and automated repositories is that automated merges must be gated by deterministic CI checks. If a change introduces invalid or unverified configuration, CI must catch it before merge.
Currently, redhat-et/ProtoBot enforces pre-commit and CI gates for Go formatting, YAML syntax, Markdown linting, shell scripts, and specification change sets, but completely lacks any validation for .fullsend/harness/*.yaml remote base integrity. Because fullsend strictly enforces #sha256= integrity at runtime, any mismatch in a committed harness file is a severe defect that disables agent workflows.
Adding a pre-commit check (wired into scripts/lint.py) and CI verification step will ensure that any PR attempting to modify harness base URLs without valid hashes is immediately rejected by CI, thereby blocking platform auto-merge and preventing broken configuration from reaching main.
Proposed change
- Create a validation check script (e.g.,
scripts/check_harness_integrity.pyor integrated intoscripts/lint.pyand.pre-commit-config.yaml) that:- Scans all YAML files under
.fullsend/harness/*.yaml. - Extracts the
base:URL and its#sha256=<hash>fragment. - Validates that the URL matches the expected
https://raw.githubusercontent.com/...pattern. - Verifies that the
#sha256=fragment matches the actual SHA-256 digest of the content at the specified version tag. In offline or local sandboxes where network access is restricted, verifies that the hash is well-formed (64 hex characters) and non-empty, and provides an--onlinemode or CI check for full hash verification.
- Scans all YAML files under
- Add a CI step in
.github/workflows/ci-workflow.yaml(or incorporate into the pre-commit checks job) that executes harness integrity validation before the CI workflow succeeds. - In
.github/renovate.json5, addautomerge: falseto thefullsend-ai/agentspackage rule (or configure Renovate to require human review for changes touching.fullsend/harness/), providing defense-in-depth against automated merging of agent infrastructure updates when artifact update scripts fail.
Validation criteria
- Modify one of the
#sha256=hashes in.fullsend/harness/review.yamlto an invalid or stale hash. - Run the harness validation check (via
python scripts/lint.pyor the dedicated check script) and verify that it fails with a non-zero exit code and an informative error message identifying the mismatched hash. - Restore the correct hash and verify the check passes with exit code 0.
- Verify in
.github/workflows/ci-workflow.yamlthat PRs with mismatched harness hashes fail the check suite and cannot be merged via GitHub auto-merge.
Generated by retro agent from https://github.com/redhat-et/ProtoBot/pull/274
- Dominant language
- Go
- Stars
- 6
- Forks
- 8
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 93
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from redhat-et/ProtoBot
-
Enable issue-driven Fullsend Code/Fix runs to create ears-manager-compliant PRsPossibly taken @JohnStrunk claimed this 1 day ago. Opencomponent:ears-manager enhancement feature infra triaged
redhat-et/ProtoBot#292 · 8 comments · 2 reactions · 1 assignee ·
Maintainers usually reply within 1 day
-
enhancement feature infra ready-for-triage triaged
Difficulty 3/5 1-2 days Newbie friendliness 55/100
redhat-et/ProtoBot#288 · 2 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
Scope AGENTS.md specification-document sibling reading rule to avoid whole-repo doc reading on localized editsPossibly taken @cplegendre claimed this 3 days ago. Opendocumentation ready-for-triage ready-to-code
redhat-et/ProtoBot#283 · 2 comments · 2 reactions · 1 assignee ·
Maintainers usually reply within 1 day
-
Support multiple proposed change sets in selfhost_test.go to prevent fixture test failures during registered artifact updatesPossibly taken @fullsend-ai-coder claimed this 3 days ago. Openbug component:ears-manager ready-for-triage ready-to-code
Difficulty 3/5 Half a day Newbie friendliness 25/100
redhat-et/ProtoBot#282 · 3 comments · 2 reactions ·
Maintainers usually reply within 1 day
-
Ensure all ProtoBot OpenCode usage and installs target v2Possibly taken @JohnStrunk claimed this 4 days ago. Opencomponent:drafting-table enhancement feature triaged
redhat-et/ProtoBot#272 · 8 comments · 1 reaction · 1 assignee ·
Maintainers usually reply within 1 day
All issues in redhat-et/ProtoBot
Similar issues
-
bug frontend grammar sev-3
Difficulty 2/5 1-3 hours Newbie friendliness 63/100
-
connector docs good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
soma-intelligence/open-health-sync#134 ·
Maintainers usually reply within 1 day
-
bug frontend
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 3 days
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
oss/0 pending team/container-integrations
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
DataDog/datadog-agent#58323 ·
Maintainers usually reply within 1 day