Gate: FAIL (exit 1)

New since the last forecast

0 new, 5 gone in the unclaimed set since the forecast of 2026-10-15T18:04:41.578Z (sha-d3d7227), beside the same baseline 17.0.0. By artefact: network +0 −4 · persistence +0 −1. The previous forecast was judged by harness 1.37.3, this one by 1.37.4: a harness change can move differences too.

Gone since then: network POST /api/live/activity: reader-auth:course: new request on b: POST /api/live/activity; network POST /api/live/activity: reader-auth:topic: new request on b: POST /api/live/activity; network GET /_app/immutable/chunks/{{hash}}.js: reference:course: GET /_app/immutable/chunks/{{hash}}.js requested 43× on a, 44× on b; network GET /_app/immutable/chunks/{{hash}}.js: reference:note: GET /_app/immutable/chunks/{{hash}}.js requested 39× on a, 40× on b; persistence student-signs-in/realtime_claim_live_publish: student-signs-in: RPC realtime_claim_live_publish — 0 row(s) on a, 2 on b.

Causes and the PRs behind them

1 cause, 1 with a PR named. Merged since the forecast of sha-d3d7227: #493. No cause is new since then. Each is matched by path: the PRs whose files touch what the cause is about, ranked by the direct ones (the app's own source for a page, a Dockerfile for an image) before the indirect (the shared packages, a manifest). A lead to ask, never a verdict.

causedifferencesPRs
timing: journey student-signs-in slower on b1#483 (4 files), #478 (13 files, 1 direct), #481 (6 files, 1 direct) and 3 more

No RCS: Gate FAIL. The Gate wins: no number talks a FAIL back on. The dimensions are shown for the 5 Whys, not for a decision.

Claims owed (1)

One draft claim per cause, its scope narrowed and checked against this forecast's unclaimed differences: together they cover all 1, and none takes another cause's. Paste them under claims: in release/claims.yaml and name the Rule that intends each (rule: "????" is refused until you do), or drop rule and give the CHANGELOG entry as the reason, or fix the difference and drop its draft. On a forecast this takes the glance's place; the glance stays for release candidates.

  # timing: journey student-signs-in slower on b: covers its 1 difference. Name the Rule that intends it, or fix it.
  - artefact: "timing"
    scope: "student-signs-in"
    rule: "????"
    reason: "journey student-signs-in slower on b: 1 difference (1 name); likely #483, #478, #481"

5 of 8 dimensions measured (weight 70 of 100, renormalised); the rest are not measured and not counted.

dimensionweightscorefloorwhere it lost points
Claim coverage2080−20 unclaimed: timing student-signs-in: journey student-signs-in slower on b: median 3435ms → 8479ms (+147%, p=0.012, n=5/5; smallest slowdown 5/5 runs could detect: about 70%)
Noise health1585−5 mask realtime-rest-fallback-warning fired nothing in this run (a mask that never fires is a mask to delete)
−5 mask transport-encoding fired nothing in this run (a mask that never fires is a mask to delete)
−5 mask transport-transfer fired nothing in this run (a mask that never fires is a mask to delete)
Statistical margin10100—
Rehearsals10100—
Test signal15not measuredquality.json has no mutation scores for 7c4028a (the monorepo's Nightly wrote no Stryker report) and no harness mutants
Requirements traceability10not measuredneeds the changelog, the EARS files and the claims side by side: pass --traceability <json>; changes.json already reports 7 orphan changes between the tags (a changelog entry with no diff, or a diff with no entry), a floor breach once it is measured
Change risk1527−10 PR #476 changed Reader, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
−3 PR #478 touches hotspot packages/svelte/connect/src/services/connect.svelte.ts (3 of the last 6 releases)
−10 PR #478 changed Reader, Shared Packages, Infrastructure, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
−10 PR #480 changed Shared Packages, Infrastructure, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
−10 PR #481 changed Reader, Infrastructure, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
−10 PR #483 changed Infrastructure, Reader, Live, Catalogue, Time, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
−10 PR #484 changed Infrastructure, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
−10 PR #487 changed Reader, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
Post-deploy history5not measuredneeds the last release's post-deploy record: pass --post-deploy <its run dir or report.json>

Change risk per PR

Change risk 27 (100 − 73), v17.0.0..c867ee87107a603c3d1ea34be9ff70beab119ee2: 7 of 9 PRs carry a finding.

PRtitlechurnfileshotspotstests ÷ productionreviewedfirst contributionpointswhere the points went
#478Route every Realtime channel through a budgeted port13494111.46yes−13−3 PR #478 touches hotspot packages/svelte/connect/src/services/connect.svelte.ts (3 of the last 6 releases)
−10 PR #478 changed Reader, Shared Packages, Infrastructure, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
#476Give each whiteboard room a Realtime budget37750no production linesyes−10−10 PR #476 changed Reader, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
#480Tutors Time: read only the chosen days of a course's calendar92603.30yes−10−10 PR #480 changed Shared Packages, Infrastructure, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
#481Tutors Live: publish from the reader's server within a daily Realtime budget14212303.38yes−10−10 PR #481 changed Reader, Infrastructure, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
#483Release 17.0.0 to main and pin production to it424130no production linesyes−10−10 PR #483 changed Infrastructure, Reader, Live, Catalogue, Time, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
#484ci(deploy): open the pin pull request when a release tag's images are published24750no production linesyes−10−10 PR #484 changed Infrastructure, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
#487fix(community): show an empty catalogue without Supabase instead of logging errors67303.47yes−10−10 PR #487 changed Reader, Development but no changelog entry under vc867ee87107a603c3d1ea34be9ff70beab119ee2 names it
2 moreno deductions: #485, #49357650

Not measured: orphan entries (a changelog entry with no diff) (CHANGELOG.md at c867ee87107a603c3d1ea34be9ff70beab119ee2 has no "### vc867ee87107a603c3d1ea34be9ff70beab119ee2" entries under a product section).

Contributor lines are for trends and glances, never for reviewing people: a first contribution is a fact and costs nothing on its own. Every deduction is in changes.json.

Tutors release harness — release fail

2026-10-15T19:51:41.408Z · clock 2026-09-16T09:05:00.000Z · 5 run(s) per side · harness 1.37.4

1 unclaimed difference, 1 cause

The unclaimed differences folded by kind across apps, pages and packages: a number, a hash or a package name does not make a new cause. Read beside the verdict; it never changes it.

causedifferencesappspagesexample
timing journey student-signs-in slower on b
1 name: median 3435ms → 8479ms (+147%, p=0.012, n=5/5; smallest slowdown 5/5 runs could detect: about 70%)
1——journey student-signs-in slower on b: median 3435ms → 8479ms (+147%, p=0.012, n=5/5; smallest slowdown 5/5 runs could detect: about 70%)
ab
readerquay.io/tutors-sdk/tutors-reader:17.0.0quay.io/tutors-sdk/tutors-reader:sha-c867ee8
cataloguequay.io/tutors-sdk/tutors-catalogue:17.0.0quay.io/tutors-sdk/tutors-catalogue:sha-c867ee8
livequay.io/tutors-sdk/tutors-live:17.0.0quay.io/tutors-sdk/tutors-live:sha-c867ee8
timequay.io/tutors-sdk/tutors-time:17.0.0quay.io/tutors-sdk/tutors-time:sha-c867ee8
provenancea — pulled+verifiedb — pulled+verified
readerdigest sha256:15e3aa22476d608db97e05917b1990ade0a7871e7ec6e113da5fec741b427233
revision 432d46864626
version 17.0.0-rc.1
digest sha256:d72750b7cc2f11aa0cb60226f8fbcd434cbb07da9a867715a98c897426b757e0
revision c867ee87107a
version sha-c867ee8
cataloguedigest sha256:e9f2764654cb074d7dd4412ca163bf4c2666870444d5520361d5425bda4cec0b
revision 432d46864626
version 17.0.0-rc.1
digest sha256:21ce90483d4de95247f85c1e2593ac7caedd87adb65215367805bc9e638eae3d
revision c867ee87107a
version sha-c867ee8
livedigest sha256:52740e55cfa7e7db3b2944137caada4e876990b937f1034c0c5e79796054f8a0
revision 432d46864626
version 17.0.0-rc.1
digest sha256:5aee8b0d07dc699002d64e28f2cf42c28045c64d3d9e638ff32bc432021cc51a
revision c867ee87107a
version sha-c867ee8
timedigest sha256:d0a9f4a2f4624038ecea3629d1a536567756d458410bee43b45e060d738d195d
revision 432d46864626
version 17.0.0-rc.1
digest sha256:13b46ba247e41534e91796cfde73f929d086e62f633501cc6b22c4475eb919f3
revision c867ee87107a
version sha-c867ee8

Image artefacts

Collected from the images, not the running apps. A cell that says NOT COLLECTED was not compared.

appartefactab
readermanifest10 layers, 309.2 MB, USER 1001, ports 3000/tcp (docker image inspect)10 layers, 308.9 MB, USER 1001, ports 3000/tcp (docker image inspect)
readersbom134 distinct package(s) (cosign attestation (signature verified))134 distinct package(s) (cosign attestation (signature verified))
readervulns94 advisories, db built 2026-10-15T06:30:36Z schema v6.1.10, OpenVEX openvex.json (0 statement(s)): none set aside (grype 0.119.0)94 advisories, db built 2026-10-15T06:30:36Z schema v6.1.10, OpenVEX openvex.json (0 statement(s)): none set aside (grype 0.119.0)
cataloguemanifest10 layers, 274.2 MB, USER 1001, ports 3000/tcp (docker image inspect)10 layers, 274.2 MB, USER 1001, ports 3000/tcp (docker image inspect)
cataloguesbom134 distinct package(s) (cosign attestation (signature verified))134 distinct package(s) (cosign attestation (signature verified))
cataloguevulns94 advisories, db built 2026-10-15T06:30:36Z schema v6.1.10, OpenVEX openvex.json (0 statement(s)): none set aside (grype 0.119.0)94 advisories, db built 2026-10-15T06:30:36Z schema v6.1.10, OpenVEX openvex.json (0 statement(s)): none set aside (grype 0.119.0)
livemanifest10 layers, 274.5 MB, USER 1001, ports 3000/tcp (docker image inspect)10 layers, 274.5 MB, USER 1001, ports 3000/tcp (docker image inspect)
livesbom134 distinct package(s) (cosign attestation (signature verified))134 distinct package(s) (cosign attestation (signature verified))
livevulns94 advisories, db built 2026-10-15T06:30:36Z schema v6.1.10, OpenVEX openvex.json (0 statement(s)): none set aside (grype 0.119.0)94 advisories, db built 2026-10-15T06:30:36Z schema v6.1.10, OpenVEX openvex.json (0 statement(s)): none set aside (grype 0.119.0)
timemanifest10 layers, 285.2 MB, USER 1001, ports 3000/tcp (docker image inspect)10 layers, 285.2 MB, USER 1001, ports 3000/tcp (docker image inspect)
timesbom143 distinct package(s) (cosign attestation (signature verified))143 distinct package(s) (cosign attestation (signature verified))
timevulns94 advisories, db built 2026-10-15T06:30:36Z schema v6.1.10, OpenVEX openvex.json (0 statement(s)): none set aside (grype 0.119.0)94 advisories, db built 2026-10-15T06:30:36Z schema v6.1.10, OpenVEX openvex.json (0 statement(s)): none set aside (grype 0.119.0)

Load (k6, 20 req/s for 30s)

siderequestsfailed5xxp50p95
a600001.26 ms2.12 ms
b601001.32 ms2.2 ms

Differences (42; 1 unclaimed)

artefactscopewhat changedclaimed by
networkPOST /api/live/activity
/course/localhost:8080
reader-auth:course: new request on b: POST /api/live/activityRule 0330: When a student opens a learning object, the reader shall send the learning event to the reader's server without publishing it over Realtime from the browser. — Rule 0330: the reader sends each learning event to its own server (POST /api/live/activity) instead of broadcasting it from the browser (#481)
networkPOST /api/live/activity
/topic/localhost:8080/unit-1/topic-01
reader-auth:topic: new request on b: POST /api/live/activityRule 0330: When a student opens a learning object, the reader shall send the learning event to the reader's server without publishing it over Realtime from the browser. — Rule 0330: the reader sends each learning event to its own server (POST /api/live/activity) instead of broadcasting it from the browser (#481)
networkGET /_app/immutable/chunks/{{hash}}.js
/course/reference-course
reference:course: GET /_app/immutable/chunks/{{hash}}.js requested 43× on a, 44× on bRule 0330: When a student opens a learning object, the reader shall send the learning event to the reader's server without publishing it over Realtime from the browser. — Rule 0330: moving learning events from browser Realtime to the reader's server adds one immutable chunk on reference:course and reference:note (#478, #481)
networkGET /_app/immutable/chunks/{{hash}}.js
/note/reference-course/topic-07-reference/note-1
reference:note: GET /_app/immutable/chunks/{{hash}}.js requested 39× on a, 40× on bRule 0330: When a student opens a learning object, the reader shall send the learning event to the reader's server without publishing it over Realtime from the browser. — Rule 0330: moving learning events from browser Realtime to the reader's server adds one immutable chunk on reference:course and reference:note (#478, #481)
consolereader:home
/
reader:home: console message gone on b
detail
error: Failed to load resource: net::ERR_NETWORK_CHANGED: https://www.setu.ie/img/logos/setu-logo.svg
informational
consolecatalogue:home
/
catalogue:home: console message gone on b
detail
error: {"app":"tutors-catalogue","environment":"production","error":"Cannot read properties of undefined (reading 'from')","stack":"TypeError: Cannot read properties of undefined (reading 'from')\n    at Object.getCatalogue ({{origin}}/_app/immutable/chunks/2lYorbfj.js:69:102918)\n    at V ({{origin}}/_app/immutable/nodes/2.NAkx_ofm.js:1:484)\n    at Wn ({{origin}}/_app/immutable/chunks/XgCIYxIE.js:2:24206)","timestamp":"2026-09-16T09:05:00.000Z","level":"error","message":"Error fetching courses:"}
informational
consolecatalogue:home
/
catalogue:home: console message gone on b
detail
error: {"app":"tutors-catalogue","environment":"production","error":"Cannot read properties of undefined (reading 'from')","stack":"TypeError: Cannot read properties of undefined (reading 'from')\n    at Object.getStudentCount ({{origin}}/_app/immutable/chunks/2lYorbfj.js:69:103346)\n    at {{origin}}/_app/immutable/nodes/2.NAkx_ofm.js:1:5193\n    at Cr ({{origin}}/_app/immutable/chunks/Cv2zGAZD.js:1:23871)\n    at {{origin}}/_app/immutable/chunks/Cv2zGAZD.js:2:2704\n    at mr ({{origin}}/_app/immutable/chunks/Cv2zGAZD.js:1:21611)\n    at vr ({{origin}}/_app/immutable/chunks/Cv2zGAZD.js:1:22749)\n    at Xt ({{origin}}/_app/immutable/chunks/Cv2zGAZD.js:1:12091)\n    at #_ ({{origin}}/_app/immutable/chunks/Cv2zGAZD.js:1:9277)\n    at e.flush ({{origin}}/_app/immutable/chunks/Cv2zGAZD.js:1:10794)\n    at Array.<anonymous> ({{origin}}/_app/immutable/chunks/Cv2zGAZD.js:1:11554)","timestamp":"2026-09-16T09:05:00.000Z","level":"error","message":"Error fetching course count:"}
informational
timingstudent-signs-injourney student-signs-in slower on b: median 3435ms → 8479ms (+147%, p=0.012, n=5/5; smallest slowdown 5/5 runs could detect: about 70%)unclaimed
persistencestudent-signs-in/realtime_claim_live_publishstudent-signs-in: RPC realtime_claim_live_publish — 0 row(s) on a, 2 on bRule 0331: When the reader's server receives a learning event, the reader shall publish it only to the activity feeds a live dashboard has watched in the last 90 seconds. — Rule 0331: the reader's server claims the topics to publish to, and charges the day's Live budget, through realtime_claim_live_publish (#481)
realtimereader-auth/messagesreader-auth: Realtime messages per reader page view fell: a 1.33 / b 0 per reader page (broadcasts a 4 / b 0, socket data frames a 0 / b 0, over 3 page view(s))informational
runtimeruntime/summarycontainer posture collected for catalogue, live, reader, reader-auth, time on both sides (compose)
detail
catalogue: a — uid 1001:0, caps none, root fs ro, /tmp rw, no-new-privileges, seccomp filter
           b — uid 1001:0, caps none, root fs ro, /tmp rw, no-new-privileges, seccomp filter
live: a — uid 1001:0, caps none, root fs ro, /tmp rw, no-new-privileges, seccomp filter
      b — uid 1001:0, caps none, root fs ro, /tmp rw, no-new-privileges, seccomp filter
reader: a — uid 1001:0, caps none, root fs ro, /tmp rw, no-new-privileges, seccomp filter
        b — uid 1001:0, caps none, root fs ro, /tmp rw, no-new-privileges, seccomp filter
reader-auth: a — uid 1001:0, caps none, root fs ro, /tmp rw, no-new-privileges, seccomp filter
             b — uid 1001:0, caps none, root fs ro, /tmp rw, no-new-privileges, seccomp filter
time: a — uid 1001:0, caps none, root fs ro, /tmp rw, no-new-privileges, seccomp filter
      b — uid 1001:0, caps none, root fs ro, /tmp rw, no-new-privileges, seccomp filter
informational
startupstartup/summarystartup time collected on both sides (compose, 5 restart(s) per app)
detail
catalogue: first healthy / 403 → 411 ms, ready 2324 → 2337 ms (median, a → b, n=5/5)
live: first healthy / 414 → 403 ms, ready 2309 → 2322 ms (median, a → b, n=5/5)
reader: first healthy / 590 → 547 ms, ready 2356 → 2276 ms (median, a → b, n=5/5)
time: first healthy / 411 → 479 ms, ready 2334 → 2308 ms (median, a → b, n=5/5)
informational
image-hardeningreader/healthcheckreader: declares no HEALTHCHECK (production too)informing (reported, never gates)
image-hardeningcatalogue/healthcheckcatalogue: declares no HEALTHCHECK (production too)informing (reported, never gates)
image-hardeninglive/healthchecklive: declares no HEALTHCHECK (production too)informing (reported, never gates)
image-hardeningtime/healthchecktime: declares no HEALTHCHECK (production too)informing (reported, never gates)
build-provenancereader/slsareader: carries no SLSA provenance verified under the publishing identity on d72750b7cc2f (production too)informing (reported, never gates)
build-provenancecatalogue/slsacatalogue: carries no SLSA provenance verified under the publishing identity on 21ce90483d4d (production too)informing (reported, never gates)
build-provenancelive/slsalive: carries no SLSA provenance verified under the publishing identity on 5aee8b0d07dc (production too)informing (reported, never gates)
build-provenancetime/slsatime: carries no SLSA provenance verified under the publishing identity on 13b46ba247e4 (production too)informing (reported, never gates)
vuln-ceilingreader/summaryreader: vuln-ceiling holds on b: 94 advisories scanned, 20 critical or high, none with a fix availableinformational
vuln-ceilingcatalogue/summarycatalogue: vuln-ceiling holds on b: 94 advisories scanned, 20 critical or high, none with a fix availableinformational
vuln-ceilinglive/summarylive: vuln-ceiling holds on b: 94 advisories scanned, 20 critical or high, none with a fix availableinformational
vuln-ceilingtime/summarytime: vuln-ceiling holds on b: 94 advisories scanned, 20 critical or high, none with a fix availableinformational
timing-tolerancestudent-signs-injourney student-signs-in slower on b beyond the 10% tolerance: 3435ms → 8479ms (+147%, p=0.012, n=5/5 runs; smallest detectable about 70%); timing fails it too (its floor is 20%)informing (reported, never gates)
asset-graphreaderreader: the asset graph changed: 173 → 173 immutable requests (JS 142 → 142, CSS 31 → 31), 1.6 MB → 1.6 MB; 0 network and 0 headers difference(s) are this churninforming (reported, never gates)
asset-graphcataloguecatalogue: the asset graph changed: 19 → 19 immutable requests (JS 15 → 15, CSS 4 → 4), 529 KB → 530 KB; 0 network and 0 headers difference(s) are this churninforming (reported, never gates)
asset-graphlivelive: the asset graph changed: 24 → 24 immutable requests (JS 19 → 19, CSS 5 → 5), 540 KB → 542 KB; 0 network and 0 headers difference(s) are this churninforming (reported, never gates)
asset-graphreader-authreader-auth: the asset graph changed: 96 → 96 immutable requests (JS 83 → 83, CSS 13 → 13), 1.0 MB → 1.0 MB; 0 network and 0 headers difference(s) are this churninforming (reported, never gates)
asset-graphreferencereference: the asset graph changed: 121 → 123 immutable requests (JS 99 → 101, CSS 22 → 22), 1.2 MB → 1.2 MB; 2 network and 0 headers difference(s) are this churninforming (reported, never gates)
sloreader-availabilityreader-availability: 100.0% of 62 reader requests not 5xx on b (its /metrics across the journeys), objective 99.90% (harness floor; monorepo 99.50%): holdsinformational
sloreader-availability/loadreader-availability: 100.0% of 601 reader requests not 5xx on b (the k6 load leg), objective 99.90% (harness floor; monorepo 99.50%): holdsinformational
sloreader-latencyreader-latency: 100.0% of 62 reader requests under 1s on b (its /metrics across the journeys), objective 99.0% (harness floor; monorepo 95.0%): holdsinformational
sloreader-latency/loadreader-latency: 100.0% of 601 reader requests under 1s on b (the k6 load leg), objective 99.0% (harness floor; monorepo 95.0%): holdsinformational
slocatalogue-availability/not-evaluatedcatalogue-availability: not evaluated on b: 5 request(s) from its /metrics across the journeys, fewer than 20informational
slocatalogue-latency/not-evaluatedcatalogue-latency: not evaluated on b: 5 request(s) from its /metrics across the journeys, fewer than 20informational
slolive-availability/not-evaluatedlive-availability: not evaluated on b: 5 request(s) from its /metrics across the journeys, fewer than 20informational
slolive-latency/not-evaluatedlive-latency: not evaluated on b: 5 request(s) from its /metrics across the journeys, fewer than 20informational
slotime-availability/not-evaluatedtime-availability: not evaluated on b: its /metrics across the journeys carries no availability SLI for timeinformational
slotime-latency/not-evaluatedtime-latency: not evaluated on b: its /metrics across the journeys carries no latency SLI for timeinformational
sloreader-latency-tailreader-latency-tail: 100.0% of 62 reader requests under 2.5s on b (its /metrics across the journeys), objective 99.0%: holdsinformational
sloreader-latency-tail/loadreader-latency-tail: 100.0% of 601 reader requests under 2.5s on b (the k6 load leg), objective 99.0%: holdsinformational

Policy: what b must be informing

Checks on the candidate alone, whatever production is: image hardening (root user, no healthcheck, a secret in the environment or the layer history), build provenance (SLSA provenance from image-build.yml) and the vulnerability ceiling (a critical or high advisory with a fix available). Informing: reported, never gates; a claim can still cover a finding. Hover a cell for what was checked.

appimage-hardeningbuild-provenancevuln-ceiling
reader1 finding (1 on production too)1 finding (1 on production too)holds
catalogue1 finding (1 on production too)1 finding (1 on production too)holds
live1 finding (1 on production too)1 finding (1 on production too)holds
time1 finding (1 on production too)1 finding (1 on production too)holds

Informing (14; 14 unclaimed) reported, never gates

19 of 27 engines are blocking; informing (reported, never gates): image-hardening (no date set to block), build-provenance (no date set to block), vuln-ceiling (no date set to block), timing-tolerance (no date set to block), asset-graph (no date set to block), replay (no date set to block), slo (no date set to block), realtime (no date set to block). An informing engine's findings are listed here and never change the verdict, the Gate or the exit code; a claim can still cover one.

enginescopewhat it foundlevelclaimed by
image-hardeningreader/healthcheckreader: declares no HEALTHCHECK (production too)no date setunclaimed
image-hardeningcatalogue/healthcheckcatalogue: declares no HEALTHCHECK (production too)no date setunclaimed
image-hardeninglive/healthchecklive: declares no HEALTHCHECK (production too)no date setunclaimed
image-hardeningtime/healthchecktime: declares no HEALTHCHECK (production too)no date setunclaimed
build-provenancereader/slsareader: carries no SLSA provenance verified under the publishing identity on d72750b7cc2f (production too)no date setunclaimed
build-provenancecatalogue/slsacatalogue: carries no SLSA provenance verified under the publishing identity on 21ce90483d4d (production too)no date setunclaimed
build-provenancelive/slsalive: carries no SLSA provenance verified under the publishing identity on 5aee8b0d07dc (production too)no date setunclaimed
build-provenancetime/slsatime: carries no SLSA provenance verified under the publishing identity on 13b46ba247e4 (production too)no date setunclaimed
timing-tolerancestudent-signs-injourney student-signs-in slower on b beyond the 10% tolerance: 3435ms → 8479ms (+147%, p=0.012, n=5/5 runs; smallest detectable about 70%); timing fails it too (its floor is 20%)no date setunclaimed
asset-graphreaderreader: the asset graph changed: 173 → 173 immutable requests (JS 142 → 142, CSS 31 → 31), 1.6 MB → 1.6 MB; 0 network and 0 headers difference(s) are this churnno date setunclaimed
asset-graphcataloguecatalogue: the asset graph changed: 19 → 19 immutable requests (JS 15 → 15, CSS 4 → 4), 529 KB → 530 KB; 0 network and 0 headers difference(s) are this churnno date setunclaimed
asset-graphlivelive: the asset graph changed: 24 → 24 immutable requests (JS 19 → 19, CSS 5 → 5), 540 KB → 542 KB; 0 network and 0 headers difference(s) are this churnno date setunclaimed
asset-graphreader-authreader-auth: the asset graph changed: 96 → 96 immutable requests (JS 83 → 83, CSS 13 → 13), 1.0 MB → 1.0 MB; 0 network and 0 headers difference(s) are this churnno date setunclaimed
asset-graphreferencereference: the asset graph changed: 121 → 123 immutable requests (JS 99 → 101, CSS 22 → 22), 1.2 MB → 1.2 MB; 2 network and 0 headers difference(s) are this churnno date setunclaimed

Claim hygiene

3 claim(s) cover 5 failing hunk(s): 1.67 per claim, at most 2 under one (flagged above 10).

Masks

Fired: response-date×92, request-id×92, etag×92, metrics-process×599, metrics-timing-histograms×12, third-party-requests×1539, persistence-stub-requests×140, oauth-callback-state×10, media-range-status×42, chromium-compute-pressure-policy×1, hashed-assets×5014, footer-tutors-version×344, transport-length×92, transport-connection×92, transport-keepalive×92.
Silent this run: realtime-rest-fallback-warning, transport-encoding, transport-transfer — a mask that never fires is a mask to delete.