Repository navigation
Declare Julia Runic for worker pre-push formatting - #350
ChrisRackauckas-Claude wants to merge 1 commit into
Conversation
Select the repository's existing Runic formatter through the supported formatter declaration, using Julia's Runic module to avoid the unrelated executable named runic. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Codex <noreply@openai.com> Agent-Harness: Codex CLI 0.164.0 Agent-Model: gpt-6-astra Agent-Session: local job 349-codex (no session URL)
PR: #350 Reviewed head: dbcb5da Risk assessment
Review reportVERDICT: CHANGES Risklow (L3: repository-local pre-push formatter configuration; no package source, dependencies, public API, or assertions change). Blocking findings
Non-blocking findingsNone. No correctness defect found in the formatter declaration. What I ran
What I did not verify
AUTHOR_GRADE: {"task": "ci", "score": 4, "difficulty": 1, "rounds": 1, "author_harness": "Codex CLI 0.164.0", "author_model": "gpt-6-astra", "note": "The narrow formatter declaration passed 111 hook tests and real Runic acceptance/rejection probes without rewriting inputs. No code defect found; the supplied downstream regression remains unverified and blocks the no-regression gate."} Head link: dbcb5da 🤖 Posted by an AI agent — harness: codex-cli 0.164.0 · model: gpt-6.1-sol |
PR: #350 Reviewed head: dbcb5da Risk assessment
Review reportVERDICT: MERGE Risklow (L3: repository-local pre-push formatter configuration; no package source, tests, dependencies, or workflow changes) Blocking findingsNone. Non-blocking findingsNone. The round-two delta is empty. The whole PR adds only What I ran
Review produced by an AI agent using Codex CLI 0.164.0, model gpt-6.1-sol, in the session identified above. Independent verdict frozen without consulting another review or author rating. What I did not verify
AUTHOR_GRADE: {"task":"ci","score":5,"difficulty":1,"rounds":2,"author_harness":"Codex CLI 0.164.0","author_model":"gpt-6-astra","note":"The five-line formatter declaration passed six direct command probes, including all 64 tracked Julia files, without changing tracked content. Factory-dispatcher integration and downstream CI were not verified."} REVIEWER_GRADE: {"task": "ci", "score": 4, "rounds": 2, "reviewer_harness": "codex", "reviewer_model": "gpt-6.1-sol", "verdict": "false-positive", "note": "Thorough formatter validation: 111 hook tests and eight probes supported the same no-defect finding as the frozen review. The sole blocking P2 elevated an uninvestigated downstream CI failure into a CHANGES verdict without evidence connecting it to the five-line configuration addition. The frozen MERGE verdict preserves the separate unresolved CI gate; neither review established baseline behavior."} Head link: dbcb5da 🤖 Posted by an AI agent — harness: codex-cli 0.164.0 · model: gpt-6.1-sol |
Declare the repository's existing Julia Runic formatter in the supported
.factory-pre-push.jsoninterface. The installed worker hook does not recognize the reusable Runic CI workflow, and the executable namedrunicresolves to an unrelated Python package; the declaration selectsjulia --project=@runic -m Runic --checkexplicitly. Only this five-line declaration changes, with no formatter exceptions, dependency changes, or CI/hook modifications.Followup 1; publication prerequisite for #349. This PR does not close that issue or publish its resizing implementation. The original behavior commit and all its validation evidence remain unchanged and unpublished pending review and merge of this prerequisite. Ignore this draft until reviewed by @ChrisRackauckas.
Before / after verification
Verified Julia 1.12.4 and Julia Runic 1.10.0 (package UUID
62bfec6d-59d7-401d-8490-b29ee721c001) in the existing@runicenvironment:julia --project=@runic -e 'using Runic; println("Julia ", VERSION); println("Runic ", pkgversion(Runic)); println("Runic UUID: ", Base.PkgId(Runic).uuid)'JSON parsing and the installed hook's actual formatter-schema validator both passed and selected exactly:
That argv returned exit 0 on the unchanged feature branch's two Julia files (
src/noise_interfaces/noise_process_interface.jlandtest/resize_test.jl). Direct Runic checks acceptedfixture(x) = x + 1, rejectedfixture(x)=x+1, and rejected an incomplete function definition, without modifying any fixture.The original installed-hook rejection was retained and reproduced against the unchanged behavior commit, with a real nonempty ref-update record:
A scratch harness invoked the installed
pre-pushentrypoint, using Git's four-fieldlocal_ref new_commit remote_ref old_commitinput format. Diagnostic commits descend from the committed declaration and contain the stated fixture changes; every update has distinct old/new commits. These are committed-snapshot checks, not dry/no-op pushes. No diagnostic commits or fixtures are on the published branch.Real harness output (all expected exits asserted):
The formatted diagnostic commit produced these actual gate commands and exit 0:
The unformatted diagnostic commit ran the same two commands and was blocked when Runic returned exit 1. Separate negative probes confirmed that spelling, conflict-marker, Julia syntax, and JSON checks still reject invalid changes; no exceptions or bypass switches were used.
The actual publication push of this declaration also passed the installed gate:
The JSON diagnostic is the hook's existing behavior for repositories without a JSON formatter: JSON parsing and spelling checks still ran, as demonstrated by the malformed-JSON and spelling negative probes. The separate worktree used
git -c core.hooksPath="$worker_hooks" pushto enforce the same installed gate without changing persistent hook settings.git diff origin/master HEAD --checkandtypos .factory-pre-push.jsonalso passed.Limits and review points
@runicenvironment. Missing tools remain failures; no installation or fallback is added. Other operating systems and worker environments were not exercised locally.CI investigation (followup 2)
The Dependabot Auto-merge run at this exact head failed workflow validation before creating jobs. Its annotation reports that the reusable job requests
checks: readandstatuses: read, while the caller permitschecks: noneandstatuses: none.This is a confirmed pre-existing caller/reusable-workflow permission mismatch, already tracked by SciML/.github issue 141. The same annotation appears in the October 17 run and the October 29 run. All three runs resolve the reusable workflow to
41f457c608add5e7edab9173e6f8e979083fb475, and their caller workflow has the same blob as currentmaster(e24b444d0786096cb1c778f32546ebb42a619ab2). The historical runs are pull-request runs, not default-branch push runs; the caller triggers only onpull_request.The exact caller is DependabotAutoMerge.yml on current master, and the requested scopes come from the resolved shared workflow. Handoff belongs to the SciML coordinator/shared-workflow maintainers through the existing unassigned issue. No workflow, permission, settings, or required-check change is part of this PR. The failure is not waived, and other pending checks are not counted as successful.
Downstream SDE3 baseline failure
The SDE3 job at this head failed in
test/SDE3/rode.jl:19,noise iip tests, with:This is the existing failure tracked by issue 346 and its separate fix PR 347. The October 27 SDE3 job has the same error and totals. A reduced diagnostic was also run locally against a clean current-master checkout and this unchanged mechanical head, both using Julia 1.13.3, DiffEqNoiseProcess 5.36.5, ReverseDiff 1.18.7, and SciMLBase 3.58.0:
Both executions exited 1 at the same
TrackedArraymutation andsetup_next_step!line. All 121 dependency entries match between the two reduced environments, apart from the developed package path; all 120 versioned entries match the current SDE3 CI log. The source-path change also changes the environment's project hash. This is an observed baseline reproduction, not an inference from the small PR diff.The full downstream group was not rerun locally, and the separate fix was not modified or revalidated here. Handoff stays with the existing issue 346 / PR 347 author and the SciML coordinator. No tests, assertions, existing broken markers, or workflow settings were changed; no numerical fix is mixed into this declaration PR.
Risk assessment
L3 (repository CI configuration) was considered, but the more specific H6 criterion governs hooks and their instructions. This declaration selects the formatter command the pre-push gate executes. The policy requires the highest matching level and explicitly says that a small mechanical diff does not lower H6 to low. No numerical/public-API, dependency, cross-repository-template, or removed-verification criterion is introduced by this five-line diff. This is the author’s classification, not an independent review.
🤖 Posted by an AI agent — harness: Codex CLI 0.164.0 · model: gpt-6-astra
Conversation: local job 349-codex (no session URL)