Compare commits
merge into: mosaicstack/stack:fix/1362-harness-aware-delivery-confirm
mosaicstack/stack:next
mosaicstack/stack:fix/1357-issue-view-comments
mosaicstack/stack:fix/1356-tea-login-fail-closed
mosaicstack/stack:fix/1362-harness-aware-delivery-confirm
mosaicstack/stack:fix/gitea-guessed-login-credential
mosaicstack/stack:docs/w4-document-contract
mosaicstack/stack:fix/d29-lease-revoke-noop
mosaicstack/stack:peggy/agent-send-unverified-label
mosaicstack/stack:fix/pr-merge-fork-ci-status
mosaicstack/stack:docs/ri-050-release-evidence
mosaicstack/stack:riv001-clean
mosaicstack/stack:docs/1216-trunk-parameterization
mosaicstack/stack:fix/1257-adopt-draft-transition
mosaicstack/stack:fix/1256-fleet-pane-path-node
mosaicstack/stack:fix/1017-enumeration-guard-population
mosaicstack/stack:fix/1182-fail-closed-launch
mosaicstack/stack:fix/1327-setuppath-idempotency
mosaicstack/stack:merge/main-into-next
mosaicstack/stack:ci/push-ci-comment-model
mosaicstack/stack:ci/pin-ci-base-image
mosaicstack/stack:fix/ci-queue-wait-no-status
mosaicstack/stack:fred/code-review-pinned-tool-rules
mosaicstack/stack:fred/guides-seat-identity-fleet-comms
mosaicstack/stack:fred/credential-fail-closed-seat-slots
mosaicstack/stack:fix/fleet-greenfield-blockers
mosaicstack/stack:feat/ri-050-qr-evaluator
mosaicstack/stack:docs/ri-050-forge-docs-fastfollow
mosaicstack/stack:fix/ri-050-registry-secrets
mosaicstack/stack:test/ri-050-publish-gate-negative
mosaicstack/stack:fix/ri-050-verify-pglite-path
mosaicstack/stack:docs/ri-050-qr-probe-inventory
mosaicstack/stack:feat/ri-050-web-stale-safety
mosaicstack/stack:docs/ri-050-mission-bootstrap
mosaicstack/stack:fix/ri-050-forge-fail-closed
mosaicstack/stack:feat/ri-050-publish-gate
mosaicstack/stack:fleet/continuation-record-2026-08-17
mosaicstack/stack:feat/ri-050-prd-authority
mosaicstack/stack:fix/ri-050-macp-fail-closed
mosaicstack/stack:fix/1280-identity-first-resolution
mosaicstack/stack:feat/w-f4-store
mosaicstack/stack:fix/1264-fleet-unattended-first-start
mosaicstack/stack:fix/1269-ci-chain-unblock
mosaicstack/stack:fix/1256-fleet-runtime-preflight
mosaicstack/stack:fix/1257-e7-draft-transition
mosaicstack/stack:fix/1240-fleet-transport-check
mosaicstack/stack:fix/1017-wire-start-agent-session
mosaicstack/stack:e2e-compose
mosaicstack/stack:fix/1241-launch-failure-visible
mosaicstack/stack:fix/1237-fleet-v2-dispatch
mosaicstack/stack:fix/1236-installer-dir-modes
mosaicstack/stack:fix/installer-path-and-node
mosaicstack/stack:feat/wf-fleet-mvp
mosaicstack/stack:fix/installer-provisions-node
mosaicstack/stack:fix/lease-test-env-isolation
mosaicstack/stack:release/0.0.50-integration
mosaicstack/stack:feat/wf5-main-merge
mosaicstack/stack:feat/wf5-securestorage
mosaicstack/stack:feat/1216-trunk-resolver
mosaicstack/stack:docs/1214-branch-process
mosaicstack/stack:docs/ia-merge-current
mosaicstack/stack:fix/869-lease-probe-timeout
mosaicstack/stack:main
mosaicstack/stack:feat/workspace-hygiene-tool-enforcement
mosaicstack/stack:feat/1080-pr-edit
mosaicstack/stack:fix/1179-required-security-di
mosaicstack/stack:feat/p3-slice0-task5-chat-runtime-router-shaggy
mosaicstack/stack:feat/p3-slice0-task5-chat-runtime-router
mosaicstack/stack:feat/wf1-composition
mosaicstack/stack:feat/p3-slice0-task4-web-catalog-selection
mosaicstack/stack:feat/lease-promotion-and-harness-isolation
mosaicstack/stack:ci/provision-pi-runtime
mosaicstack/stack:feat/p3-slice0-task3-catalog-selection
mosaicstack/stack:feat/p3-slice0-task2-harness-registry
mosaicstack/stack:adopt/965-mos-ste-writing-standard
mosaicstack/stack:fix/991-comment-url-scheme-normalise
mosaicstack/stack:feat/wf2-bundle-migration
mosaicstack/stack:feat/wf4-plugin-acquisition
mosaicstack/stack:feat/wf5-refresh-safety
mosaicstack/stack:fix/1145-coord-di-compiled-boot
mosaicstack/stack:feat/p3-slice0-task1-harness-contracts
mosaicstack/stack:docs/webui-phase-p-structure
mosaicstack/stack:feat/1150-pi-goal-extension
mosaicstack/stack:feat/webui-p3-chat
mosaicstack/stack:fix/1146-ci-queue-purpose
mosaicstack/stack:fix/1138-conditional-federation
mosaicstack/stack:feat/webui-p2-data-auth
mosaicstack/stack:fix/gateway-runner-image
mosaicstack/stack:feat/webui-p1-vite-skeleton
mosaicstack/stack:fix/break-c-hooks-and-web-image
mosaicstack/stack:docs/webui-fleet-claude-bridge-plan
mosaicstack/stack:fix/wizard-gateway-failure
mosaicstack/stack:fix/next-node-gate
mosaicstack/stack:fix/mosaic-init-rce
mosaicstack/stack:greenfield/fomo-lin
mosaicstack/stack:fix/1099-pipefail-wake
mosaicstack/stack:fix/1099-pipefail-tests
mosaicstack/stack:fix/1099-pipefail-sweep
mosaicstack/stack:fix/framework-shell-portability
mosaicstack/stack:fix/1043-pane-git-identity
mosaicstack/stack:fix/1081-issue-close-silent-comment-failure
mosaicstack/stack:fix/1090-enrollment-wallclock-tolerance
mosaicstack/stack:feat/1082-tea-stale-token-diagnostic
mosaicstack/stack:fix/detect-platform-silent-128-outside-repo
mosaicstack/stack:feat/1050-install-state-machine-red-fixture
mosaicstack/stack:fix/pr-merge-message-field
mosaicstack/stack:feat/1051-mosaic-brain-installer
mosaicstack/stack:feat/1045-mosaic-cred
mosaicstack/stack:remediation/state
mosaicstack/stack:fix/1056-upgrade-rollback-control-race
mosaicstack/stack:fix/1019-ci-queue-timeout-harness
mosaicstack/stack:feat/rm-02-gate-registry
mosaicstack/stack:fix/rm-01-reproducible-checkout
mosaicstack/stack:remediation/mission-setup
mosaicstack/stack:fix/hygiene-inert-format-gate
mosaicstack/stack:fix/1019-queue-guard-stdin
mosaicstack/stack:feat/mos-ste-writing-standard
mosaicstack/stack:fix/1017-enumeration-guard
mosaicstack/stack:fix/1007-suite-hermeticity
mosaicstack/stack:feat/push-guard-null-case-verification
mosaicstack/stack:feat/wake-preimage-provenance
mosaicstack/stack:mos-comms-live
mosaicstack/stack:docs/heartbeat-framework-layering-ms-lead
mosaicstack/stack:feat/869-c4-version-coupling
mosaicstack/stack:feat/869-c2-install-ordering-guard
mosaicstack/stack:feat/869-c5-doctor-activation-check
mosaicstack/stack:feat/per-agent-gitea-identity
mosaicstack/stack:fix/875-belongs-case-insensitive-slug
mosaicstack/stack:fix/ci-queue-wait-404-branch-absent
mosaicstack/stack:feat/869-c1-activation-probe
mosaicstack/stack:feat/869-c3-broker-supervisor
mosaicstack/stack:fix/865-tea-cli-comment-invocation
mosaicstack/stack:feat/glpi-skills
mosaicstack/stack:fix/860-deflake-mutator-lease-gate
mosaicstack/stack:fix/850-detect-platform-port-normalization
mosaicstack/stack:fix/856-worktree-deps-preflight
mosaicstack/stack:fix/835-pr-review-approve-reject-comment-flag
mosaicstack/stack:fix/848-truthful-evidence
mosaicstack/stack:fix/812-pr-review-comment
mosaicstack/stack:fix/849-recovery-runtime-fixture-race
mosaicstack/stack:docs/758-ledger-m5-001-sync
mosaicstack/stack:feat/834-tc-server-side-doc
mosaicstack/stack:feat/833-constrained-recovery-command
mosaicstack/stack:feat/827-gate0-probe
mosaicstack/stack:governance/gate0-probe3-amendment
mosaicstack/stack:fix/795-codex-pr-diff
mosaicstack/stack:fix/795-ci-base-jq
mosaicstack/stack:fix/795-ci-base-git
mosaicstack/stack:feat/791-pr3-fleet-regen
mosaicstack/stack:feat/791-pr2-snapshot-restore
mosaicstack/stack:fix/807-glpi-206
mosaicstack/stack:fix/808-agent-send-false-sender
mosaicstack/stack:feat/791-upgrade-config-protection
mosaicstack/stack:feat/790-mosaic-yolo-claudex-pr2
mosaicstack/stack:feat/790-mosaic-yolo-claudex
mosaicstack/stack:feat/758-v1-v2-migrator
mosaicstack/stack:fix/766-exact-fleet-comms
mosaicstack/stack:test/758-reconciler-lifecycle-gates
mosaicstack/stack:docs/771-kbn101-db-role-split
mosaicstack/stack:test/758-example-profile-dispositions
mosaicstack/stack:feat/758-shared-role-resolution
mosaicstack/stack:feat/mos-logical-identity-fencing
mosaicstack/stack:feat/769-kbn100-unified-schema
mosaicstack/stack:docs/753-kbn010-threat-gate
mosaicstack/stack:feat/758-roster-v2-compiler
mosaicstack/stack:feat/756-official-discord-plugin
mosaicstack/stack:docs/758-fleet-config-management
mosaicstack/stack:fix/mos-option2-qualification-format
mosaicstack/stack:docs/issue-758-m0
mosaicstack/stack:docs/mos-option2-qualification
mosaicstack/stack:mos-comms
mosaicstack/stack:feat/tess-interaction-agent
mosaicstack/stack:fix/tess-docs-format
mosaicstack/stack:draft/mosaic-platform-prd
mosaicstack/stack:fix/installer-provider-gate-and-local-gateway-redis
mosaicstack/stack:release/mosaic-cli-0.0.37
mosaicstack/stack:feat/framework-constitution-alpha
mosaicstack/stack:fix/git-wrapper-repo-detection
mosaicstack/stack:fix/woodpecker-wrapper-legacy-mosaic
mosaicstack/stack:fix/t-a292e96f-gitea-pr-metadata
mosaicstack/stack:fix/gitea-pr-metadata-login-t-a292e96f
mosaicstack/stack:fix/t_a292e96f-pr-metadata-gitea
mosaicstack/stack:fix/t_3a368a52-gitea-usc-login
mosaicstack/stack:fix/bootstrap-hotfix
mosaicstack/stack:fix/populate-known-packages-list
mosaicstack/stack:fix/idempotent-init
mosaicstack/stack:v0.0.39-alpha
mosaicstack/stack:mosaic-v0.0.31
mosaicstack/stack:fed-v0.2.0-m2
mosaicstack/stack:fed-v0.1.0-m1
mosaicstack/stack:mosaic-v0.0.29
mosaicstack/stack:mosaic-v0.0.28
mosaicstack/stack:mosaic-v0.0.27
mosaicstack/stack:mosaic-v0.0.26
mosaicstack/stack:mosaic-v0.0.25
mosaicstack/stack:mosaic-v0.0.24
mosaicstack/stack:v0.2.0
mosaicstack/stack:v0.1.0
mosaicstack/stack:v0.0.8
mosaicstack/stack:v0.0.7
mosaicstack/stack:v0.0.6
mosaicstack/stack:v0.0.5
mosaicstack/stack:v0.0.4
...
pull from: mosaicstack/stack:fix/1090-enrollment-wallclock-tolerance
mosaicstack/stack:fix/1357-issue-view-comments
mosaicstack/stack:fix/1356-tea-login-fail-closed
mosaicstack/stack:fix/1362-harness-aware-delivery-confirm
mosaicstack/stack:next
mosaicstack/stack:fix/gitea-guessed-login-credential
mosaicstack/stack:docs/w4-document-contract
mosaicstack/stack:fix/d29-lease-revoke-noop
mosaicstack/stack:peggy/agent-send-unverified-label
mosaicstack/stack:fix/pr-merge-fork-ci-status
mosaicstack/stack:docs/ri-050-release-evidence
mosaicstack/stack:riv001-clean
mosaicstack/stack:docs/1216-trunk-parameterization
mosaicstack/stack:fix/1257-adopt-draft-transition
mosaicstack/stack:fix/1256-fleet-pane-path-node
mosaicstack/stack:fix/1017-enumeration-guard-population
mosaicstack/stack:fix/1182-fail-closed-launch
mosaicstack/stack:fix/1327-setuppath-idempotency
mosaicstack/stack:merge/main-into-next
mosaicstack/stack:ci/push-ci-comment-model
mosaicstack/stack:ci/pin-ci-base-image
mosaicstack/stack:fix/ci-queue-wait-no-status
mosaicstack/stack:fred/code-review-pinned-tool-rules
mosaicstack/stack:fred/guides-seat-identity-fleet-comms
mosaicstack/stack:fred/credential-fail-closed-seat-slots
mosaicstack/stack:fix/fleet-greenfield-blockers
mosaicstack/stack:feat/ri-050-qr-evaluator
mosaicstack/stack:docs/ri-050-forge-docs-fastfollow
mosaicstack/stack:fix/ri-050-registry-secrets
mosaicstack/stack:test/ri-050-publish-gate-negative
mosaicstack/stack:fix/ri-050-verify-pglite-path
mosaicstack/stack:docs/ri-050-qr-probe-inventory
mosaicstack/stack:feat/ri-050-web-stale-safety
mosaicstack/stack:docs/ri-050-mission-bootstrap
mosaicstack/stack:fix/ri-050-forge-fail-closed
mosaicstack/stack:feat/ri-050-publish-gate
mosaicstack/stack:fleet/continuation-record-2026-08-17
mosaicstack/stack:feat/ri-050-prd-authority
mosaicstack/stack:fix/ri-050-macp-fail-closed
mosaicstack/stack:fix/1280-identity-first-resolution
mosaicstack/stack:feat/w-f4-store
mosaicstack/stack:fix/1264-fleet-unattended-first-start
mosaicstack/stack:fix/1269-ci-chain-unblock
mosaicstack/stack:fix/1256-fleet-runtime-preflight
mosaicstack/stack:fix/1257-e7-draft-transition
mosaicstack/stack:fix/1240-fleet-transport-check
mosaicstack/stack:fix/1017-wire-start-agent-session
mosaicstack/stack:e2e-compose
mosaicstack/stack:fix/1241-launch-failure-visible
mosaicstack/stack:fix/1237-fleet-v2-dispatch
mosaicstack/stack:fix/1236-installer-dir-modes
mosaicstack/stack:fix/installer-path-and-node
mosaicstack/stack:feat/wf-fleet-mvp
mosaicstack/stack:fix/installer-provisions-node
mosaicstack/stack:fix/lease-test-env-isolation
mosaicstack/stack:release/0.0.50-integration
mosaicstack/stack:feat/wf5-main-merge
mosaicstack/stack:feat/wf5-securestorage
mosaicstack/stack:feat/1216-trunk-resolver
mosaicstack/stack:docs/1214-branch-process
mosaicstack/stack:docs/ia-merge-current
mosaicstack/stack:fix/869-lease-probe-timeout
mosaicstack/stack:main
mosaicstack/stack:feat/workspace-hygiene-tool-enforcement
mosaicstack/stack:feat/1080-pr-edit
mosaicstack/stack:fix/1179-required-security-di
mosaicstack/stack:feat/p3-slice0-task5-chat-runtime-router-shaggy
mosaicstack/stack:feat/p3-slice0-task5-chat-runtime-router
mosaicstack/stack:feat/wf1-composition
mosaicstack/stack:feat/p3-slice0-task4-web-catalog-selection
mosaicstack/stack:feat/lease-promotion-and-harness-isolation
mosaicstack/stack:ci/provision-pi-runtime
mosaicstack/stack:feat/p3-slice0-task3-catalog-selection
mosaicstack/stack:feat/p3-slice0-task2-harness-registry
mosaicstack/stack:adopt/965-mos-ste-writing-standard
mosaicstack/stack:fix/991-comment-url-scheme-normalise
mosaicstack/stack:feat/wf2-bundle-migration
mosaicstack/stack:feat/wf4-plugin-acquisition
mosaicstack/stack:feat/wf5-refresh-safety
mosaicstack/stack:fix/1145-coord-di-compiled-boot
mosaicstack/stack:feat/p3-slice0-task1-harness-contracts
mosaicstack/stack:docs/webui-phase-p-structure
mosaicstack/stack:feat/1150-pi-goal-extension
mosaicstack/stack:feat/webui-p3-chat
mosaicstack/stack:fix/1146-ci-queue-purpose
mosaicstack/stack:fix/1138-conditional-federation
mosaicstack/stack:feat/webui-p2-data-auth
mosaicstack/stack:fix/gateway-runner-image
mosaicstack/stack:feat/webui-p1-vite-skeleton
mosaicstack/stack:fix/break-c-hooks-and-web-image
mosaicstack/stack:docs/webui-fleet-claude-bridge-plan
mosaicstack/stack:fix/wizard-gateway-failure
mosaicstack/stack:fix/next-node-gate
mosaicstack/stack:fix/mosaic-init-rce
mosaicstack/stack:greenfield/fomo-lin
mosaicstack/stack:fix/1099-pipefail-wake
mosaicstack/stack:fix/1099-pipefail-tests
mosaicstack/stack:fix/1099-pipefail-sweep
mosaicstack/stack:fix/framework-shell-portability
mosaicstack/stack:fix/1043-pane-git-identity
mosaicstack/stack:fix/1081-issue-close-silent-comment-failure
mosaicstack/stack:fix/1090-enrollment-wallclock-tolerance
mosaicstack/stack:feat/1082-tea-stale-token-diagnostic
mosaicstack/stack:fix/detect-platform-silent-128-outside-repo
mosaicstack/stack:feat/1050-install-state-machine-red-fixture
mosaicstack/stack:fix/pr-merge-message-field
mosaicstack/stack:feat/1051-mosaic-brain-installer
mosaicstack/stack:feat/1045-mosaic-cred
mosaicstack/stack:remediation/state
mosaicstack/stack:fix/1056-upgrade-rollback-control-race
mosaicstack/stack:fix/1019-ci-queue-timeout-harness
mosaicstack/stack:feat/rm-02-gate-registry
mosaicstack/stack:fix/rm-01-reproducible-checkout
mosaicstack/stack:remediation/mission-setup
mosaicstack/stack:fix/hygiene-inert-format-gate
mosaicstack/stack:fix/1019-queue-guard-stdin
mosaicstack/stack:feat/mos-ste-writing-standard
mosaicstack/stack:fix/1017-enumeration-guard
mosaicstack/stack:fix/1007-suite-hermeticity
mosaicstack/stack:feat/push-guard-null-case-verification
mosaicstack/stack:feat/wake-preimage-provenance
mosaicstack/stack:mos-comms-live
mosaicstack/stack:docs/heartbeat-framework-layering-ms-lead
mosaicstack/stack:feat/869-c4-version-coupling
mosaicstack/stack:feat/869-c2-install-ordering-guard
mosaicstack/stack:feat/869-c5-doctor-activation-check
mosaicstack/stack:feat/per-agent-gitea-identity
mosaicstack/stack:fix/875-belongs-case-insensitive-slug
mosaicstack/stack:fix/ci-queue-wait-404-branch-absent
mosaicstack/stack:feat/869-c1-activation-probe
mosaicstack/stack:feat/869-c3-broker-supervisor
mosaicstack/stack:fix/865-tea-cli-comment-invocation
mosaicstack/stack:feat/glpi-skills
mosaicstack/stack:fix/860-deflake-mutator-lease-gate
mosaicstack/stack:fix/850-detect-platform-port-normalization
mosaicstack/stack:fix/856-worktree-deps-preflight
mosaicstack/stack:fix/835-pr-review-approve-reject-comment-flag
mosaicstack/stack:fix/848-truthful-evidence
mosaicstack/stack:fix/812-pr-review-comment
mosaicstack/stack:fix/849-recovery-runtime-fixture-race
mosaicstack/stack:docs/758-ledger-m5-001-sync
mosaicstack/stack:feat/834-tc-server-side-doc
mosaicstack/stack:feat/833-constrained-recovery-command
mosaicstack/stack:feat/827-gate0-probe
mosaicstack/stack:governance/gate0-probe3-amendment
mosaicstack/stack:fix/795-codex-pr-diff
mosaicstack/stack:fix/795-ci-base-jq
mosaicstack/stack:fix/795-ci-base-git
mosaicstack/stack:feat/791-pr3-fleet-regen
mosaicstack/stack:feat/791-pr2-snapshot-restore
mosaicstack/stack:fix/807-glpi-206
mosaicstack/stack:fix/808-agent-send-false-sender
mosaicstack/stack:feat/791-upgrade-config-protection
mosaicstack/stack:feat/790-mosaic-yolo-claudex-pr2
mosaicstack/stack:feat/790-mosaic-yolo-claudex
mosaicstack/stack:feat/758-v1-v2-migrator
mosaicstack/stack:fix/766-exact-fleet-comms
mosaicstack/stack:test/758-reconciler-lifecycle-gates
mosaicstack/stack:docs/771-kbn101-db-role-split
mosaicstack/stack:test/758-example-profile-dispositions
mosaicstack/stack:feat/758-shared-role-resolution
mosaicstack/stack:feat/mos-logical-identity-fencing
mosaicstack/stack:feat/769-kbn100-unified-schema
mosaicstack/stack:docs/753-kbn010-threat-gate
mosaicstack/stack:feat/758-roster-v2-compiler
mosaicstack/stack:feat/756-official-discord-plugin
mosaicstack/stack:docs/758-fleet-config-management
mosaicstack/stack:fix/mos-option2-qualification-format
mosaicstack/stack:docs/issue-758-m0
mosaicstack/stack:docs/mos-option2-qualification
mosaicstack/stack:mos-comms
mosaicstack/stack:feat/tess-interaction-agent
mosaicstack/stack:fix/tess-docs-format
mosaicstack/stack:draft/mosaic-platform-prd
mosaicstack/stack:fix/installer-provider-gate-and-local-gateway-redis
mosaicstack/stack:release/mosaic-cli-0.0.37
mosaicstack/stack:feat/framework-constitution-alpha
mosaicstack/stack:fix/git-wrapper-repo-detection
mosaicstack/stack:fix/woodpecker-wrapper-legacy-mosaic
mosaicstack/stack:fix/t-a292e96f-gitea-pr-metadata
mosaicstack/stack:fix/gitea-pr-metadata-login-t-a292e96f
mosaicstack/stack:fix/t_a292e96f-pr-metadata-gitea
mosaicstack/stack:fix/t_3a368a52-gitea-usc-login
mosaicstack/stack:fix/bootstrap-hotfix
mosaicstack/stack:fix/populate-known-packages-list
mosaicstack/stack:fix/idempotent-init
mosaicstack/stack:v0.0.39-alpha
mosaicstack/stack:mosaic-v0.0.31
mosaicstack/stack:fed-v0.2.0-m2
mosaicstack/stack:fed-v0.1.0-m1
mosaicstack/stack:mosaic-v0.0.29
mosaicstack/stack:mosaic-v0.0.28
mosaicstack/stack:mosaic-v0.0.27
mosaicstack/stack:mosaic-v0.0.26
mosaicstack/stack:mosaic-v0.0.25
mosaicstack/stack:mosaic-v0.0.24
mosaicstack/stack:v0.2.0
mosaicstack/stack:v0.1.0
mosaicstack/stack:v0.0.8
mosaicstack/stack:v0.0.7
mosaicstack/stack:v0.0.6
mosaicstack/stack:v0.0.5
mosaicstack/stack:v0.0.4
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ea806262c8 |
test(gateway): size the enrollment clamp tolerance to CI jitter, not to a fast machine
ci/woodpecker/pr/ci Pipeline was successful
Closes #1090. `clamps ttlSeconds to 900` asserted a wall-clock delta against a fixed 100 ms budget: expect(expiresMs - before).toBeLessThanOrEqual(900_000 + 100); That budget covers everything between `Date.now()` and the service computing `expiresAt`. On a loaded CI agent — this step runs alongside a Postgres service container and several other workspaces — it came back at 900_106 and failed by 6 ms (#1090, observed on pipeline 2258). The property under test is CLAMPING: a 9999s request must come back as 900s. The gap between clamped and unclamped is 9_099_000 ms, so the tolerance only has to exceed scheduler jitter to stay discriminating: clamped ~900_000 ms <= 905_000 ✓ < 1_000_000 ✓ unclamped ~9_999_000 ms <= 905_000 ✗ < 1_000_000 ✗ A 5s allowance consumes 0.055% of that margin, and an unclamped implementation still misses by three orders of magnitude. Also pins the clamp explicitly with `toBeLessThan(1_000_000)`, so the property is asserted independently of any timing allowance — widening the jitter budget later cannot silently weaken it. NOT DONE: I could not execute vitest here (no node_modules; a full install is minutes). The discrimination argument above is arithmetic, not an executed red/green. A reviewer should run the suite, and if it is cheap, confirm that removing the clamp in the service still fails this test. |
1 changed files with 14 additions and 2 deletions
@@ -245,9 +245,21 @@ describe('EnrollmentService.createToken', () => {
|
||||
const after = Date.now();
|
||||
|
||||
const expiresMs = new Date(result.expiresAt).getTime();
|
||||
// Should be at most 900s from now
|
||||
expect(expiresMs - before).toBeLessThanOrEqual(900_000 + 100);
|
||||
|
||||
// The property under test is CLAMPING: a 9999s request must come back as 900s.
|
||||
// The gap between clamped and unclamped is 9_099_000 ms, so the tolerance below
|
||||
// only has to exceed CI scheduling jitter — it does not need to be tight to keep
|
||||
// the assertion discriminating. A 5s allowance consumes 0.05% of that margin and
|
||||
// an unclamped result still misses by three orders of magnitude.
|
||||
//
|
||||
// It was 100ms and failed on a loaded agent at 900_106 — 6ms over (#1090). A
|
||||
// wall-clock budget sized to a fast machine is a flake, not a tighter test.
|
||||
const CI_JITTER_MS = 5_000;
|
||||
expect(expiresMs - before).toBeLessThanOrEqual(900_000 + CI_JITTER_MS);
|
||||
expect(expiresMs - after).toBeGreaterThanOrEqual(0);
|
||||
// Explicitly pin the clamp itself, independent of any timing allowance:
|
||||
// unclamped (9999s) would exceed this by ~9_099_000 ms.
|
||||
expect(expiresMs - before).toBeLessThan(1_000_000);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.