fix(validation): validated must mean real CI + real test (not files-present) #317
No reviewers
Labels
No labels
Agent
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No assignees
2 participants
Notifications
Total time spent: 2 minutes 55 seconds
Due date
igor
2 minutes 55 seconds
No due date set.
Dependencies
No dependencies set
Reference
joshtronic/igor!317
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/validator-real-ci"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
The root cause of the "onboarded but actually broken" facade: the readiness checks are existence checks, not functionality checks. A repo passed with a deploy-only workflow and the failing npm stub test — which is how I wrongly called parsley "validated."
Changes (
lib/repo-checks.sh)check_test_signal— reject the npm default stub (echo "Error: no test specified" && exit 1). Atestscript must actually be a test.check_ci_workflow— require a workflow that triggers onpull_requestAND runs a build/test/lint step. A deploy-only workflow (push:master + rsync) no longer counts.Dogfooded against the fleet
So "validated" now means what we say it means.
⚠️ Merge order
Merge the repo fixes first — parsley #9 and sharktank #22 — or those two will briefly fail the stricter validation and reopen onboarding tickets until their fixes land. certifiedtradejobs already passes (its only issue was the deploy branch, PR #9 on that repo).
Tradeoff:
check_ci_workflownow fetches each workflow file (a few more API calls per validation; validation failures aren't cached, so a transient network miss just re-checks next tick).bash -n+check-syncgreen.🤖 Review —
REQUEST_CHANGES(automated)CI for
f3f6be07: successTightens two readiness checks in
lib/repo-checks.shso "validated" means a real test + real PR-triggered CI, not just files present. The intent is sound and the change is in scope, but I can't confirm it's safe as-is.Blocking:
Unverifiable new dependencies (
check_ci_workflow). The rewrite dropsforgejo_repo_dir_has_matchin favor offorgejo_repo_list_dirandforgejo_repo_get_file, neither of which is defined or touched in this diff. If either helper doesn't exist (or has a different signature/exit semantics), thewhileloop reads nothing andcheck_ci_workflowsilently returns 1 for every repo — turning the intended "stricter" check into "nothing ever validates."bash -nwon't catch a missing function; only runtime does. Please confirm both helpers exist in the repo (and cite where), since I can't see them here.No test coverage for a behavior change. This PR changes what passes validation (stub-test rejection, PR-CI requirement) but adds/adjusts zero tests. The contract requires tests for behavior changes. "Dogfooded against the fleet" is a claim I can't verify from the diff — it's exactly the kind of assertion a regression test should pin down. Add a test that exercises: (a) the npm stub is rejected, (b) a real test script passes, (c) a deploy-only workflow fails, (d) a
pull_request+ test/lint workflow passes.Non-blocking observations:
grep -q 'pull_request'matches the string anywhere in the file — including comments,paths-ignore, or a job name — not just theon:trigger. Loose, but errs toward accepting, so low risk.build, which many deploy workflows also contain; thepull_requestgate is what actually excludes deploy-only workflows. Fine as long as that gate holds, but worth a comment.⚠️ Merge ordernote (parsley #9 / sharktank #22 must land first) is an operational dependency the human merging needs to honor — flagging so it isn't lost.CI is green, but given the missing helpers can't be confirmed and there are no tests locking in the new behavior, I can't clear this for merge.
===BODY===
Independent review by the harness on
claude-opus-4-8(effort: high). The human reviewer is requested once Igor has reviewed; a human still merges.🔧 Rework — round 1 (automated)
Addressed the review on
claude-opus-4-8at effort high — 1 new commit(s).