Skip to content

test(bake): wait for the held compile stamp, never sample HeldCount (red on #6132 shard 5) - #6169

Merged
rbuergi merged 1 commit into
mainfrom
fix/gated-sweep-held-count-waits
Oct 5, 2026
Merged

rbuergi merged 1 commit into
mainfrom
fix/gated-sweep-held-count-waits

Conversation

@rbuergi

@rbuergi rbuergi commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Red

Core #6132 shard 5 (run 37338956752) failed in MeshWeaver.Hosting.Test.AGatedSweepHearsItsOwnCompileTest.AProvisionalSweep_ReportsCompiled_ThoughItsStampIsHeld with Expected 0 to be greater than 0 because the compile stamp waits for the bake's verdict. #6132 (instance reboot) touches nothing on this path: not the publication gate, the pre-warmer or the compile pipeline. So this is a race in the test that can hit any PR.

Root cause

The test reads MeshPublicationGate.HeldCount once, straight after WarmOne answers Compiled. The two events it compares are ordered the other way round on purpose:

So the single read can land between the two and see 0.

Fix (test only)

Wait for HeldCount > 0 within TestTimeouts.Convergence instead of sampling it, using the sanctioned interval re-query. Then check that the shared record does not carry the build; that check is now made once the stamp is known to be held, which is what makes it meaningful. No bound is raised and production code is unchanged.

Verification

  • MeshWeaver.Hosting.Test Release -warnaserror: 0 warnings, 0 errors.
  • --filter AGatedSweepHearsItsOwnCompileTest: 2/2 pass locally.
  • Not reproduced: the CI race itself needs the release-create observation to trail the witness by more than the read's window.

Pairs-with: none — test-only change; no public surface touched.

🤖 Generated with Claude Code

AGatedSweepHearsItsOwnCompileTest.AProvisionalSweep_ReportsCompiled_ThoughItsStampIsHeld
read MeshPublicationGate.HeldCount once, right after the warm answered Compiled.
By design the process-local witness (LocalNodeTypeBuilds) is published BEFORE the
stamp, and the stamp is offered to the gate only after the release-create
observation completes — so the read could land in between and see 0 (core #6132
shard 5, run 37338956752: 'Expected 0 to be greater than 0 because the compile
stamp waits for the bake's verdict'; #6132 touches none of this).

The test now waits for HeldCount > 0 within TestTimeouts.Convergence, then checks
the record does not carry the build.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@meshweaver-cloud
meshweaver-cloud Bot enabled auto-merge October 5, 2026 17:22
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit 9f28073.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit 9f28073.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

0 files   -     5  0 suites   - 5   0s ⏱️ - 3m 58s
0 tests  - 1 279  0 ✅  - 1 279  0 💤 ±0  0 ❌ ±0 
0 runs   - 1 280  0 ✅  - 1 280  0 💤 ±0  0 ❌ ±0 

Results for commit 9f28073. ± Comparison against base commit 64a828a.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit 9f28073.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

  1 files   -  2    1 suites   - 2   2m 17s ⏱️ - 1m 7s
598 tests +32  598 ✅ +223  0 💤  - 191  0 ❌ ±0 
599 runs  +29  599 ✅ +220  0 💤  - 191  0 ❌ ±0 

Results for commit 9f28073. ± Comparison against base commit 64a828a.

This pull request removes 566 and adds 598 tests. Note that renamed tests count towards both.
MeshWeaver.FaultInjection.Test.AHeldReadFollowsItsOwnersHandOffTest ‑ TheOwnerIsHandedOffAwayFromTheHolder_AndTheHeldReadDeliversTheWrite
MeshWeaver.FaultInjection.Test.AHeldReadFollowsItsOwnersHandOffWithoutTheChangeFeedTest ‑ WithoutTheChangeFeed_TheHeldReadFollowsTheOwner_ThroughTheHeartbeat
MeshWeaver.FaultInjection.Test.AHeldReadOnAThirdSiloSurvivesTheOwnerSiloKillTest ‑ TheOwnerSiloIsKilled_AndAWriteFromAThirdSilo_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadOnAThirdSiloSurvivesTheOwnerSiloKillWithoutInvalidationTest ‑ TheOwnerSiloIsKilled_AndAWriteFromAThirdSilo_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadSurvivesItsSourceSiloBeingKilledTest ‑ AWriteAfterTheOwnerSiloLeft_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadSurvivesItsSourceSiloDrainingTest ‑ AWriteAfterTheOwnerSiloLeft_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.ARoutedWriteRightAfterItsCreateTest ‑ ACreateAcknowledged_IsWritableAtOnce_FromTheOtherSilo
MeshWeaver.FaultInjection.Test.ARoutedWriteRightAfterItsCreateTest ‑ ACrossReplicaCreate_UnderAnExistingParent_WithALateNotification_IsWritableByTheProber
MeshWeaver.FaultInjection.Test.ARoutedWriteRightAfterItsCreateTest ‑ ACrossReplicaCreate_WithALateNotification_IsWritableByTheProber_BeforeTheNotificationArrives
MeshWeaver.FaultInjection.Test.ARoutedWriteRightAfterItsCreateTest ‑ APreCreateProbe_DoesNotPoisonTheFirstWriteAfterTheCreate
…
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ ADefinitionThatDidNotMove_CompilesFromTheBatchSet
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ ADefinitionThatMovedDuringTheSweep_IsJudgedAsItNowStands(newCode: "public static class ConsumerApi { public static in"···, expected: CompileError)
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ ADefinitionThatMovedDuringTheSweep_IsJudgedAsItNowStands(newCode: "public static class ConsumerApi { public static in"···, expected: Compiled)
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ AGenuineCompileError_StillGates
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ AMovedDefinitionWhoseSourcesCannotBeEstablished_IsNotEvaluated
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ ASourceEditedUnderUnchangedQueries_IsCompiledAsItNowStands
MeshWeaver.Hosting.Test.ABakeCompilesTheDefinitionItResolvedTest ‑ ATypePrunedDuringTheSweep_IsRemoved_AndNotRecreated
MeshWeaver.Hosting.Test.ACloseCarriesItsReasonTest ‑ AnAbsentOrUnknownReasonIsUnknown_NotCompleted(wireValue: "   ")
MeshWeaver.Hosting.Test.ACloseCarriesItsReasonTest ‑ AnAbsentOrUnknownReasonIsUnknown_NotCompleted(wireValue: "")
MeshWeaver.Hosting.Test.ACloseCarriesItsReasonTest ‑ AnAbsentOrUnknownReasonIsUnknown_NotCompleted(wireValue: "some_reason_github_has_not_invented_yet")
…

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

510 tests   - 1 243   510 ✅  - 1 241   6m 19s ⏱️ +37s
  1 suites  -     3     0 💤  -     2 
  1 files    -     3     0 ❌ ±    0 

Results for commit 9f28073. ± Comparison against base commit 64a828a.

This pull request removes 1753 and adds 510 tests. Note that renamed tests count towards both.
MeshWeaver.ContentCollections.Test.ContentCollectionClaimApplyRaceTest ‑ TornIngestOvertakenBetweenClaimAndPost_CannotOverwriteTheLaterTriggeredArticle
MeshWeaver.ContentCollections.Test.ContentCollectionConnectionOwnedByHubTest ‑ AfterTheHubsTeardown_GetCollectionIsRefused_NotServedFromTheReplay
MeshWeaver.ContentCollections.Test.ContentCollectionDiesWithItsHubTest ‑ DisposingTheHub_DisposesTheCollectionsItsContentServiceCreated
MeshWeaver.ContentCollections.Test.ContentCollectionIngestOrderTest ‑ TornReadFromTheCreatedEvent_CannotOverwriteTheCompleteArticle
MeshWeaver.ContentCollections.Test.ContentCollectionWriteIngestTest ‑ SaveFile_ingests_the_article_without_the_watcher
MeshWeaver.ContentCollections.Test.ContentCollectionWriteReadRaceTest ‑ Write_Succeeds_While_A_Concurrent_Read_Holds_The_File
MeshWeaver.ContentCollections.Test.ContentDeleteNotificationTest ‑ A_collection_already_qualified_by_its_address_is_not_qualified_twice
MeshWeaver.ContentCollections.Test.ContentDeleteNotificationTest ‑ Deleting_a_file_notifies_observers_with_the_qualified_collection_path
MeshWeaver.ContentCollections.Test.ContentDeleteNotificationTest ‑ Deleting_a_folder_notifies_observers_once_per_contained_file
MeshWeaver.ContentCollections.Test.ContentServiceDelegationTest ‑ ContentService_ShouldDelegateToParent
…
MeshWeaver.Hosting.Test.ABakedTypeRegistersWithoutAnInstanceTest ‑ ABakedTypeNobodyActivated_IsRegisteredByThePass_WithoutARecompile
MeshWeaver.Hosting.Test.ABakedTypeRegistersWithoutAnInstanceTest ‑ ATypeWithNoBuild_IsSkipped_NotCompiled
MeshWeaver.Hosting.Test.ADeletedPartitionIsNotPumpedTest ‑ AConfirmedAbsentPartition_SkipsTheTypeAndNamesThePartition
MeshWeaver.Hosting.Test.ADeletedPartitionIsNotPumpedTest ‑ APartitionNobodyDenied_IsWarmedAsBefore(typePath: "Admin/User", because: "a live partition is warmed")
MeshWeaver.Hosting.Test.ADeletedPartitionIsNotPumpedTest ‑ APartitionNobodyDenied_IsWarmedAsBefore(typePath: "Markdown", because: "a type with no partition segment at all is warmed")
MeshWeaver.Hosting.Test.ADeletedPartitionIsNotPumpedTest ‑ APartitionNobodyDenied_IsWarmedAsBefore(typePath: "UWDeepfieldExtra/Thing", because: "a partition whose NAME merely starts the same is w"···)
MeshWeaver.Hosting.Test.ADeletedPartitionIsNotPumpedTest ‑ AProviderThatKnowsItsStore_ConfirmsAbsence
MeshWeaver.Hosting.Test.ADeletedPartitionIsNotPumpedTest ‑ AProviderThatThrowsSynchronously_IsIndeterminate_NotAnEscapingException
MeshWeaver.Hosting.Test.ADeletedPartitionIsNotPumpedTest ‑ ASkippedType_DoesNotHoldReadiness
MeshWeaver.Hosting.Test.ADeletedPartitionIsNotPumpedTest ‑ ASkippedType_IsCountedAsContentBroken_NotAsAFault
…

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Test Results

    2 files      2 suites   8m 36s ⏱️
1 108 tests 1 108 ✅ 0 💤 0 ❌
1 109 runs  1 109 ✅ 0 💤 0 ❌

Results for commit 9f28073.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

thread:pr-systemorph-meshweaver-6169-d2a470 https://memex.systemorph.com/Hosting/Triage/_Thread/pr-systemorph-meshweaver-6169

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant