Commit Graph

543 Commits

Author SHA1 Message Date
pulse-triage[bot] f43a7a3e62 fix(release): verify the private Pro source pair before creating a draft
A 6.x release creates its draft release object before stage_private_pro_runtime dispatches the private Pro build, which resolves the payload by the exact frozen public commit (docs/release-source-pairs/<sha>.json). When that declaration is absent or names a different pulse_sha, the private build refuses and the run leaves an orphaned draft (v6.4.5-beta.2, v6.4.5-beta.3). Verify the declaration in prepare, before any draft exists, and fail with the exact path to create. This is an unconditional fact check independent of the opt-in harness gate in pulse-dev-infra #443/#444; the release steward still owns choosing the pair. Source issue: pulse-dev-infra #441.

Change-source: pulse-maintainer
2026-09-20 14:24:41 +01:00
pulse-triage[bot] be6179c2d2 build(ci): refresh reviewed GitHub Actions pins
Dependabot #2094, #2095 and #2096 bump actions/setup-go 6.4.0 -> 7.0.0, signpath/github-action-submit-signing-request 2 -> 3.0 and actions/github-script 8.0.0 -> 9.0.0. Each proposal is blocked only by the reviewed pin constants, the workflow-trust allowlist, the release-consumer action manifest and the installer governance assertions that hard-code the previous revisions. Carry all three bumps with those artifacts in one commit so the proposals can be closed as superseded.

All three actions keep the node24 runtime and their existing inputs and outputs; no consumer interface, installer behaviour or public contract changes. The deployment-installability and agent-lifecycle workflow references are pin-only.

Contract-Neutral: Reviewed action pin refresh with identical node24 consumer interfaces and unchanged inputs/outputs; no public-contract or installer-behaviour delta.
Change-source: pulse-maintainer
2026-09-20 08:16:44 +01:00
pulse-triage[bot] fbfa870b95 build(deps): pin Playwright to the offline browser runtime line
The npm-minor-patch group (Dependabot #2115) has been held since 17 Sep
because it bundles @playwright/test, playwright and playwright-core
1.56.1 -> 1.63.0 with 12 safe frontend updates. The offline
browser-verification runtime is pinned to Playwright 1.56.1, so a lockfile
bump breaks browser-proof parity; holding the whole group blocked the safe
updates instead.

Ignore Playwright version updates on the governed 1.56.1 line, matching the
docker governed-tag policy, so the remaining grouped updates can be reviewed
on their own. Security updates stay covered by the weekly npm-audit scan and
the frontend dependencySecurity proof. Extend the dependabot config guard to
lock the policy in.

Change-source: pulse-maintainer
2026-09-20 03:23:38 +01:00
rcourtman 092e988239 Cancel superseded pull request validation
Replacement PR checks were queued behind obsolete runs even after the
previous revision failed. Cancel prior validation only for pull_request
events, preserving completed verdicts for branch pushes and manual runs.

Contract-Neutral: Only PR concurrency changes. Semantic YAML comparison confirms all jobs and triggers, including frontend dependency security checks, are unchanged. No security verification change is warranted. The scheduling contract is updated.
2026-09-14 23:07:22 +01:00
pulse-triage[bot] ae38b93c0c fix(release): stop public writer chain on workflow cancellation
Preserve successful qualification and optional skipped ancestors while rejecting workflow cancellation independently of completed needs. Cover tag, Docker, Helm, readiness, convergence dispatch and activation; retain evidence and cleanup joins.

Change-source: pulse-maintainer
2026-09-13 14:21:55 +01:00
pulse-triage[bot] f9569426f5 fix(release): publish qualified tags after optional skipped checks
Use an explicit status guard while requiring successful preparation and qualification. Model the beta skipped-ancestor path and adverse direct prerequisites; retain immutable identity and all release gates.

Change-source: pulse-maintainer
2026-09-13 13:03:02 +01:00
rcourtman c7c503994b Merge pull request #2063 from rcourtman/fix/disposable-release-qualification
Isolate release preparation and qualification on hosted VMs
2026-09-12 18:33:17 +01:00
rcourtman 051ce81a72 Isolate release preparation and qualification on hosted VMs
Persistent prerelease runners can retain state from earlier source execution
and influence later admission, build output or qualification. Use the
existing hosted stable-release path for every channel while preserving
exact-source checks, resource planning, watchdogs and release gates.
2026-09-12 15:44:11 +01:00
pulse-triage[bot] 34ba9a5ed9 Merge candidate 20260911T204017Z-core-runtime
Change-source: pulse-maintainer
2026-09-11 21:47:11 +01:00
pulse-triage[bot] 097422837b fix(release): preserve quarantined version identity
Reject historical draft reuse before PATCH when its retained target is not the exact checkout SHA, including missing targets and moving refs. Preserve same-source recovery and activation guards.

Depends on PR2056 qualification-first workflow and immutable tag checks. Executable absent-tag fixtures fail before repair and pass on PR head 9e5e18f0 plus this patch; 53 policy, 6 immutability and 42 trust tests pass. Update the deployment contract in the same commit.

Change-source: pulse-maintainer
2026-09-11 21:43:11 +01:00
rcourtman 9e5e18f008 fix(release): qualify candidates before public version writes
A draft GitHub release does not hide its public Git tag or registry
images. Publishing those before qualification consumed a beta identity
when the candidate later failed.

Stage drafts without Git refs, join exact-source checks before public
tag, Docker and Helm publication, and preserve exposed tag identities.
Keep final digest verification before release activation.
2026-09-11 21:04:46 +01:00
pulse-triage[bot] 9902c204d0 ci: collect fixed hosted root-route pair evidence
The completed local study did not explain the adverse hosted root comparison. Add an exact-source root-only collector with matched builds, ten alternating samples and retained layout and host evidence, rather than repeat full qualification or relax its threshold. Eight focused mocked collector tests pass; hosted execution remains after independent review and protected landing.

Change-source: pulse-maintainer
2026-09-10 19:03:01 +01:00
pulse-triage[bot] ad1cfd33c3 fix(ci): qualify grouped release action pin consumers
The grouped action upgrade leaves signing, network and publication consumer assertions on superseded pins. Align those contracts and check every consumer against reviewed immutable upstream manifests, retaining exact dispatch and release trust boundaries without claiming hosted execution.

Change-source: pulse-maintainer
2026-09-10 00:35:47 +01:00
pulse-triage[bot] 9a6a5811a7 ci: qualify setup-node v7 consumer contracts
The standalone setup-node proposal lacked lifecycle and deployment evidence. Preserve Node 24, explicit cache controls and native Windows proof steps while upgrading the immutable action revision; add consumer regression coverage for the removed dummy auth-token assumption. Keep grouped signing and deployment action upgrades separate.

Change-source: pulse-maintainer
2026-09-09 19:29:17 +01:00
pulse-triage[bot] 13e16bfc83 test(e2e): provision offline signed organization entitlements
Keep a loopback ephemeral issuer alive for source-built managed browser runs and activate each organisation through the authenticated API. Verify installation bindings without billing-state injection or signature bypass, and retain a narrow CI provisioning proof separately from quarantine acceptance.

Change-source: pulse-maintainer
2026-09-09 11:27:23 +01:00
rcourtman 2df6ebd210 ci: avoid duplicate E2E artifact uploads
Playwright HTML reports already include screenshots, videos and traces.
Upload only the separate JUnit XML alongside each report to retain
machine-readable results without storing failure attachments twice.
2026-09-09 09:22:27 +01:00
pulse-triage[bot] 05d8ae9227 fix(triage): preserve concurrent community label changes
Apply classification label deltas instead of replacing the stale issue-event label set. This keeps Community retest and unrelated labels untouched while retaining metadata cleanup; regressions cover newer additions, removals and API failures.

Change-source: pulse-maintainer
2026-09-08 12:00:46 +01:00
pulse-triage[bot] 590b80cfe7 fix(triage): retire version-only retest posting and timeout closure
An older reported version does not establish a relevant released fix, and silence after generic advice does not justify closing an unresolved report. Retire both scheduled paths and retain no-write compatibility entry points. Preserve metadata classification while leaving retest state to Community's evidence-backed whole-thread review. Focused regression tests cover both entry points, label ownership and workflow retirement.

Change-source: pulse-maintainer
2026-09-08 11:32:57 +01:00
pulse-triage[bot] 5e0bf3ff34 docs(delivery): align stable recovery with standing authority
Replace the retired per-release founder approval instruction with steward admission. Preserve qualification, soak, review, verification and operator revocation.

Change-source: pulse-maintainer
2026-09-08 10:41:27 +01:00
pulse-triage[bot] ded338657d fix(ci): select governed source for scheduled release rehearsals
The default-branch schedule rejected main before any product checks. Resolve the governed branch to one commit, check its VERSION against policy and retain exact event-source checks for manual dispatches. Report workflow and tested source separately and exercise selection against local Git fixtures in governance CI.

Change-source: pulse-maintainer
2026-09-08 08:30:38 +01:00
pulse-triage[bot] d9f2637ee2 Merge current upstream source main into reviewed maintenance
Incorporate the protected release-snapshot workflow landing while preserving every reviewed maintenance commit and the additive governance correction in local history.

Change-source: pulse-maintainer

# Conflicts:
#	docs/release-control/v6/internal/subsystems/deployment-installability.md
2026-09-07 21:02:31 +01:00
pulse-triage[bot] 092405e33c fix(governance): validate reviewed split completions exactly
A reviewed notification correction and its required contracts and API proof were accepted as separate immutable commits, leaving the protected per-commit governance check unable to pass without rewriting reviewed history. Add a fail-closed exact-pair validator that reconstructs the completion commit in a detached worktree and runs the normal guard over the combined file set; all unregistered commits continue through the unchanged per-commit path.

Change-source: pulse-maintainer
2026-09-07 20:13:34 +01:00
rcourtman ab562c82aa Encode the release source branch through the shared output helper
The branch is validated by the snapshot guard, but its transfer between
workflow steps must also use the canonical GitHub command-file encoder.
Keep the source binding unchanged and satisfy the workflow trust audit.

Validation: all 41 workflow trust tests and five snapshot tests pass.
Contract-Neutral: Encode the already-validated release branch with the shared GitHub command-file helper without changing source identity or release authority
2026-09-07 19:38:48 +01:00
rcourtman b64709e7b7 Publish reviewed release snapshots independently of branch tips
Continuous development must not change the source of an admitted release.
Allow the workflow to run at the qualified preparation PR head after its
normal merge, verifying exact source and workflow identity, canonical PR
provenance, and ancestry in the governed release line. Later branch commits
remain outside that release. Document the immutable-candidate contract and
verify source workflow compatibility before qualification.

Validation: snapshot identity and workflow contract tests passed, including
wrong-head, wrong-base, fork, unmerged and unbound dispatch rejection. The
existing release workflow promotion policy test also passed.
2026-09-07 19:30:27 +01:00
pulse-triage[bot] 92c3297049 ci: add fixed UUID layout diagnostic without release gate waiver
The exact release tree retains a failed paired UUID benchmark check, while push CI cannot repeat that comparison. Provide a reviewed-source route to collect the requested four-condition hosted layout evidence instead of repeating local samples or changing product order.

Fix source/tree/toolchain identities, isolate diagnostic controls, alternate ten rounds, and retain partial receipts without publishing binaries. Execution still needs separate operator authority; collection success does not dispose of the failed gate. Nine focused harness tests and existing benchmark contract tests pass.

Change-source: pulse-maintainer
2026-09-06 22:11:03 +01:00
pulse-triage[bot] cbfe0d8eac 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
2026-09-06 11:12:42 +01:00
rcourtman 618700db5e test(patrol): qualify bounded service storage failures
Add a disposable service-storage fault with an independent filesystem
oracle, bounded tmpfs writes, identity checks and verified recovery.
Exercise overwrite and symlink refusal without contacting a model.

Align the published schema with supported summary-term groups and validate
the complete catalogue in CI. Record the exact proof and remaining model
and missing-access qualification limits in the customer-journey plan.
2026-09-06 06:04:56 +01:00
pulse-triage[bot] 3413b37940 fix(ci): include release trains in build and E2E triggers
PR #1921 targets release/v6.4 but receives only docs and boundary checks because build and E2E triggers still name the historical release branch. Include versioned release trains for push and pull request events without changing job gates or path filters. A focused regression fails all four event/workflow combinations before repair and passes after it.

Change-source: pulse-maintainer
2026-09-06 00:58:57 +01:00
pulse-triage[bot] b5784df4b7 fix(delivery): verify public Helm package against qualified bytes
Readable chart metadata does not prove that the public index serves the OCI-qualified package. Pull through the consumer repository and compare exact bytes before reporting convergence, with offline regression coverage for mismatched, missing and unavailable downloads. Activation and publication authority remain unchanged.

Change-source: pulse-maintainer
2026-09-05 22:24:18 +01:00
pulse-triage[bot] 2de83c0e27 Merge Helm publication version binding
Change-source: pulse-maintainer
2026-09-05 21:25:59 +01:00
pulse-triage[bot] 12a3b87529 fix(governance): recognize proven frontend-only reformats
The open publication proposal exposed an earlier additive formatting correction that lacked a Contract-Neutral trailer and therefore could not pass per-commit governance without rewriting reviewed history. Infer neutrality only for immutable commits whose every governed runtime path is byte-for-byte the locked Prettier output of its parent; mixed, unreadable, added, deleted, or non-frontend changes continue to fail closed.

Change-source: pulse-maintainer
2026-09-05 21:21:04 +01:00
pulse-triage[bot] 96bc6f084f fix(release): bind Helm application version to chart release
Reject mismatched image defaults before packaging; preserve equal and default versions. Reproduced four accepted mismatches before the fix. All 58 focused tests pass; no publication performed.

Change-source: pulse-maintainer
2026-09-05 21:13:23 +01:00
pulse-triage[bot] 7c373a5162 fix(release): reject draft Helm chart publication retries
Reproduce draft and unknown publication states reaching the Pages index boundary. Require an explicitly non-draft existing release before uploading, editing or advertising its chart, without implicitly publishing operator drafts.

Exercise the actual publication shell with a fake GitHub CLI and wire its seven retry tests into canonical governance. Existing digest and maturity behaviour remains covered.

Change-source: pulse-maintainer
2026-09-05 20:55:01 +01:00
pulse-triage[bot] ef6e784c2e docs(release): clarify combined continuity incident recovery
Fresh stable readback still shows mutable v6.4.1 alongside orphan v6.4.2. Explain forward supersession without deleting historical tags or treating frontier success as release admission. Cover that distinction with a focused recovery regression; publication authority and all existing gates remain unchanged.

Change-source: pulse-maintainer
2026-09-05 20:12:48 +01:00
pulse-triage[bot] ed41610c41 fix(triage): keep upgrade source versions out of structured reports
Issue #1913 reports an incomplete v6 running version but names its old v5 image in the upgrade title. Falling back to that title incorrectly starts old-version retest handling. Treat the structured version field as authoritative and stop at the next heading, requesting exact version information when incomplete. Cover the parser and mocked label/comment flows without changing public issue state.

Change-source: pulse-maintainer
2026-09-05 20:01:58 +01:00
pulse-triage[bot] 6998908d2a fix(release): limit asset validation readiness claims
Downstream release-note syndication repeats the asset check banner even when installed health or release convergence is not qualified. Report asset checks only and state the remaining evidence boundaries for both draft and post-publication banners.

Change-source: pulse-maintainer
2026-09-05 17:30:49 +01:00
pulse-triage[bot] c9574f528f docs: clarify recovery from mutable advertised stable
Distinguish future-publication immutability settings from historical release integrity. Keep replacement qualification, exact-packet approval and runtime recovery evidence separate rather than weakening continuity checks.

Change-source: pulse-maintainer
2026-09-05 14:47:16 +01:00
rcourtman 5f3b73955a Leave release cadence to maintainer judgment
Withdraw the imposed minor-release calendar following clarified founder
intent. Preserve exact-candidate and clean-soak requirements while leaving
scope, version, maturity and timing to evidence-informed judgment.

Keep required backend matrix check names present on documentation-only
changes so policy updates can land without weakening branch protection.

Contract-Neutral: Backend CI check reporting only. The shard test commands,
 dependency security proof and deployment contracts are unchanged.
2026-09-05 12:37:07 +01:00
pulse-triage[bot] fb9e4335e1 fix(ci): keep stable install smoke within caller permissions
Stable continuity run 33592377446 was rejected before any job ran: its read-only caller invoked a reusable job requesting contents:write. Extract the unchanged smoke execution into a body that inherits the caller budget, keeping the existing draft-capable entry point and its write-level draft GET access. Continuity now calls the shared body directly without broadening its token. Pin the permission boundary in regression coverage; do not relax immutable-release admission.

Change-source: pulse-maintainer
2026-09-05 04:02:24 +01:00
pulse-triage[bot] 106e115e44 Restore paired benchmark workflow after merges
Reapply the reviewed same-runner base/candidate benchmark job after later integration merges retained its runner and contract tests but reverted the workflow block itself.

Contract-Neutral: restores already-reviewed CI behavior without changing product interfaces
Refs: 9720f672c8e050a822773104885431583e4f661e
Change-source: pulse-maintainer
2026-09-04 21:40:51 +01:00
pulse-triage[bot] d170a23d22 Merge commit 'd7356ef76e26cd461278de18cd471d7cb2682043'
Change-source: pulse-maintainer
2026-09-04 14:29:39 +01:00
pulse-triage[bot] e46e897702 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	.github/workflows/build-and-test.yml
#	docs/release-control/v6/internal/subsystems/deployment-installability.md
#	scripts/installtests/build_release_assets_test.go
#	scripts/npm-audit-retry.sh

Change-source: pulse-maintainer
2026-09-04 14:29:31 +01:00
pulse-triage[bot] d7356ef76e Detect orphaned stable delivery versions
A failed v6.4.2 release left newer stable-shaped source and public container tags behind after its GitHub Release packet was removed. Extend the scheduled continuity audit across the stable tag and public registry frontier so this partial publication cannot remain hidden behind an older latest release.

Change-source: pulse-maintainer
2026-09-04 13:58:07 +01:00
pulse-triage[bot] 9720f6726b 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
2026-09-04 13:13:04 +01:00
rcourtman 5434868bd0 Bound the npm audit retry budget by wall clock
The retry hardening added in #1885 bounded attempts but not time. npm's own
fetch-timeout defaults to five minutes and it retries internally, so three
"attempts" against a hanging advisory endpoint ran for 10m56s on job
100986651307, and a second audit step added 3m36s. The Frontend job was
cancelled 31s into type-check with all 1183 test files already passing, and a
cancelled job reports as a failed required check, so a green run blocked every
pull request. #1888 raised the job timeout to 40 minutes to unblock delivery;
this decides the policy instead.

Each attempt now runs under a hard wall-clock bound and the sequence stops at
a total deadline (60s and 240s by default). npm's internal retry loop is
disabled in favour of this one, since it was the hidden multiplier. The bound
is enforced by a watchdog subshell rather than timeout(1), which is not
present on every developer machine.

What happens when the endpoint stays unreachable is unchanged, because that
split was already right: the run fails when the change touches the dependency
graph and the answer is genuinely unknown, and warns without failing when it
does not, because the graph is then identical to a base commit that already
produced a passing answer. Any advisory at any severity still fails.

Also drops the production-only audit from the per-pull-request path. It audits
a subset of the same packages, so it reports a subset of the same advisories,
and because the complete audit fails the job on any finding, the production
step could only ever execute in the cases where it was already guaranteed
clean. The dev-versus-production split still runs for every npm workspace in
the scheduled security-scan job, where it informs rather than blocks delivery,
and Dependabot security updates remain the route for advisories published
against unchanged dependencies.

With the audit bounded to 4 minutes against an ~11 minute baseline, the job
timeout returns to 30: a stalled endpoint should surface as a warning, not be
absorbed by a budget large enough to hide it.
2026-09-04 12:13:31 +01:00
pulse-triage[bot] 383f1d7293 Merge current Pulse upstream for publication
Change-source: pulse-maintainer
2026-09-04 12:03:53 +01:00
Richard Courtman be179befb7 Give the Frontend job room for the npm audit retries
The npm audit hardening added on 2026-09-04 retries through registry
outages instead of failing on the first 503. That is the right behaviour,
but the two audit steps then took 10m56s and 3m36s, and with roughly 11
minutes of install, lint, 1183 test files and type-check behind them the
job no longer fits timeout-minutes 25. It was cancelled 31 seconds into
type-check with every test already passing, which reads as a failed
required check and blocks every pull request.

Raising the budget to 40 leaves headroom for a slow audit without
weakening any gate. Bounding the retry itself is the better long-term
answer, but that trades delivery availability against audit coverage
during an outage and is a security-posture decision rather than a CI
tuning one.

Contract-Neutral: CI job time budget only; no dependency-security or contract behaviour changes
2026-09-04 11:32:49 +01:00
pulse-triage[bot] 6d8546b756 Keep Actions workflows on Node 24
Replace the remaining Node 20 action pins before GitHub removes that runtime, and make the reviewed Node 24 pins a workflow trust invariant.

Change-source: pulse-maintainer
2026-09-04 11:08:34 +01:00
pulse-triage[bot] b7e6a1e4e7 Merge privileged runner trust candidate for coordination
Change-source: pulse-maintainer
2026-09-04 09:39:27 +01:00
pulse-triage[bot] 0b72eca737 Keep privileged jobs on ephemeral hosted runners
Retire the unused self-hosted live qualification workflow and reject future secret- or write-capable jobs on persistent or dynamically selected runners. Keep live Patrol qualification as a disposable lab operation.

Change-source: pulse-maintainer
2026-09-04 09:30:11 +01:00