Commit Graph

1570 Commits

Author SHA1 Message Date
pulse-triage[bot] 9d3b31a7b9 fix(release): bind forward 6.4.4 checkpoint to release train
The held regression candidate needs an honest forward beta above published 6.4.3-rc.1. Bind only 6.4.4 to release/v6.4 without capturing patch 40 or weakening candidate checks. Exercise the actual release and rehearsal branch-policy shell and retain historical rollback mapping.

Change-source: pulse-maintainer
(cherry picked from commit 64dba483d0)
2026-09-06 17:55:49 +01:00
pulse-triage[bot] 645302da7e fix(alerts): backport delivery diagnosis response ordering
Backport runtime and regression tests from 495562ef66. Reproduced both failures on exact release-line parent 101bae339; patched 38 focused tests, TypeScript and three-width Chromium pass. Retain local qualification and exact runtime browser receipt. No recipient receipt or release HOLD clearance claimed.

Change-source: pulse-maintainer
2026-09-06 17:42:51 +01:00
pulse-triage[bot] 101bae3396 fix(alerts): backport truthful dispatch status with qualification
Backport reviewed 9ddee2f8f9 presentation, tests, matching contracts and browser fixture. Correct candidate misleading receipt claim introduced by 32e620a6c3; no delivery behaviour or new surface. Fresh release-line Chromium qualification at 1440/900/390 replaces historical receipt.

Validation: 29 focused tests, TypeScript and serialised frontend build pass; old presentation fails three assertions. Fresh browser assertions and visual phone inspection pass.
Change-source: pulse-maintainer
2026-09-06 16:56:17 +01:00
pulse-triage[bot] ec7b6c8d23 fix(ci): bind benchmark samples to executed binary hashes
Record executable SHA-256 before measured Go test invocations without logging paths or arguments. Preserve sample ordering and failure status; document instrumentation limits rather than dismissing historical regressions.

Change-source: pulse-maintainer
(cherry picked from commit 7475fbf5f4)
2026-09-06 14:31:11 +01:00
pulse-triage[bot] 425c98d6db ci: retain exact benchmark collection provenance
PR #1933 failed paired normalization benchmarks despite unchanged hot-path source. Preserve actual checkout identities, selected toolchains and sample order so investigation does not confuse PR head metadata with measured source. Keep thresholds and sample collection unchanged.

Change-source: pulse-maintainer
(cherry picked from commit cbfe0d8eac)
2026-09-06 14:31:11 +01:00
pulse-triage[bot] 49f1f2cddf fix(alerts): backport overview unavailable-health refresh
Backport production correction from d04f368f6f. Candidate regression introduced by 4d2b312457 after v6.4.1. Two baseline recovery cases fail; 32 focused final tests and four synthetic Chromium cases pass. Existing delivery-log ordering defect remains main-only, not established as a candidate regression.

Change-source: pulse-maintainer
2026-09-06 13:27:33 +01:00
pulse-triage[bot] a6a856107e fix(assistant): backport invocation and evidence identity repair
Release v6.4 reproduces lost concurrent invocation IDs and duplicate approval cards. Backport the four runtime/test files from reviewed main fix 33b852f66b and portable synthetic browser fixture 2d36bb7d4d, without private replay attestations or unrelated main state.

All 167 affected units and three browser widths pass; independent release-parent runtime substitutions fail. Record fresh scoped browser evidence and contract obligations; this does not qualify providers or release promotion.

Change-source: pulse-maintainer
2026-09-06 12:47:02 +01:00
pulse-triage[bot] 1820288351 Pair benchmark evidence on one runner
The benchmark gate compared five-sample PR results with a cache produced on
another hosted VM. Two unrelated changes failed today while the same main code
passed, and benchstat reports infinite 95% confidence intervals for that sample
size.

Collect ten base and candidate samples on the PR runner in alternating order,
retain both inputs and the comparison, and reject under-sampled verdicts. Keep
non-PR benchmark evidence without the cross-run baseline cache.

Contract-Neutral: CI performance evidence collection only; no product or release contract changes
Change-source: pulse-maintainer
(cherry picked from commit 9720f6726b)
2026-09-06 01:41:01 +01:00
pulse-triage[bot] 70a7c127af fix(alerts): backport latest delivery-health request ownership
Backport 9d1b726 onto release/v6.4 parent 89c8e614 with before-failing and after-passing hook and Chromium controls. CI train admission is already merged; retain its independent contract evidence without duplicating changes.

Change-source: pulse-maintainer
2026-09-06 01:31:42 +01:00
pulse-triage[bot] 3f3d7d6df3 fix(release): run checks on versioned trains
Release-line proposals were receiving documentation and boundary checks while Build and Test and Core E2E excluded release/v* targets. Apply the reviewed branch-admission contract to the active train before publishing further alert regression coverage, without changing existing path or job gates.

Change-source: pulse-maintainer
2026-09-06 01:17:26 +01:00
pulse-triage[bot] 657211f056 Fix portable root ownership for installer lifecycle state
Issue #1890 reports macOS agent updates stopping because the root group does not exist. Use numeric superuser ownership in the two shared lifecycle writes without relaxing failure handling or the least-privilege group boundary. Add a regression fixture that rejects named root ownership and checks that chown failures still prevent replacement.

Change-source: pulse-maintainer
(cherry picked from commit 19c2b6a925)
2026-09-04 22:46:06 +01:00
pulse-triage[bot] 9f3beb1718 Raise Go crypto security floor
Exclude the SSH connection deadlock advisories published against x/crypto versions before v0.56.0.

Contract-Neutral: dependency-only security floor update; no runtime contract changed
Change-source: pulse-maintainer
2026-09-04 10:01:55 +01:00
rcourtman 56e51e622e Merge pull request #1825 from rcourtman/topic/release-train
Adopt the release train: promote the soaked candidate, not the branch tip
2026-09-02 02:08:32 +01:00
rcourtman df7ad9be43 Adopt the release train: promote the soaked candidate, not the branch tip
Stable promotions built whatever the dispatch branch was at that second.
The resolver checked that HEAD descends from the promoted release
candidate but never that its content matches, so v6.4.0 shipped 64
changed files, including product code, that v6.4.0-rc.12 had not
soaked. Every v6 version was mapped to main, which now moves every few
minutes under the autonomous maintainer, so each fix to a candidate
brought everything landed since and stable was never an exact soaked
commit. Five of six stable minor releases shipped under version-bound
owner exceptions that waived the soak.

From v6.5.0 the release train applies (RELEASE_PROMOTION_POLICY.md,
"Release Train"): a two-week train sized to measured velocity, a
release/v6.N branch per train declared in the control plane so the
workflow refuses a dispatch from anywhere else, a stable promotion that
may differ from its candidate only in release metadata unless
hotfix_exception names active customer harm, and a seven day soak for
minor releases. The 6.4.x line stays on main so the v6.4.3-rc.1
candidate already prepared there is unaffected. The gap is registered
as coverage gap release-train-exact-candidate-promotion.
2026-09-02 01:17:38 +01:00
rcourtman 14a7d0bdaf Merge action-runner replay and Windows portability fixes 2026-09-02 00:16:26 +01:00
rcourtman 73b3d8eff3 Complete rootful artifact source closure 2026-09-02 00:07:39 +01:00
rcourtman 500cc1bf17 Harden rootful qualification evidence boundary 2026-09-01 23:53:36 +01:00
rcourtman b763b80680 Build the FIFO lifecycle installer test only on unix
agent_state_dir_lifecycle_test.go calls syscall.Mkfifo, which does not
exist on Windows, so scripts/installtests has failed to compile in the
Windows leg of Unified Agent Native Verification since 53267e149d and the
install.ps1 contract tests there have not run. Every test in the file
drives install.sh through bash and systemd, so tag the file unix-only,
matching the other lifecycle lab files. GOOS=windows go vet now passes.
2026-09-01 23:05:22 +01:00
rcourtman 584cef81a1 Add rootful runtime qualification packet 2026-09-01 22:40:50 +01:00
rcourtman 813c2b6837 Match CI temp layout in the preflight worker and isolate agent helper tests
go test places t.TempDir under GOTMPDIR, and the preflight worker nested that
under its per-run directory, so unix socket fixtures in cmd/pulse-agent-helper,
internal/agenthelper, and internal/dockeragent exceeded the 108-byte sun_path
limit and failed with "bind: invalid argument". GitHub runners leave GOTMPDIR
unset, and the longest rootless Podman fixture sits exactly at the limit under
/tmp, so the worker now leaves GOTMPDIR unset by default and only honours an
explicit PULSE_RELEASE_PREFLIGHT_GO_TMP_DIR override.

Two cmd/pulse-agent helper tests ran without a state directory, so the agent
consulted the platform default /var/lib/pulse-agent. On a host where that
path exists as a private directory the pending-update handoff lookup fails
with permission denied. Give those tests an isolated state directory.
2026-09-01 22:35:55 +01:00
pulse-triage[bot] 5fb7177b8a Require compiler dispatch run details
Change-source: pulse-maintainer
2026-09-01 22:26:46 +01:00
rcourtman 96a4dceb9d Pin umask 022 in installtests so trust fixtures are host-independent
install.sh refuses connection state, token, and lifecycle files whose
parent directory is group- or world-writable. The fixtures build those
parents with t.TempDir, which inherits the process umask, so on a worker
with umask 002 the state directory came out 775 and seven TestInstallSH
cases failed on the pulse-dev release preflight while passing on GitHub
runners and macOS. Set umask 022 for the package on unix so the tests
prove the installer contract rather than the host's umask.
2026-09-01 22:20:15 +01:00
pulse-triage[bot] 5b204cdc75 Close mirrored workflow scalar syntax gaps
Recognize bare sequence entries and every valid block scalar header across executable action inputs, run scripts, and step environment boundaries.

Change-source: pulse-maintainer
2026-09-01 22:13:37 +01:00
pulse-triage[bot] 544b7fd575 Merge batch-start origin/main
Change-source: pulse-maintainer
2026-09-01 21:51:21 +01:00
pulse-triage[bot] f581f955e2 Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer
2026-09-01 21:40:47 +01:00
rcourtman 152ef86d33 Activate mise shims in the release preflight worker
The exact-SHA preflight streams the worker script over a non-login ssh
shell, so /etc/profile.d/mise.sh is never sourced and a stale system Node
binary on the worker shadows the infra-managed mise toolchain. pulse-dev
carried a manually installed Node 20 symlink in /usr/local/bin, so the
worker failed its Node 24 check while a login shell resolved 24.19.0.
Activate mise shims when mise is installed so the worker uses the same
toolchain the bootstrap provisions, regardless of how it is invoked.
2026-09-01 21:40:05 +01:00
rcourtman 62bfdbca7e Prepare v6.4.3-rc.1 release
Open the v6.4.3 candidate line from main. The v6.4.2 tag was staged on
2026-08-31 but never activated: its release run was cancelled after the
private Pro build failed the compiler memory gate, so the latest published
stable is still v6.4.1. This candidate carries the complete v6.4.2 change
set plus the corrections landed since that tag, including the stale PBS
Backup Running state (#1815), the Windows Unified Agent auto-update 404
(#1820), and shared-token same-hostname agent identity collapse (#1753).

Packet: VERSION, compose and install-docker defaults, Helm chart metadata,
release notes with a declined visual plan, changelog, pointer docs and
the shipped docs mirror, and the deployment-installability cutoff note.
Rollback target is v6.4.1 and the mobile decision is no-mobile-impact.

Tests: the packet tests now describe the 6.4.3 train, v6.4.2 is recorded
as an unpublished stable so it is never derived as the previous stable or
rollback target, and the Python v6.4.2 notes expectation matches the
phrase the notes actually use.
2026-09-01 21:37:41 +01:00
pulse-triage[bot] 22cc59cc2c Reject template injection in executable action inputs
Change-source: pulse-maintainer
2026-09-01 21:35:35 +01:00
pulse-triage[bot] 73bd27a0f5 Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer
2026-09-01 21:30:09 +01:00
rcourtman 60041ad9e6 Validate each rootless socket identity 2026-09-01 21:26:49 +01:00
pulse-triage[bot] a869475bf1 Reject flow-nested YAML trust aliases
Change-source: pulse-maintainer
2026-09-01 21:21:45 +01:00
pulse-triage[bot] 8cd5c2cae5 Reject hidden workflow trust structure
Change-source: pulse-maintainer
2026-09-01 21:18:26 +01:00
rcourtman bc3dd3b704 Give rootless qualification hosts unique identities 2026-09-01 21:18:24 +01:00
pulse-triage[bot] 4fda8f146e Merge batch-start origin/main
Change-source: pulse-maintainer
2026-09-01 20:58:31 +01:00
rcourtman f364cfc73b Reset Podman qualification storage on teardown 2026-09-01 20:49:43 +01:00
pulse-triage[bot] 6af9fd6105 Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer
2026-09-01 20:34:02 +01:00
rcourtman fec53eb39e Wait for rootless runtime mounts to release 2026-09-01 20:26:46 +01:00
pulse-triage[bot] 028ccbd35f Keep OIDC attestations on hosted runners
Change-source: pulse-maintainer
2026-09-01 20:17:13 +01:00
rcourtman 089ce2379d Clean runtime fixtures before qualification teardown 2026-09-01 20:13:15 +01:00
pulse-triage[bot] de6779de81 Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer
2026-09-01 20:06:09 +01:00
rcourtman 19f264701e Wait for stable rootless recovery evidence 2026-09-01 20:01:15 +01:00
pulse-triage[bot] 906b3dafee Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer
2026-09-01 19:57:14 +01:00
rcourtman 861f0f07bc Persist rootless qualification receipts 2026-09-01 19:47:15 +01:00
pulse-triage[bot] c10e93943b Parse workflow job trust boundaries structurally
Change-source: pulse-maintainer
2026-09-01 19:46:57 +01:00
pulse-triage[bot] bc301daf5a Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer
2026-09-01 19:46:57 +01:00
rcourtman e89eaac9d4 Require VCS metadata in rootless packet builds 2026-09-01 19:37:23 +01:00
pulse-triage[bot] 264ad97302 Merge remote-tracking branch 'origin/main'
Change-source: pulse-maintainer
2026-09-01 19:36:12 +01:00
pulse-triage[bot] 5c26a8f6d1 Close privileged workflow cache audit bypasses
Change-source: pulse-maintainer
2026-09-01 19:31:06 +01:00
pulse-triage[bot] f61815839f Keep unsigned caches out of privileged workflows
Change-source: pulse-maintainer
2026-09-01 19:29:37 +01:00
rcourtman 67dce69e73 Remove safe profile state on uninstall 2026-09-01 19:28:01 +01:00