| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
This is cool - two things come to mind:
|
Sorry, something went wrong.
|
Yeah, I agree. I don't have a specific policy in mind but directionally I'm on board. To what degree should that be encoded into this script's report? We could augment this with more data than it currently gives. |
Sorry, something went wrong.
|
Also, we could extend this with a planner that makes it more obvious whether the discovered versions will even work together and suggest a batch. Something like:
For this batch, this would have discovered the 14 packages that work without me having to do a separate manual triage:
...this doesn't help with what you're describing, but maybe we can re-think this script such that it's a more useful swiss-army-knife for helping get the package sets updated with the best options when it can't be done automatically due to breaking changes. |
Sorry, something went wrong.
I to get us a good glance we could have:
Also I think we could be running this in a weekly cronjob thing in the Registry repo, opening an issue/PR if it finds something |
Sorry, something went wrong.
|
d283822 has some followups that address your points:
Tried it out with a live run against package set 78.1.0 / compiler 0.15.15 and it produced a workable plan — including settling on hyrule@2.3.9 as an ugrade since 2.4.0 is blocked. |
Sorry, something went wrong.
|
Latest commit is a prototype, still hacking on it a little. But as I was working on the version check script, I realized we could be doing a lot more automatically — and still safely — to update the package sets. Our current automatic upgrade is basically just "try all new packages in the last 24hrs, and if any fail, go sequentially and only include ones which succeed." Very naive, and if a package doesn't work in its 24h window for whatever reason it is never retried — even if it would work later on (such as a dependency finally upgrading). So the new prototype implements one shared planner that can be used by both the package set updater and the version check workflow. Any version of a package that's already in the set which is newer than what's in the set is eligible for any new plan, plus recently uploaded packages even if they've never been in the set. We restrict to a single compiler version but otherwise ignore ranges. We still try all packages first, but then we do bounded best-first latest/intermediate/current searches. The package set updater, if it is capable of finding a nonempty addition/upgrade plan, can just submit it. If it finds removals, downgrades, etc. then we can have that notify trustees for action, but it will never be automatically done. |
Sorry, something went wrong.
Greptile SummaryThis PR adds a PackageSetVersionChecker script and GitHub Actions workflow that compile-verifies all pending registry upgrades against the latest package set and reports both automatically-applicable updates and manually-reviewable removals. It also refactors the package-set API to be strictly atomic (removing the previous sequential/partial-success path), extracts the compile-guided planner logic into its own PackageSetPlanner module, and updates the spec to reflect the new guarantees.
Confidence Score: 5/5The PR is safe to merge. The new checker runs entirely read-only, the planner extraction is well-tested, and the API switch to atomic-only semantics is a deliberate, clearly-reasoned design choice with matching spec updates. The core logic reuses heavily-tested planner infrastructure, the report rendering has no mutable side-effects, the workflow correctly guards issue creation with hashFiles, and the atomic API change aligns the server behavior with the offline planning model described throughout the PR. Files Needing Attention: .github/workflows/package-set-version-check.yml — consider whether a periodic schedule trigger should be added alongside workflow_dispatch. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[workflow_dispatch] --> B[nix run package-set-version-checker]
B --> C{Latest package set?}
C -- No --> D[Log warning, exit 0, no file written]
C -- Yes --> E[Read all metadata + manifests]
E --> F[plannerCandidates with empty additionSeeds]
F --> G[planUpgrades: phases 1-5\nprobe budget 60]
G --> H[analyzeRemovals\ntotal budget 100]
H --> I[renderReport: Markdown]
I --> J[Write version-check.md]
J --> K[Upload artifact]
K --> L{hashFiles != empty?}
L -- No --> M[Skip issue creation]
L -- Yes --> N[gh issue create]
subgraph PackageSetPlanner
G
H
end
subgraph PackageSetVersionChecker
E
F
I
J
end
Reviews (6): Last reviewed commit: "Automate compile-guided package set upda..." | Re-trigger Greptile |
Sorry, something went wrong.
Adds a compile-guided planner for package set upgrades in a dedicated module. The planner probes root selections — packages already in the set plus proposed additions, each closed over the absent dependencies they require — with exact whole-set compiles, and repairs failures greedily: it attributes compiler errors to the exact selected versions, drops implicated roots, rescues over-dropped roots, falls back to intermediate versions, and probes coordinated interaction components together. The verified payload is always exactly the change set accepted by its most recent successful compile probe. Blocked upgrades are analyzed for compile-verified removal closures that Registry Trustees can review. The package set updater plans against the latest package set and submits the exact verified payload as one atomic operation, which the server recompiles before publishing. The version check script renders a Markdown report of pending upgrades: what is eligible for automatic submission and what requires manual intervention, with ready-to-submit payloads and compiler evidence. A manually-dispatched workflow generates the report and opens an issue. Amp-Thread-ID: https://ampcode.com/threads/T-019fc447-b7d9-7773-b47a-9b1dee18cb3b
| Back | FazBrowse Home | New Git URL |
Closes #426 by adding a .#version-check script to report registry versions newer than the versions in the latest package set. This reuses the package set updater candidate traversal instead of being brand-new.
I ran the script against package set 77.13.1 and found 19 pending versions. Not all of them can compile together, but 14 of them do, and that's submitted as purescript/registry#560.
Five versions were intentionally left out:
So this is the point of the script: surface upgrades that automatic daily updates could not accept so maintainers can identify and submit a compatible coordinated batch.