deps(deps): bump the minor-updates group across 1 directory with 3 updates - #316
Merged
Merged
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.OpenSSF Scorecard
Scanned Files
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…dates Bumps the minor-updates group with 3 updates in the / directory: [golang.org/x/crypto](https://github.com/golang/crypto), [golang.org/x/term](https://github.com/golang/term) and [golang.org/x/text](https://github.com/golang/text). Updates `golang.org/x/crypto` from 0.56.0 to 0.57.0 - [Commits](golang/crypto@v0.56.0...v0.57.0) Updates `golang.org/x/term` from 0.45.0 to 0.46.0 - [Commits](golang/term@v0.45.0...v0.46.0) Updates `golang.org/x/text` from 0.41.0 to 0.42.0 - [Release notes](https://github.com/golang/text/releases) - [Commits](golang/text@v0.41.0...v0.42.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.57.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-updates - dependency-name: golang.org/x/term dependency-version: 0.46.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-updates - dependency-name: golang.org/x/text dependency-version: 0.42.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-updates ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot
Bot
force-pushed
the
dependabot/go_modules/dev/minor-updates-e032730585
branch
from
September 21, 2026 02:07
fa32efb to
6e365b5
Compare
dependabot
Bot
deleted the
dependabot/go_modules/dev/minor-updates-e032730585
branch
September 21, 2026 13:02
tis24dev
added a commit
that referenced
this pull request
Sep 21, 2026
* test: pin the PVE-only host that a leftover PBS directory turns dual Removing proxmox-backup-server takes away everything the package ships: its binary, its share directory, its dpkg stanza. It does not take away /etc/proxmox-backup or /var/lib/proxmox-backup. Those are created at runtime, belong to no package (dpkg -S finds nothing for either, measured on PBS 3.4.9 and 4.2.0) and the server postrm leaves them alone even on purge. The detection ladder ends on a directory rung, so on a host in that state a directory that outlived its product is the only evidence of PBS, and the verdict is dual. The run then aborts on proxmox-backup-manager, a command the host does not have, and the abort discards the PVE payload that was already collected (issue #315). These tests state the verdict the host deserves and fail today. They cover the live shape, the same host under SYSTEM_ROOT_PREFIX, the second candidate directory alone (deleting /etc/proxmox-backup changed nothing because the ladder walks the whole list), and an empty version file. Two of them are non-regressions rather than new claims: a coinstalled host must stay dual (issue #197, the request that produced dual support) and an installed PBS under a prefix must still be found without running a command (issue #255). DetectionStep.Residual and EnvironmentInfo.PVEResidual/PBSResidual land here so the red is behavioural rather than a build failure. Nothing populates them yet. No release note: this commit changes nothing an operator can observe. * fix: a role needs the product installed, not the files it left behind Detection walked a ladder of markers and returned at the first one that fired, with every rung weighted the same. The last PBS rung is a directory, so on a host where proxmox-backup-server had been removed the verdict was dual: /etc/proxmox-backup and /var/lib/proxmox-backup are made at runtime, are owned by no package (dpkg -S finds nothing for either on PBS 3.4.9 or 4.2.0) and the server postrm leaves them alone even on purge. Everything the package ships had gone; what PBS itself created stayed, and that was what decided. The recipe then ran pbs_runtime_core, which treats proxmox-backup-manager as critical, and the whole collection aborted on a command the host never had. The PVE payload was already collected at that point and went out with the workspace, so the host had no backup at all (issue #315). A marker now either proves an install or it does not, and only the first kind ends a ladder. Proving an install means the command answering, a dpkg stanza, a binary the package ships, a package-owned share directory, or a version file with a version in it. The rest are residue: a directory no package owns, an empty version file, and an apt source, which was never evidence of an install and matches the pbs-client repository Proxmox tells you to add on hosts that are not PBS. Residue is recorded rather than dropped. It is the reason an operator expected the other verdict, so the rungs are still walked, the trace marks them as residue instead of a miss, EnvironmentInfo carries the first one per product, and a run reports it at warning: a debug-only line does not reach the person reading an unexpected type. When nothing at all is detected, the error now separates "residue but no install" from "no Proxmox here", because under SYSTEM_ROOT_PREFIX the first usually means the mount carries /etc but not the /usr and /var that hold the package evidence. TestDetectionProvenanceNamesDecidingMarker asserted the old verdict and now asserts this one. The "via sources" and "via directories" subtests did the same for each half of the ladder and are inverted with them. Verified on pve-test (PVE 9.1.9 with PBS 4.2.0 coinstalled), which still reports dual with both halves decided by their command and no residue. * fix: restore reads the host type from the same check the backup uses DetectCurrentSystem carried its own rule, and the rule had rotted. hasPBS was `/etc/proxmox-backup` OR `/usr/sbin/proxmox-backup-proxy`, and that second path does not exist on PBS 3.4.9 or on 4.2.0: the proxy is a systemd unit, not a binary on PATH. So the OR was never a choice between two proofs. Every PBS decision on the restore side rested on one directory, the same directory that turned a PVE-only host into a dual backup in issue #315, and it rested on it with no ladder behind it: no dpkg stanza, no version, no package-owned file. That mattered beyond the label. SupportsPBS() gates the staged PBS apply, the PBS access-control and notification paths, datastore directory recreation, the mount guard, and NeedsPBSServices, which asks systemd to stop proxmox-backup-proxy and proxmox-backup. The common `ssl` category lists ./etc/proxmox-backup/proxy.pem among its paths and shouldStopPBSServices reads the category definition rather than the archive, so selecting SSL on a host with leftovers was enough to send the restore stopping services that host does not have. It now delegates to environment.Detect, so a host cannot be one type while being collected and another while being restored onto. detectEnvironment is the seam for tests, mirroring compatFS. The three table cases built their verdict by creating directories on the fake filesystem, which is exactly the rule being removed; they now stub the verdict and assert the mapping, and the rule itself stays covered where it lives. Two cases are added for what this changes: a host whose only PBS evidence is residue restores as PVE, and a nil verdict fails closed to unknown rather than to PVE. * fix: the PBS validate brick stops concluding the host is PBS pbs_validate ran a bare Stat on the PBS configuration directory and logged "Detected %s, proceeding with PBS collection". That is a detection sentence, and the directory it stats is the one no package owns and no removal deletes, so on the host in issue #315 this was the third place in the codebase to conclude PBS from a leftover. It agreed with a type that was already wrong and let 25 more bricks run before the recipe hit the command that is not there. The type is settled before any recipe runs. Reaching this brick means PBS is installed, so a missing configuration directory is a genuine anomaly on a genuine PBS node rather than evidence about what the host is, and the error says that instead of "not a PBS system". No release note: the type is already correct by the time this runs, so the message only changes for an operator who is on a real PBS node with its configuration directory missing. * fix: a failed role no longer discards the other role and the system payload Two independent losses, both visible on the host in issue #315. CollectAll returned as soon as the role-specific collection failed, and the common system collection sits after that switch. So a run that lost its PBS half also lost the network, storage-stack and hardware snapshot, which have nothing to do with which hypervisor the host is. The role error is now held until the common payload has been collected, and then returned unchanged. The dual recipe was PVE bricks and PBS bricks concatenated into one fail-fast list. On that host 34 PVE bricks and 25 PBS bricks completed, the sixtieth aborted on a command the host does not have, and the workspace holding all of it was deleted: the node ended the night with no backup because of a role it does not run. The halves now run as separate recipes over the shared state, and one failing leaves the other standing. Both failing is still an error, because then there is no role payload to keep and an archive of system files labelled dual would be worse than none. A kept half is not a quiet half. The role that did not finish is reported twice at warning and written into the manifest as incomplete_targets with its reason. Warning rather than error is the exit code: an error marks the run a failed backup, and this run produced an archive worth keeping, while a warning still promotes it off clean so a monitor sees the night was not normal. newDualRecipe has no caller left and goes, along with its entry in the recipe well-formedness test; the two recipes it concatenated are already covered there. * fix: the marker table reports both dpkg probes, present or not The table is an inventory: every marker in it answers YES or NO. These two answered only when the package was installed, which is the one case that needs no explaining. On the host in issue #315 the table listed nine PBS markers, all of them NO, and silently omitted the tenth. The omitted one was the decisive evidence: that proxmox-backup-server is not installed at all. An absent line reads as a check that never ran rather than as a negative answer, so the table said least exactly where it mattered most, and the installed version goes on the line now too. * chore: drop the three detection helpers only tests called detectPVEViaSources, detectPBSViaSources and detectViaDirectories stopped being part of detection when the ladder inlined its rungs, and nothing in the package has called them since. Six tests kept calling them, so the package looked covered where production code no longer ran: two of those tests only asserted that the function does not panic. The cases worth keeping are pointed at the helpers detection actually uses, firstMatchingSource and firstExistingDir, so the same behaviour stays covered on the code path that runs. No release note: nothing an operator can observe. * fix: a version command that answers late no longer costs the run its version The command rung returned "installed, version unknown" when the probe failed, and that stopped the ladder one step above dpkg, which holds the real version. So a run reported a host with no version at all while the number sat in the next rung down. It is not a rare path. pveversion takes 4.4 to 5.2 seconds on pve-test and commandTimeout is 5, so it times out on nothing more unusual than a busy node. Before this, the probe on that host printed PVEVersion "" and a combined version of the PBS half alone; after it, pve=9.1.9,pbs=4.2.0. The probes now report three outcomes instead of two. markerInstalledNoVersion says the binary is on PATH, so the product IS installed, and this run did not produce a version: the ladder keeps walking for one, and falls back to "unknown" only if every later marker misses too. It is deliberately not markerResidual, which says the opposite about whether the product is there. Found while verifying the issue #315 fix on a real host, not part of that fix. It is its own commit so it can be judged, or reverted, on its own. * test: cover the residue warning, including the silence it has to keep warnDetectionResidue landed with the detection fix and had no test. The case worth pinning is the quiet one: detection returns at the first marker that proves an install and never reaches the residue rungs, so a healthy host of either kind records nothing and must print nothing. A line that fired on every run would be ignored by the time it mattered, which is the run where the type is not what the operator expected. Also pinned: one line per product that left something behind, and nil arguments, since this runs on the bootstrap path before the main logger exists. * fix: close the gaps an adversarial review found in the issue #315 work An 81-agent review of the eight commits raised 38 claims; 28 survived two skeptics each. This closes the ones that were about the code rather than about wording, plus the wording that was wrong. The one that mattered: incomplete_targets was recorded only in the collection manifest, and that manifest carries a comment saying restore never opens it. The record restore actually reads is the archive sidecar, so a dual archive that lost its PBS half still declared targets pve+pbs and cleared ValidateCompatibility against a dual host as a whole archive would, with the PBS categories offered and nothing behind them. The gap now travels in the sidecar, and DetectBackupType subtracts it: a run that lost a half ships an archive of the other half and is treated as one. Losing both halves reports unknown rather than claiming a product. Two defects in code this branch wrote: - CollectAll returned the bare context error when a cancelled run reached the system phase, dropping roleErr, so the log said "context canceled" where the phase that died had a name. Both are joined now. - The both-halves-failed error wrapped the PVE cause with %w and the PBS cause with %v, so the PBS cause was in the text but unreachable to errors.Is. Provenance: the versionless-command rung is a hit that keeps walking, and decidedBy returned the first hit, so PVESource named the probe that had failed while dpkg one rung down supplied the version. Steps that keep walking are marked Continued and skipped when naming the decider, falling back to the command when nothing else answered. The residue warning no longer declares the package absent. dpkgPackageInstalled returns false both when the stanza says not-installed and when the status file cannot be read, and under SYSTEM_ROOT_PREFIX the second is the usual case: a mount carrying /etc but not the /var holding the package database. It now reports what was observed, that nothing proved the product installed. Also: WriteManifest read c.incomplete without the lock every other access takes; a dual run that lost a half logged "collection completed"; the release note called a warning a "notice" while it demotes the run to exit 1; an orchestrator test started asking the build host what it is once DetectCurrentSystem began running real probes; TestIncompleteTargetTravelsInTheManifest asserted an in-memory field and never wrote a manifest; the PBS half of the versionless-command fix had no test; the rootPrefix safety comment still claimed both setters are bootstrap-only, which the restore delegation makes false; two comments named outcomes the code does not return; and the restore and collector docs still presented the deleted DetectCurrentSystem body and newDualRecipe as current. Three files this branch touched were not gofmt-clean. * fix: report detection residue at info, so leftovers stop costing a run its exit code A residue is recorded only when a product was NOT proved installed, and enumerating every mount shape with both products installed shows that leaves exactly two situations, never a third: - the verdict is pve, pbs or dual: the product is genuinely absent, the backup is complete and correct, and the leftovers are untidy filesystem rather than a fault. - the verdict is unknown: a real fault, and it already carries three warnings that decide the exit code between them - the detection error, which now names the residue itself, the host-backup mount warning, and the collector reporting that it is collecting generic system info only. There is no mount shape that yields a confident wrong type alongside a residue, and the reason is structural: /var/lib/dpkg/status is one file covering both products, so it either proves both or neither. The asymmetry that would make a residue the only hint of a missed half cannot arise. So warning level bought nothing and cost plenty. It pinned an otherwise healthy host at exit 1 on every run over leftovers its operator often cannot delete, since /var/lib/proxmox-backup belongs to the PVE file-restore stack: a nightly monitor gating on the exit code would alarm forever on a node whose backups are fine. The host in issue #315 is exactly that host. The test now pins the LEVEL rather than the line count, through ReplayConsoleSince, which replays warning and worse only: putting Warning back makes it fail. Verified by doing precisely that before committing. The release note no longer promises the exit 1 it was describing, and warnDetectionResidue is renamed reportDetectionResidue because it no longer warns. * deps(deps): bump the minor-updates group across 1 directory with 3 updates (#316) Bumps the minor-updates group with 3 updates in the / directory: [golang.org/x/crypto](https://github.com/golang/crypto), [golang.org/x/term](https://github.com/golang/term) and [golang.org/x/text](https://github.com/golang/text). Updates `golang.org/x/crypto` from 0.56.0 to 0.57.0 - [Commits](golang/crypto@v0.56.0...v0.57.0) Updates `golang.org/x/term` from 0.45.0 to 0.46.0 - [Commits](golang/term@v0.45.0...v0.46.0) Updates `golang.org/x/text` from 0.41.0 to 0.42.0 - [Release notes](https://github.com/golang/text/releases) - [Commits](golang/text@v0.41.0...v0.42.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.57.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-updates - dependency-name: golang.org/x/term dependency-version: 0.46.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-updates - dependency-name: golang.org/x/text dependency-version: 0.42.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-updates ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ci: bump the actions-updates group across 1 directory with 4 updates (#321) Bumps the actions-updates group with 4 updates in the / directory: [codecov/codecov-action](https://github.com/codecov/codecov-action), [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `codecov/codecov-action` from 7.0.0 to 7.1.1 - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](codecov/codecov-action@fb8b358...303a32d) Updates `github/codeql-action/init` from 4.37.9 to 4.38.1 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@cdf488f...1c5b675) Updates `github/codeql-action/analyze` from 4.37.9 to 4.38.1 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@cdf488f...1c5b675) Updates `github/codeql-action/upload-sarif` from 4.37.9 to 4.38.1 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@cdf488f...1c5b675) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-version: 7.1.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions-updates - dependency-name: github/codeql-action/init dependency-version: 4.38.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions-updates - dependency-name: github/codeql-action/analyze dependency-version: 4.38.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions-updates - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.38.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions-updates ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: an unreadable dpkg status stops counting as proof a package is absent dpkgPackageInstalled answers false for two different facts - the package is absent, or the status file could not be read at all - and the marker table printed "not installed" for both. On a SYSTEM_ROOT_PREFIX mount that carries no /var/lib/dpkg/status, that line stated as checked something the run had never been able to check, and the marker table is the whole explanation an operator gets for a detection verdict. markerLines now reads the status file once and separates the two: a read error prints "not proven installed (<error>)", naming the path the read failed on, and "not installed" keeps meaning exactly that. dpkgPackageInstalled is left alone - it has three callers and two of them are the detection ladder, which is not what this fixes. Also realigns the DetectBackupType sample in RESTORE_TECHNICAL.md with the function it documents. The prose above it already described subtracting incomplete roles; the code block still showed the body from before that change, in a file that declares itself the source of truth for restore compatibility. Both found by reviewers on the v0.39.0 release PR (#322). * fix: the dpkg verdict comes from the read that was checked, not from a later one The previous commit read the status file once to tell "absent" from "could not read", then called dpkgPackageInstalled per package - which reads the file again. Three reads, and the verdict printed came from a different read than the one the check was based on. A status file that stopped being readable after the check would have been reported as a package simply not installed: exactly the claim the check exists to stop making. markerLines now reads once and classifies both packages against that data. dpkgPackageInstalled keeps its signature, so detectPVE and detectPBS - the other two callers, and the detection ladder itself - are untouched; its parse half moves into dpkgPackageInstalledIn, which is what markerLines calls. TestMarkerTableClassifiesBothPackagesFromOneDpkgRead serves the status file once and refuses every later read of it. Against the previous commit it fails with "status exists: YES" directly above "dpkg pve-manager: not installed", on a host where pve-manager is installed. Also completes the DetectBackupType sample in RESTORE_TECHNICAL.md: the comment said hostname heuristics and the body returned SystemTypeUnknown without them, while the real function does check the hostname. Both found by CodeRabbit on the v0.39.0 release PR (#322). --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.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.
Bumps the minor-updates group with 3 updates in the / directory: golang.org/x/crypto, golang.org/x/term and golang.org/x/text.
Updates
golang.org/x/cryptofrom 0.56.0 to 0.57.0Commits
3f62bf1go.mod: update golang.org/x dependenciesUpdates
golang.org/x/termfrom 0.45.0 to 0.46.0Commits
6226200go.mod: update golang.org/x dependencies7c2fb74term: process bytes returned with a read error3963fceall: upgrade go directive to at least 1.26.0 [generated]Updates
golang.org/x/textfrom 0.41.0 to 0.42.0Commits
fafe4a0go.mod: update golang.org/x dependenciesf53c316unicode/norm: don't truncate runes in the recomposition map key37867f6unicode/norm: let any starter block composition in compose0dd525funicode/norm: compose non-Hangul runes after a Hangul syllablebac26e5unicode/norm: avoid improper ErrShortDst return in Form.transform4f55186unicode/norm: simplify short source detection in Form.transforma1b6c10unicode/norm: prevent decomposeSegment from moving backwardscd1cbc9unicode/bidi: panic rather than log.Panicfa459614internal/export/idna: fix conformance with optional validation disabledbe70a61internal/export/idna: drop trie field from Profiles