vaibify 0.2.2__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2417) hide show
  1. vaibify-0.3.0/.claude/skills/reproducibility-lane/SKILL.md +1104 -0
  2. vaibify-0.3.0/.github/workflows/falsification.yml +413 -0
  3. vaibify-0.3.0/PKG-INFO +139 -0
  4. vaibify-0.3.0/README.md +65 -0
  5. vaibify-0.3.0/docs/agentCouncil.md +422 -0
  6. vaibify-0.3.0/docs/aiUse.md +251 -0
  7. vaibify-0.3.0/docs/architecture.md +4295 -0
  8. vaibify-0.3.0/docs/cli.md +687 -0
  9. vaibify-0.3.0/docs/developers.md +377 -0
  10. vaibify-0.3.0/docs/environmentsAndProjects.md +873 -0
  11. vaibify-0.3.0/docs/externalResources.md +566 -0
  12. vaibify-0.3.0/docs/forAgents.md +338 -0
  13. vaibify-0.3.0/docs/install.md +486 -0
  14. vaibify-0.3.0/docs/lessons.md +720 -0
  15. vaibify-0.3.0/docs/proofLadder.md +423 -0
  16. vaibify-0.3.0/docs/quickStart.md +221 -0
  17. vaibify-0.3.0/docs/reproducibility.md +544 -0
  18. vaibify-0.3.0/docs/security.md +607 -0
  19. vaibify-0.3.0/docs/systemPrompt.md +32 -0
  20. vaibify-0.3.0/tests/assessedRerunLaneHarness.py +120 -0
  21. vaibify-0.3.0/tests/browser/conftest.py +772 -0
  22. vaibify-0.3.0/tests/browser/fakeDockerAdapter.py +975 -0
  23. vaibify-0.3.0/tests/browser/testALateAnswerNeverRepaintsAViewer.py +178 -0
  24. vaibify-0.3.0/tests/browser/testAProjectIsRenamedFromItsCard.py +128 -0
  25. vaibify-0.3.0/tests/browser/testAStartInFlightIsHeldByThisTab.py +54 -0
  26. vaibify-0.3.0/tests/browser/testAZoomedFigureKeepsItsLeftEdge.py +106 -0
  27. vaibify-0.3.0/tests/browser/testAnEnvironmentIsRenamedFromItsTile.py +142 -0
  28. vaibify-0.3.0/tests/browser/testAnUnfinishedListingIsNotTheBaseline.py +109 -0
  29. vaibify-0.3.0/tests/browser/testAnUnreadableBindingRecordIsMovedAside.py +78 -0
  30. vaibify-0.3.0/tests/browser/testCompareManifests.py +511 -0
  31. vaibify-0.3.0/tests/browser/testLeavingAProjectClosesIt.py +319 -0
  32. vaibify-0.3.0/tests/browser/testManifestCheckReportOnScreen.py +134 -0
  33. vaibify-0.3.0/tests/browser/testProjectBlockShowsItCanBeOpened.py +95 -0
  34. vaibify-0.3.0/tests/browser/testQuitVaibify.py +128 -0
  35. vaibify-0.3.0/tests/browser/testRemoteBindingDialogIsTheServers.py +480 -0
  36. vaibify-0.3.0/tests/browser/testStepReorderUsesAPrivateDragType.py +119 -0
  37. vaibify-0.3.0/tests/browser/testTheGraphLeavesOtherViewersAlone.py +192 -0
  38. vaibify-0.3.0/tests/browser/testTheHubsSayWhichVaibifyIsRunning.py +61 -0
  39. vaibify-0.3.0/tests/browser/testTheImageTrustModalAsksBeforeAnUnbuiltImageRuns.py +334 -0
  40. vaibify-0.3.0/tests/browser/testTheLaneNeverResolvesTheResearchersSecretRoot.py +37 -0
  41. vaibify-0.3.0/tests/browser/testTheLevelColorHasOneHome.py +324 -0
  42. vaibify-0.3.0/tests/browser/testTheLevelMarksRenderTheLevelsHue.py +170 -0
  43. vaibify-0.3.0/tests/browser/testTheLevelTwoRemoteRowsRenderTheirState.py +277 -0
  44. vaibify-0.3.0/tests/browser/testTheNetworkRowShowsOnlyWhatNeedsAttention.py +90 -0
  45. vaibify-0.3.0/tests/browser/testThePromptRecordViewerShowsAGeminiRewind.py +131 -0
  46. vaibify-0.3.0/tests/browser/testThePromptRecordViewerShowsTheRecord.py +137 -0
  47. vaibify-0.3.0/tests/browser/testTheReachApprovalModalAsksBeforeAWideningStart.py +122 -0
  48. vaibify-0.3.0/tests/browser/testTheStepsBannerSkipsANeverRunDeclaration.py +96 -0
  49. vaibify-0.3.0/tests/browser/testTheX11OptInIsOffByDefaultAndExcludesIsolation.py +289 -0
  50. vaibify-0.3.0/tests/browser/testTheZenodoRowSaysWhichReceiptItCarries.py +139 -0
  51. vaibify-0.3.0/tests/browser/testTheZenodoTokenBannerIsTheServers.py +220 -0
  52. vaibify-0.3.0/tests/browser/testViewersBelongToTheirProject.py +293 -0
  53. vaibify-0.3.0/tests/browser/testVisibleTextIsLegible.py +241 -0
  54. vaibify-0.3.0/tests/conftest.py +858 -0
  55. vaibify-0.3.0/tests/falsificationRegistry.py +40419 -0
  56. vaibify-0.3.0/tests/guardCoverageSeed.json +233 -0
  57. vaibify-0.3.0/tests/homeVisibleTempRoot.py +46 -0
  58. vaibify-0.3.0/tests/hostCapabilityInventory.json +192 -0
  59. vaibify-0.3.0/tests/lifecycleLockHolder.py +49 -0
  60. vaibify-0.3.0/tests/mutationInventory.json +712 -0
  61. vaibify-0.3.0/tests/quitChildHub.py +90 -0
  62. vaibify-0.3.0/tests/remoteAccessServer.py +148 -0
  63. vaibify-0.3.0/tests/remoteBindingFixtures.py +74 -0
  64. vaibify-0.3.0/tests/styleInventory.json +338 -0
  65. vaibify-0.3.0/tests/syncStatusFixtures.py +190 -0
  66. vaibify-0.3.0/tests/testATestFileTheStepRunsIsNeverNew.py +120 -0
  67. vaibify-0.3.0/tests/testAboutVaibify.py +50 -0
  68. vaibify-0.3.0/tests/testAdvancingALevelNeverLowersOne.py +865 -0
  69. vaibify-0.3.0/tests/testAgentLaneEnforcement.py +821 -0
  70. vaibify-0.3.0/tests/testAiDeclarationFileLive.py +264 -0
  71. vaibify-0.3.0/tests/testAllowHostRoute.py +184 -0
  72. vaibify-0.3.0/tests/testArchitecturalInvariants.py +9204 -0
  73. vaibify-0.3.0/tests/testArchiveReadNamesAMissingMount.py +315 -0
  74. vaibify-0.3.0/tests/testArchiveReadNamesAMissingMountLive.py +145 -0
  75. vaibify-0.3.0/tests/testAssessedRerunLane.py +562 -0
  76. vaibify-0.3.0/tests/testAutoArchive.py +401 -0
  77. vaibify-0.3.0/tests/testBasenameCollisionBlocksLevelTwo.py +103 -0
  78. vaibify-0.3.0/tests/testBatchedSmallFileRead.py +239 -0
  79. vaibify-0.3.0/tests/testBindMountDenyListReadsTheFilesystem.py +134 -0
  80. vaibify-0.3.0/tests/testBindMountReadOnlyDefault.py +339 -0
  81. vaibify-0.3.0/tests/testBindMountValidator.py +744 -0
  82. vaibify-0.3.0/tests/testBindingConfirmation.py +507 -0
  83. vaibify-0.3.0/tests/testBindingRecordSetAside.py +196 -0
  84. vaibify-0.3.0/tests/testBlindSpotDispositions.py +595 -0
  85. vaibify-0.3.0/tests/testBlockersExplainEveryRefusal.py +145 -0
  86. vaibify-0.3.0/tests/testBroadHandlersPassControlPlaneRefusals.py +468 -0
  87. vaibify-0.3.0/tests/testBrowserLaneContract.py +192 -0
  88. vaibify-0.3.0/tests/testCapabilityAuthorities.py +1162 -0
  89. vaibify-0.3.0/tests/testCarrierMigratedRoutes.py +8449 -0
  90. vaibify-0.3.0/tests/testClaimSurvivesTheDisclosure.py +276 -0
  91. vaibify-0.3.0/tests/testCliMessagesPointTheRightWay.py +161 -0
  92. vaibify-0.3.0/tests/testCommandRevoke.py +208 -0
  93. vaibify-0.3.0/tests/testCommandStartGui.py +356 -0
  94. vaibify-0.3.0/tests/testConcurrentProjectRuns.py +408 -0
  95. vaibify-0.3.0/tests/testConfinedContainerWrite.py +449 -0
  96. vaibify-0.3.0/tests/testConfinedTreeWriteLive.py +432 -0
  97. vaibify-0.3.0/tests/testConfinedWriteLive.py +174 -0
  98. vaibify-0.3.0/tests/testConfinedWriteParity.py +143 -0
  99. vaibify-0.3.0/tests/testConftestManagerVersioning.py +627 -0
  100. vaibify-0.3.0/tests/testContainerGit.py +357 -0
  101. vaibify-0.3.0/tests/testContainerLifecycleGating.py +215 -0
  102. vaibify-0.3.0/tests/testContainerManager.py +738 -0
  103. vaibify-0.3.0/tests/testContainerManagerFull.py +462 -0
  104. vaibify-0.3.0/tests/testConversionLifecycle.py +743 -0
  105. vaibify-0.3.0/tests/testConversionWritesAgreeingNetworkKeys.py +87 -0
  106. vaibify-0.3.0/tests/testCopyDirectoryLive.py +101 -0
  107. vaibify-0.3.0/tests/testCouncilCampaignIdentity.py +249 -0
  108. vaibify-0.3.0/tests/testCouncilControllerIntegration.py +569 -0
  109. vaibify-0.3.0/tests/testCouncilControllerLive.py +212 -0
  110. vaibify-0.3.0/tests/testCouncilCredentialGate.py +301 -0
  111. vaibify-0.3.0/tests/testCouncilCredentialRoutes.py +326 -0
  112. vaibify-0.3.0/tests/testCouncilReadiness.py +511 -0
  113. vaibify-0.3.0/tests/testCouncilRoutes.py +2251 -0
  114. vaibify-0.3.0/tests/testCoverageBoost.py +1217 -0
  115. vaibify-0.3.0/tests/testCoverageCliBuildStartReproduce.py +571 -0
  116. vaibify-0.3.0/tests/testCoverageCliDoctorCommand.py +680 -0
  117. vaibify-0.3.0/tests/testCoverageCoreTerminalSession.py +331 -0
  118. vaibify-0.3.0/tests/testCoverageCouncilGatewayLifecycle.py +1887 -0
  119. vaibify-0.3.0/tests/testCoverageDockerConnectionTransfers.py +817 -0
  120. vaibify-0.3.0/tests/testCoverageDockerConnectionTypedReads.py +839 -0
  121. vaibify-0.3.0/tests/testCoverageDockerContainerManager.py +496 -0
  122. vaibify-0.3.0/tests/testCoverageGaps.py +1769 -0
  123. vaibify-0.3.0/tests/testCoverageReproducibilityOverleafSync.py +324 -0
  124. vaibify-0.3.0/tests/testCoverageReproducibilityScheduledReverify.py +434 -0
  125. vaibify-0.3.0/tests/testCoverageRoutesAEnvironmentArchive.py +878 -0
  126. vaibify-0.3.0/tests/testCoverageRoutesAFileRoutes.py +957 -0
  127. vaibify-0.3.0/tests/testCoverageRoutesAPipelineSideEffects.py +672 -0
  128. vaibify-0.3.0/tests/testCoverageRoutesAPromotionRecovery.py +586 -0
  129. vaibify-0.3.0/tests/testCoverageRoutesBAppFactory.py +360 -0
  130. vaibify-0.3.0/tests/testCoverageRoutesBBuild.py +446 -0
  131. vaibify-0.3.0/tests/testCoverageRoutesBReproducibility.py +877 -0
  132. vaibify-0.3.0/tests/testCoverageRoutesBSync.py +701 -0
  133. vaibify-0.3.0/tests/testCoverageTargeted.py +725 -0
  134. vaibify-0.3.0/tests/testCredentialIsolation.py +214 -0
  135. vaibify-0.3.0/tests/testDeleteEnvironmentRoute.py +361 -0
  136. vaibify-0.3.0/tests/testDependencyPinning.py +546 -0
  137. vaibify-0.3.0/tests/testDependencyScan.py +219 -0
  138. vaibify-0.3.0/tests/testDependencyScanRoutes.py +243 -0
  139. vaibify-0.3.0/tests/testDockerConnection.py +1248 -0
  140. vaibify-0.3.0/tests/testDoctorNetworkGraph.py +631 -0
  141. vaibify-0.3.0/tests/testDoctorProjectScope.py +234 -0
  142. vaibify-0.3.0/tests/testDraftRoutes.py +473 -0
  143. vaibify-0.3.0/tests/testEgressProxy.py +248 -0
  144. vaibify-0.3.0/tests/testEnvelopeSnapshot.py +276 -0
  145. vaibify-0.3.0/tests/testEnvironmentArchivePromotion.py +275 -0
  146. vaibify-0.3.0/tests/testEnvironmentArchiveRoutes.py +393 -0
  147. vaibify-0.3.0/tests/testEnvironmentInfoRoute.py +149 -0
  148. vaibify-0.3.0/tests/testEnvironmentRename.py +748 -0
  149. vaibify-0.3.0/tests/testEnvironmentRenameLive.py +198 -0
  150. vaibify-0.3.0/tests/testEveryVerifyLaneSettlesItsBadge.py +231 -0
  151. vaibify-0.3.0/tests/testExecArgumentBudget.py +213 -0
  152. vaibify-0.3.0/tests/testExecLane.py +516 -0
  153. vaibify-0.3.0/tests/testExecLaneInvariant.py +264 -0
  154. vaibify-0.3.0/tests/testExecLaneLive.py +283 -0
  155. vaibify-0.3.0/tests/testExecutionProfiles.py +1031 -0
  156. vaibify-0.3.0/tests/testExitedContainerEvidence.py +197 -0
  157. vaibify-0.3.0/tests/testFalsificationRoutesMutationCoverage.py +160 -0
  158. vaibify-0.3.0/tests/testFileEdgesAreSafe.py +91 -0
  159. vaibify-0.3.0/tests/testGithubBadgeMeansAgreementNotCleanliness.py +227 -0
  160. vaibify-0.3.0/tests/testGuiSignalsItsCategory.py +80 -0
  161. vaibify-0.3.0/tests/testHostCancel.py +504 -0
  162. vaibify-0.3.0/tests/testHostConfinedWrite.py +164 -0
  163. vaibify-0.3.0/tests/testHostCpuAccounting.py +122 -0
  164. vaibify-0.3.0/tests/testHostDeterminismEnvironment.py +232 -0
  165. vaibify-0.3.0/tests/testHostGitAndReposPanel.py +744 -0
  166. vaibify-0.3.0/tests/testHostModeContainerOnlyRefusals.py +469 -0
  167. vaibify-0.3.0/tests/testHostModeHonestyGates.py +364 -0
  168. vaibify-0.3.0/tests/testHostPathGuardCorpus.py +355 -0
  169. vaibify-0.3.0/tests/testHostQuarantineSurface.py +289 -0
  170. vaibify-0.3.0/tests/testHubQuit.py +489 -0
  171. vaibify-0.3.0/tests/testHubQuitChildren.py +237 -0
  172. vaibify-0.3.0/tests/testImageTrustGuardsTheLaunch.py +328 -0
  173. vaibify-0.3.0/tests/testImageTrustLive.py +173 -0
  174. vaibify-0.3.0/tests/testIsolationGating.py +472 -0
  175. vaibify-0.3.0/tests/testL3Attestation.py +278 -0
  176. vaibify-0.3.0/tests/testLevelGateL2Arxiv.py +533 -0
  177. vaibify-0.3.0/tests/testLevelGateL3EndToEnd.py +323 -0
  178. vaibify-0.3.0/tests/testLevelGates.py +495 -0
  179. vaibify-0.3.0/tests/testLevelGatesMutationCoverage.py +381 -0
  180. vaibify-0.3.0/tests/testLevelGatesRefusalPropagation.py +312 -0
  181. vaibify-0.3.0/tests/testLevelTwoAsksWhatAReaderIsServed.py +579 -0
  182. vaibify-0.3.0/tests/testLevelTwoGapsAgreeWithTheGate.py +78 -0
  183. vaibify-0.3.0/tests/testLifecycleLock.py +573 -0
  184. vaibify-0.3.0/tests/testLifecycleRouteAuthority.py +454 -0
  185. vaibify-0.3.0/tests/testLockInputFallsBackToVaibifyRequirements.py +200 -0
  186. vaibify-0.3.0/tests/testLockedJsonRecord.py +211 -0
  187. vaibify-0.3.0/tests/testLoggingHygiene.py +131 -0
  188. vaibify-0.3.0/tests/testManifestDifferencesNameWhatWasMeasured.py +195 -0
  189. vaibify-0.3.0/tests/testMissingFileBadges.py +199 -0
  190. vaibify-0.3.0/tests/testMutationBoundary.py +422 -0
  191. vaibify-0.3.0/tests/testMutationInventory.py +2196 -0
  192. vaibify-0.3.0/tests/testNarrowLlmFallback.py +314 -0
  193. vaibify-0.3.0/tests/testNetworkMode.py +474 -0
  194. vaibify-0.3.0/tests/testOutputProvenance.py +397 -0
  195. vaibify-0.3.0/tests/testOverleafPullLive.py +129 -0
  196. vaibify-0.3.0/tests/testOverleafSync.py +296 -0
  197. vaibify-0.3.0/tests/testOverleafSyncExtended.py +956 -0
  198. vaibify-0.3.0/tests/testOverleafTokenStaysOffTheCommandLine.py +248 -0
  199. vaibify-0.3.0/tests/testPaletteContrast.py +199 -0
  200. vaibify-0.3.0/tests/testPerTestMarkerEndToEnd.py +304 -0
  201. vaibify-0.3.0/tests/testPipelineRoutesCoverage.py +2375 -0
  202. vaibify-0.3.0/tests/testPipelineRunnerBranches.py +479 -0
  203. vaibify-0.3.0/tests/testPipelineRunnerFull.py +1164 -0
  204. vaibify-0.3.0/tests/testPipelineRunnerHeartbeat.py +187 -0
  205. vaibify-0.3.0/tests/testPipelineRunnerMutationCoverage.py +266 -0
  206. vaibify-0.3.0/tests/testPipelineRunnerOffLoop.py +216 -0
  207. vaibify-0.3.0/tests/testPipelineServerFull.py +604 -0
  208. vaibify-0.3.0/tests/testPipelineServerRoutes.py +1243 -0
  209. vaibify-0.3.0/tests/testPipelineStateHostIncidents.py +275 -0
  210. vaibify-0.3.0/tests/testPipelineStateLiveness.py +250 -0
  211. vaibify-0.3.0/tests/testPipelineStateMock.py +178 -0
  212. vaibify-0.3.0/tests/testPipelineStateWriter.py +391 -0
  213. vaibify-0.3.0/tests/testPreRunWarningsReachTheRunLog.py +55 -0
  214. vaibify-0.3.0/tests/testPreflightNamesTheCauseNotTheCascade.py +145 -0
  215. vaibify-0.3.0/tests/testPreflightValidation.py +303 -0
  216. vaibify-0.3.0/tests/testProjectEgress.py +218 -0
  217. vaibify-0.3.0/tests/testProjectEgressLive.py +201 -0
  218. vaibify-0.3.0/tests/testProjectHeaderNeverOutranksItsRows.py +454 -0
  219. vaibify-0.3.0/tests/testProjectRename.py +399 -0
  220. vaibify-0.3.0/tests/testProjectRepoDetection.py +602 -0
  221. vaibify-0.3.0/tests/testPromoteToHostProjectRoute.py +485 -0
  222. vaibify-0.3.0/tests/testPromptRecordManager.py +734 -0
  223. vaibify-0.3.0/tests/testProofCatalogAgrees.py +561 -0
  224. vaibify-0.3.0/tests/testProofLadderUncoveredLines.py +937 -0
  225. vaibify-0.3.0/tests/testProofObservation.py +415 -0
  226. vaibify-0.3.0/tests/testProofReceiptCheckpoint.py +240 -0
  227. vaibify-0.3.0/tests/testProofReceiptCompletion.py +924 -0
  228. vaibify-0.3.0/tests/testProofReceiptDocument.py +445 -0
  229. vaibify-0.3.0/tests/testProofReceiptWrite.py +294 -0
  230. vaibify-0.3.0/tests/testPublicationScopeSeparatesTheLevels.py +897 -0
  231. vaibify-0.3.0/tests/testPullFileConfinedLive.py +85 -0
  232. vaibify-0.3.0/tests/testPullManuscriptRoute.py +183 -0
  233. vaibify-0.3.0/tests/testQuickStartJourneyThroughRoutesLive.py +767 -0
  234. vaibify-0.3.0/tests/testQuickStartReaderJourneyLive.py +188 -0
  235. vaibify-0.3.0/tests/testQuitGateCoverage.py +107 -0
  236. vaibify-0.3.0/tests/testQuitRealProcess.py +191 -0
  237. vaibify-0.3.0/tests/testReachApprovalCommandLine.py +107 -0
  238. vaibify-0.3.0/tests/testReachApprovalGuardsTheLaunch.py +356 -0
  239. vaibify-0.3.0/tests/testReaderAccessIsObservedAnonymously.py +656 -0
  240. vaibify-0.3.0/tests/testRegistryManager.py +852 -0
  241. vaibify-0.3.0/tests/testRegistryRoutes.py +1097 -0
  242. vaibify-0.3.0/tests/testRemnantRoutes.py +305 -0
  243. vaibify-0.3.0/tests/testRemoteBadgeRefresh.py +709 -0
  244. vaibify-0.3.0/tests/testRemoteBindings.py +758 -0
  245. vaibify-0.3.0/tests/testRemoteDataMarker.py +437 -0
  246. vaibify-0.3.0/tests/testRemoteDataProvenance.py +157 -0
  247. vaibify-0.3.0/tests/testRemoteHelper.py +225 -0
  248. vaibify-0.3.0/tests/testRemotesMigration.py +332 -0
  249. vaibify-0.3.0/tests/testRepoFiles.py +533 -0
  250. vaibify-0.3.0/tests/testReproducedManifest.py +688 -0
  251. vaibify-0.3.0/tests/testReproductionReport.py +179 -0
  252. vaibify-0.3.0/tests/testRerunRegeneratesWhatItGrades.py +678 -0
  253. vaibify-0.3.0/tests/testRerunVerifiesWhatItRan.py +1042 -0
  254. vaibify-0.3.0/tests/testResearcherActions.py +291 -0
  255. vaibify-0.3.0/tests/testResourceLimitRoundTrip.py +136 -0
  256. vaibify-0.3.0/tests/testResourceLimits.py +466 -0
  257. vaibify-0.3.0/tests/testResumableDownload.py +1001 -0
  258. vaibify-0.3.0/tests/testRuntimeSetupFacts.py +328 -0
  259. vaibify-0.3.0/tests/testScheduledReverify.py +1046 -0
  260. vaibify-0.3.0/tests/testSecretFilesStayOutOfTheResearchersHome.py +186 -0
  261. vaibify-0.3.0/tests/testSeedLinks.py +231 -0
  262. vaibify-0.3.0/tests/testSeededFolderRepositoryList.py +374 -0
  263. vaibify-0.3.0/tests/testSessionRegistry.py +373 -0
  264. vaibify-0.3.0/tests/testSetupWizardKeepsWhatItDoesNotShow.py +319 -0
  265. vaibify-0.3.0/tests/testShadowNamesTheImageGap.py +119 -0
  266. vaibify-0.3.0/tests/testShadowRerun.py +834 -0
  267. vaibify-0.3.0/tests/testSmallHardeningItems.py +89 -0
  268. vaibify-0.3.0/tests/testStartLaunchCommands.py +410 -0
  269. vaibify-0.3.0/tests/testStartReservation.py +1048 -0
  270. vaibify-0.3.0/tests/testStateStoresStayInTheTestHome.py +219 -0
  271. vaibify-0.3.0/tests/testStepLevelStates.py +1188 -0
  272. vaibify-0.3.0/tests/testStepRoutes.py +604 -0
  273. vaibify-0.3.0/tests/testStopDoesNotNeedTheSession.py +147 -0
  274. vaibify-0.3.0/tests/testStyleInvariants.py +1596 -0
  275. vaibify-0.3.0/tests/testSupervisionAnchor.py +219 -0
  276. vaibify-0.3.0/tests/testSyncDispatcherCoverage.py +571 -0
  277. vaibify-0.3.0/tests/testSyncDispatcherExtended.py +301 -0
  278. vaibify-0.3.0/tests/testSyncDispatcherGaps.py +596 -0
  279. vaibify-0.3.0/tests/testSyncRoutesCoverage.py +3205 -0
  280. vaibify-0.3.0/tests/testSyncTestGenFull.py +915 -0
  281. vaibify-0.3.0/tests/testSyncVerifyRoutes.py +441 -0
  282. vaibify-0.3.0/tests/testTerminalContainment.py +716 -0
  283. vaibify-0.3.0/tests/testTerminalSessionExtended.py +222 -0
  284. vaibify-0.3.0/tests/testTestGenerationIntegrity.py +580 -0
  285. vaibify-0.3.0/tests/testTestGeneratorExtended.py +304 -0
  286. vaibify-0.3.0/tests/testTestMarkerSystem.py +656 -0
  287. vaibify-0.3.0/tests/testTheProjectDepositIsAskedWhatItStored.py +234 -0
  288. vaibify-0.3.0/tests/testToolkitEndToEnd.py +220 -0
  289. vaibify-0.3.0/tests/testTrackedReposManager.py +702 -0
  290. vaibify-0.3.0/tests/testTypedReadFailureIsNeverAbsence.py +207 -0
  291. vaibify-0.3.0/tests/testVaibifyDoProxyTunnel.py +92 -0
  292. vaibify-0.3.0/tests/testVersionIdentity.py +340 -0
  293. vaibify-0.3.0/tests/testVolumeCopy.py +343 -0
  294. vaibify-0.3.0/tests/testVolumeCopyLive.py +142 -0
  295. vaibify-0.3.0/tests/testWorkflowManager.py +1269 -0
  296. vaibify-0.3.0/tests/testWorkflowManagerExtended.py +1724 -0
  297. vaibify-0.3.0/tests/testWorkflowReloadIntegration.py +464 -0
  298. vaibify-0.3.0/tests/testWorkspaceRootHandshake.py +203 -0
  299. vaibify-0.3.0/tests/testWorkspaceSeedPaths.py +218 -0
  300. vaibify-0.3.0/tests/testX11Authority.py +191 -0
  301. vaibify-0.3.0/tests/testX11AuthorityLive.py +155 -0
  302. vaibify-0.3.0/tests/testX11Authorizations.py +288 -0
  303. vaibify-0.3.0/tests/testX11Findings.py +222 -0
  304. vaibify-0.3.0/tests/testX11Forwarding.py +551 -0
  305. vaibify-0.3.0/tests/testX11Lifecycle.py +135 -0
  306. vaibify-0.3.0/tests/testX11OptIn.py +154 -0
  307. vaibify-0.3.0/tests/testX11Release.py +95 -0
  308. vaibify-0.3.0/tests/testX11Settings.py +127 -0
  309. vaibify-0.3.0/tests/testZenodoEnvelopeArchive.py +604 -0
  310. vaibify-0.3.0/tests/testZenodoHostArchive.py +279 -0
  311. vaibify-0.3.0/tests/testZenodoIntegrationGaps.py +537 -0
  312. vaibify-0.3.0/tests/testZenodoTokenMigration.py +581 -0
  313. vaibify-0.3.0/tests/testZenodoTokenMigrationLive.py +134 -0
  314. vaibify-0.3.0/tests/testZenodoTokenRoutes.py +206 -0
  315. vaibify-0.3.0/tests/testZenodoTokenSlots.py +351 -0
  316. vaibify-0.3.0/tests/testZenodoVerifyUsesTheRecordedService.py +100 -0
  317. vaibify-0.3.0/tests/zenodoObservationFixtures.py +53 -0
  318. vaibify-0.3.0/tests/zenodoTokenFixtures.py +59 -0
  319. vaibify-0.3.0/tools/generateMutationInventory.py +2472 -0
  320. vaibify-0.3.0/vaibify/_version.py +24 -0
  321. vaibify-0.3.0/vaibify/cli/actionCommands.py +582 -0
  322. vaibify-0.3.0/vaibify/cli/commandBindings.py +187 -0
  323. vaibify-0.3.0/vaibify/cli/commandBuild.py +1251 -0
  324. vaibify-0.3.0/vaibify/cli/commandCredential.py +126 -0
  325. vaibify-0.3.0/vaibify/cli/commandDestroy.py +108 -0
  326. vaibify-0.3.0/vaibify/cli/commandDoctor.py +719 -0
  327. vaibify-0.3.0/vaibify/cli/commandInit.py +317 -0
  328. vaibify-0.3.0/vaibify/cli/commandReconcile.py +505 -0
  329. vaibify-0.3.0/vaibify/cli/commandRevoke.py +102 -0
  330. vaibify-0.3.0/vaibify/cli/commandStart.py +714 -0
  331. vaibify-0.3.0/vaibify/cli/commandTest.py +155 -0
  332. vaibify-0.3.0/vaibify/cli/configFieldPreflight.py +199 -0
  333. vaibify-0.3.0/vaibify/cli/doctorMountChecks.py +51 -0
  334. vaibify-0.3.0/vaibify/cli/doctorNetwork.py +896 -0
  335. vaibify-0.3.0/vaibify/cli/doctorProjectChecks.py +649 -0
  336. vaibify-0.3.0/vaibify/cli/doctorX11Checks.py +145 -0
  337. vaibify-0.3.0/vaibify/cli/hubSession.py +758 -0
  338. vaibify-0.3.0/vaibify/cli/main.py +604 -0
  339. vaibify-0.3.0/vaibify/cli/packageShadowGuard.py +52 -0
  340. vaibify-0.3.0/vaibify/cli/reachApprovalPrompt.py +50 -0
  341. vaibify-0.3.0/vaibify/cli/serverLaunch.py +325 -0
  342. vaibify-0.3.0/vaibify/completions/vaibify.bash +213 -0
  343. vaibify-0.3.0/vaibify/completions/vaibify.fish +104 -0
  344. vaibify-0.3.0/vaibify/completions/vaibify.zsh +152 -0
  345. vaibify-0.3.0/vaibify/config/bindMountValidator.py +682 -0
  346. vaibify-0.3.0/vaibify/config/configurationFingerprint.py +236 -0
  347. vaibify-0.3.0/vaibify/config/containerConfig.py +277 -0
  348. vaibify-0.3.0/vaibify/config/containerLock.py +715 -0
  349. vaibify-0.3.0/vaibify/config/ephemeralStore.py +146 -0
  350. vaibify-0.3.0/vaibify/config/imageOrigins.py +213 -0
  351. vaibify-0.3.0/vaibify/config/keepAliveManager.py +381 -0
  352. vaibify-0.3.0/vaibify/config/lockedJsonRecord.py +79 -0
  353. vaibify-0.3.0/vaibify/config/mutationAdmission.py +748 -0
  354. vaibify-0.3.0/vaibify/config/pendingRenames.py +152 -0
  355. vaibify-0.3.0/vaibify/config/projectConfig.py +1089 -0
  356. vaibify-0.3.0/vaibify/config/reachApproval.py +246 -0
  357. vaibify-0.3.0/vaibify/config/registryManager.py +969 -0
  358. vaibify-0.3.0/vaibify/config/remoteBindings.py +654 -0
  359. vaibify-0.3.0/vaibify/config/sessionRegistry.py +256 -0
  360. vaibify-0.3.0/vaibify/config/zenodoMigrationJournal.py +246 -0
  361. vaibify-0.3.0/vaibify/config/zenodoTokenSlots.py +200 -0
  362. vaibify-0.3.0/vaibify/containerImage/checkIsolation.sh +169 -0
  363. vaibify-0.3.0/vaibify/containerImage/entrypoint.sh +1819 -0
  364. vaibify-0.3.0/vaibify/containerImage/skills/proof-ladder/SKILL.md +399 -0
  365. vaibify-0.3.0/vaibify/containerImage/skills/read-arxiv/SKILL.md +54 -0
  366. vaibify-0.3.0/vaibify/containerImage/vaibifyDo.py +1118 -0
  367. vaibify-0.3.0/vaibify/docker/bindMountDrift.py +66 -0
  368. vaibify-0.3.0/vaibify/docker/containerLifecycleRepair.py +266 -0
  369. vaibify-0.3.0/vaibify/docker/containerManager.py +1794 -0
  370. vaibify-0.3.0/vaibify/docker/disposableContainer.py +1085 -0
  371. vaibify-0.3.0/vaibify/docker/disposableSpecification.py +577 -0
  372. vaibify-0.3.0/vaibify/docker/dockerConnection.py +4303 -0
  373. vaibify-0.3.0/vaibify/docker/dockerContext.py +439 -0
  374. vaibify-0.3.0/vaibify/docker/dockerErrorDiagnosis.py +629 -0
  375. vaibify-0.3.0/vaibify/docker/egressAllowlist.py +161 -0
  376. vaibify-0.3.0/vaibify/docker/egressProxy.py +639 -0
  377. vaibify-0.3.0/vaibify/docker/execLane.py +173 -0
  378. vaibify-0.3.0/vaibify/docker/networkAssessment.py +188 -0
  379. vaibify-0.3.0/vaibify/docker/pinnedImageAcquisition.py +682 -0
  380. vaibify-0.3.0/vaibify/docker/projectEgress.py +382 -0
  381. vaibify-0.3.0/vaibify/docker/volumeCopy.py +335 -0
  382. vaibify-0.3.0/vaibify/docker/volumeManager.py +167 -0
  383. vaibify-0.3.0/vaibify/docker/x11Authorizations.py +357 -0
  384. vaibify-0.3.0/vaibify/docker/x11Forwarding.py +614 -0
  385. vaibify-0.3.0/vaibify/docs/agentCouncil.md +422 -0
  386. vaibify-0.3.0/vaibify/docs/environmentsAndProjects.md +873 -0
  387. vaibify-0.3.0/vaibify/docs/forAgents.md +338 -0
  388. vaibify-0.3.0/vaibify/docs/proofLadder.md +423 -0
  389. vaibify-0.3.0/vaibify/docs/reproducibility.md +544 -0
  390. vaibify-0.3.0/vaibify/gui/AGENTS.md +277 -0
  391. vaibify-0.3.0/vaibify/gui/actionCatalog.py +1633 -0
  392. vaibify-0.3.0/vaibify/gui/agentCouncilContext.py +1471 -0
  393. vaibify-0.3.0/vaibify/gui/agentCouncilDockerGateway.py +1057 -0
  394. vaibify-0.3.0/vaibify/gui/agentCouncilEgress.py +155 -0
  395. vaibify-0.3.0/vaibify/gui/agentCouncilRegistry.py +483 -0
  396. vaibify-0.3.0/vaibify/gui/appFactory.py +805 -0
  397. vaibify-0.3.0/vaibify/gui/buildRoutes.py +671 -0
  398. vaibify-0.3.0/vaibify/gui/commitCarrier.py +1359 -0
  399. vaibify-0.3.0/vaibify/gui/conftestManager.py +1488 -0
  400. vaibify-0.3.0/vaibify/gui/containerGit.py +763 -0
  401. vaibify-0.3.0/vaibify/gui/containerOwnership.py +958 -0
  402. vaibify-0.3.0/vaibify/gui/conversionLifecycle.py +788 -0
  403. vaibify-0.3.0/vaibify/gui/dataPreview.py +95 -0
  404. vaibify-0.3.0/vaibify/gui/determinismEnvironment.py +680 -0
  405. vaibify-0.3.0/vaibify/gui/environmentDeletion.py +224 -0
  406. vaibify-0.3.0/vaibify/gui/environmentDeletionRoutes.py +161 -0
  407. vaibify-0.3.0/vaibify/gui/environmentRename.py +739 -0
  408. vaibify-0.3.0/vaibify/gui/environmentResources.py +64 -0
  409. vaibify-0.3.0/vaibify/gui/fileStatusManager.py +2694 -0
  410. vaibify-0.3.0/vaibify/gui/helperPrograms.py +63 -0
  411. vaibify-0.3.0/vaibify/gui/hostControlChannel.py +1146 -0
  412. vaibify-0.3.0/vaibify/gui/hubQuit.py +552 -0
  413. vaibify-0.3.0/vaibify/gui/llmInvoker.py +441 -0
  414. vaibify-0.3.0/vaibify/gui/outputProvenance.py +656 -0
  415. vaibify-0.3.0/vaibify/gui/pinnedEnvironmentConversion.py +487 -0
  416. vaibify-0.3.0/vaibify/gui/pipelineLogger.py +646 -0
  417. vaibify-0.3.0/vaibify/gui/pipelineRunner.py +1960 -0
  418. vaibify-0.3.0/vaibify/gui/pipelineServer.py +3820 -0
  419. vaibify-0.3.0/vaibify/gui/pipelineValidator.py +144 -0
  420. vaibify-0.3.0/vaibify/gui/projectEgressLifecycle.py +89 -0
  421. vaibify-0.3.0/vaibify/gui/projectRename.py +494 -0
  422. vaibify-0.3.0/vaibify/gui/promptRecordManager.py +728 -0
  423. vaibify-0.3.0/vaibify/gui/registryRoutes.py +2853 -0
  424. vaibify-0.3.0/vaibify/gui/remoteBindingContext.py +250 -0
  425. vaibify-0.3.0/vaibify/gui/researcherActions.py +378 -0
  426. vaibify-0.3.0/vaibify/gui/routeContext.py +978 -0
  427. vaibify-0.3.0/vaibify/gui/routeScope.py +1266 -0
  428. vaibify-0.3.0/vaibify/gui/routes/__init__.py +89 -0
  429. vaibify-0.3.0/vaibify/gui/routes/bindingRoutes.py +610 -0
  430. vaibify-0.3.0/vaibify/gui/routes/conversionRoutes.py +195 -0
  431. vaibify-0.3.0/vaibify/gui/routes/environmentArchiveRoutes.py +1056 -0
  432. vaibify-0.3.0/vaibify/gui/routes/falsificationRoutes.py +559 -0
  433. vaibify-0.3.0/vaibify/gui/routes/fileRoutes.py +897 -0
  434. vaibify-0.3.0/vaibify/gui/routes/pipelineRoutes.py +4384 -0
  435. vaibify-0.3.0/vaibify/gui/routes/promotionRecoveryRoutes.py +640 -0
  436. vaibify-0.3.0/vaibify/gui/routes/reachApprovalRoutes.py +85 -0
  437. vaibify-0.3.0/vaibify/gui/routes/reproducibilityRoutes.py +2406 -0
  438. vaibify-0.3.0/vaibify/gui/routes/reproductionRoutes.py +518 -0
  439. vaibify-0.3.0/vaibify/gui/routes/sessionRoutes.py +402 -0
  440. vaibify-0.3.0/vaibify/gui/routes/syncRoutes.py +4189 -0
  441. vaibify-0.3.0/vaibify/gui/routes/systemRoutes.py +913 -0
  442. vaibify-0.3.0/vaibify/gui/routes/testRoutes.py +1328 -0
  443. vaibify-0.3.0/vaibify/gui/routes/workflowRoutes.py +710 -0
  444. vaibify-0.3.0/vaibify/gui/routes/zenodoTokenRoutes.py +165 -0
  445. vaibify-0.3.0/vaibify/gui/seedLinks.py +138 -0
  446. vaibify-0.3.0/vaibify/gui/serverLifespan.py +929 -0
  447. vaibify-0.3.0/vaibify/gui/serverMiddleware.py +504 -0
  448. vaibify-0.3.0/vaibify/gui/sessionLifecycle.py +1872 -0
  449. vaibify-0.3.0/vaibify/gui/startReservation.py +1175 -0
  450. vaibify-0.3.0/vaibify/gui/stateContract.py +415 -0
  451. vaibify-0.3.0/vaibify/gui/stateManager.py +1318 -0
  452. vaibify-0.3.0/vaibify/gui/static/AGENTS.md +413 -0
  453. vaibify-0.3.0/vaibify/gui/static/index.html +1538 -0
  454. vaibify-0.3.0/vaibify/gui/static/scriptAboutVaibify.js +66 -0
  455. vaibify-0.3.0/vaibify/gui/static/scriptApplication.js +8314 -0
  456. vaibify-0.3.0/vaibify/gui/static/scriptConnectionMonitor.js +311 -0
  457. vaibify-0.3.0/vaibify/gui/static/scriptContainerManager.js +3845 -0
  458. vaibify-0.3.0/vaibify/gui/static/scriptDependencyScanner.js +836 -0
  459. vaibify-0.3.0/vaibify/gui/static/scriptEventBindings.js +1562 -0
  460. vaibify-0.3.0/vaibify/gui/static/scriptFigureViewer.js +1967 -0
  461. vaibify-0.3.0/vaibify/gui/static/scriptHubQuit.js +183 -0
  462. vaibify-0.3.0/vaibify/gui/static/scriptModals.js +869 -0
  463. vaibify-0.3.0/vaibify/gui/static/scriptProofTab.js +1575 -0
  464. vaibify-0.3.0/vaibify/gui/static/scriptRemoteBindings.js +529 -0
  465. vaibify-0.3.0/vaibify/gui/static/scriptResourceMonitor.js +412 -0
  466. vaibify-0.3.0/vaibify/gui/static/scriptStepRenderer.js +2193 -0
  467. vaibify-0.3.0/vaibify/gui/static/scriptSyncManager.js +3293 -0
  468. vaibify-0.3.0/vaibify/gui/static/scriptWorkflowManager.js +3601 -0
  469. vaibify-0.3.0/vaibify/gui/static/scriptWorkflowRequirements.js +4125 -0
  470. vaibify-0.3.0/vaibify/gui/static/scriptZenodoTokens.js +282 -0
  471. vaibify-0.3.0/vaibify/gui/static/styleMain.css +10233 -0
  472. vaibify-0.3.0/vaibify/gui/static/styleSetupWizard.css +438 -0
  473. vaibify-0.3.0/vaibify/gui/static/vaibify_logo_mask.png +0 -0
  474. vaibify-0.3.0/vaibify/gui/syncDispatcher.py +2574 -0
  475. vaibify-0.3.0/vaibify/gui/terminalSession.py +394 -0
  476. vaibify-0.3.0/vaibify/gui/webSocketAuthorization.py +372 -0
  477. vaibify-0.3.0/vaibify/gui/workflowManager.py +2995 -0
  478. vaibify-0.3.0/vaibify/gui/x11Lifecycle.py +99 -0
  479. vaibify-0.3.0/vaibify/gui/zenodoTokenAccess.py +169 -0
  480. vaibify-0.3.0/vaibify/gui/zenodoTokenMigration.py +530 -0
  481. vaibify-0.3.0/vaibify/host/hostConfinedRead.py +307 -0
  482. vaibify-0.3.0/vaibify/host/hostConfinedWrite.py +134 -0
  483. vaibify-0.3.0/vaibify/host/hostConnection.py +1305 -0
  484. vaibify-0.3.0/vaibify/host/x11Authority.py +450 -0
  485. vaibify-0.3.0/vaibify/install/installVaibify.sh +478 -0
  486. vaibify-0.3.0/vaibify/reproducibility/archivePromotion.py +837 -0
  487. vaibify-0.3.0/vaibify/reproducibility/dependencyPinning.py +455 -0
  488. vaibify-0.3.0/vaibify/reproducibility/environmentSnapshot.py +1072 -0
  489. vaibify-0.3.0/vaibify/reproducibility/githubMirror.py +597 -0
  490. vaibify-0.3.0/vaibify/reproducibility/l3Attestation.py +670 -0
  491. vaibify-0.3.0/vaibify/reproducibility/levelGates.py +6011 -0
  492. vaibify-0.3.0/vaibify/reproducibility/overleafSync.py +907 -0
  493. vaibify-0.3.0/vaibify/reproducibility/proofCatalog.py +309 -0
  494. vaibify-0.3.0/vaibify/reproducibility/proofReceipt.py +856 -0
  495. vaibify-0.3.0/vaibify/reproducibility/publicationScope.py +392 -0
  496. vaibify-0.3.0/vaibify/reproducibility/repoFiles.py +1359 -0
  497. vaibify-0.3.0/vaibify/reproducibility/reproductionReport.py +426 -0
  498. vaibify-0.3.0/vaibify/reproducibility/rerunProcedure.py +1201 -0
  499. vaibify-0.3.0/vaibify/reproducibility/scheduledReverify.py +1452 -0
  500. vaibify-0.3.0/vaibify/reproducibility/shadowRerun.py +1108 -0
  501. vaibify-0.3.0/vaibify/reproducibility/syncBookkeeping.py +524 -0
  502. vaibify-0.3.0/vaibify/reproducibility/zenodoClient.py +1512 -0
  503. vaibify-0.3.0/vaibify/versionIdentity.py +461 -0
  504. vaibify-0.3.0/vaibify.egg-info/PKG-INFO +139 -0
  505. vaibify-0.3.0/vaibify.egg-info/SOURCES.txt +2038 -0
  506. vaibify-0.3.0/vaibify.egg-info/scm_file_list.json +2033 -0
  507. vaibify-0.3.0/vaibify.egg-info/scm_version.json +8 -0
  508. vaibify-0.2.2/.claude/skills/reproducibility-lane/SKILL.md +0 -1001
  509. vaibify-0.2.2/.github/workflows/falsification.yml +0 -411
  510. vaibify-0.2.2/PKG-INFO +0 -139
  511. vaibify-0.2.2/README.md +0 -65
  512. vaibify-0.2.2/docs/agentCouncil.md +0 -416
  513. vaibify-0.2.2/docs/aiUse.md +0 -249
  514. vaibify-0.2.2/docs/architecture.md +0 -3958
  515. vaibify-0.2.2/docs/cli.md +0 -618
  516. vaibify-0.2.2/docs/developers.md +0 -353
  517. vaibify-0.2.2/docs/environmentsAndProjects.md +0 -794
  518. vaibify-0.2.2/docs/externalResources.md +0 -416
  519. vaibify-0.2.2/docs/forAgents.md +0 -337
  520. vaibify-0.2.2/docs/install.md +0 -465
  521. vaibify-0.2.2/docs/lessons.md +0 -699
  522. vaibify-0.2.2/docs/proofLadder.md +0 -390
  523. vaibify-0.2.2/docs/quickStart.md +0 -224
  524. vaibify-0.2.2/docs/reproducibility.md +0 -518
  525. vaibify-0.2.2/docs/security.md +0 -334
  526. vaibify-0.2.2/docs/systemPrompt.md +0 -31
  527. vaibify-0.2.2/tests/assessedRerunLaneHarness.py +0 -120
  528. vaibify-0.2.2/tests/browser/conftest.py +0 -785
  529. vaibify-0.2.2/tests/browser/fakeDockerAdapter.py +0 -954
  530. vaibify-0.2.2/tests/browser/testALateAnswerNeverRepaintsAViewer.py +0 -177
  531. vaibify-0.2.2/tests/browser/testCompareManifests.py +0 -507
  532. vaibify-0.2.2/tests/browser/testManifestCheckReportOnScreen.py +0 -106
  533. vaibify-0.2.2/tests/browser/testProjectBlockShowsItCanBeOpened.py +0 -87
  534. vaibify-0.2.2/tests/browser/testStepReorderUsesAPrivateDragType.py +0 -119
  535. vaibify-0.2.2/tests/browser/testTheGraphLeavesOtherViewersAlone.py +0 -192
  536. vaibify-0.2.2/tests/browser/testTheImageTrustModalAsksBeforeAnUnbuiltImageRuns.py +0 -334
  537. vaibify-0.2.2/tests/browser/testThePromptRecordViewerShowsAGeminiRewind.py +0 -131
  538. vaibify-0.2.2/tests/browser/testThePromptRecordViewerShowsTheRecord.py +0 -137
  539. vaibify-0.2.2/tests/browser/testTheX11OptInIsOffByDefaultAndExcludesIsolation.py +0 -149
  540. vaibify-0.2.2/tests/browser/testViewersBelongToTheirProject.py +0 -293
  541. vaibify-0.2.2/tests/conftest.py +0 -585
  542. vaibify-0.2.2/tests/falsificationRegistry.py +0 -37327
  543. vaibify-0.2.2/tests/guardCoverageSeed.json +0 -233
  544. vaibify-0.2.2/tests/hostCapabilityInventory.json +0 -202
  545. vaibify-0.2.2/tests/mutationInventory.json +0 -688
  546. vaibify-0.2.2/tests/styleInventory.json +0 -346
  547. vaibify-0.2.2/tests/syncStatusFixtures.py +0 -120
  548. vaibify-0.2.2/tests/testAdvancingALevelNeverLowersOne.py +0 -860
  549. vaibify-0.2.2/tests/testAgentLaneEnforcement.py +0 -805
  550. vaibify-0.2.2/tests/testAiDeclarationFileLive.py +0 -262
  551. vaibify-0.2.2/tests/testArchitecturalInvariants.py +0 -8856
  552. vaibify-0.2.2/tests/testAssessedRerunLane.py +0 -562
  553. vaibify-0.2.2/tests/testAutoArchive.py +0 -343
  554. vaibify-0.2.2/tests/testBasenameCollisionBlocksLevelTwo.py +0 -101
  555. vaibify-0.2.2/tests/testBatchedSmallFileRead.py +0 -239
  556. vaibify-0.2.2/tests/testBindMountDenyListReadsTheFilesystem.py +0 -134
  557. vaibify-0.2.2/tests/testBindMountValidator.py +0 -692
  558. vaibify-0.2.2/tests/testBlindSpotDispositions.py +0 -584
  559. vaibify-0.2.2/tests/testBlockersExplainEveryRefusal.py +0 -154
  560. vaibify-0.2.2/tests/testBroadHandlersPassControlPlaneRefusals.py +0 -471
  561. vaibify-0.2.2/tests/testBrowserLaneContract.py +0 -170
  562. vaibify-0.2.2/tests/testCapabilityAuthorities.py +0 -1100
  563. vaibify-0.2.2/tests/testCarrierMigratedRoutes.py +0 -8364
  564. vaibify-0.2.2/tests/testClaimSurvivesTheDisclosure.py +0 -272
  565. vaibify-0.2.2/tests/testCommandRevoke.py +0 -197
  566. vaibify-0.2.2/tests/testCommandStartGui.py +0 -349
  567. vaibify-0.2.2/tests/testConcurrentProjectRuns.py +0 -408
  568. vaibify-0.2.2/tests/testConfinedContainerWrite.py +0 -449
  569. vaibify-0.2.2/tests/testConfinedTreeWriteLive.py +0 -432
  570. vaibify-0.2.2/tests/testConfinedWriteLive.py +0 -167
  571. vaibify-0.2.2/tests/testConftestManagerVersioning.py +0 -627
  572. vaibify-0.2.2/tests/testContainerGit.py +0 -357
  573. vaibify-0.2.2/tests/testContainerLifecycleGating.py +0 -213
  574. vaibify-0.2.2/tests/testContainerManager.py +0 -672
  575. vaibify-0.2.2/tests/testContainerManagerFull.py +0 -457
  576. vaibify-0.2.2/tests/testConversionLifecycle.py +0 -718
  577. vaibify-0.2.2/tests/testCopyDirectoryLive.py +0 -101
  578. vaibify-0.2.2/tests/testCouncilCampaignIdentity.py +0 -246
  579. vaibify-0.2.2/tests/testCouncilControllerIntegration.py +0 -566
  580. vaibify-0.2.2/tests/testCouncilControllerLive.py +0 -209
  581. vaibify-0.2.2/tests/testCouncilCredentialGate.py +0 -298
  582. vaibify-0.2.2/tests/testCouncilCredentialRoutes.py +0 -323
  583. vaibify-0.2.2/tests/testCouncilReadiness.py +0 -508
  584. vaibify-0.2.2/tests/testCouncilRoutes.py +0 -2248
  585. vaibify-0.2.2/tests/testCoverageBoost.py +0 -1217
  586. vaibify-0.2.2/tests/testCoverageCliBuildStartReproduce.py +0 -568
  587. vaibify-0.2.2/tests/testCoverageCliDoctorCommand.py +0 -678
  588. vaibify-0.2.2/tests/testCoverageCoreTerminalSession.py +0 -331
  589. vaibify-0.2.2/tests/testCoverageCouncilGatewayLifecycle.py +0 -1855
  590. vaibify-0.2.2/tests/testCoverageDockerConnectionTransfers.py +0 -817
  591. vaibify-0.2.2/tests/testCoverageDockerConnectionTypedReads.py +0 -839
  592. vaibify-0.2.2/tests/testCoverageDockerContainerManager.py +0 -491
  593. vaibify-0.2.2/tests/testCoverageGaps.py +0 -1839
  594. vaibify-0.2.2/tests/testCoverageReproducibilityOverleafSync.py +0 -326
  595. vaibify-0.2.2/tests/testCoverageReproducibilityScheduledReverify.py +0 -418
  596. vaibify-0.2.2/tests/testCoverageRoutesAEnvironmentArchive.py +0 -847
  597. vaibify-0.2.2/tests/testCoverageRoutesAFileRoutes.py +0 -867
  598. vaibify-0.2.2/tests/testCoverageRoutesAPipelineSideEffects.py +0 -672
  599. vaibify-0.2.2/tests/testCoverageRoutesAPromotionRecovery.py +0 -578
  600. vaibify-0.2.2/tests/testCoverageRoutesBAppFactory.py +0 -356
  601. vaibify-0.2.2/tests/testCoverageRoutesBBuild.py +0 -446
  602. vaibify-0.2.2/tests/testCoverageRoutesBReproducibility.py +0 -877
  603. vaibify-0.2.2/tests/testCoverageRoutesBSync.py +0 -732
  604. vaibify-0.2.2/tests/testCoverageTargeted.py +0 -719
  605. vaibify-0.2.2/tests/testCredentialIsolation.py +0 -279
  606. vaibify-0.2.2/tests/testDeleteEnvironmentRoute.py +0 -357
  607. vaibify-0.2.2/tests/testDependencyPinning.py +0 -546
  608. vaibify-0.2.2/tests/testDependencyScan.py +0 -215
  609. vaibify-0.2.2/tests/testDependencyScanRoutes.py +0 -243
  610. vaibify-0.2.2/tests/testDockerConnection.py +0 -1237
  611. vaibify-0.2.2/tests/testDoctorNetworkGraph.py +0 -467
  612. vaibify-0.2.2/tests/testDoctorProjectScope.py +0 -166
  613. vaibify-0.2.2/tests/testDraftRoutes.py +0 -473
  614. vaibify-0.2.2/tests/testEnvelopeSnapshot.py +0 -276
  615. vaibify-0.2.2/tests/testEnvironmentArchivePromotion.py +0 -275
  616. vaibify-0.2.2/tests/testEnvironmentArchiveRoutes.py +0 -396
  617. vaibify-0.2.2/tests/testEnvironmentInfoRoute.py +0 -137
  618. vaibify-0.2.2/tests/testExecArgumentBudget.py +0 -213
  619. vaibify-0.2.2/tests/testExecutionProfiles.py +0 -821
  620. vaibify-0.2.2/tests/testExitedContainerEvidence.py +0 -194
  621. vaibify-0.2.2/tests/testFalsificationRoutesMutationCoverage.py +0 -160
  622. vaibify-0.2.2/tests/testFileEdgesAreSafe.py +0 -108
  623. vaibify-0.2.2/tests/testGithubBadgeMeansAgreementNotCleanliness.py +0 -226
  624. vaibify-0.2.2/tests/testGuiSignalsItsCategory.py +0 -80
  625. vaibify-0.2.2/tests/testHostCancel.py +0 -500
  626. vaibify-0.2.2/tests/testHostCpuAccounting.py +0 -122
  627. vaibify-0.2.2/tests/testHostDeterminismEnvironment.py +0 -232
  628. vaibify-0.2.2/tests/testHostGitAndReposPanel.py +0 -868
  629. vaibify-0.2.2/tests/testHostModeContainerOnlyRefusals.py +0 -465
  630. vaibify-0.2.2/tests/testHostModeHonestyGates.py +0 -360
  631. vaibify-0.2.2/tests/testHostPathGuardCorpus.py +0 -351
  632. vaibify-0.2.2/tests/testHostQuarantineSurface.py +0 -285
  633. vaibify-0.2.2/tests/testImageTrustGuardsTheLaunch.py +0 -321
  634. vaibify-0.2.2/tests/testImageTrustLive.py +0 -170
  635. vaibify-0.2.2/tests/testIsolationGating.py +0 -465
  636. vaibify-0.2.2/tests/testL3Attestation.py +0 -207
  637. vaibify-0.2.2/tests/testLevelGateL2Arxiv.py +0 -532
  638. vaibify-0.2.2/tests/testLevelGateL3EndToEnd.py +0 -321
  639. vaibify-0.2.2/tests/testLevelGates.py +0 -473
  640. vaibify-0.2.2/tests/testLevelGatesMutationCoverage.py +0 -364
  641. vaibify-0.2.2/tests/testLevelGatesRefusalPropagation.py +0 -308
  642. vaibify-0.2.2/tests/testLevelTwoGapsAgreeWithTheGate.py +0 -76
  643. vaibify-0.2.2/tests/testLifecycleRouteAuthority.py +0 -404
  644. vaibify-0.2.2/tests/testLockInputFallsBackToVaibifyRequirements.py +0 -200
  645. vaibify-0.2.2/tests/testLoggingHygiene.py +0 -128
  646. vaibify-0.2.2/tests/testMissingFileBadges.py +0 -199
  647. vaibify-0.2.2/tests/testMutationBoundary.py +0 -418
  648. vaibify-0.2.2/tests/testMutationInventory.py +0 -2134
  649. vaibify-0.2.2/tests/testNarrowLlmFallback.py +0 -314
  650. vaibify-0.2.2/tests/testOutputProvenance.py +0 -393
  651. vaibify-0.2.2/tests/testOverleafSync.py +0 -299
  652. vaibify-0.2.2/tests/testOverleafSyncExtended.py +0 -954
  653. vaibify-0.2.2/tests/testOverleafTokenStaysOffTheCommandLine.py +0 -202
  654. vaibify-0.2.2/tests/testPerTestMarkerEndToEnd.py +0 -304
  655. vaibify-0.2.2/tests/testPipelineRoutesCoverage.py +0 -2365
  656. vaibify-0.2.2/tests/testPipelineRunnerBranches.py +0 -479
  657. vaibify-0.2.2/tests/testPipelineRunnerFull.py +0 -1164
  658. vaibify-0.2.2/tests/testPipelineRunnerHeartbeat.py +0 -187
  659. vaibify-0.2.2/tests/testPipelineRunnerMutationCoverage.py +0 -266
  660. vaibify-0.2.2/tests/testPipelineRunnerOffLoop.py +0 -215
  661. vaibify-0.2.2/tests/testPipelineServerFull.py +0 -587
  662. vaibify-0.2.2/tests/testPipelineServerRoutes.py +0 -1243
  663. vaibify-0.2.2/tests/testPipelineStateHostIncidents.py +0 -275
  664. vaibify-0.2.2/tests/testPipelineStateLiveness.py +0 -250
  665. vaibify-0.2.2/tests/testPipelineStateMock.py +0 -178
  666. vaibify-0.2.2/tests/testPipelineStateWriter.py +0 -391
  667. vaibify-0.2.2/tests/testPreflightNamesTheCauseNotTheCascade.py +0 -145
  668. vaibify-0.2.2/tests/testPreflightValidation.py +0 -303
  669. vaibify-0.2.2/tests/testProjectHeaderNeverOutranksItsRows.py +0 -258
  670. vaibify-0.2.2/tests/testProjectRepoDetection.py +0 -602
  671. vaibify-0.2.2/tests/testPromoteToHostProjectRoute.py +0 -481
  672. vaibify-0.2.2/tests/testPromptRecordManager.py +0 -734
  673. vaibify-0.2.2/tests/testProofLadderUncoveredLines.py +0 -934
  674. vaibify-0.2.2/tests/testPublicationScopeSeparatesTheLevels.py +0 -804
  675. vaibify-0.2.2/tests/testPullManuscriptRoute.py +0 -155
  676. vaibify-0.2.2/tests/testQuickStartJourneyThroughRoutesLive.py +0 -635
  677. vaibify-0.2.2/tests/testQuickStartReaderJourneyLive.py +0 -185
  678. vaibify-0.2.2/tests/testRegistryManager.py +0 -846
  679. vaibify-0.2.2/tests/testRegistryRoutes.py +0 -1036
  680. vaibify-0.2.2/tests/testRemnantRoutes.py +0 -297
  681. vaibify-0.2.2/tests/testRemoteBadgeRefresh.py +0 -709
  682. vaibify-0.2.2/tests/testRemoteDataMarker.py +0 -437
  683. vaibify-0.2.2/tests/testRemoteDataProvenance.py +0 -157
  684. vaibify-0.2.2/tests/testRemoteHelper.py +0 -211
  685. vaibify-0.2.2/tests/testRemotesMigration.py +0 -327
  686. vaibify-0.2.2/tests/testRepoFiles.py +0 -533
  687. vaibify-0.2.2/tests/testReproducedManifest.py +0 -687
  688. vaibify-0.2.2/tests/testReproductionReport.py +0 -161
  689. vaibify-0.2.2/tests/testRerunRegeneratesWhatItGrades.py +0 -678
  690. vaibify-0.2.2/tests/testRerunVerifiesWhatItRan.py +0 -1042
  691. vaibify-0.2.2/tests/testResearcherActions.py +0 -289
  692. vaibify-0.2.2/tests/testResourceLimitRoundTrip.py +0 -131
  693. vaibify-0.2.2/tests/testResourceLimits.py +0 -462
  694. vaibify-0.2.2/tests/testResumableDownload.py +0 -992
  695. vaibify-0.2.2/tests/testRuntimeSetupFacts.py +0 -326
  696. vaibify-0.2.2/tests/testScheduledReverify.py +0 -1046
  697. vaibify-0.2.2/tests/testSeededFolderRepositoryList.py +0 -366
  698. vaibify-0.2.2/tests/testSessionRegistry.py +0 -357
  699. vaibify-0.2.2/tests/testSetupWizardKeepsWhatItDoesNotShow.py +0 -316
  700. vaibify-0.2.2/tests/testShadowNamesTheImageGap.py +0 -119
  701. vaibify-0.2.2/tests/testShadowRerun.py +0 -834
  702. vaibify-0.2.2/tests/testStartLaunchCommands.py +0 -405
  703. vaibify-0.2.2/tests/testStartReservation.py +0 -1044
  704. vaibify-0.2.2/tests/testStepLevelStates.py +0 -1131
  705. vaibify-0.2.2/tests/testStepRoutes.py +0 -604
  706. vaibify-0.2.2/tests/testStopDoesNotNeedTheSession.py +0 -143
  707. vaibify-0.2.2/tests/testStyleInvariants.py +0 -1590
  708. vaibify-0.2.2/tests/testSupervisionAnchor.py +0 -218
  709. vaibify-0.2.2/tests/testSyncDispatcherCoverage.py +0 -571
  710. vaibify-0.2.2/tests/testSyncDispatcherExtended.py +0 -301
  711. vaibify-0.2.2/tests/testSyncDispatcherGaps.py +0 -832
  712. vaibify-0.2.2/tests/testSyncRoutesCoverage.py +0 -3172
  713. vaibify-0.2.2/tests/testSyncTestGenFull.py +0 -1296
  714. vaibify-0.2.2/tests/testSyncVerifyRoutes.py +0 -434
  715. vaibify-0.2.2/tests/testTerminalContainment.py +0 -716
  716. vaibify-0.2.2/tests/testTerminalSessionExtended.py +0 -220
  717. vaibify-0.2.2/tests/testTestGenerationIntegrity.py +0 -580
  718. vaibify-0.2.2/tests/testTestGeneratorExtended.py +0 -304
  719. vaibify-0.2.2/tests/testTestMarkerSystem.py +0 -656
  720. vaibify-0.2.2/tests/testTheProjectDepositIsAskedWhatItStored.py +0 -263
  721. vaibify-0.2.2/tests/testTheStagedClientStaysCurrent.py +0 -103
  722. vaibify-0.2.2/tests/testToolkitEndToEnd.py +0 -217
  723. vaibify-0.2.2/tests/testTrackedReposManager.py +0 -702
  724. vaibify-0.2.2/tests/testTypedReadFailureIsNeverAbsence.py +0 -207
  725. vaibify-0.2.2/tests/testWorkflowManager.py +0 -1269
  726. vaibify-0.2.2/tests/testWorkflowManagerExtended.py +0 -1724
  727. vaibify-0.2.2/tests/testWorkflowReloadIntegration.py +0 -464
  728. vaibify-0.2.2/tests/testWorkspaceRootHandshake.py +0 -199
  729. vaibify-0.2.2/tests/testWorkspaceSeedPaths.py +0 -186
  730. vaibify-0.2.2/tests/testX11Findings.py +0 -201
  731. vaibify-0.2.2/tests/testX11Forwarding.py +0 -479
  732. vaibify-0.2.2/tests/testX11OptIn.py +0 -110
  733. vaibify-0.2.2/tests/testX11Settings.py +0 -100
  734. vaibify-0.2.2/tests/testZenodoEnvelopeArchive.py +0 -603
  735. vaibify-0.2.2/tests/testZenodoIntegrationGaps.py +0 -655
  736. vaibify-0.2.2/tests/testZenodoVerifyUsesTheRecordedService.py +0 -100
  737. vaibify-0.2.2/tools/generateMutationInventory.py +0 -2463
  738. vaibify-0.2.2/vaibify/_version.py +0 -24
  739. vaibify-0.2.2/vaibify/cli/actionCommands.py +0 -581
  740. vaibify-0.2.2/vaibify/cli/commandBuild.py +0 -1240
  741. vaibify-0.2.2/vaibify/cli/commandCredential.py +0 -120
  742. vaibify-0.2.2/vaibify/cli/commandDestroy.py +0 -97
  743. vaibify-0.2.2/vaibify/cli/commandDoctor.py +0 -715
  744. vaibify-0.2.2/vaibify/cli/commandInit.py +0 -313
  745. vaibify-0.2.2/vaibify/cli/commandReconcile.py +0 -473
  746. vaibify-0.2.2/vaibify/cli/commandRevoke.py +0 -84
  747. vaibify-0.2.2/vaibify/cli/commandStart.py +0 -621
  748. vaibify-0.2.2/vaibify/cli/commandTest.py +0 -152
  749. vaibify-0.2.2/vaibify/cli/configFieldPreflight.py +0 -148
  750. vaibify-0.2.2/vaibify/cli/doctorNetwork.py +0 -856
  751. vaibify-0.2.2/vaibify/cli/doctorProjectChecks.py +0 -570
  752. vaibify-0.2.2/vaibify/cli/doctorX11Checks.py +0 -78
  753. vaibify-0.2.2/vaibify/cli/hubSession.py +0 -744
  754. vaibify-0.2.2/vaibify/cli/main.py +0 -572
  755. vaibify-0.2.2/vaibify/cli/serverLaunch.py +0 -298
  756. vaibify-0.2.2/vaibify/completions/vaibify.bash +0 -213
  757. vaibify-0.2.2/vaibify/completions/vaibify.fish +0 -104
  758. vaibify-0.2.2/vaibify/completions/vaibify.zsh +0 -152
  759. vaibify-0.2.2/vaibify/config/bindMountValidator.py +0 -594
  760. vaibify-0.2.2/vaibify/config/configurationFingerprint.py +0 -233
  761. vaibify-0.2.2/vaibify/config/containerConfig.py +0 -272
  762. vaibify-0.2.2/vaibify/config/containerLock.py +0 -575
  763. vaibify-0.2.2/vaibify/config/ephemeralStore.py +0 -122
  764. vaibify-0.2.2/vaibify/config/imageOrigins.py +0 -207
  765. vaibify-0.2.2/vaibify/config/keepAliveManager.py +0 -376
  766. vaibify-0.2.2/vaibify/config/mutationAdmission.py +0 -612
  767. vaibify-0.2.2/vaibify/config/projectConfig.py +0 -883
  768. vaibify-0.2.2/vaibify/config/registryManager.py +0 -868
  769. vaibify-0.2.2/vaibify/config/sessionRegistry.py +0 -255
  770. vaibify-0.2.2/vaibify/containerImage/checkIsolation.sh +0 -160
  771. vaibify-0.2.2/vaibify/containerImage/entrypoint.sh +0 -1819
  772. vaibify-0.2.2/vaibify/containerImage/skills/proof-ladder/SKILL.md +0 -369
  773. vaibify-0.2.2/vaibify/containerImage/skills/read-arxiv/SKILL.md +0 -54
  774. vaibify-0.2.2/vaibify/containerImage/vaibifyDo.py +0 -1079
  775. vaibify-0.2.2/vaibify/docker/containerLifecycleRepair.py +0 -263
  776. vaibify-0.2.2/vaibify/docker/containerManager.py +0 -1589
  777. vaibify-0.2.2/vaibify/docker/disposableContainer.py +0 -1046
  778. vaibify-0.2.2/vaibify/docker/disposableSpecification.py +0 -503
  779. vaibify-0.2.2/vaibify/docker/dockerConnection.py +0 -4001
  780. vaibify-0.2.2/vaibify/docker/dockerContext.py +0 -415
  781. vaibify-0.2.2/vaibify/docker/dockerErrorDiagnosis.py +0 -585
  782. vaibify-0.2.2/vaibify/docker/pinnedImageAcquisition.py +0 -680
  783. vaibify-0.2.2/vaibify/docker/volumeManager.py +0 -111
  784. vaibify-0.2.2/vaibify/docker/x11Forwarding.py +0 -542
  785. vaibify-0.2.2/vaibify/docs/agentCouncil.md +0 -416
  786. vaibify-0.2.2/vaibify/docs/environmentsAndProjects.md +0 -794
  787. vaibify-0.2.2/vaibify/docs/forAgents.md +0 -337
  788. vaibify-0.2.2/vaibify/docs/proofLadder.md +0 -390
  789. vaibify-0.2.2/vaibify/docs/reproducibility.md +0 -518
  790. vaibify-0.2.2/vaibify/gui/AGENTS.md +0 -274
  791. vaibify-0.2.2/vaibify/gui/actionCatalog.py +0 -1553
  792. vaibify-0.2.2/vaibify/gui/agentCouncilContext.py +0 -1437
  793. vaibify-0.2.2/vaibify/gui/agentCouncilDockerGateway.py +0 -1029
  794. vaibify-0.2.2/vaibify/gui/agentCouncilEgress.py +0 -431
  795. vaibify-0.2.2/vaibify/gui/agentCouncilRegistry.py +0 -481
  796. vaibify-0.2.2/vaibify/gui/appFactory.py +0 -800
  797. vaibify-0.2.2/vaibify/gui/buildRoutes.py +0 -667
  798. vaibify-0.2.2/vaibify/gui/commitCarrier.py +0 -1321
  799. vaibify-0.2.2/vaibify/gui/conftestManager.py +0 -1487
  800. vaibify-0.2.2/vaibify/gui/containerGit.py +0 -760
  801. vaibify-0.2.2/vaibify/gui/containerOwnership.py +0 -958
  802. vaibify-0.2.2/vaibify/gui/conversionLifecycle.py +0 -744
  803. vaibify-0.2.2/vaibify/gui/dataPreview.py +0 -93
  804. vaibify-0.2.2/vaibify/gui/determinismEnvironment.py +0 -673
  805. vaibify-0.2.2/vaibify/gui/environmentDeletion.py +0 -216
  806. vaibify-0.2.2/vaibify/gui/environmentDeletionRoutes.py +0 -157
  807. vaibify-0.2.2/vaibify/gui/fileStatusManager.py +0 -2657
  808. vaibify-0.2.2/vaibify/gui/helperPrograms.py +0 -55
  809. vaibify-0.2.2/vaibify/gui/hostControlChannel.py +0 -1070
  810. vaibify-0.2.2/vaibify/gui/llmInvoker.py +0 -438
  811. vaibify-0.2.2/vaibify/gui/outputProvenance.py +0 -560
  812. vaibify-0.2.2/vaibify/gui/pinnedEnvironmentConversion.py +0 -486
  813. vaibify-0.2.2/vaibify/gui/pipelineLogger.py +0 -637
  814. vaibify-0.2.2/vaibify/gui/pipelineRunner.py +0 -1955
  815. vaibify-0.2.2/vaibify/gui/pipelineServer.py +0 -3781
  816. vaibify-0.2.2/vaibify/gui/pipelineValidator.py +0 -142
  817. vaibify-0.2.2/vaibify/gui/promptRecordManager.py +0 -720
  818. vaibify-0.2.2/vaibify/gui/registryRoutes.py +0 -2544
  819. vaibify-0.2.2/vaibify/gui/researcherActions.py +0 -359
  820. vaibify-0.2.2/vaibify/gui/routeContext.py +0 -956
  821. vaibify-0.2.2/vaibify/gui/routeScope.py +0 -1198
  822. vaibify-0.2.2/vaibify/gui/routes/__init__.py +0 -83
  823. vaibify-0.2.2/vaibify/gui/routes/conversionRoutes.py +0 -184
  824. vaibify-0.2.2/vaibify/gui/routes/environmentArchiveRoutes.py +0 -1041
  825. vaibify-0.2.2/vaibify/gui/routes/falsificationRoutes.py +0 -555
  826. vaibify-0.2.2/vaibify/gui/routes/fileRoutes.py +0 -916
  827. vaibify-0.2.2/vaibify/gui/routes/pipelineRoutes.py +0 -4353
  828. vaibify-0.2.2/vaibify/gui/routes/promotionRecoveryRoutes.py +0 -435
  829. vaibify-0.2.2/vaibify/gui/routes/reproducibilityRoutes.py +0 -2404
  830. vaibify-0.2.2/vaibify/gui/routes/reproductionRoutes.py +0 -512
  831. vaibify-0.2.2/vaibify/gui/routes/sessionRoutes.py +0 -270
  832. vaibify-0.2.2/vaibify/gui/routes/syncRoutes.py +0 -3755
  833. vaibify-0.2.2/vaibify/gui/routes/systemRoutes.py +0 -800
  834. vaibify-0.2.2/vaibify/gui/routes/testRoutes.py +0 -1327
  835. vaibify-0.2.2/vaibify/gui/routes/workflowRoutes.py +0 -623
  836. vaibify-0.2.2/vaibify/gui/serverLifespan.py +0 -892
  837. vaibify-0.2.2/vaibify/gui/serverMiddleware.py +0 -488
  838. vaibify-0.2.2/vaibify/gui/sessionLifecycle.py +0 -1870
  839. vaibify-0.2.2/vaibify/gui/startReservation.py +0 -1136
  840. vaibify-0.2.2/vaibify/gui/stateContract.py +0 -412
  841. vaibify-0.2.2/vaibify/gui/stateManager.py +0 -1302
  842. vaibify-0.2.2/vaibify/gui/static/AGENTS.md +0 -404
  843. vaibify-0.2.2/vaibify/gui/static/index.html +0 -1506
  844. vaibify-0.2.2/vaibify/gui/static/scriptApplication.js +0 -8191
  845. vaibify-0.2.2/vaibify/gui/static/scriptConnectionMonitor.js +0 -281
  846. vaibify-0.2.2/vaibify/gui/static/scriptContainerManager.js +0 -3424
  847. vaibify-0.2.2/vaibify/gui/static/scriptDependencyScanner.js +0 -836
  848. vaibify-0.2.2/vaibify/gui/static/scriptEventBindings.js +0 -1554
  849. vaibify-0.2.2/vaibify/gui/static/scriptFigureViewer.js +0 -1962
  850. vaibify-0.2.2/vaibify/gui/static/scriptModals.js +0 -842
  851. vaibify-0.2.2/vaibify/gui/static/scriptProofTab.js +0 -1505
  852. vaibify-0.2.2/vaibify/gui/static/scriptResourceMonitor.js +0 -412
  853. vaibify-0.2.2/vaibify/gui/static/scriptStepRenderer.js +0 -2192
  854. vaibify-0.2.2/vaibify/gui/static/scriptSyncManager.js +0 -3241
  855. vaibify-0.2.2/vaibify/gui/static/scriptWorkflowManager.js +0 -3368
  856. vaibify-0.2.2/vaibify/gui/static/scriptWorkflowRequirements.js +0 -4020
  857. vaibify-0.2.2/vaibify/gui/static/styleMain.css +0 -10025
  858. vaibify-0.2.2/vaibify/gui/static/styleSetupWizard.css +0 -438
  859. vaibify-0.2.2/vaibify/gui/syncDispatcher.py +0 -2141
  860. vaibify-0.2.2/vaibify/gui/terminalSession.py +0 -390
  861. vaibify-0.2.2/vaibify/gui/webSocketAuthorization.py +0 -353
  862. vaibify-0.2.2/vaibify/gui/workflowManager.py +0 -2967
  863. vaibify-0.2.2/vaibify/host/hostConfinedRead.py +0 -297
  864. vaibify-0.2.2/vaibify/host/hostConnection.py +0 -1287
  865. vaibify-0.2.2/vaibify/install/installVaibify.sh +0 -489
  866. vaibify-0.2.2/vaibify/reproducibility/archivePromotion.py +0 -585
  867. vaibify-0.2.2/vaibify/reproducibility/dependencyPinning.py +0 -452
  868. vaibify-0.2.2/vaibify/reproducibility/environmentSnapshot.py +0 -1070
  869. vaibify-0.2.2/vaibify/reproducibility/githubMirror.py +0 -357
  870. vaibify-0.2.2/vaibify/reproducibility/l3Attestation.py +0 -644
  871. vaibify-0.2.2/vaibify/reproducibility/levelGates.py +0 -5513
  872. vaibify-0.2.2/vaibify/reproducibility/overleafSync.py +0 -879
  873. vaibify-0.2.2/vaibify/reproducibility/publicationScope.py +0 -370
  874. vaibify-0.2.2/vaibify/reproducibility/repoFiles.py +0 -1329
  875. vaibify-0.2.2/vaibify/reproducibility/reproductionReport.py +0 -421
  876. vaibify-0.2.2/vaibify/reproducibility/rerunProcedure.py +0 -1084
  877. vaibify-0.2.2/vaibify/reproducibility/scheduledReverify.py +0 -1256
  878. vaibify-0.2.2/vaibify/reproducibility/shadowRerun.py +0 -1105
  879. vaibify-0.2.2/vaibify/reproducibility/syncBookkeeping.py +0 -487
  880. vaibify-0.2.2/vaibify/reproducibility/zenodoClient.py +0 -1319
  881. vaibify-0.2.2/vaibify.egg-info/PKG-INFO +0 -139
  882. vaibify-0.2.2/vaibify.egg-info/SOURCES.txt +0 -1908
  883. vaibify-0.2.2/vaibify.egg-info/scm_file_list.json +0 -1903
  884. vaibify-0.2.2/vaibify.egg-info/scm_version.json +0 -8
  885. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/hooks/askSensitiveEdit.py +0 -0
  886. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/hooks/blockDestructiveGit.py +0 -0
  887. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/settings.json +0 -0
  888. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/skills/add-data-loader/SKILL.md +0 -0
  889. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/skills/add-route-module/SKILL.md +0 -0
  890. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/skills/container-image-and-packaging/SKILL.md +0 -0
  891. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/skills/container-mutations/SKILL.md +0 -0
  892. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/skills/dashboard-state-honesty/SKILL.md +0 -0
  893. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/skills/host-mode-and-paths/SKILL.md +0 -0
  894. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/skills/monitor-pr/SKILL.md +0 -0
  895. {vaibify-0.2.2 → vaibify-0.3.0}/.claude/skills/terminal-sessions/SKILL.md +0 -0
  896. {vaibify-0.2.2 → vaibify-0.3.0}/.githooks/pre-commit +0 -0
  897. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/agentDocsPathCheck.yml +0 -0
  898. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/badges.yml +0 -0
  899. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/browser-chromium.yml +0 -0
  900. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/browser-firefox.yml +0 -0
  901. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/browser-webkit.yml +0 -0
  902. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/containerAcceptance.yml +0 -0
  903. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/docs.yml +0 -0
  904. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/freshImageBuild.yml +0 -0
  905. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/mutation.yml +0 -0
  906. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/pip-install.yml +0 -0
  907. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/publishedReproduction.yml +0 -0
  908. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/remoteSsh.yml +0 -0
  909. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/runtimeSetup.yml +0 -0
  910. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/security.yml +0 -0
  911. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/styleContract.yml +0 -0
  912. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/tests-linux.yml +0 -0
  913. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/tests-macos-nightly.yml +0 -0
  914. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/tests-macos.yml +0 -0
  915. {vaibify-0.2.2 → vaibify-0.3.0}/.github/workflows/toolchainEpoch.yml +0 -0
  916. {vaibify-0.2.2 → vaibify-0.3.0}/.gitignore +0 -0
  917. {vaibify-0.2.2 → vaibify-0.3.0}/.zenodo.json +0 -0
  918. {vaibify-0.2.2 → vaibify-0.3.0}/AGENTS.md +0 -0
  919. {vaibify-0.2.2 → vaibify-0.3.0}/CITATION.cff +0 -0
  920. {vaibify-0.2.2 → vaibify-0.3.0}/CLAUDE.md +0 -0
  921. {vaibify-0.2.2 → vaibify-0.3.0}/LICENSE +0 -0
  922. {vaibify-0.2.2 → vaibify-0.3.0}/VaibifyIcon.png +0 -0
  923. {vaibify-0.2.2 → vaibify-0.3.0}/bin/connect_vc +0 -0
  924. {vaibify-0.2.2 → vaibify-0.3.0}/bin/vcTransferCommon.sh +0 -0
  925. {vaibify-0.2.2 → vaibify-0.3.0}/bin/vc_pull +0 -0
  926. {vaibify-0.2.2 → vaibify-0.3.0}/bin/vc_push +0 -0
  927. {vaibify-0.2.2 → vaibify-0.3.0}/cosmic-ray.toml +0 -0
  928. {vaibify-0.2.2 → vaibify-0.3.0}/docs/_static/.gitkeep +0 -0
  929. {vaibify-0.2.2 → vaibify-0.3.0}/docs/_static/custom.css +0 -0
  930. {vaibify-0.2.2 → vaibify-0.3.0}/docs/conduct.rst +0 -0
  931. {vaibify-0.2.2 → vaibify-0.3.0}/docs/conf.py +0 -0
  932. {vaibify-0.2.2 → vaibify-0.3.0}/docs/index.rst +0 -0
  933. {vaibify-0.2.2 → vaibify-0.3.0}/docs/knownDebt.md +0 -0
  934. {vaibify-0.2.2 → vaibify-0.3.0}/docs/skillTesting.md +0 -0
  935. {vaibify-0.2.2 → vaibify-0.3.0}/docs/testing.md +0 -0
  936. {vaibify-0.2.2 → vaibify-0.3.0}/docs/vaibify_logo.png +0 -0
  937. {vaibify-0.2.2 → vaibify-0.3.0}/docs/vaibify_screenshot.png +0 -0
  938. {vaibify-0.2.2 → vaibify-0.3.0}/docs/vibeCoding.md +0 -0
  939. {vaibify-0.2.2 → vaibify-0.3.0}/pyproject.toml +0 -0
  940. {vaibify-0.2.2 → vaibify-0.3.0}/pytest.ini +0 -0
  941. {vaibify-0.2.2 → vaibify-0.3.0}/setup.cfg +0 -0
  942. {vaibify-0.2.2 → vaibify-0.3.0}/tests/__init__.py +0 -0
  943. {vaibify-0.2.2 → vaibify-0.3.0}/tests/agentCouncilHarness.py +0 -0
  944. {vaibify-0.2.2 → vaibify-0.3.0}/tests/attributionShapes.py +0 -0
  945. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/__init__.py +0 -0
  946. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/filesLane.py +0 -0
  947. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testABadgeOffersTheActionThatResolvesIt.py +0 -0
  948. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testABlockedRowStillTeaches.py +0 -0
  949. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testABuildRefusalIsNotARunningBuild.py +0 -0
  950. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAClickSurvivesAPollRender.py +0 -0
  951. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAContainerOffThePinWarnsBesideTheSnapshotRow.py +0 -0
  952. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testADragThatLeavesTheWindowKeepsScrolling.py +0 -0
  953. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testADropTargetIsATargetInEveryBrowser.py +0 -0
  954. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testADroppedBuildRequestAttachesInstead.py +0 -0
  955. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAFailedStepExplainsItsExitCode.py +0 -0
  956. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAFailureToastOffersADiagnosis.py +0 -0
  957. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAFullScreenProgramsLimitIsStated.py +0 -0
  958. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAHeldTileOffersRelease.py +0 -0
  959. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testALevelCrossingWarnsBeforeItWrites.py +0 -0
  960. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testALockedTileExplainsOnClick.py +0 -0
  961. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testALostClaimRecoversWhereverItIsMet.py +0 -0
  962. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAMissingFileIsListedNotJustCounted.py +0 -0
  963. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testANewStepRunsItsDataCommands.py +0 -0
  964. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAPartlyDivergedEnvelopeReadsPartial.py +0 -0
  965. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAPendingSignOffIsNotAWarning.py +0 -0
  966. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAPreRunWarningReachesTheScreen.py +0 -0
  967. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAProgramsCopyWaitsForTheResearchersClick.py +0 -0
  968. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAPromoteRefusalSaysWhy.py +0 -0
  969. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAPromotionDoesNotTakeItsOwnClaimBack.py +0 -0
  970. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAQuickVerificationIsStillReported.py +0 -0
  971. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAReadersVerificationLeavesTheAttestationRowStill.py +0 -0
  972. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testARecreateSaysWhatItDiscards.py +0 -0
  973. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testARefusedCopyOnSelectSaysHowToRetry.py +0 -0
  974. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testARefusedTestRunIsNotAFailure.py +0 -0
  975. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAResizeDoesNotStrandOldFrames.py +0 -0
  976. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAResizeKeepsThePaneFollowingItsOutput.py +0 -0
  977. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testARunMenuCheckSaysItIsWorking.py +0 -0
  978. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testARunningRemoteCheckPulsesTheBadge.py +0 -0
  979. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testASandboxDepositIsNamedOnTheRow.py +0 -0
  980. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testASettledAttestationRechecksTheRemotes.py +0 -0
  981. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAStaleAiDeclarationSaysWhatChanged.py +0 -0
  982. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAStaleVerifyAdmitsIt.py +0 -0
  983. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testATierWithNothingToCheckSaysWhy.py +0 -0
  984. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAVerificationIsFollowedOnTheProjectBlock.py +0 -0
  985. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAVerificationPulsesOnlyWhatItAssesses.py +0 -0
  986. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAdoptBarOffersOnlyWhatCanWork.py +0 -0
  987. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAnAgentsEditAppearsWithoutNavigation.py +0 -0
  988. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAnAgentsRunMovesTheStepLights.py +0 -0
  989. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAnErrorToastKeepsItsRemedy.py +0 -0
  990. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAnExternalRunIsAppliedByCategoryAndAnnouncedOnce.py +0 -0
  991. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAnInterruptedPromotionSurvivesAReload.py +0 -0
  992. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAnOlderScopeRendersAsVerifyAgain.py +0 -0
  993. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAnUncheckedPassIsNeverShownAsPassed.py +0 -0
  994. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testAssessedVerdictsOnScreen.py +0 -0
  995. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testBadgesRepaintAfterAVerify.py +0 -0
  996. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testBlankProjectCanReadAndChangeItsSession.py +0 -0
  997. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testBrowserJourneys.py +0 -0
  998. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCleanOutputsAppliesWhatTheRouteWrote.py +0 -0
  999. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testContainerizeFromPinnedImage.py +0 -0
  1000. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testConvertToProjectJourney.py +0 -0
  1001. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCopyButtonsReportTheRealOutcome.py +0 -0
  1002. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCopyHasAShortcutTheBrowserCannotTake.py +0 -0
  1003. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCopySurvivesTheSelectionBeingCleared.py +0 -0
  1004. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilAcceptCarriesItsDirectory.py +0 -0
  1005. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilBlockedButtonExplainsItself.py +0 -0
  1006. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilChairbotChat.py +0 -0
  1007. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilChooserTasks.py +0 -0
  1008. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilConveneNeedsAModel.py +0 -0
  1009. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilCredentialConsent.py +0 -0
  1010. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilDraftSurvivesAReload.py +0 -0
  1011. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilFinishedSurface.py +0 -0
  1012. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilGroupNameCannotInjectMarkup.py +0 -0
  1013. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilImplementPlanButton.py +0 -0
  1014. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilLoginCapNotice.py +0 -0
  1015. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilMaximumRoundsReachesTheRecord.py +0 -0
  1016. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilNotesAndSummarySurfaces.py +0 -0
  1017. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilPauseSurface.py +0 -0
  1018. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilPlanningJourney.py +0 -0
  1019. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilProvenanceLostGateIsReadOnly.py +0 -0
  1020. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilRetentionBoundaryIsInTheConsole.py +0 -0
  1021. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilRetryOffer.py +0 -0
  1022. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilSnapshotScopeModal.py +0 -0
  1023. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testCouncilWorkspaceCloseReturnsToChooser.py +0 -0
  1024. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testDashboardEdgesTellTheTruth.py +0 -0
  1025. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testDashboardSkipsAreMarkedStale.py +0 -0
  1026. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testDeclarationStepClaimsNoRunOutcome.py +0 -0
  1027. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testDeleteEnvironmentIsTypedNotClicked.py +0 -0
  1028. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testDestructiveActionsLookDestructive.py +0 -0
  1029. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testDeterminismRowFollowsTheGate.py +0 -0
  1030. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testDockerBannerNamesWhatFailed.py +0 -0
  1031. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testDownloadDoesNotAskToLeaveThePage.py +0 -0
  1032. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testEnvironmentInfoModalOpens.py +0 -0
  1033. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testErrorRedaction.py +0 -0
  1034. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testExpiredWindowSaysSo.py +0 -0
  1035. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testFailedBadgeRefreshMakesNoClaim.py +0 -0
  1036. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testFilesTabDownload.py +0 -0
  1037. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testFilesTabUpload.py +0 -0
  1038. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testForeignManifestGuard.py +0 -0
  1039. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testGeneratedTestsSayWhoWroteThem.py +0 -0
  1040. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testHelpLivesInOnePlace.py +0 -0
  1041. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testHostCancelSurface.py +0 -0
  1042. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testHostProjectJourney.py +0 -0
  1043. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testHostProjectPicker.py +0 -0
  1044. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testIdleTimeoutSetting.py +0 -0
  1045. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testInformationalFilesAreNotLevelTwoDefects.py +0 -0
  1046. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testInlineFailuresCarryTheDiagnosis.py +0 -0
  1047. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testLostClaimIsRecoverable.py +0 -0
  1048. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testOpenInVsCodeAsksTheHostForTheLink.py +0 -0
  1049. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testOutputContextNoteIsNeutral.py +0 -0
  1050. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testPausedBadgeIndicator.py +0 -0
  1051. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testPerFileZenodoSyncOpensTheModal.py +0 -0
  1052. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testPickerScreensScroll.py +0 -0
  1053. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testProjectBlockBadgesAreActionable.py +0 -0
  1054. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testProjectSwitchShowsItsProgress.py +0 -0
  1055. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testPromoteFromInsideJourney.py +0 -0
  1056. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testPromoteToHostProjectJourney.py +0 -0
  1057. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testProofTabLedgerFollowsTheGate.py +0 -0
  1058. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testPushRunsTheVerifyThatProvesIt.py +0 -0
  1059. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testQuarantineChipExplains.py +0 -0
  1060. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testRegenerateWarnsBeforeItCosts.py +0 -0
  1061. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testRemnantsGlyphAndPanel.py +0 -0
  1062. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testRemoteFilesGroupByDisposition.py +0 -0
  1063. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testRemoteSessionSaysWhere.py +0 -0
  1064. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testReposPanelIsReachableWithAProjectOpen.py +0 -0
  1065. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testReproducePublishedCard.py +0 -0
  1066. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testResizeAndCopyHoldTogether.py +0 -0
  1067. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testRightClickingTheHighlightCopiesIt.py +0 -0
  1068. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testSaveFailureNamesItsReason.py +0 -0
  1069. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testSelectingTextWhileAProgramHoldsTheMouse.py +0 -0
  1070. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testSessionLifetimeSetting.py +0 -0
  1071. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testSetUpDockerWizard.py +0 -0
  1072. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testStartBannersBelongToTheirContainer.py +0 -0
  1073. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testSwitchingProjectsKeepsEachProjectsState.py +0 -0
  1074. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testSymbolicTokenDependenciesOnScreen.py +0 -0
  1075. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTerminalPaneSurvivesADrop.py +0 -0
  1076. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTerminalScrollbackIsReachable.py +0 -0
  1077. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheAgentMemoryAdviceIsTheServers.py +0 -0
  1078. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheAiBlockCountsOnlyItsGatingRows.py +0 -0
  1079. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheAiDeclarationEditsInPlace.py +0 -0
  1080. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheAiDeclarationFileIsChosenOrGenerated.py +0 -0
  1081. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheArchiveRowNamesWhereADepositGoes.py +0 -0
  1082. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheArchiveRowsCarryTheirOwnConditions.py +0 -0
  1083. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheAttestationNudgeIsActionable.py +0 -0
  1084. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheAttestationNudgeIsAnEncouragement.py +0 -0
  1085. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheContainerizingWindowFollowsTheHub.py +0 -0
  1086. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheDriftBannerHidesForThisVisit.py +0 -0
  1087. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheEnvelopeMirrorRowRenders.py +0 -0
  1088. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheEnvironmentArchiveRowTellsItsStatesApart.py +0 -0
  1089. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheHelpNamesThisMachinesKey.py +0 -0
  1090. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheLimitSettingsSayWhatWillHappen.py +0 -0
  1091. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheLockRowKeepsItsStateAndSaysWhy.py +0 -0
  1092. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheMemoryWatchTellsAKillOnce.py +0 -0
  1093. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheMergeModalIsActuallyVisible.py +0 -0
  1094. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheNextStepArrowPointsAtARealRow.py +0 -0
  1095. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheOpenTimeReadsAreChained.py +0 -0
  1096. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testThePickerKeepsItsCardsAcrossAPoll.py +0 -0
  1097. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testThePinnedEnvironmentNoteIsTheServers.py +0 -0
  1098. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheProjectBlockPaintsOnceAndCorrectly.py +0 -0
  1099. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheProjectHubDiagnosesItself.py +0 -0
  1100. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testThePromptRecordNamesWhatItLeftOut.py +0 -0
  1101. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheReproductionBadgeFollowsTheServer.py +0 -0
  1102. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheResetAndCompareLoopIsReachable.py +0 -0
  1103. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheResourceHelpDoesNotRecommendACap.py +0 -0
  1104. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheRunMenuCanStartAnL3Verify.py +0 -0
  1105. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheSetupWizardKeepsAndReports.py +0 -0
  1106. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheSetupWizardSignsItselfIn.py +0 -0
  1107. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheSignOffFollowsTheServer.py +0 -0
  1108. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheTerminalResetGivesTheMouseBack.py +0 -0
  1109. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheToolbarControlsStayOneCluster.py +0 -0
  1110. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheVerificationShowsItsOutput.py +0 -0
  1111. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheVerifyControlsSayTheyAreWorking.py +0 -0
  1112. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheZenodoRowOffersBothRemedies.py +0 -0
  1113. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTheZenodoRowOffersVerifyFirst.py +0 -0
  1114. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testTileTooltipsSayWhatAClickDoes.py +0 -0
  1115. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testUncoveredLibrariesOnScreen.py +0 -0
  1116. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testUndecidedRepoPrompts.py +0 -0
  1117. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testUndeclaredTestCategorySaysNotApplicable.py +0 -0
  1118. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testUnintrospectableToastSaysWhatHappened.py +0 -0
  1119. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testUnprovenEnvelopeIsNotAnAlarm.py +0 -0
  1120. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testUnsignedTabSaysSo.py +0 -0
  1121. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testUploadZoneNamesItsSourceMachine.py +0 -0
  1122. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testVectorFigureNoteOnScreen.py +0 -0
  1123. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testVerifyOffersCommittedRestore.py +0 -0
  1124. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testVerifyRefusesBeforeItWarns.py +0 -0
  1125. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testVerifyWarnsBeforeCopyingTheProject.py +0 -0
  1126. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testViewRenderBaseline.py +0 -0
  1127. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testWizardStartsFromCommittedFiles.py +0 -0
  1128. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testWorkflowFieldsCannotInjectMarkup.py +0 -0
  1129. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testWorkspaceRootReachesThePanels.py +0 -0
  1130. {vaibify-0.2.2 → vaibify-0.3.0}/tests/browser/testZenodoRecordsModal.py +0 -0
  1131. {vaibify-0.2.2 → vaibify-0.3.0}/tests/carrierStandDown.py +0 -0
  1132. {vaibify-0.2.2 → vaibify-0.3.0}/tests/cliRunnerStreams.py +0 -0
  1133. {vaibify-0.2.2 → vaibify-0.3.0}/tests/confinedReadScenarios.py +0 -0
  1134. {vaibify-0.2.2 → vaibify-0.3.0}/tests/confinedWriteHarness.py +0 -0
  1135. {vaibify-0.2.2 → vaibify-0.3.0}/tests/councilCredentialLiveHelpers.py +0 -0
  1136. {vaibify-0.2.2 → vaibify-0.3.0}/tests/depositFaultServer.py +0 -0
  1137. {vaibify-0.2.2 → vaibify-0.3.0}/tests/dockerConnectionDoubles.py +0 -0
  1138. {vaibify-0.2.2 → vaibify-0.3.0}/tests/dockerRuntimeStub.py +0 -0
  1139. {vaibify-0.2.2 → vaibify-0.3.0}/tests/hostGitProbeCalls.py +0 -0
  1140. {vaibify-0.2.2 → vaibify-0.3.0}/tests/hostGitProbeHarness.py +0 -0
  1141. {vaibify-0.2.2 → vaibify-0.3.0}/tests/levelGateStubs.py +0 -0
  1142. {vaibify-0.2.2 → vaibify-0.3.0}/tests/liveContainerLabels.py +0 -0
  1143. {vaibify-0.2.2 → vaibify-0.3.0}/tests/localGitRemote.py +0 -0
  1144. {vaibify-0.2.2 → vaibify-0.3.0}/tests/markerPollHarness.py +0 -0
  1145. {vaibify-0.2.2 → vaibify-0.3.0}/tests/markerStateSupport.py +0 -0
  1146. {vaibify-0.2.2 → vaibify-0.3.0}/tests/perTestMarkerHarness.py +0 -0
  1147. {vaibify-0.2.2 → vaibify-0.3.0}/tests/reproduceScriptHarness.py +0 -0
  1148. {vaibify-0.2.2 → vaibify-0.3.0}/tests/reproductionSourceFixtures.py +0 -0
  1149. {vaibify-0.2.2 → vaibify-0.3.0}/tests/rerunAssessmentHarness.py +0 -0
  1150. {vaibify-0.2.2 → vaibify-0.3.0}/tests/sessionTokenTestHelper.py +0 -0
  1151. {vaibify-0.2.2 → vaibify-0.3.0}/tests/shellCompletionHarness.py +0 -0
  1152. {vaibify-0.2.2 → vaibify-0.3.0}/tests/snapshotProgramHarness.py +0 -0
  1153. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testABusyCheckWaitsForATransientRecord.py +0 -0
  1154. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testADivergedBranchIsOfferedAMerge.py +0 -0
  1155. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testALockThatDeclaresNothing.py +0 -0
  1156. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAMissingOutputIsNotAModifiedOne.py +0 -0
  1157. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testARunKeepsThePassingTestsItRecordedLive.py +0 -0
  1158. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testARunsOwnOutputsAreNotModifications.py +0 -0
  1159. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testASavedTestRunsOnce.py +0 -0
  1160. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAbandonHostJournal.py +0 -0
  1161. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAcknowledgementKeepsThePollBaseline.py +0 -0
  1162. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testActionCatalog.py +0 -0
  1163. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testActionCommandsDispatchCoverage.py +0 -0
  1164. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAdvertisedCommandsExist.py +0 -0
  1165. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilCharter.py +0 -0
  1166. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilContext.py +0 -0
  1167. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilContextLive.py +0 -0
  1168. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilEgressLive.py +0 -0
  1169. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilEngine.py +0 -0
  1170. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilFrontendContract.py +0 -0
  1171. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilLedger.py +0 -0
  1172. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilMultiProvider.py +0 -0
  1173. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilProviders.py +0 -0
  1174. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilProvidersLive.py +0 -0
  1175. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilRegistry.py +0 -0
  1176. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilRunnerLive.py +0 -0
  1177. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentCouncilSnapshotScopeLive.py +0 -0
  1178. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentEditsReachTheOpenTab.py +0 -0
  1179. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentLayerSeparation.py +0 -0
  1180. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentRunsItsOwnProject.py +0 -0
  1181. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentSessionBridge.py +0 -0
  1182. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAgentUpdateStepAllowlist.py +0 -0
  1183. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAiDeclarationAddStepAndDeterminismRoutes.py +0 -0
  1184. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAiDeclarationStepKind.py +0 -0
  1185. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAiModelDeclarationIssues.py +0 -0
  1186. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAiProvenanceStamp.py +0 -0
  1187. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAlphaFacingTruthfulness.py +0 -0
  1188. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAlreadyCommittedFileIsNotASyncFailure.py +0 -0
  1189. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAmericanSpelling.py +0 -0
  1190. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAnOutputAbsentFromTheManifestIsNeverVouchedFor.py +0 -0
  1191. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAnalysisStack.py +0 -0
  1192. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testApiClientContract.py +0 -0
  1193. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testArchiveDepositPlan.py +0 -0
  1194. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testArchiveFeatures.py +0 -0
  1195. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testArchiveMemberValidatorIsShared.py +0 -0
  1196. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testArchivePermanence.py +0 -0
  1197. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testArchiveTestsOptOutLeavesNoUnclearableRows.py +0 -0
  1198. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testArchivedAttestationIsPublic.py +0 -0
  1199. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testArxivClient.py +0 -0
  1200. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testArxivConfigureRoute.py +0 -0
  1201. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testArxivPathTraversal.py +0 -0
  1202. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAssessedRerunLive.py +0 -0
  1203. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAttainingALevelDoesNotLowerAnother.py +0 -0
  1204. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAttestationRevalidation.py +0 -0
  1205. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAttributionLog.py +0 -0
  1206. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testAttributionLogConcurrentAppends.py +0 -0
  1207. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBackgroundTasksAreReferenced.py +0 -0
  1208. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBadgeState.py +0 -0
  1209. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBaseImagePin.py +0 -0
  1210. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBaseImagePinLive.py +0 -0
  1211. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBinaryDeclaration.py +0 -0
  1212. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBinaryDrift.py +0 -0
  1213. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBinaryStaleWarning.py +0 -0
  1214. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBindMountRefusesAbsentSource.py +0 -0
  1215. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBootstrapEndpoint.py +0 -0
  1216. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBothBuildLanesPreflightAlike.py +0 -0
  1217. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBoundedPriorHash.py +0 -0
  1218. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBreachOutcomeDeterminism.py +0 -0
  1219. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBridgeGateway.py +0 -0
  1220. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBrowserCredentialPresentation.py +0 -0
  1221. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBrowserLaneParallelSafety.py +0 -0
  1222. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBrowserSession.py +0 -0
  1223. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBuildArchiveSnapshot.py +0 -0
  1224. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBuildCacheInvalidation.py +0 -0
  1225. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBuildErrorClassification.py +0 -0
  1226. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBuildFailureModalFrontendContract.py +0 -0
  1227. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBuildInputHash.py +0 -0
  1228. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBuildKitRequirement.py +0 -0
  1229. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBuildProgressRoutes.py +0 -0
  1230. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBuildSilenceIsReported.py +0 -0
  1231. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testBuildTailKeepsTheReason.py +0 -0
  1232. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCancelledRunLeavesItsLog.py +0 -0
  1233. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCapabilitiesSurviveMalformedTypedReads.py +0 -0
  1234. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCarrierIntentAudit.py +0 -0
  1235. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCarrierModeDeclaration.py +0 -0
  1236. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCgroupMemory.py +0 -0
  1237. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testClaimRequiredRefusal.py +0 -0
  1238. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testClaimRoutes.py +0 -0
  1239. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testClaudeCodeRendererLive.py +0 -0
  1240. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testClaudeCodeRendererVerdict.py +0 -0
  1241. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliActionCommands.py +0 -0
  1242. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliApiCommands.py +0 -0
  1243. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliCommands.py +0 -0
  1244. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliExecIsCleanedUp.py +0 -0
  1245. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliExecLive.py +0 -0
  1246. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliHubSessionMutationCoverage.py +0 -0
  1247. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliMain.py +0 -0
  1248. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliPipelineDispatch.py +0 -0
  1249. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliStatusDestroy.py +0 -0
  1250. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliSubcommands.py +0 -0
  1251. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCliTemplateProjectTowardLevelThreeLive.py +0 -0
  1252. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoherentExport.py +0 -0
  1253. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoherentExportLive.py +0 -0
  1254. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testColimaHostagentLogProbe.py +0 -0
  1255. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testColimaVersionPreflight.py +0 -0
  1256. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandBuild.py +0 -0
  1257. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandBuildBaseImagePin.py +0 -0
  1258. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandBuildPipFlags.py +0 -0
  1259. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandBuildPreflight.py +0 -0
  1260. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandDoctor.py +0 -0
  1261. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandGenerateStandards.py +0 -0
  1262. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandReconcile.py +0 -0
  1263. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandSecret.py +0 -0
  1264. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandSessions.py +0 -0
  1265. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandSetupDocker.py +0 -0
  1266. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandStartPreflight.py +0 -0
  1267. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandUtilities.py +0 -0
  1268. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommandUtilsDocker.py +0 -0
  1269. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommitCarrier.py +0 -0
  1270. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommittedFileRoutes.py +0 -0
  1271. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCommittedFiles.py +0 -0
  1272. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testComparisonPolicyNotes.py +0 -0
  1273. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCompletePathCommand.py +0 -0
  1274. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCompletionIsStateOnly.py +0 -0
  1275. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConcurrentStateSaves.py +0 -0
  1276. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConfigFieldPreflight.py +0 -0
  1277. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConfigLoader.py +0 -0
  1278. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConfigurationFingerprint.py +0 -0
  1279. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConfinedRead.py +0 -0
  1280. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConfinedReadParity.py +0 -0
  1281. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConfinedStreamingLive.py +0 -0
  1282. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConfinedStreamingWrite.py +0 -0
  1283. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConfinedTreeWrite.py +0 -0
  1284. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConfinedWriteSignalDeath.py +0 -0
  1285. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConftestCarriesTheContractVerbatim.py +0 -0
  1286. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConftestLoaderKeepsCommittedFilesStable.py +0 -0
  1287. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConftestManagerCoverage.py +0 -0
  1288. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConftestManagerMarker.py +0 -0
  1289. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConftestPerTestMarker.py +0 -0
  1290. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConftestRefreshBeforeRun.py +0 -0
  1291. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConftestRefreshSparesStepsWithoutTests.py +0 -0
  1292. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConnectHubOwnershipGate.py +0 -0
  1293. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConnectionCheck.py +0 -0
  1294. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConnectionRouter.py +0 -0
  1295. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerAcceptance.py +0 -0
  1296. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerBuildIntegration.py +0 -0
  1297. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerConfig.py +0 -0
  1298. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerGuidanceMatchesCatalog.py +0 -0
  1299. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerLock.py +0 -0
  1300. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerMemoryRoute.py +0 -0
  1301. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerMemoryWatch.py +0 -0
  1302. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerMemoryWatchLive.py +0 -0
  1303. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerOwnership.py +0 -0
  1304. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerRepairIsLifecycleSafe.py +0 -0
  1305. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerSessionResolution.py +0 -0
  1306. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContainerSweepSparesHostProjects.py +0 -0
  1307. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testContentSecurityPolicy.py +0 -0
  1308. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConvertConfigRewrite.py +0 -0
  1309. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testConvertToContainerRoute.py +0 -0
  1310. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilAdmissionLogIsBounded.py +0 -0
  1311. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilBaselineOffLoop.py +0 -0
  1312. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilCampaignName.py +0 -0
  1313. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilChat.py +0 -0
  1314. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilControllerSerialization.py +0 -0
  1315. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilCrashRecovery.py +0 -0
  1316. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilCredentialAdmission.py +0 -0
  1317. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilCredentialStore.py +0 -0
  1318. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilCredentialTestJob.py +0 -0
  1319. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilCredentialTestJobLive.py +0 -0
  1320. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilDurableProvenance.py +0 -0
  1321. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilEvidenceContract.py +0 -0
  1322. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilExecutionPermissionNote.py +0 -0
  1323. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilGateDecisions.py +0 -0
  1324. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilGatewayAuthority.py +0 -0
  1325. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilGatewayLive.py +0 -0
  1326. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilIdleVeto.py +0 -0
  1327. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilManifestConfinement.py +0 -0
  1328. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilNotesAndDeliberationSummary.py +0 -0
  1329. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilPause.py +0 -0
  1330. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilPeerHubIsolation.py +0 -0
  1331. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilPeerHubIsolationLive.py +0 -0
  1332. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilPhaseAttempts.py +0 -0
  1333. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilPhaseInFlight.py +0 -0
  1334. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilResume.py +0 -0
  1335. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilRetry.py +0 -0
  1336. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilRunnerAccess.py +0 -0
  1337. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilRunnerExecutableMounts.py +0 -0
  1338. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilRunnerLimitsFollowTheDaemon.py +0 -0
  1339. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilShutdownOrder.py +0 -0
  1340. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilSnapshotCapacity.py +0 -0
  1341. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilSnapshotCredentialExclusions.py +0 -0
  1342. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilSnapshotRoutes.py +0 -0
  1343. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilSnapshotScope.py +0 -0
  1344. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilStoppingPoint.py +0 -0
  1345. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilStorePersistence.py +0 -0
  1346. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilStoreRetention.py +0 -0
  1347. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilTurnBudgetsAreEnforced.py +0 -0
  1348. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCouncilWorkingSpaceReserve.py +0 -0
  1349. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageBroadGaps.py +0 -0
  1350. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCliDoctorChecks.py +0 -0
  1351. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCliReconcileRepairOpen.py +0 -0
  1352. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCliRemote.py +0 -0
  1353. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCliStandardsAndActions.py +0 -0
  1354. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCliUnreadableProjectFile.py +0 -0
  1355. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreCommitCarrier.py +0 -0
  1356. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreDataLoaders.py +0 -0
  1357. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreEnvironmentDeletion.py +0 -0
  1358. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreFileStatusManager.py +0 -0
  1359. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreGitStatus.py +0 -0
  1360. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreHostConnection.py +0 -0
  1361. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreOperationJournal.py +0 -0
  1362. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCorePinnedEnvironment.py +0 -0
  1363. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreServerLifespan.py +0 -0
  1364. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreSessionLifecycle.py +0 -0
  1365. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreStartReservation.py +0 -0
  1366. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreStateManager.py +0 -0
  1367. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCoreTerminalContainment.py +0 -0
  1368. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCouncilControllerRefusals.py +0 -0
  1369. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCouncilProviderAdapters.py +0 -0
  1370. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCouncilStateCampaign.py +0 -0
  1371. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCouncilStateChat.py +0 -0
  1372. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCouncilStateCredentialTest.py +0 -0
  1373. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCouncilStateEngine.py +0 -0
  1374. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCouncilStateRouteHelpers.py +0 -0
  1375. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCouncilStateRunnerAndEgress.py +0 -0
  1376. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCouncilStateSnapshotScope.py +0 -0
  1377. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageCouncilStateStore.py +0 -0
  1378. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageDockerDisposableContainer.py +0 -0
  1379. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageDockerDisposableSpecification.py +0 -0
  1380. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageDockerImageBuilder.py +0 -0
  1381. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageDockerLifecycleRepair.py +0 -0
  1382. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageDockerPinnedImage.py +0 -0
  1383. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageDockerRuntimeRemedies.py +0 -0
  1384. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageHostControlHandlers.py +0 -0
  1385. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageHostControlSocket.py +0 -0
  1386. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageReproducibilityDeterminismAndRerun.py +0 -0
  1387. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageReproducibilityDockerfileExport.py +0 -0
  1388. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageReproducibilityEnvironmentSnapshot.py +0 -0
  1389. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageReproducibilityImageAcquisition.py +0 -0
  1390. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageReproducibilityImageDeposit.py +0 -0
  1391. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageReproducibilityLevelGates.py +0 -0
  1392. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageReproducibilityRepoFiles.py +0 -0
  1393. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageReproducibilityReproductionSource.py +0 -0
  1394. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageReproducibilityZenodoArxiv.py +0 -0
  1395. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageRoutesAFalsification.py +0 -0
  1396. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageRoutesATerminal.py +0 -0
  1397. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageRoutesBGit.py +0 -0
  1398. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageRoutesBPipelineServer.py +0 -0
  1399. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageRoutesBRegistry.py +0 -0
  1400. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageRoutesBReplay.py +0 -0
  1401. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageRoutesBReproduction.py +0 -0
  1402. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCoverageRoutesBStep.py +0 -0
  1403. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCreationWizardRoutes.py +0 -0
  1404. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCredentialRedactionIsBySpan.py +0 -0
  1405. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCredentialRedactor.py +0 -0
  1406. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCredentialRedactorMutationCoverage.py +0 -0
  1407. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCredentialTestErrorsStayClean.py +0 -0
  1408. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCrossMachineUserVerification.py +0 -0
  1409. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testCrossWorkflowStateErasure.py +0 -0
  1410. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDaemonCapacity.py +0 -0
  1411. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDaemonDiskPreflight.py +0 -0
  1412. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDashboardColumnsFrontendContract.py +0 -0
  1413. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDataArchiverExtended.py +0 -0
  1414. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDataArchiverMutationCoverage.py +0 -0
  1415. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDataLoaders.py +0 -0
  1416. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDataLoadersCsvErrorPaths.py +0 -0
  1417. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDataLoadersMutationCoverage.py +0 -0
  1418. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDataLoadersStayOutOfTheHub.py +0 -0
  1419. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDataPreviewInjection.py +0 -0
  1420. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDeclarationFreshness.py +0 -0
  1421. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDeclarationPushMutationCoverage.py +0 -0
  1422. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDeclarationStepHonorsTheSlugContract.py +0 -0
  1423. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDeclaredGuaranteesAreAnchored.py +0 -0
  1424. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDeclaredPackagesMatchTheImage.py +0 -0
  1425. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDependencyDismissalRoute.py +0 -0
  1426. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDependencyPinningMutationCoverage.py +0 -0
  1427. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDependencyReconciliationGatesLevelOne.py +0 -0
  1428. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDependencyScanner.py +0 -0
  1429. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDepositIsNotDownloadedTwice.py +0 -0
  1430. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDepositSeams.py +0 -0
  1431. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDeterminismEnvHonesty.py +0 -0
  1432. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDeterminismGate.py +0 -0
  1433. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDeterminismRowMatchesItsGate.py +0 -0
  1434. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDeterministicGeneratorIsAgentSafe.py +0 -0
  1435. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDeterministicTestGenerator.py +0 -0
  1436. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDigestTimestampNaming.py +0 -0
  1437. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDirectTestRunsRestoreTheMarkerPlugin.py +0 -0
  1438. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDirectoryListing.py +0 -0
  1439. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDiskSpace.py +0 -0
  1440. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDisposableContainerLive.py +0 -0
  1441. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDisposableSurvivorReclaim.py +0 -0
  1442. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerBinaryIsolation.py +0 -0
  1443. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerBuild.py +0 -0
  1444. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerConnectionExecResult.py +0 -0
  1445. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerConnectionLive.py +0 -0
  1446. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerContext.py +0 -0
  1447. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerErrorDiagnosis.py +0 -0
  1448. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerHostContextRoundTrip.py +0 -0
  1449. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerLiveDaemonRequirement.py +0 -0
  1450. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerRuntimeClassification.py +0 -0
  1451. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerStatusEndpoint.py +0 -0
  1452. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerfileComposition.py +0 -0
  1453. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerfileHardening.py +0 -0
  1454. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerfileLint.py +0 -0
  1455. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerfileLintMutationCoverage.py +0 -0
  1456. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerfileNetworkRetries.py +0 -0
  1457. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDockerfileProvenance.py +0 -0
  1458. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDocsMatchWorkflowTriggers.py +0 -0
  1459. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDocsPublishedLinksResolve.py +0 -0
  1460. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDoctorFindingsNameACommand.py +0 -0
  1461. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDoctorInterpreterArchitecture.py +0 -0
  1462. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDoctorIsReadOnly.py +0 -0
  1463. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDoctorNetworkLive.py +0 -0
  1464. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDoctorScopesAndExitCodes.py +0 -0
  1465. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDoctorShellCompletions.py +0 -0
  1466. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDownloadRoutes.py +0 -0
  1467. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testDurableFile.py +0 -0
  1468. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointAdvertisedPaths.py +0 -0
  1469. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointAgentDocLinks.py +0 -0
  1470. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointAgentSkills.py +0 -0
  1471. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointBuildBinary.py +0 -0
  1472. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointCallsOnlyFunctionsItDefines.py +0 -0
  1473. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointClaudeSettings.py +0 -0
  1474. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointGitCredentials.py +0 -0
  1475. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointInstructionPrecedence.py +0 -0
  1476. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointMigration.py +0 -0
  1477. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointPipNotAPackage.py +0 -0
  1478. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointReadinessMarker.py +0 -0
  1479. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointRepairsBrokenDocLinks.py +0 -0
  1480. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointRepoRefs.py +0 -0
  1481. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointResourcesGuidance.py +0 -0
  1482. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEntrypointRootPhasePath.py +0 -0
  1483. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEnvelopeImageCurrency.py +0 -0
  1484. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEnvelopeRegenerationReportsItsDelta.py +0 -0
  1485. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEnvelopeTierResultsAreVisible.py +0 -0
  1486. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEnvironmentArchive.py +0 -0
  1487. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEnvironmentArchiveStop.py +0 -0
  1488. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEnvironmentDeletion.py +0 -0
  1489. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEnvironmentDrift.py +0 -0
  1490. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEnvironmentSnapshot.py +0 -0
  1491. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEnvironmentSnapshotMutationCoverage.py +0 -0
  1492. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEphemeralStore.py +0 -0
  1493. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testEveryLevelTwoSyncRefusalIsNamedByABlocker.py +0 -0
  1494. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testExecSocketExchange.py +0 -0
  1495. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testExecutionProfilesLive.py +0 -0
  1496. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testExhaustiveCoverage.py +0 -0
  1497. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testExitCodesAreExplained.py +0 -0
  1498. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testExplicitReleaseAuthority.py +0 -0
  1499. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFailedSaveGroundTruthFrontendContract.py +0 -0
  1500. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFalsificationAttestation.py +0 -0
  1501. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFalsificationAttestationMutationCoverage.py +0 -0
  1502. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFalsificationRoutesCoverage.py +0 -0
  1503. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFalsificationSharding.py +0 -0
  1504. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFigureServer.py +0 -0
  1505. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFigureViewerFrontendContract.py +0 -0
  1506. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFileBrowserEscapingFrontendContract.py +0 -0
  1507. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFileEndpointsAndMiddleware.py +0 -0
  1508. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFileStatusManager.py +0 -0
  1509. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFileStatusManagerInvalidation.py +0 -0
  1510. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFileStatusManagerProofAdditions.py +0 -0
  1511. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFileStatusManagerStaleness.py +0 -0
  1512. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFileStatusManagerTimestamps.py +0 -0
  1513. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFileTransfer.py +0 -0
  1514. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFinalCoverageGaps.py +0 -0
  1515. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testForcePushArgumentOrder.py +0 -0
  1516. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testForeignManifestGuard.py +0 -0
  1517. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testForwardedHostPortFree.py +0 -0
  1518. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFreshnessUncheckedLevelOne.py +0 -0
  1519. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testFunctionLengthStatement.py +0 -0
  1520. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGatesRunOnEveryPullRequest.py +0 -0
  1521. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGenerateReproducibilityEnvelope.py +0 -0
  1522. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGeneratedFileNamesAreStepNamed.py +0 -0
  1523. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGitBadgesPartialRenderFrontendContract.py +0 -0
  1524. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGitRoutesProjectRepoSync.py +0 -0
  1525. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGitRoutesRemoteUrl.py +0 -0
  1526. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGitStatus.py +0 -0
  1527. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGithubAuth.py +0 -0
  1528. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGithubMirror.py +0 -0
  1529. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGithubRemoteIsDerivedNotDeclared.py +0 -0
  1530. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGithubRoutesProjectRepoCwd.py +0 -0
  1531. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGithubTokenBinding.py +0 -0
  1532. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGithubTokenResolution.py +0 -0
  1533. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGithubWorkflow.py +0 -0
  1534. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGracefulExitsChecker.py +0 -0
  1535. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGuiBuildWarnsAboutTheMachine.py +0 -0
  1536. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGuiLaunchHonesty.py +0 -0
  1537. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testGuiTemplateManager.py +0 -0
  1538. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHarnessHookMutationCoverage.py +0 -0
  1539. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHashStaleness.py +0 -0
  1540. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHashStalenessCoverage.py +0 -0
  1541. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHashStalenessIntegration.py +0 -0
  1542. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHashStalenessManifest.py +0 -0
  1543. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostBusyOracle.py +0 -0
  1544. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostCapabilityInventory.py +0 -0
  1545. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostClaimPath.py +0 -0
  1546. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostCliRunsThroughTheHub.py +0 -0
  1547. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostCliSession.py +0 -0
  1548. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostConfinedRead.py +0 -0
  1549. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostConnection.py +0 -0
  1550. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostControlChannel.py +0 -0
  1551. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostGitSafetyProbes.py +0 -0
  1552. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostHeaderCheck.py +0 -0
  1553. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostIncidents.py +0 -0
  1554. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostModeDaemonGate.py +0 -0
  1555. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostModeProjectRoots.py +0 -0
  1556. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostPrerequisiteReport.py +0 -0
  1557. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostProjectAsksGitWithoutTimeoutBinary.py +0 -0
  1558. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostReadNeedsDirectoryRelativeAccess.py +0 -0
  1559. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostResidueStaysInsideOneProject.py +0 -0
  1560. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostScratchSweeper.py +0 -0
  1561. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostSnapshotTwin.py +0 -0
  1562. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostStreamingWrite.py +0 -0
  1563. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostSubprocessConfinement.py +0 -0
  1564. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostTerminal.py +0 -0
  1565. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHostTransfer.py +0 -0
  1566. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHubAppGovernance.py +0 -0
  1567. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHubDoctorRoute.py +0 -0
  1568. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHubIdleWatchdog.py +0 -0
  1569. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHubPortRegistry.py +0 -0
  1570. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHubSessionCoverage.py +0 -0
  1571. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testHubShutdownSignals.py +0 -0
  1572. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testIdleWatchdogOffLoop.py +0 -0
  1573. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testImageAcquisition.py +0 -0
  1574. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testImageArchiveVersioning.py +0 -0
  1575. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testImageBuilder.py +0 -0
  1576. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testImageBuilderExtended.py +0 -0
  1577. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testImageLocale.py +0 -0
  1578. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testImageTrustAnsweredForThePin.py +0 -0
  1579. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testImageTrustCommandLine.py +0 -0
  1580. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testImageTrustProvenanceRows.py +0 -0
  1581. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testImageTrustTextHasOneHome.py +0 -0
  1582. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testInitRegistrationOutcome.py +0 -0
  1583. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testInitTemplateRepositories.py +0 -0
  1584. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testInjectionGuards.py +0 -0
  1585. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testInlineCodeCommandsPassPreflight.py +0 -0
  1586. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testInputDataStaleness.py +0 -0
  1587. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testInstallScriptAgents.py +0 -0
  1588. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testInteractivePauseSurvivesReconnect.py +0 -0
  1589. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testInteractiveSteps.py +0 -0
  1590. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testIntrospectionScriptGaps.py +0 -0
  1591. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testIntrospectionTfrecord.py +0 -0
  1592. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testInventoryRepositoryGitSurface.py +0 -0
  1593. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testKeepAliveManager.py +0 -0
  1594. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testKeepAliveSpawnLedger.py +0 -0
  1595. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testKeychainIsolationCrossesProcesses.py +0 -0
  1596. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testL3AttestationMutationCoverage.py +0 -0
  1597. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLatexAnnotation.py +0 -0
  1598. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLatexConnectorExtended.py +0 -0
  1599. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLeaseSessionBinding.py +0 -0
  1600. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLedgerFormatIsCanonical.py +0 -0
  1601. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLegacyBuilderLive.py +0 -0
  1602. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelBlockers.py +0 -0
  1603. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelCellsNeverOverstate.py +0 -0
  1604. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelContiguousClimbContract.py +0 -0
  1605. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelGateL2Blockers.py +0 -0
  1606. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelGateL3.py +0 -0
  1607. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelGateL3Blockers.py +0 -0
  1608. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelGatesBlockerCache.py +0 -0
  1609. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelGatesCoverage2.py +0 -0
  1610. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelGatesStepClassifiers.py +0 -0
  1611. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelReportCoverage.py +0 -0
  1612. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelRoutes.py +0 -0
  1613. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLevelTwoRechecksLocalBytes.py +0 -0
  1614. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLifecycleLogging.py +0 -0
  1615. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLinuxDockerPreflight.py +0 -0
  1616. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testListModules.py +0 -0
  1617. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLiveLanesLabelWhatTheyCreate.py +0 -0
  1618. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLiveSessionBoundary.py +0 -0
  1619. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testLlmInvokerBranches.py +0 -0
  1620. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMachineAttention.py +0 -0
  1621. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMakeDirectory.py +0 -0
  1622. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testManifestCheck.py +0 -0
  1623. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testManifestCheckReport.py +0 -0
  1624. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testManifestCompletenessAsksTheWriter.py +0 -0
  1625. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testManifestOwnershipFromSnapshotFacts.py +0 -0
  1626. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testManifestPaths.py +0 -0
  1627. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testManifestVerifyRoute.py +0 -0
  1628. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testManifestWriter.py +0 -0
  1629. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testManifestWriterMutationCoverage.py +0 -0
  1630. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMarkerAppliedToUnnecessaryStep.py +0 -0
  1631. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMarkerBookkeepingIsIgnored.py +0 -0
  1632. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMarkerDigestVerdicts.py +0 -0
  1633. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMarkerFreshnessLive.py +0 -0
  1634. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMarkerFreshnessPoll.py +0 -0
  1635. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMarkerHashesTemplatedPlots.py +0 -0
  1636. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMarkerLevelGate.py +0 -0
  1637. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMarkerNamespaceFromLoadedWorkflow.py +0 -0
  1638. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMarkerStaleness.py +0 -0
  1639. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMatplotlibSaltIsolation.py +0 -0
  1640. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMatplotlibSaltIsolationLive.py +0 -0
  1641. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testModelIdsAreHeldToPlainShapes.py +0 -0
  1642. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testModuleAttributeReferencesResolve.py +0 -0
  1643. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMtimeCache.py +0 -0
  1644. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMutationAttribution.py +0 -0
  1645. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testMutationScannerTypeCheckingExemption.py +0 -0
  1646. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testNetworkEfficiencyFrontendContract.py +0 -0
  1647. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testNoProjectOpenRefusal.py +0 -0
  1648. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testNoQuoteBlindEscaperInTheFrontend.py +0 -0
  1649. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testNoUnforwardedUrlsInRemoteSession.py +0 -0
  1650. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testObtainedBaseStacksLive.py +0 -0
  1651. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOldMarkerReadsAsItAlwaysDid.py +0 -0
  1652. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOomAttribution.py +0 -0
  1653. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOperationJournal.py +0 -0
  1654. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOperationJournalMutationCoverage.py +0 -0
  1655. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOrphanTransition.py +0 -0
  1656. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOrphanedPublishMachinery.py +0 -0
  1657. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOrphanedTerminalsAreEnded.py +0 -0
  1658. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOrphanedWriteTemporaries.py +0 -0
  1659. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOutputFreshnessByContent.py +0 -0
  1660. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOverlayBannersReadTheStepFirst.py +0 -0
  1661. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOverleafBehavior.py +0 -0
  1662. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOverleafChipAgreesWithRows.py +0 -0
  1663. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOverleafFetchHashes.py +0 -0
  1664. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOverleafMirror.py +0 -0
  1665. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOverleafPushProvenance.py +0 -0
  1666. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testOverleafSyncCoverage.py +0 -0
  1667. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPackagedResources.py +0 -0
  1668. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPathContract.py +0 -0
  1669. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPathTraversal.py +0 -0
  1670. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPathValidation.py +0 -0
  1671. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPendingPromotionRecord.py +0 -0
  1672. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPerContainerStateLifecycle.py +0 -0
  1673. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPidFileRegistry.py +0 -0
  1674. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPinnedEnvironmentDrift.py +0 -0
  1675. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPinnedImageAcquisition.py +0 -0
  1676. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineLogAppend.py +0 -0
  1677. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineLoggerCoverage.py +0 -0
  1678. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineLoggerRotation.py +0 -0
  1679. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRoutesDiagnostics.py +0 -0
  1680. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRoutesEtag.py +0 -0
  1681. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRoutesManifestText.py +0 -0
  1682. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRoutesMutationCoverage.py +0 -0
  1683. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRoutesShaCache.py +0 -0
  1684. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRunnerCoverage.py +0 -0
  1685. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRunnerErrors.py +0 -0
  1686. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRunnerExtended.py +0 -0
  1687. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRunnerPure.py +0 -0
  1688. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRunnerStepsAndLog.py +0 -0
  1689. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineRunnerStreamingEmitter.py +0 -0
  1690. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineServerAgentAuth.py +0 -0
  1691. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineServerCoverage.py +0 -0
  1692. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineServerGaps.py +0 -0
  1693. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineServerLifespan.py +0 -0
  1694. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineServerPure.py +0 -0
  1695. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineServerTaskEviction.py +0 -0
  1696. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineState.py +0 -0
  1697. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineTestRunnerCoverage.py +0 -0
  1698. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPipelineUtilsScaling.py +0 -0
  1699. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPlotRoutes.py +0 -0
  1700. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPoisonRecord.py +0 -0
  1701. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPortAllocator.py +0 -0
  1702. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPostPushVerifyFollowsTheSharedPredicate.py +0 -0
  1703. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPreferencesRoutes.py +0 -0
  1704. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPreferencesStore.py +0 -0
  1705. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPreflightResult.py +0 -0
  1706. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProcessLiveness.py +0 -0
  1707. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProjectAdoption.py +0 -0
  1708. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProjectAdoptionFalsification.py +0 -0
  1709. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProjectBookkeepingSidecar.py +0 -0
  1710. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProjectConfigExtended.py +0 -0
  1711. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProjectContextRoutes.py +0 -0
  1712. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProjectDepositPromotion.py +0 -0
  1713. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProjectHubRefusals.py +0 -0
  1714. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProjectScopedAgentActions.py +0 -0
  1715. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProjectScopedRegistries.py +0 -0
  1716. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProjectSwitchWithinContainer.py +0 -0
  1717. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPromotionRecovery.py +0 -0
  1718. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPromptRecordAgentsLive.py +0 -0
  1719. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPromptRecordPollFrontendContract.py +0 -0
  1720. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPromptRecordPublishesNoRawDigestOracle.py +0 -0
  1721. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPromptRecordViewer.py +0 -0
  1722. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProofGateLevel1.py +0 -0
  1723. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProofLevelInPollResponse.py +0 -0
  1724. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProvenanceCommitDuringRun.py +0 -0
  1725. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProvenanceContractMutationCoverage.py +0 -0
  1726. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProvenanceTaint.py +0 -0
  1727. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProvenanceTracker.py +0 -0
  1728. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProvenanceTrackerMutationCoverage.py +0 -0
  1729. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testProviderApiTransport.py +0 -0
  1730. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPublishLogsNameOnlyPublicIdentifiers.py +0 -0
  1731. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPublishedReproductionWorkflow.py +0 -0
  1732. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPullFromContainer.py +0 -0
  1733. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testPythonPackagePreflight.py +0 -0
  1734. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testQuarantineDetailRoute.py +0 -0
  1735. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testQuarantineRefusalNamesItsCause.py +0 -0
  1736. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRandomnessLint.py +0 -0
  1737. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReadOnlyCouncilRunsNoCommands.py +0 -0
  1738. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReaderRecordIsNeverCommitted.py +0 -0
  1739. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReaderRunReplaysRecordedEpoch.py +0 -0
  1740. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReadinessRoute.py +0 -0
  1741. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReclaimNeverTreatsANameAsAnId.py +0 -0
  1742. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReconcileNothingToReconcileExitsZero.py +0 -0
  1743. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReconcileQuarantineRoute.py +0 -0
  1744. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReconciliation.py +0 -0
  1745. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReconciliationMutationCoverage.py +0 -0
  1746. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReconfirmFalsificationJudgesKills.py +0 -0
  1747. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReconnectWindowContract.py +0 -0
  1748. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRecordedEpochReplay.py +0 -0
  1749. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRefactoringCoverage.py +0 -0
  1750. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRefreshRemotes.py +0 -0
  1751. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRefuseUnexecutedCommandFields.py +0 -0
  1752. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRefusedArchiveConversionChangesNothing.py +0 -0
  1753. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRegistryContainerRecognition.py +0 -0
  1754. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRegistryIsNotAnL3Requirement.py +0 -0
  1755. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRegistryRemovalIsLeaseEnforced.py +0 -0
  1756. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRegistryRouteLockState.py +0 -0
  1757. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRegistryRoutesCoverage.py +0 -0
  1758. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemainingGaps.py +0 -0
  1759. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemnantReapers.py +0 -0
  1760. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemnantRemovalLive.py +0 -0
  1761. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemnantScanner.py +0 -0
  1762. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemnantScannerLive.py +0 -0
  1763. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemoteClient.py +0 -0
  1764. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemoteDataOverwriteGate.py +0 -0
  1765. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemoteDataRecordIdentity.py +0 -0
  1766. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemoteProtocol.py +0 -0
  1767. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemoteReattachment.py +0 -0
  1768. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemoteSessionLane.py +0 -0
  1769. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRemoteSshLane.py +0 -0
  1770. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRenameKeepsPerTestMarkerSections.py +0 -0
  1771. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReplayGate.py +0 -0
  1772. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReplayRoutes.py +0 -0
  1773. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRepoFilesMutationCoverage.py +0 -0
  1774. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRepoRoutes.py +0 -0
  1775. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRepoStatusTypedRead.py +0 -0
  1776. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReposPanelFrontendContract.py +0 -0
  1777. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReposPollingFrontendContract.py +0 -0
  1778. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRepositoryPreflight.py +0 -0
  1779. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceCommand.py +0 -0
  1780. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceCommandAttestation.py +0 -0
  1781. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceFromSnapshot.py +0 -0
  1782. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceFromSource.py +0 -0
  1783. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproducePublishedFrontendContract.py +0 -0
  1784. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceRerunHashCompare.py +0 -0
  1785. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceScriptContainerHalf.py +0 -0
  1786. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceScriptDeterminism.py +0 -0
  1787. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceScriptGateRejectsResidualTokens.py +0 -0
  1788. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceScriptGenerator.py +0 -0
  1789. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceScriptParity.py +0 -0
  1790. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceScriptParityLive.py +0 -0
  1791. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceTierParity.py +0 -0
  1792. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproduceTierThreeRemedy.py +0 -0
  1793. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproducibilityRoutes.py +0 -0
  1794. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproductionLabelInPollResponse.py +0 -0
  1795. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproductionLive.py +0 -0
  1796. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproductionProgress.py +0 -0
  1797. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproductionRecordBindsItsEvidence.py +0 -0
  1798. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproductionRecordPlatform.py +0 -0
  1799. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproductionRoutes.py +0 -0
  1800. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testReproductionSource.py +0 -0
  1801. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRequirementsMirrorNamesWhatItDrops.py +0 -0
  1802. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRerunAssessmentEvidence.py +0 -0
  1803. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRerunAssessmentImageCheck.py +0 -0
  1804. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRerunAssessmentPrecedence.py +0 -0
  1805. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRerunAssessmentStructure.py +0 -0
  1806. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRerunAssessmentTranscription.py +0 -0
  1807. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRerunDiagnostics.py +0 -0
  1808. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRerunHashCompareMutationCoverage.py +0 -0
  1809. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRerunProcedureGuards.py +0 -0
  1810. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRerunRefusesUnexecutedSteps.py +0 -0
  1811. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testResourceAdequacy.py +0 -0
  1812. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testResourceLimitDrift.py +0 -0
  1813. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testResourceLimitLiveApply.py +0 -0
  1814. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testResourceLimitLiveApplyLive.py +0 -0
  1815. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testResourceLimitSettings.py +0 -0
  1816. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testResourceMonitor.py +0 -0
  1817. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRouteContextCoverage.py +0 -0
  1818. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRoutesRefuseCallerPathsOutsideTheirRoot.py +0 -0
  1819. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRowAndGateAgreeOnManifestFreshness.py +0 -0
  1820. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRunAllRespectsDisabledFrontendContract.py +0 -0
  1821. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRunFrameWithABadStepIsRefusedNotFatal.py +0 -0
  1822. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRunStateWireCarriesStepResults.py +0 -0
  1823. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRuntimeSetupPlan.py +0 -0
  1824. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRuntimeSetupRoutes.py +0 -0
  1825. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testRuntimeSetupRunner.py +0 -0
  1826. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSafeReaper.py +0 -0
  1827. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSandboxArchiveWithholdsLevel3.py +0 -0
  1828. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSecretAvailability.py +0 -0
  1829. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSecretFilesFollowTheirContainer.py +0 -0
  1830. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSecretManager.py +0 -0
  1831. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSecretNamesWithSeparatorsCanBeStagedAndMounted.py +0 -0
  1832. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSecurityBoundaryInvariants.py +0 -0
  1833. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSeededFolderRepositoryListLive.py +0 -0
  1834. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSemanticWorkflowFingerprint.py +0 -0
  1835. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testServerLaunchContract.py +0 -0
  1836. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testServerMiddlewareCoverage.py +0 -0
  1837. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSessionCapSetting.py +0 -0
  1838. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSessionCardinality.py +0 -0
  1839. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSessionEndingNotice.py +0 -0
  1840. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSessionLaneFollowsClaim.py +0 -0
  1841. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSessionLifecycleEvaluator.py +0 -0
  1842. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSessionLifecycleFoundation.py +0 -0
  1843. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSessionRenewalAndWarningBands.py +0 -0
  1844. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSessionSpawnRoute.py +0 -0
  1845. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSetupWizard.py +0 -0
  1846. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSetupWizardIsGuarded.py +0 -0
  1847. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testShadowContainerAdmission.py +0 -0
  1848. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testShadowLaneLockFiles.py +0 -0
  1849. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testShellCompletionInsertion.py +0 -0
  1850. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testShellCompletionPositions.py +0 -0
  1851. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testShellCompletionWiring.py +0 -0
  1852. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testShellSetupVersioning.py +0 -0
  1853. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSignOffCapturesPlotBytes.py +0 -0
  1854. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSignOffIsDatedByTheContainerClock.py +0 -0
  1855. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSignOffReconciliationByContent.py +0 -0
  1856. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSkillIntegrity.py +0 -0
  1857. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSleepPreventionFollowsWork.py +0 -0
  1858. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSnapshotAnswersBlobShaAndMissing.py +0 -0
  1859. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSnapshotCacheRacyClean.py +0 -0
  1860. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSnapshotNamesStayInsideTheRoot.py +0 -0
  1861. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSpawnedWindowSignsIn.py +0 -0
  1862. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStaleCapturedWorkflow.py +0 -0
  1863. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStaleOutputAdvisoryIsNotADeadPayload.py +0 -0
  1864. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStaleOutputDetector.py +0 -0
  1865. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStaleReproduceScriptIsNotRunnable.py +0 -0
  1866. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStandardsGenerator.py +0 -0
  1867. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStandardsLoader.py +0 -0
  1868. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStartPreflightExtensions.py +0 -0
  1869. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStartReservationFalsification.py +0 -0
  1870. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStateContract.py +0 -0
  1871. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStateDirectoryIsolation.py +0 -0
  1872. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStateLevelHighWater.py +0 -0
  1873. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStateManager.py +0 -0
  1874. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStateRecovery.py +0 -0
  1875. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStateWriteLock.py +0 -0
  1876. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStaticAnalysisClean.py +0 -0
  1877. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStatusContextLine.py +0 -0
  1878. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepDirectoryValidator.py +0 -0
  1879. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepEditFingerprintFrontendContract.py +0 -0
  1880. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepEditorFingerprintLifetimeFrontendContract.py +0 -0
  1881. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepGateAgreesWithManifestWriter.py +0 -0
  1882. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepLabels.py +0 -0
  1883. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepListRenderFrontendContract.py +0 -0
  1884. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepRename.py +0 -0
  1885. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepRenameCascadeMutationCoverage.py +0 -0
  1886. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepRenameCascadeReachesEverything.py +0 -0
  1887. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepRenameMoveCoverage.py +0 -0
  1888. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepRendererBlockerGlyphs.py +0 -0
  1889. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepSlugContract.py +0 -0
  1890. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepSlugMirrorEquivalence.py +0 -0
  1891. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepTestLogDirectory.py +0 -0
  1892. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepUpdateDestructiveGuard.py +0 -0
  1893. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStepVerdictFromRuns.py +0 -0
  1894. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStochasticDetector.py +0 -0
  1895. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testStopByRunMarkerLive.py +0 -0
  1896. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSupervisionChipFrontendContract.py +0 -0
  1897. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSupervisionWatchdog.py +0 -0
  1898. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSymbolicStepReferencesAreChecked.py +0 -0
  1899. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSyncDispatcherMutationCoverage.py +0 -0
  1900. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSyncDispatcherPure.py +0 -0
  1901. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSyncEpoch.py +0 -0
  1902. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSyncEpochReachesTheIdleDashboard.py +0 -0
  1903. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSyncErrorClassification.py +0 -0
  1904. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSyncErrors.py +0 -0
  1905. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSyncProjectionCoversEveryPublishedPath.py +0 -0
  1906. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSyncRoutesPushHardening.py +0 -0
  1907. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSyncRoutesPushIdempotency.py +0 -0
  1908. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSystemPackagePreflight.py +0 -0
  1909. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testSystemPackageValidation.py +0 -0
  1910. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTemplateManager.py +0 -0
  1911. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTemplatedPlotMarkerInAContainerLive.py +0 -0
  1912. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTerminalContainmentLive.py +0 -0
  1913. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTerminalPromptReset.py +0 -0
  1914. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTerminalPromptResetLive.py +0 -0
  1915. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTerminalRedialContract.py +0 -0
  1916. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTerminalResizeOrdering.py +0 -0
  1917. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTerminalRoutesCoverage.py +0 -0
  1918. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTerminalSelectionContrast.py +0 -0
  1919. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTerminalSession.py +0 -0
  1920. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTerminalStartWindowIsDrained.py +0 -0
  1921. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTerminalTeardownSurvivesShutdownCancellation.py +0 -0
  1922. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTestGeneratorBranches.py +0 -0
  1923. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTestGeneratorPure.py +0 -0
  1924. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTestMarkerContract.py +0 -0
  1925. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTestRoutesCoverage.py +0 -0
  1926. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTestsAndSignOffFollowThePlotBytesLive.py +0 -0
  1927. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTextIoNamesItsEncoding.py +0 -0
  1928. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheArchiveIsAskedWhatItStored.py +0 -0
  1929. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheBlockedMapOutlivesTheArrow.py +0 -0
  1930. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheDashboardSettingsReachEveryMode.py +0 -0
  1931. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheLockIsCheckedBeforeARerunIsSpent.py +0 -0
  1932. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheLockVerdictCarriesItsFingerprint.py +0 -0
  1933. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheManifestDescribesTheFilesItShipsWith.py +0 -0
  1934. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheNextStepIsNamedOnlyWhenOrderMatters.py +0 -0
  1935. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testThePollDoesNotRewriteWhatItReads.py +0 -0
  1936. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheReadinessRouteAnswersARequest.py +0 -0
  1937. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheRerunSaysWhatItCosts.py +0 -0
  1938. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheScalarGateHasNoSecondList.py +0 -0
  1939. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheSignOffSaveReadsOnlyLevelOne.py +0 -0
  1940. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTheSnapshotIsADeclaredRead.py +0 -0
  1941. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTimedCommandComposition.py +0 -0
  1942. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTimedCommandsLive.py +0 -0
  1943. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testToolchainEpoch.py +0 -0
  1944. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testToolchainPinDrift.py +0 -0
  1945. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTopologyCorrectFileActions.py +0 -0
  1946. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTrackedIndexBeyondSymlinkBucket.py +0 -0
  1947. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTranscriptSanitizer.py +0 -0
  1948. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTranscriptSanitizerCoverage.py +0 -0
  1949. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTranscriptSanitizerJsonRecords.py +0 -0
  1950. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTranscriptSanitizerParallel.py +0 -0
  1951. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTranscriptSanitizerSplitSecrets.py +0 -0
  1952. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTransferResolvesRelativeContainerPaths.py +0 -0
  1953. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTruthDerivation.py +0 -0
  1954. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testTypeAloneStopsTheSwallow.py +0 -0
  1955. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testUncoveredLibrariesAreNamed.py +0 -0
  1956. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testUndiscoveredTerminalRecordSettles.py +0 -0
  1957. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testUnloadDoesNotReleaseContract.py +0 -0
  1958. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testUnseededRandomnessReachesLevelThree.py +0 -0
  1959. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testUploadRoutes.py +0 -0
  1960. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVaibifyDoCli.py +0 -0
  1961. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVaibifyDoHeadless.py +0 -0
  1962. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVaibifyDoUnansweredRequest.py +0 -0
  1963. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVaibifyOpen.py +0 -0
  1964. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVendoredPdfJs.py +0 -0
  1965. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVerificationLiveOutput.py +0 -0
  1966. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVerifyRemoteIsBoundToThePush.py +0 -0
  1967. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVerifyResolvesPlotPathsWhereTheRunWritesThem.py +0 -0
  1968. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVirtiofsRetry.py +0 -0
  1969. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVolumeCommandsStayOffTheTerminal.py +0 -0
  1970. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVolumeManager.py +0 -0
  1971. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testVsCodeAttachLink.py +0 -0
  1972. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWallClockBudget.py +0 -0
  1973. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWebSocketAuthorization.py +0 -0
  1974. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWithdrawnTerminalLegacyRecords.py +0 -0
  1975. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWizardDirectoryPickerContract.py +0 -0
  1976. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWizardsShareOneRepositoryAuthority.py +0 -0
  1977. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowDiscoveryLegacyRoot.py +0 -0
  1978. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowFieldTypesAreValidatedAtLoad.py +0 -0
  1979. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowLoadingBannerFrontendContract.py +0 -0
  1980. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowManagerMutationCoverage.py +0 -0
  1981. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowManagerScaling.py +0 -0
  1982. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowMergeGateSplit.py +0 -0
  1983. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowMigrations.py +0 -0
  1984. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowMigrationsAICSLevel.py +0 -0
  1985. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowMigrationsProofLevelRename.py +0 -0
  1986. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowReloadDetector.py +0 -0
  1987. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowRoutesCoverage.py +0 -0
  1988. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowSchemaForwardCompat.py +0 -0
  1989. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkflowSwitchGenerationContract.py +0 -0
  1990. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWorkspacePath.py +0 -0
  1991. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testWritableLayerLoss.py +0 -0
  1992. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testZenodoCandidatesCoverLevelThree.py +0 -0
  1993. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testZenodoClient.py +0 -0
  1994. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testZenodoClientExtended.py +0 -0
  1995. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testZenodoDatasetDownloadIsWithdrawn.py +0 -0
  1996. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testZenodoFetchHashes.py +0 -0
  1997. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testZenodoLookupPatience.py +0 -0
  1998. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testZenodoPublishWhereTheRecordIs.py +0 -0
  1999. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testZenodoServiceAuthorities.py +0 -0
  2000. {vaibify-0.2.2 → vaibify-0.3.0}/tests/testZenodoUploadResilience.py +0 -0
  2001. {vaibify-0.2.2 → vaibify-0.3.0}/tests/timingSupport.py +0 -0
  2002. {vaibify-0.2.2 → vaibify-0.3.0}/tests/typedHashDouble.py +0 -0
  2003. {vaibify-0.2.2 → vaibify-0.3.0}/tools/bootstrapAcceptanceContainer.py +0 -0
  2004. {vaibify-0.2.2 → vaibify-0.3.0}/tools/carrierIntentAudit.py +0 -0
  2005. {vaibify-0.2.2 → vaibify-0.3.0}/tools/checkAgentDocsPaths.py +0 -0
  2006. {vaibify-0.2.2 → vaibify-0.3.0}/tools/checkAmericanSpelling.py +0 -0
  2007. {vaibify-0.2.2 → vaibify-0.3.0}/tools/checkBrowserLaunches.py +0 -0
  2008. {vaibify-0.2.2 → vaibify-0.3.0}/tools/checkInstalledDistribution.py +0 -0
  2009. {vaibify-0.2.2 → vaibify-0.3.0}/tools/checkToolchainEpoch.py +0 -0
  2010. {vaibify-0.2.2 → vaibify-0.3.0}/tools/checkToolchainPinDrift.py +0 -0
  2011. {vaibify-0.2.2 → vaibify-0.3.0}/tools/computeBuildInputHash.py +0 -0
  2012. {vaibify-0.2.2 → vaibify-0.3.0}/tools/deriveLaneSelection.py +0 -0
  2013. {vaibify-0.2.2 → vaibify-0.3.0}/tools/evaluateSkillOutcomes.py +0 -0
  2014. {vaibify-0.2.2 → vaibify-0.3.0}/tools/evaluateSkillTriggers.py +0 -0
  2015. {vaibify-0.2.2 → vaibify-0.3.0}/tools/generateHostCapabilityInventory.py +0 -0
  2016. {vaibify-0.2.2 → vaibify-0.3.0}/tools/generateStyleInventory.py +0 -0
  2017. {vaibify-0.2.2 → vaibify-0.3.0}/tools/inventoryRepositoryGitSurface.py +0 -0
  2018. {vaibify-0.2.2 → vaibify-0.3.0}/tools/ledgerFormat.py +0 -0
  2019. {vaibify-0.2.2 → vaibify-0.3.0}/tools/listModules.py +0 -0
  2020. {vaibify-0.2.2 → vaibify-0.3.0}/tools/mutationAttribution.py +0 -0
  2021. {vaibify-0.2.2 → vaibify-0.3.0}/tools/reconfirmFalsification.py +0 -0
  2022. {vaibify-0.2.2 → vaibify-0.3.0}/tools/skillEvals/outcomeTasks.json +0 -0
  2023. {vaibify-0.2.2 → vaibify-0.3.0}/tools/skillEvals/triggerPrompts.json +0 -0
  2024. {vaibify-0.2.2 → vaibify-0.3.0}/tools/summarizeFalsificationShards.py +0 -0
  2025. {vaibify-0.2.2 → vaibify-0.3.0}/tools/syncRequiredChecks.py +0 -0
  2026. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/__init__.py +0 -0
  2027. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/__main__.py +0 -0
  2028. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/__init__.py +0 -0
  2029. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/baseImagePreflight.py +0 -0
  2030. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandCat.py +0 -0
  2031. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandCompletePath.py +0 -0
  2032. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandConfig.py +0 -0
  2033. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandGenerateStandards.py +0 -0
  2034. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandLs.py +0 -0
  2035. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandOpen.py +0 -0
  2036. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandPublish.py +0 -0
  2037. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandRegister.py +0 -0
  2038. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandRemote.py +0 -0
  2039. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandRemoteHelper.py +0 -0
  2040. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandRepair.py +0 -0
  2041. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandReproduce.py +0 -0
  2042. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandRun.py +0 -0
  2043. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandSecret.py +0 -0
  2044. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandSessions.py +0 -0
  2045. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandSetupDocker.py +0 -0
  2046. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandStatus.py +0 -0
  2047. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandUtilsDocker.py +0 -0
  2048. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandVerifyStep.py +0 -0
  2049. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/commandWorkflow.py +0 -0
  2050. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/configLoader.py +0 -0
  2051. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/daemonDiskPreflight.py +0 -0
  2052. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/doctorHostChecks.py +0 -0
  2053. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/imageTrustPrompt.py +0 -0
  2054. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/levelReport.py +0 -0
  2055. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/portAllocator.py +0 -0
  2056. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/preflightChecks.py +0 -0
  2057. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/preflightResult.py +0 -0
  2058. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/pythonPackagePreflight.py +0 -0
  2059. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/remoteProtocol.py +0 -0
  2060. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/repositoryPreflight.py +0 -0
  2061. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/cli/systemPackagePreflight.py +0 -0
  2062. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/__init__.py +0 -0
  2063. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/abandonmentAudit.py +0 -0
  2064. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/agentTerminalEnvironment.py +0 -0
  2065. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/analysisStack.py +0 -0
  2066. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/connectionAvailability.py +0 -0
  2067. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/durableFile.py +0 -0
  2068. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/hostResidue.py +0 -0
  2069. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/hubPortRegistry.py +0 -0
  2070. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/imageTrust.py +0 -0
  2071. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/modelIdentity.py +0 -0
  2072. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/operationJournal.py +0 -0
  2073. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/pendingConversions.py +0 -0
  2074. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/pidFileRegistry.py +0 -0
  2075. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/preferencesStore.py +0 -0
  2076. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/processLiveness.py +0 -0
  2077. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/reconciliation.py +0 -0
  2078. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/resourceAdequacy.py +0 -0
  2079. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/resourceLimits.py +0 -0
  2080. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/secretAvailability.py +0 -0
  2081. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/secretManager.py +0 -0
  2082. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/templateManager.py +0 -0
  2083. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/config/workerProcessPool.py +0 -0
  2084. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile +0 -0
  2085. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.antigravity +0 -0
  2086. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.claude +0 -0
  2087. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.claudeArmOnIntel +0 -0
  2088. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.cline +0 -0
  2089. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.codex +0 -0
  2090. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.gemini +0 -0
  2091. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.julia +0 -0
  2092. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.jupyter +0 -0
  2093. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.node +0 -0
  2094. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.opencode +0 -0
  2095. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.openhands +0 -0
  2096. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.pi +0 -0
  2097. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.rlang +0 -0
  2098. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/Dockerfile.uv +0 -0
  2099. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/overlays/database.dockerfile +0 -0
  2100. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/overlays/dvc.dockerfile +0 -0
  2101. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/overlays/gpu.dockerfile +0 -0
  2102. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/overlays/nestedSampling.dockerfile +0 -0
  2103. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/skills/create-pipeline-step/SKILL.md +0 -0
  2104. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/skills/dashboard-map/SKILL.md +0 -0
  2105. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/skills/diagnose-failed-run/SKILL.md +0 -0
  2106. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/skills/graceful-exits/SKILL.md +0 -0
  2107. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/skills/graceful-exits/checkGracefulExits.py +0 -0
  2108. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/skills/read-manuscript/SKILL.md +0 -0
  2109. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/skills/reproducible-analysis/SKILL.md +0 -0
  2110. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/skills/running-steps/SKILL.md +0 -0
  2111. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/skills/session-budget/SKILL.md +0 -0
  2112. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/containerImage/skills/vaibify-doc-map/SKILL.md +0 -0
  2113. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/__init__.py +0 -0
  2114. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/bridgeGateway.py +0 -0
  2115. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/buildKitRequirement.py +0 -0
  2116. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/cgroupMemory.py +0 -0
  2117. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/coherentExport.py +0 -0
  2118. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/confinedRead.py +0 -0
  2119. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/confinedWrite.py +0 -0
  2120. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/daemonCapacity.py +0 -0
  2121. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/daemonDescription.py +0 -0
  2122. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/execArgumentBudget.py +0 -0
  2123. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/fileTransfer.py +0 -0
  2124. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/imageBuilder.py +0 -0
  2125. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/keepAliveManager.py +0 -0
  2126. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/pathContainment.py +0 -0
  2127. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/runtimeRemedies.py +0 -0
  2128. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docker/writableLayerLoss.py +0 -0
  2129. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docs/scriptAuthoring.md +0 -0
  2130. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/docs/testing.md +0 -0
  2131. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/__init__.py +0 -0
  2132. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/acquisitionFailure.py +0 -0
  2133. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentClientFreshness.py +0 -0
  2134. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncil.py +0 -0
  2135. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilAntigravityProvider.py +0 -0
  2136. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilCampaign.py +0 -0
  2137. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilCapacity.py +0 -0
  2138. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilCharter.py +0 -0
  2139. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilChat.py +0 -0
  2140. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilCodexProvider.py +0 -0
  2141. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilController.py +0 -0
  2142. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilCredentialGate.py +0 -0
  2143. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilCredentialStore.py +0 -0
  2144. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilCredentialTest.py +0 -0
  2145. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilCredentialTestRecords.py +0 -0
  2146. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilCredentialTestRecovery.py +0 -0
  2147. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilEvidence.py +0 -0
  2148. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilEvidenceContract.py +0 -0
  2149. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilManifest.py +0 -0
  2150. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilProviderRegistry.py +0 -0
  2151. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilProviders.py +0 -0
  2152. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilReadiness.py +0 -0
  2153. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilResolution.py +0 -0
  2154. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilRunner.py +0 -0
  2155. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilSnapshotScope.py +0 -0
  2156. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilStagedCopies.py +0 -0
  2157. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentCouncilStore.py +0 -0
  2158. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentProjectScope.py +0 -0
  2159. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/agentSessionBridge.py +0 -0
  2160. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/aiProvenanceCapture.py +0 -0
  2161. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/archiveProgress.py +0 -0
  2162. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/attributionLog.py +0 -0
  2163. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/backgroundTasks.py +0 -0
  2164. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/badgeState.py +0 -0
  2165. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/browserSession.py +0 -0
  2166. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/cliShellContainment.py +0 -0
  2167. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/commandUtilities.py +0 -0
  2168. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/connectionRouter.py +0 -0
  2169. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/containerMemorySampler.py +0 -0
  2170. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/containerMemoryWatch.py +0 -0
  2171. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/councilRouteGuards.py +0 -0
  2172. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/dataLoaders.py +0 -0
  2173. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/dependencyScan.py +0 -0
  2174. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/dependencyScanner.py +0 -0
  2175. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/deterministicTestWriter.py +0 -0
  2176. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/diskSpace.py +0 -0
  2177. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/dockerStatus.py +0 -0
  2178. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/draftManager.py +0 -0
  2179. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/executionTopology.py +0 -0
  2180. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/figureServer.py +0 -0
  2181. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/fileIntegrity.py +0 -0
  2182. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/gitStatus.py +0 -0
  2183. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/hashStaleness.py +0 -0
  2184. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/hostBusyOracle.py +0 -0
  2185. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/hostIncidents.py +0 -0
  2186. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/hostModeReturn.py +0 -0
  2187. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/interactiveSteps.py +0 -0
  2188. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/introspectionScript.py +0 -0
  2189. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/llmTestGeneration.py +0 -0
  2190. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/machineAttention.py +0 -0
  2191. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/manifestCheck.py +0 -0
  2192. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/mtimeCache.py +0 -0
  2193. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/pathContract.py +0 -0
  2194. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/personalLayerManager.py +0 -0
  2195. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/pipelineRunSlots.py +0 -0
  2196. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/pipelineState.py +0 -0
  2197. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/pipelineTestRunner.py +0 -0
  2198. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/pipelineUtils.py +0 -0
  2199. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/projectAdoption.py +0 -0
  2200. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/projectContextManager.py +0 -0
  2201. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/projectRoots.py +0 -0
  2202. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/promptRecordViewer.py +0 -0
  2203. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/provenanceCommitter.py +0 -0
  2204. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/providerApiTransport.py +0 -0
  2205. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/randomnessLint.py +0 -0
  2206. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/remnantReapers.py +0 -0
  2207. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/remnantScanner.py +0 -0
  2208. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/reproductionProgress.py +0 -0
  2209. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/rerunEvidence.py +0 -0
  2210. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/researcherNotices.py +0 -0
  2211. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/resourceLimitApplication.py +0 -0
  2212. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/resourceMonitor.py +0 -0
  2213. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/committedFileRoutes.py +0 -0
  2214. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/connectionCheckRoutes.py +0 -0
  2215. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/councilChatRoutes.py +0 -0
  2216. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/councilCredentialRoutes.py +0 -0
  2217. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/councilRoutes.py +0 -0
  2218. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/councilSnapshotRoutes.py +0 -0
  2219. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/downloadRoutes.py +0 -0
  2220. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/draftRoutes.py +0 -0
  2221. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/figureRoutes.py +0 -0
  2222. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/gitRoutes.py +0 -0
  2223. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/imageTrustRoutes.py +0 -0
  2224. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/levelRoutes.py +0 -0
  2225. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/plotRoutes.py +0 -0
  2226. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/preferencesRoutes.py +0 -0
  2227. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/promptRecordViewerRoutes.py +0 -0
  2228. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/remnantRoutes.py +0 -0
  2229. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/remoteRefreshRoutes.py +0 -0
  2230. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/replayRoutes.py +0 -0
  2231. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/repoRoutes.py +0 -0
  2232. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/runtimeSetupRoutes.py +0 -0
  2233. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/scriptRoutes.py +0 -0
  2234. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/settingsRoutes.py +0 -0
  2235. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/stepRoutes.py +0 -0
  2236. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/terminalRoutes.py +0 -0
  2237. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/routes/uploadRoutes.py +0 -0
  2238. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/runOutputBaseline.py +0 -0
  2239. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/sleepPrevention.py +0 -0
  2240. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/staleOutputDetector.py +0 -0
  2241. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/standardsFiles.py +0 -0
  2242. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/startResultStore.py +0 -0
  2243. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/startupObservations.py +0 -0
  2244. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/stateWriteLock.py +0 -0
  2245. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/favicon.png +0 -0
  2246. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/favicon.svg +0 -0
  2247. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptAcquisitionWindow.js +0 -0
  2248. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptAgentCouncil.js +0 -0
  2249. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptAiModelConfig.js +0 -0
  2250. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptApiClient.js +0 -0
  2251. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptArxivConfig.js +0 -0
  2252. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptBinaryDeclaration.js +0 -0
  2253. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptCouncilConsent.js +0 -0
  2254. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptCouncilSnapshotScope.js +0 -0
  2255. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptDiagnosis.js +0 -0
  2256. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptDirectoryBrowser.js +0 -0
  2257. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptDraftManager.js +0 -0
  2258. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptEnvironmentInfo.js +0 -0
  2259. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptFileDropWalker.js +0 -0
  2260. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptFileOperations.js +0 -0
  2261. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptFileOutcomes.js +0 -0
  2262. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptFilePull.js +0 -0
  2263. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptFileRowMenu.js +0 -0
  2264. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptFileUpload.js +0 -0
  2265. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptFiles.js +0 -0
  2266. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptGitBadges.js +0 -0
  2267. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptImageTrust.js +0 -0
  2268. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptLegendPanel.js +0 -0
  2269. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptManifestCheck.js +0 -0
  2270. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptMemoryWatch.js +0 -0
  2271. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptNewWorkflowWizard.js +0 -0
  2272. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptOverleafMirror.js +0 -0
  2273. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptPersonalLayer.js +0 -0
  2274. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptPipelineRunner.js +0 -0
  2275. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptPlotStandards.js +0 -0
  2276. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptPolling.js +0 -0
  2277. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptProjectContext.js +0 -0
  2278. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptPromptRecordConfig.js +0 -0
  2279. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptPromptRecordViewer.js +0 -0
  2280. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptRemnants.js +0 -0
  2281. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptReposPanel.js +0 -0
  2282. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptReproducePublished.js +0 -0
  2283. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptRuntimeSetup.js +0 -0
  2284. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptSetupWizard.js +0 -0
  2285. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptStepEditor.js +0 -0
  2286. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptTerminal.js +0 -0
  2287. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptTestManager.js +0 -0
  2288. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptUtilities.js +0 -0
  2289. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptWebSocket.js +0 -0
  2290. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/scriptZenodoDepositCard.js +0 -0
  2291. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/setupWizard.html +0 -0
  2292. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/vaibify_logo_paleblue.png +0 -0
  2293. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/vaibify_logo_paleblue_dark.png +0 -0
  2294. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/vendor/addon-fit.min.js +0 -0
  2295. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/vendor/addon-unicode11.min.js +0 -0
  2296. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/vendor/pdf.min.js +0 -0
  2297. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/vendor/pdf.worker.min.js +0 -0
  2298. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/vendor/xterm.min.css +0 -0
  2299. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/static/vendor/xterm.min.js +0 -0
  2300. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/stepDependencyScan.py +0 -0
  2301. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/stepRename.py +0 -0
  2302. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/supervisionAnchor.py +0 -0
  2303. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/templateManager.py +0 -0
  2304. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/terminalContainment.py +0 -0
  2305. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/testGenerator.py +0 -0
  2306. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/testMarkerContract.py +0 -0
  2307. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/testParser.py +0 -0
  2308. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/testStatusManager.py +0 -0
  2309. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/trackedReposManager.py +0 -0
  2310. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/transcriptSanitizer.py +0 -0
  2311. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/truthDerivation.py +0 -0
  2312. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/uploadStaging.py +0 -0
  2313. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/verificationProgress.py +0 -0
  2314. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/vscodeAttachLink.py +0 -0
  2315. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/workflowFieldTypes.py +0 -0
  2316. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/workflowMigrations.py +0 -0
  2317. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/workflowReloadDetector.py +0 -0
  2318. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/workspacePath.py +0 -0
  2319. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/gui/writableLayerPreview.py +0 -0
  2320. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/host/__init__.py +0 -0
  2321. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/host/archiveExtraction.py +0 -0
  2322. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/host/hostCancellation.py +0 -0
  2323. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/host/hostScratch.py +0 -0
  2324. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/install/__init__.py +0 -0
  2325. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/install/runtimeSetupFacts.py +0 -0
  2326. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/install/runtimeSetupPlan.py +0 -0
  2327. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/install/runtimeSetupRunner.py +0 -0
  2328. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/install/runtimeSetupSupervisor.py +0 -0
  2329. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/install/setupServer.py +0 -0
  2330. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/install/shellSetup.py +0 -0
  2331. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/install/uninstallVaibify.sh +0 -0
  2332. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/__init__.py +0 -0
  2333. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/_hashing.py +0 -0
  2334. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/agentLayerSeparation.py +0 -0
  2335. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/aiDeclarationStep.py +0 -0
  2336. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/aiProvenanceStamp.py +0 -0
  2337. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/answeredQuestion.py +0 -0
  2338. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/archiveDepositPlan.py +0 -0
  2339. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/archivePermanence.py +0 -0
  2340. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/arxivClient.py +0 -0
  2341. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/askpassHelper.py +0 -0
  2342. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/assessmentLane.py +0 -0
  2343. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/committedFiles.py +0 -0
  2344. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/comparisonPolicyNotes.py +0 -0
  2345. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/comparisonPolicyV1.py +0 -0
  2346. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/connectionCheck.py +0 -0
  2347. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/credentialRedactor.py +0 -0
  2348. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/dataArchiver.py +0 -0
  2349. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/declarationFreshness.py +0 -0
  2350. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/declaredPackages.py +0 -0
  2351. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/dependencyFindings.py +0 -0
  2352. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/determinismGate.py +0 -0
  2353. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/dockerfileComposer.py +0 -0
  2354. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/dockerfileLint.py +0 -0
  2355. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/downloadPartial.py +0 -0
  2356. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/environmentDrift.py +0 -0
  2357. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/executionProfiles.py +0 -0
  2358. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/falsificationAttestation.py +0 -0
  2359. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/gitEvidence.py +0 -0
  2360. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/gitHardening.py +0 -0
  2361. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/githubAuth.py +0 -0
  2362. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/githubWorkflow.py +0 -0
  2363. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/imageAcquisition.py +0 -0
  2364. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/imageArchive.py +0 -0
  2365. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/imageDeposit.py +0 -0
  2366. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/imageDockerfileExport.py +0 -0
  2367. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/latexConnector.py +0 -0
  2368. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/levelOrdering.py +0 -0
  2369. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/lockSatisfaction.py +0 -0
  2370. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/manifestPaths.py +0 -0
  2371. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/manifestWriter.py +0 -0
  2372. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/overleafAuth.py +0 -0
  2373. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/overleafMirror.py +0 -0
  2374. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/provenanceTracker.py +0 -0
  2375. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/rangedHttpTransport.py +0 -0
  2376. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/remoteCheckState.py +0 -0
  2377. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/replayGate.py +0 -0
  2378. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/reproduceScriptGenerator.py +0 -0
  2379. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/reproductionLabel.py +0 -0
  2380. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/reproductionRecord.py +0 -0
  2381. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/reproductionSource.py +0 -0
  2382. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/rerunAssessment.py +0 -0
  2383. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/rerunDiagnostics.py +0 -0
  2384. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/rerunEstimate.py +0 -0
  2385. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/rerunPreparation.py +0 -0
  2386. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/rerunVerification.py +0 -0
  2387. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/resumableDownload.py +0 -0
  2388. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/reproducibility/stepPredicates.py +0 -0
  2389. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/resources.py +0 -0
  2390. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/templates/sandbox/container.conf +0 -0
  2391. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/templates/toolkit/README.md +0 -0
  2392. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/templates/toolkit/container.conf +0 -0
  2393. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/templates/toolkit/project.json +0 -0
  2394. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/templates/workflow/GenerateSamples/generateSamples.py +0 -0
  2395. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/templates/workflow/PlotHistogram/plotHistogram.py +0 -0
  2396. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/templates/workflow/container.conf +0 -0
  2397. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/templates/workflow/project.json +0 -0
  2398. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/templates/workflow.yml.j2 +0 -0
  2399. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/testing/__init__.py +0 -0
  2400. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/testing/standards.py +0 -0
  2401. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify/testing/stochasticDetector.py +0 -0
  2402. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify.egg-info/dependency_links.txt +0 -0
  2403. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify.egg-info/entry_points.txt +0 -0
  2404. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify.egg-info/requires.txt +0 -0
  2405. {vaibify-0.2.2 → vaibify-0.3.0}/vaibify.egg-info/top_level.txt +0 -0
  2406. {vaibify-0.2.2 → vaibify-0.3.0}/website/.gitignore +0 -0
  2407. {vaibify-0.2.2 → vaibify-0.3.0}/website/README.md +0 -0
  2408. {vaibify-0.2.2 → vaibify-0.3.0}/website/public/404.html +0 -0
  2409. {vaibify-0.2.2 → vaibify-0.3.0}/website/public/_headers +0 -0
  2410. {vaibify-0.2.2 → vaibify-0.3.0}/website/public/assets/favicon.png +0 -0
  2411. {vaibify-0.2.2 → vaibify-0.3.0}/website/public/assets/vaibifyDashboard.png +0 -0
  2412. {vaibify-0.2.2 → vaibify-0.3.0}/website/public/assets/vaibifyLogo.png +0 -0
  2413. {vaibify-0.2.2 → vaibify-0.3.0}/website/public/index.html +0 -0
  2414. {vaibify-0.2.2 → vaibify-0.3.0}/website/public/robots.txt +0 -0
  2415. {vaibify-0.2.2 → vaibify-0.3.0}/website/public/sitemap.xml +0 -0
  2416. {vaibify-0.2.2 → vaibify-0.3.0}/website/public/styles.css +0 -0
  2417. {vaibify-0.2.2 → vaibify-0.3.0}/website/wrangler.toml +0 -0
@@ -0,0 +1,1104 @@
1
+ ---
2
+ name: reproducibility-lane
3
+ description: Contracts for vaibify's reproducibility machinery: PROOF levels and their gates, the L3 shadow rerun, attestations, determinism declarations, reproduce.sh, the environment archive, Zenodo deposits, and reproducing a published project. Use when touching anything under vaibify/reproducibility/, the level gates, the PROOF tab, or an attestation lane.
4
+ ---
5
+
6
+ # Working on the reproducibility lanes
7
+
8
+ These are the contracts the attestation machinery rests on. Every one
9
+ of them was established by a defect that reached a researcher, and
10
+ most name the test that guards them. A test is kill-confirmed only
11
+ when `tests/falsificationRegistry.py` carries its node id (grep it
12
+ there before calling it so), and several named here have no entry:
13
+ the live legs `tests/testRerunVerifiesWhatItRan.py`,
14
+ `tests/testDisposableContainerLive.py` and
15
+ `tests/testReproductionLive.py`; `testBothLanesGradeOneTreeAlike`,
16
+ `testReproductionSourceNamesNoForgeHostname`,
17
+ `test_no_reader_of_the_record_fetches_a_url_on_trust` and
18
+ `testFnWriteFileDefaultsToContainerUserOwnership`; and the files
19
+ `tests/testRegistryIsNotAnL3Requirement.py`,
20
+ `tests/testDaemonCapacity.py` and
21
+ `tests/browser/testVerifyWarnsBeforeCopyingTheProject.py`. Read the
22
+ sections that cover the lane you are touching before you edit it.
23
+
24
+ The repository-wide rules in `AGENTS.md` still apply; this file is
25
+ the detail for this subsystem.
26
+
27
+ **Determinism is ONE question, and answering is the criterion
28
+ (2026-10-17, superseding the three-question ruling of 2026-08-30).**
29
+ The block asks how much speed vaibify should trade for repeatable
30
+ files. `sRepeatabilityAnswer` is `speed` or `across`; either passes and
31
+ only silence fails, exactly as for Personal AI Configuration. The
32
+ answer changes how steps run, never what Level 3 requires. Four things
33
+ not to undo:
34
+
35
+ - **The researcher never names a profile.** The SERVER writes
36
+ `sExecutionProfile` as the newest table version for the answer
37
+ (`executionProfiles.fsNewestProfileForAnswer`), and a request naming a
38
+ profile or a legacy answer is refused
39
+ (`testACallerCannotNameAProfileOrALegacyAnswer`). An answer without
40
+ its profile is half an answer.
41
+ - **The answer lives in its own key**, because a VALUE cannot express
42
+ consideration — the lesson of the old `bAcceptBlasVariance: false`,
43
+ which meant "unanswered" and "declined" at once. The three legacy
44
+ answers are kept on disk and answer nothing
45
+ (`testTheLegacyAnswersDoNotAnswerTheQuestion`).
46
+ - **The schema-v14 migration is a no-op**: three old answers imply
47
+ neither new one, so the question opens again. It spells no key the
48
+ gate reads (`testTheV14MigratorSpellsNoKeyTheGateReads`); the v13
49
+ migration and its literal-key pin stand as they were.
50
+ - **Researcher-facing wording** (`listChoices`, `sWhy`, `sConsequence`)
51
+ lives in `LIST_DETERMINISM_QUESTIONS` beside the gate, travels on the
52
+ poll, and never carries a schema key. Changing the answer retires
53
+ the current attestation, which stays on file as history
54
+ (`testChangingTheAnswerRetiresTheAttestationAndKeepsIt`).
55
+
56
+ **The answer is ordered (2026-10-27).** `levelOrdering` has edges from
57
+ the Project block's `determinism-repeatability` row to the manifest,
58
+ the rebuild attestation and both published envelopes, judged by the
59
+ gate's own unanswered list, as the poll's row is. Each reason is
60
+ CONDITIONAL, because an unanswered project already runs, records and
61
+ verifies under the speed settings: answering "Prioritize speed"
62
+ afterwards undoes nothing, so no reason may claim an undo for it
63
+ (`test_an_unanswered_determinism_question_is_named_before_the_envelope`).
64
+ The arrow is an endgame device, so the costliest order of all --
65
+ answering before the run that makes the outputs -- is said by the
66
+ in-container proof-ladder skill, not by the arrow.
67
+
68
+ **Only the GitHub sync push records where a push landed (2026-10-27).**
69
+ The GitHub verify is bound to that host-side record, and the sync push
70
+ writes it only after checking that the researcher's token owns the
71
+ remote. The Repos panel runs no such check, and a push's real
72
+ destination can differ from the `origin` url the container wrote, so
73
+ it deliberately records nothing: a binding recorded there would let a
74
+ container agent steer the agent-safe verify, and the researcher's
75
+ token, at a repository of its choosing
76
+ (`testARepoPanelPushOfTheProjectRepoRecordsNoGithubBinding`). The
77
+ verify's binding check is asserted at the shared call site,
78
+ `fdictVerifyRemoteService`, with the fetch rigged to fail if reached
79
+ (`testAnUnboundRemoteIsRefusedBeforeAnyFetchAndTheRefusalIsRelayed`).
80
+
81
+ **Level 2 asks what a READER can retrieve (2026-10-30).** The verify
82
+ observes access with no credentials and records which remote its
83
+ evidence is about; two authorities in `levelGates`
84
+ (`fdictDescribePublicAccess`, `fdictDescribePublishedCopy`) answer
85
+ from that record, and every surface renders their answer.
86
+ `docs/architecture.md` "What a reader can retrieve" has the model. Five
87
+ things not to undo, each kill-confirmed in
88
+ `tests/testReaderAccessIsObservedAnonymously.py` or
89
+ `tests/testLevelTwoAsksWhatAReaderIsServed.py`:
90
+
91
+ - **No token reaches a reader-access request.** The GitHub probe's
92
+ request builder takes no token and its path never asks the keyring;
93
+ every Zenodo reader read goes through the one tokenless client,
94
+ `zenodoClient._fclientAnonymous`.
95
+ - **A restricted record withholds the comparison.** Nothing is hashed
96
+ when any declared record is known not to be public. A sibling's 429
97
+ never erases a known restriction, and an unchecked record with none
98
+ known closed writes nothing.
99
+ - **Each record is observed once.** The comparison and the attestation
100
+ read consume the same observations; a second fetch re-raised 404 and
101
+ aborted the verify before its verdict was saved.
102
+ - **Absent is not public, and evidence names its remote.** A record with
103
+ no `dictPublicAccess` reads unknown, never public, so a project does
104
+ not keep its level by having been verified before the question
105
+ existed, and an unknown verdict always charges a criterion, or the
106
+ header outranks the row. A record whose `dictRemoteIdentity` disagrees
107
+ with the push binding, the declared remote, the branch the next verify
108
+ would read (an omitted branch is the default, never "any") or the
109
+ declared record set is unknown.
110
+ - **The backoff is a deadline, never a sleep.** A 403 or 429 sets an
111
+ in-process deadline before which every probe raises without sending.
112
+
113
+ **The archive is a checkpoint, and carries a PROOF receipt
114
+ (2026-10-31).** GitHub and Zenodo face the same Level 2 gates; their
115
+ roles differ, so every project deposit (the promotion included, never
116
+ the environment image) is published as a PAIR: a checkpoint version,
117
+ then, once one coherent observation attains Level 2, a journaled
118
+ completion version with the same files and one receipt replaced.
119
+ `docs/architecture.md` "The archive is a checkpoint" has the model;
120
+ `proofCatalog` states Level 2 as data and `tests/testProofCatalogAgrees.py`
121
+ holds every copy to it; `proofReceipt` captures the observation and
122
+ builds schema version 1, which is archived and cannot change. Each item
123
+ below was proposed, and refuted, while the design was reviewed. Do not
124
+ reintroduce any of them:
125
+
126
+ - **Building the checkpoint receipt from repository reads.** A file can
127
+ change between the read and staging; the inventory is the STAGED
128
+ bytes, and exactly those bytes are uploaded.
129
+ - **"Level 2 met against the checkpoint."** The Zenodo verify accepts
130
+ any declared record, so the completion claims "met against the
131
+ declared record set" and says separately whether the checkpoint ALONE
132
+ holds every Level 2 file (`listCheckpointLacks`).
133
+ - **Matching inherited files by key.** By MD5 and size, against the
134
+ journaled inventory.
135
+ - **Rebuilding the completion receipt on resume.** Its bytes are stored
136
+ in `.vaibify/pendingReceipts/` before the draft exists; resume
137
+ uploads or compares only those, checked against the journal first.
138
+ - **An inventory without the receipt.** The reconciler ignores files it
139
+ is not told about, so a version holding the checkpoint's receipt would
140
+ read published. On the completion lane an unlisted file is a
141
+ non-match too.
142
+ - **Sending the completion lane through the existing adopt.** It would
143
+ reach the image adopter and stamp `environment.json`.
144
+ - **Putting the pin in `fcontextLevelComputation`'s memo.** Nested
145
+ contexts reset it; `fcontextPinnedEvaluation` saves and restores.
146
+ - **Reading the blocker cache during a capture.** Its key has no instant;
147
+ a pinned evaluation bypasses it. (Since A20 the key carries each
148
+ record's present freshness, so an aged record busts it too.)
149
+ - **Asking arXiv more than once per capture,** errors included: the
150
+ gate, gaps and blockers would each ask, and could disagree.
151
+ - **Accepting `ffilesSnapshotForWorkflow`'s silent fallback.** An
152
+ observation is all-snapshot or all-live, says which, and a snapshot
153
+ miss (even one a gate swallowed) restarts it live.
154
+ - **Letting live reads authorize a completion because they are
155
+ labeled.** Only a coherent observation, every read replayed unchanged,
156
+ may; a checkpoint carries an incoherent one, labeled.
157
+ - **Writing the repository receipt before publication.** A failed
158
+ upload would leave the repository describing a version that does not
159
+ exist; both kinds are written only after their version is published.
160
+ - **Deciding "the code changed" by comparing commits.** A tree goes
161
+ dirty with HEAD unchanged; `versionIdentity` compares source digests.
162
+ - **"Levels never drop."** Publishing the completion changes the
163
+ declared record, so the Zenodo copy reads unknown ("verification
164
+ pending") until a verify of the new record succeeds. The guarantee is
165
+ narrower: completion changes no compared content.
166
+ - **Minting a version to say "not met",** or to chase the working tree.
167
+ - **Fixtures that make exactly one entry fail.** Real failures come
168
+ together; use the expected-state matrix.
169
+ - **Passing authority states through untranslated.** The receipt uses
170
+ requirement states through one fixed table, which raises on an
171
+ unknown answer, and keeps the authority's own answer as evidence.
172
+
173
+ **Two level readings that must not be widened back (2026-10-27).**
174
+ The step save and the test-execution routes detect a crossing of
175
+ Level 1, so they read `fiComputeProofLevelUpToOne` (the marker rule
176
+ plus the Level 1 gate), never `fiProofLevel`: the full ladder hashed
177
+ every published file through the container on each click of a
178
+ researcher's badge (`testASignOffNeverEvaluatesTheLevelTwoOrThreeGate`,
179
+ and `testTheLevelOneReadingEqualsTheLadderCappedAtOne` pins the two
180
+ equal). And `fdictLevel2Gaps["bAtLeastLevel2"]` is the gate's own
181
+ verdict, with keys for the basename-collision and Overleaf conjuncts,
182
+ so every false verdict has a false key beside it
183
+ (`testABasenameCollisionReadsBelowLevelTwoInTheGapsDict`).
184
+
185
+ **`reproduce.sh` carries the SAME determinism guarantees the runner
186
+ does, and it reads the epoch from the ENVELOPE.** The runner prefixes
187
+ every step with `SOURCE_DATE_EPOCH` and a matplotlib `svg.hashsalt`
188
+ derived from it; the generated script exported neither until
189
+ 2026-09-05, so the artifact vaibify hands the world rendered every PDF,
190
+ EPS, PS and SVG with the reproducer's wall clock and a fresh per-process
191
+ salt, and its own closing `sha256sum -c MANIFEST.sha256` could not pass
192
+ for any workflow with a vector figure. The shadow rerun was
193
+ determinism-correct throughout, which is why nothing internal noticed:
194
+ the lane vaibify runs for itself passed and the one a stranger runs
195
+ could not. Four things not to undo:
196
+
197
+ - **The epoch is the RECORDED one** — the envelope's
198
+ `iSourceDateEpoch` — never re-derived from HEAD. The commit that
199
+ publishes the manifest moves HEAD, so a re-derivation is
200
+ guaranteed to salt the figures differently from the pinned ones. It is
201
+ read on the reproducing host and passed as a `docker run -e`, because
202
+ a *quoted* heredoc — the thing that keeps workflow-controlled step
203
+ text off the host shell — cannot carry a host value into its body.
204
+ - **The salt comes from the runner's own builder**
205
+ (`determinismEnvironment.fsBuildMatplotlibSaltShell`), which takes two
206
+ shell WORDS, the epoch and the directory, so both lanes can call it.
207
+ A private copy in the generator would drift, and the two lanes
208
+ disagreeing is the defect being fixed. The directory is private to a
209
+ run (the runner mints one per run, `reproduce.sh` uses its own
210
+ temporary one and removes it on exit, naming it literally in the trap
211
+ because a step may export its own `MPLCONFIGDIR`): with one shared
212
+ path, run A wrote salt 111, run B wrote 222 and A then read 222,
213
+ which grades a reproducible SVG as not reproducible. Only the salt
214
+ reaches the figure's bytes, never the path
215
+ (`tests/testMatplotlibSaltIsolationLive.py` measures it).
216
+ - **`--entrypoint bash` is load-bearing.** A vaibify image declares
217
+ `USER researcher`, and its entrypoint's first phase needs root:
218
+ measured, `docker run <image> bash -s` exits 255 on
219
+ `git config --system`. The Dockerfile says as much — invocations that
220
+ must run the entrypoint pass `--user 0`. A reproduction wants none of
221
+ that phase anyway; it clones repos and configures credentials.
222
+ - **An absent epoch is announced, never quietly degraded**, and `0` reads
223
+ as unrecorded (agreeing with `fiCaptureSourceDateEpoch` and
224
+ `fiRecordedSourceDateEpoch`, the other two readers of that field).
225
+
226
+ `tests/testReproduceScriptDeterminism.py` drives the host half through
227
+ real `bash` with the envelope epoch and the repo HEAD epoch made
228
+ DISTINCT, so a re-derivation cannot pass; its `docker_live` leg reads
229
+ the guarantees back out of a real container. A string assertion that
230
+ the preamble mentions `SOURCE_DATE_EPOCH` is necessary and nowhere near
231
+ sufficient — it passes against a script exporting the wrong value.
232
+
233
+ **Since 2026-10-17 `reproduce.sh` runs the same PROCEDURE the shadow
234
+ lane does, and ends in the same assessor.** It no longer closes with
235
+ `sha256sum -c`. Inside the container it runs, in this order:
236
+ `pip install --require-hashes -r requirements.lock` (a lock that does
237
+ not install is "Could not run", exit 4), the assessor's `prepare`
238
+ (checks every published input, sets the
239
+ published figures aside), `clear` (deletes the declared outputs through
240
+ `rerunPreparation`, after listing them and how to restore them, because
241
+ it regenerates in the reader's own directory), `capabilities`, then
242
+ the case-checked unsets of the floor keys Stage A dropped, `probe`, then
243
+ each step as the runner runs it — data, plot, then each test group,
244
+ every command under its invocation ID with its JUnit report, and the
245
+ next step regardless of a failure in this one — and finally
246
+ `assess`, whose exit code becomes the script's once the assessor has
247
+ written its report (no report is "Could not run"). The shadow
248
+ lane passes `--machine`, which adds the report as one machine-readable
249
+ line; the script does not. The lock install is why the shadow, which
250
+ stays HERMETIC and installs nothing (the 2026-09-01 ruling), refuses
251
+ before any step when the pinned image does not satisfy
252
+ `requirements.lock`
253
+ (`shadowRerun._fdictRefusalIfImageLacksLockedPackages`,
254
+ `S_DIVERGENCE_LOCK_UNSATISFIED`): the two procedures converge only
255
+ where that install is a no-op. The diff is
256
+ `lockSatisfaction.flistDescribeLockMismatch`, the one derivation the
257
+ row and the pre-flight also read. Five things not to undo:
258
+
259
+ - **The execution profile is REPLAYED from the envelope's
260
+ `dictExecutionProfile`**, never looked up from the answer, and the
261
+ host half validates every key against the allowlist and every value
262
+ against its pattern in bash, BEFORE anything reaches `docker run -e`
263
+ (`testTheScriptRefusesASettingOutsideTheAllowlist` and its two
264
+ siblings; the Python half has its own). A later vaibify must not
265
+ change what a published profile asked for.
266
+ - **Capabilities come FIRST, in a process that loads no math
267
+ library** (`env -u <allowlist> python3 -I`), because OpenBLAS reads
268
+ its settings once, at load; then the probe runs under the exact
269
+ prefix the steps get. `testEachStageSeesWhatTheOrderPromises`. The
270
+ probe's matrix product runs in a CHILD process
271
+ (`fdictExerciseMatrixProduct`), because OpenBLAS can segfault under
272
+ a forced kernel (design fact 28) and a crash inside the probe would
273
+ leave no record; a crash or a timeout is announced before the steps,
274
+ an exception only recorded.
275
+ `testAMatrixProductThatCrashesIsRecordedAsACrash`.
276
+ - **An empty tests block renders nothing**, never `if … then fi`,
277
+ which bash refuses — found by the live leg, not by a string check.
278
+ - **The image no lane can obtain, and a `docker run` that fails
279
+ itself, are "Could not run" (exit 4)**, never a verdict about the
280
+ project (`tests/testReproduceScriptDeterminism.py`).
281
+ - **Both lanes give one verdict on one tree.**
282
+ `tests/testReproduceScriptParity.py::testBothLanesGradeOneTreeAlike`
283
+ drives five outcomes through both; the `docker_live` copy runs a real
284
+ shadow and a real `reproduce.sh` against one image.
285
+ `testTheLaneAndTheScriptRunTheSameAssessor` kills a generator that
286
+ writes the assessor in any form other than the shadow lane's own
287
+ render of it.
288
+
289
+ **A container registry is a convenience, never a PROOF rung (ruled
290
+ 2026-09-05, superseding that morning's ruling that publishing the image
291
+ was an L3 requirement).** Docker Hub and GHCR are commercial services
292
+ with no retention policy, no DOI and no succession plan; grant
293
+ reviewers have declined to accept even GitHub as a long-term
294
+ repository, and a rung resting on one would be a claim vaibify could
295
+ not defend. So they are treated like Overleaf and arXiv: vaibify
296
+ integrates with them because they are useful, and they gate nothing.
297
+ `image-not-published` is emitted by no gate, counted by no tuple and a
298
+ conjunct of nothing. The readiness payload still carries
299
+ `bImagePublished`, because the PROOF tab shows the registry copy as an
300
+ OPTIONAL row (`bOptional: true`, excluded from the met count like the
301
+ project context file), and `reproduce.sh` still tries the registry
302
+ first because it is the fast path — pull, then the archived copy, then
303
+ a copy already on this host, the last with a warning that only the
304
+ author can take that path. The image's only rung is the environment
305
+ archive (`image-not-archived`, below), because Zenodo is the one of
306
+ these with a preservation commitment. The shadow lane still translates
307
+ the SDK's bare `404 ... No such image` into a refusal naming which kind
308
+ of reference it is and what to do — recognized by the SDK's exception
309
+ CLASS, never by matching "404" in a message, because an unreachable
310
+ daemon carries 404s from other causes — and the remedy it names for a
311
+ vanished local-only image is rebuild-or-load-the-deposit, never
312
+ publish. `tests/testRegistryIsNotAnL3Requirement.py`.
313
+
314
+ **The workflow-scope Level 3 criteria are the keys of
315
+ `levelGates._fdictL3WorkflowChecks`; read them there, not from a list
316
+ here.** Several ask about PUBLISHED copies rather than local files: the
317
+ envelope must match the GitHub mirror (`envelope-not-in-github-mirror`)
318
+ AND the Zenodo archive (`envelope-not-in-zenodo-archive`, every
319
+ declared record consulted); the archive must carry a rebuild
320
+ attestation that truthfully describes the archived manifest
321
+ (`attestation-not-in-zenodo-archive`, a semantic check, never byte
322
+ equality with the local file); no archive may be KNOWN to be a Zenodo
323
+ sandbox deposit (`an-archive-is-a-sandbox-deposit`, where unknown
324
+ passes); and `reproduce.sh` with its assessor must be exactly what
325
+ vaibify would render now (`reproduce-script-stale`, apart from
326
+ `reproduce-script-missing`, which owns absence). Because a deposit or a
327
+ regeneration writes files these and the Level 2 criteria compare,
328
+ `tests/testAdvancingALevelNeverLowersOne.py` guards that an action
329
+ offered to reach one rung never moves the bytes another rung compares.
330
+
331
+ **"Reproduce a published project" is an input adapter to the shadow
332
+ lane, and its honest boundary is the source table.** `vaibify
333
+ reproduce --from <source>` stages a git URL or a clean local clone as
334
+ an exact snapshot of ONE commit (`reproductionSource`), validates it
335
+ STRICTLY as reproduction-ready — six rules, the first failure named
336
+ with its file, never advisory the way tiers 1-4 are — and exports it
337
+ in the tar shape `fbufferRepackArchiveStamped` accepts, so every later
338
+ step consumes the staged archive and never a re-clone. The verdict is
339
+ "reproduction-ready", NEVER "Level 3": the six rules are what a rerun
340
+ depends on (a loadable selected workflow, a content-pinned image WITH
341
+ a recorded architecture, a manifest that parses, matches and covers
342
+ the selected workflow), deliberately not `fbL3ReadinessOK` — an
343
+ attestation, a mirror or a lock file are the AUTHOR's claims, and the
344
+ reproduction is the check. A first review read "complete Level 3
345
+ project" in the CLI output, ran the fixture through the real gate, got
346
+ `False`, and was right. Six things not to undo. The accepted source shapes are matched by
347
+ SHAPE, never by forge hostname (`testReproductionSourceNamesNoForgeHostname`
348
+ is the tripwire); a dirty clone is refused, naming the paths, because
349
+ a working tree is not a published project. Every `git` it runs carries
350
+ BOTH `gitHardening` lists, `GIT_TERMINAL_PROMPT=0` AND ssh in batch
351
+ mode (`GIT_TERMINAL_PROMPT` silences git's own prompt only; ssh asks
352
+ for a passphrase or a host key through `/dev/tty` on its own); the one
353
+ exception is the clone of a LOCAL repository, which is itself the file
354
+ transport `protocol.file.allow=never` refuses (measured: a plain path,
355
+ a `file://` URL and a bundle are all refused), so that clone alone
356
+ appends `protocol.file.allow=always` AFTER the list, only after the
357
+ path was admitted under the researcher's home, and asks for no
358
+ submodule. `--from` never enters the tier sequence and never runs
359
+ tier 2's host `pip install`. A report reads source facts from
360
+ `fdictDescribeStagedSource` ONLY — kind, commit, remote with userinfo
361
+ stripped, workflow name, never a host path — because a reproduction
362
+ report is the reproducer's own artifact, never an attestation, never
363
+ written into a repository, and never read by `levelGates`. And the
364
+ platform is THREE facts kept apart by name (the envelope's required
365
+ platform, the obtained image's platform, the daemon's architecture);
366
+ staging records the first from the envelope and announces its absence
367
+ rather than defaulting it. `tests/testReproductionSource.py` drives
368
+ real `git` and a real loopback HTTP remote, and every rule has a
369
+ kill-confirmed entry. The staging sweep skips any directory whose live
370
+ lock is held, whatever its age — the `~/.vaibify/tmp` lesson.
371
+
372
+ **The redaction boundary is wider than the userinfo, and the staged
373
+ `.git` is inside it.** Three leaks, all found by review on 2026-09-07,
374
+ all in code that read as careful. A credential rides in a URL's QUERY
375
+ (`?access_token=`) as readily as in its userinfo, so the classifier
376
+ REFUSES those parameters — pinned to `credentialRedactor`'s own tuple,
377
+ never a second list — the recorded remote is scrubbed through
378
+ `fsRedactUrlCredentials` as a second line, and the refusal does not
379
+ echo the URL it is about. `git clone` records the source it was given
380
+ in TWO places, `.git/config` and the `clone: from …` reflog line, so
381
+ `_fnScrubStagedGitMetadata` rewrites the origin to the redacted remote
382
+ (or removes it) and deletes `.git/logs` before anything reads the
383
+ snapshot: the staged tree, `.git` included, is copied into a container
384
+ built from a stranger's image, and a local clone's source is an
385
+ absolute host path. The guard asserts over EVERY archive member, not
386
+ over `.git/config`, which is how the reflog half was found at all —
387
+ and the URL-clone test carries a USERNAME, because with a bare URL the
388
+ recorded remote and the cloned URL are the same string and the
389
+ assertion is vacuous (it was, and the mutation survived it). And the
390
+ staging size ceiling bounds the DISK: the export is separately bounded
391
+ by `daemonCapacity`'s `iArchiveTotalBytes` and spooled to a private
392
+ file, because what the hub may hold in memory is a different question
393
+ from what a clone may occupy.
394
+
395
+ **A staged job holds the lock that keeps the sweep off its clone, so
396
+ it needs an expiry of its own.** `reproductionProgress` carries TWO
397
+ retentions — a settled job holds a report id, a staged one holds a
398
+ whole repository — plus a concurrency cap, and dismissing the
399
+ confirmation card DELETES the snapshot (`fnDiscardJob`, the
400
+ `/discard` route) rather than merely releasing it. Before that, stage
401
+ and close left a repository per attempt until the hub restarted. A
402
+ RUNNING job is never discarded out from under its shadow. The
403
+ routes — stage, run, `/retry` and `/discard` — are catalog entries
404
+ (the `reproduction` category of `LIST_AGENT_ACTIONS`) with
405
+ `bAgentSafe: False` AND their own agent-lane rejection, because a
406
+ host-filesystem capability is not something the catalog can express.
407
+ The run is NOT in the durable-task
408
+ registry: that registry is keyed on a container with an owner lane
409
+ tuple, and a reproduction has neither — its shadow is created inside
410
+ the worker and destroyed at the end. What "durable" was wanted FOR is
411
+ delivered instead by `fbHubHoldsLiveReproduction`, the idle
412
+ watchdog's veto, on the Agent Council's precedent and for the same
413
+ reason: a reproduction holds no socket and no owned container, so
414
+ without it a closed tab lets the clock go stale and the hub SIGTERMs
415
+ itself mid-run. A poll that meets a 404 DISARMS and says the job is
416
+ gone; jobs live only as long as their hub.
417
+
418
+ **A second review of the same code found five more, and their shapes
419
+ are the lesson.** A refusal that redacts ONE of its branches redacts
420
+ nothing: the query branch was scrubbed and the userinfo branch went on
421
+ echoing the password it refused. A credential parameter name is
422
+ PERCENT-DECODED before it is compared, because a server decodes it —
423
+ `?access%5Ftoken=` and `?access_token=` are the same parameter — and
424
+ the shared redactor's URL regex matches ANY scheme, because
425
+ `ssh://user:key@host` is the same credential in the same place and the
426
+ http-only spelling left every ssh remote unredacted (it also captures
427
+ the scheme and writes it back, so redacting does not silently rename
428
+ the transport). A cap whose count and insert are two critical sections
429
+ is not a cap; twelve registrations released into the gap all pass, and
430
+ the guard for it is STRUCTURAL — a racy test serializes often enough to
431
+ pass against the bug. `fbClaimJobForRun` moves the job into a live
432
+ phase in the SAME acquisition that consumes it, because a job claimed
433
+ but still reading `staged` is one a Discard deletes the snapshot out
434
+ from under, and the card's own running flag is set only when the Run
435
+ request returns. And a status callback handed to a lane that runs in a
436
+ worker thread must be SYNCHRONOUS: an `async def` there returned a
437
+ coroutine nobody awaited, so every step label and both new phases went
438
+ to the floor behind a `RuntimeWarning` — which is also why `comparing`
439
+ and `tearing-down` are emitted from INSIDE the lane, at the moment the
440
+ thing they name begins, rather than set by the caller after the lane
441
+ has returned and the container is already destroyed.
442
+
443
+ **The image is obtained through the chain `reproduce.sh` runs, and
444
+ the two lanes are pinned to agree.** `imageAcquisition` walks registry
445
+ pull, then the archived deposit (hash from the ENVELOPE, checked
446
+ before any load), then a copy on
447
+ this daemon (author-only, and it says so) — the order is a ruling and
448
+ is never reordered or extended. The download RESUMES: a verified
449
+ tarball is removed once the daemon has loaded it, bytes a failure left
450
+ behind are KEPT when another attempt can continue from them (a spent
451
+ retry budget, a full disk, a daemon that would not load), and deleted
452
+ only when nothing could (the deposit changed, the researcher
453
+ canceled); every refusal's `dictFailure` says which. A verified load
454
+ is noted under `~/.vaibify/depositLoads`, so a daemon still holding
455
+ that image ID is served without a second download. `reproduce.sh`
456
+ keeps nothing: it removes its temporary tarball whatever the outcome.
457
+ The three links that touch the daemon
458
+ are SDK calls in `disposableContainer` (`fdictPullImage`,
459
+ `fsLoadImageFromStream`, `fdictInspectImage`,
460
+ `fsReadDaemonArchitecture`), the SDK authority for disposable work;
461
+ the chain module acquires no subprocess and no client, because a
462
+ `docker pull` or `docker load` outside a gateway module is a
463
+ mutation-capable row the ratchet refuses. The generated script now
464
+ passes `--platform` to `docker pull` AND `docker run`, from the
465
+ envelope's architecture normalized in shell, and announces an absent
466
+ architecture on stderr rather than defaulting it — the same treatment
467
+ as an absent epoch; the option rides in a bash array expanded with the
468
+ guarded idiom because an empty array under `set -u` is an error on
469
+ bash 3. `tests/testImageAcquisition.py` drives BOTH lanes against one
470
+ tarball and one envelope. The three platform facts stay apart:
471
+ obtained ≠ required always refuses, required ≠ daemon is emulation
472
+ (refused without `--allow-emulation`, recorded with it), and the
473
+ daemon's architecture is asked of the daemon — an image reports its
474
+ own on any host. `shadowRerun.fdictRerunAndVerifyFromSnapshot` is the
475
+ second seed: image and platform from the acquisition's answer (a
476
+ deposit-loaded image answers to its ID alone), platform requested on
477
+ the create, the loaded-from-archive marker written under the shadow's
478
+ own admission before any step. `reproductionReport` is the
479
+ reproducer's artifact under `~/.vaibify/reproductions/reports/`, apart
480
+ from staging, never read by `levelGates`; its verdicts are
481
+ "reproduced", "reproduced under emulation", "diverged", "no verdict",
482
+ never "attested". `tests/testReproductionLive.py` drives the whole
483
+ lane against a real daemon — registry fails by DNS, the deposit loads,
484
+ the shadow runs the loaded ID — and proves the platform reaches the
485
+ daemon by the daemon's own refusal of a wrong one. Two facts found
486
+ live: a stock base image already owns uid 1000, and the shadow's typed
487
+ reads need a `python3` in the image.
488
+
489
+ **The dashboard's reproduction is a one-shot JOB with no project
490
+ container, and its record is its own.** `POST /api/reproductions/stage`
491
+ and `POST /api/reproductions/{sJobId}/run` (`reproductionRoutes`),
492
+ like `/retry` and `/discard`, are browser-hub control-plane routes,
493
+ registered in the agent catalog with `bAgentSafe: False` (none is
494
+ excluded) AND rejecting the agent lane by name, declared
495
+ `separate-authority` because the only container they touch is the
496
+ shadow `shadowRerun`
497
+ creates, admits and destroys itself — `tests/testCarrierMigratedRoutes.py`
498
+ pins that they reach no project primitive. The job record
499
+ (`reproductionProgress`) is keyed by job, NOT by container: it holds
500
+ the staged snapshot's live lock for exactly the job's life (taken in
501
+ the request that staged it, released from the task that settles it),
502
+ is consumed ONCE (`fbClaimJobForRun` checks and marks under one lock;
503
+ a second Run is a 409 by name), and its client view carries no staging
504
+ token — the token names a directory on this host. Do not key it on
505
+ `archiveProgress`, which is the deposit registry keyed by a container
506
+ the job does not have; only the deposit row's VISUAL shape is borrowed.
507
+ Phases are written from events that happened — the chain's `pulling` /
508
+ `downloading` / `loading`, the pipeline's `stepStarted` — and the
509
+ comparison plus teardown, which the rerun seam performs with no event,
510
+ are reported together as `finishing`, never invented from a timer. The
511
+ card polls only while the hub says `bLive` and disarms on settle
512
+ (`tests/browser/testReproducePublishedCard.py` counts polls after
513
+ settle), and no run request leaves the page before the researcher has
514
+ seen the confirmation and clicked Run (the same file asserts the
515
+ ORDER, not the wording). Both lanes write the same report through the
516
+ same seams, including the shared archive re-check
517
+ `reproductionReport.fdictRecheckObtainedImage`, which moved out of the
518
+ CLI when the dashboard became its second caller.
519
+
520
+ **The environment archive is one question with two blocks, and the L3
521
+ half must never read the L2 answer.** Level 2 asks whether the
522
+ researcher ANSWERED — `archived`, `referenced` and `declined` all pass,
523
+ and only silence fails. Level 3 asks whether a matching archive
524
+ EXISTS. Keeping them apart is what makes declining a decision rather
525
+ than a lock: a decline is an absent archive, so changing the answer and
526
+ depositing opens L3 with nothing to undo. The one sound direction is
527
+ the other one — `fbImageArchiveQuestionSettled` reads the deposit
528
+ record, because having deposited is having decided, and the deposit
529
+ finishes in a durable task holding no commit lane to persist an answer
530
+ through. It reads the LINEAGE note too (`fdictArchiveLineageOf`,
531
+ 2026-09-28): a changed image drops the deposit record but keeps a note
532
+ of the record it was archived under, and a rebuild does not unanswer a
533
+ researcher who deposited; whether the NEW image is archived stays
534
+ Level 3's question. Five things not to "simplify", each already pinned by a
535
+ kill-confirmed test in `tests/testEnvironmentArchive.py`:
536
+
537
+ - **The version DOI, never the concept DOI.** Zenodo's concept DOI
538
+ always resolves to the NEWEST version, so recording it repoints every
539
+ earlier paper at whatever image was deposited last — the link
540
+ resolves, nothing errors, and the archived environment is simply not
541
+ the one that produced those numbers.
542
+ - **Architecture is recorded, never inferred from the digest.** A
543
+ manifest-list digest spans several platforms and pins none of them,
544
+ so matching digests do not imply a matching build. This is also why
545
+ the envelope's regeneration carries a deposit record forward only
546
+ when BOTH the digest and the architecture still agree.
547
+ - **Unchecked is never red.** Red means diverged, a claim about the
548
+ deposit; an envelope one side of which is missing was compared with
549
+ nothing. `flistDescribeArchiveMismatch` RAISES `LookupError` for that
550
+ case rather than returning a reason, so a caller cannot accidentally
551
+ render it as a difference.
552
+ - **CLOSED needs positive evidence.** "Declined, and the image is gone,
553
+ so L3 is unreachable for this result" is the strongest statement the
554
+ row makes. The presence probe is three-state and captured at connect
555
+ (the poll makes no daemon call); `None` means nobody looked, and the
556
+ row falls back to the weaker reading.
557
+ - **The attestation re-check can be VACUOUS.** An image obtained by
558
+ loading the deposit hashes to the deposit's own bytes every time.
559
+ `reproduce.sh`'s fallback writes
560
+ `.vaibify/image_loaded_from_archive` — a file beside the envelope,
561
+ never a field inside it, because the envelope is pinned in
562
+ `MANIFEST.sha256` and the script's assessor checks every pinned input
563
+ unchanged (until 2026-10-17 the script ended in `sha256sum -c`) — and
564
+ the check reports vacuous rather than passed.
565
+
566
+ Two hashes ride in the record and neither substitutes for the other:
567
+ `sTarballSha256` binds the bytes UPLOADED (what a downloader verifies)
568
+ and `sImageStreamSha256` binds `docker save`'s uncompressed output
569
+ (what the re-check compares, because zstd and gzip — and two builds of
570
+ one codec — give different bytes for one image). The deposit runs
571
+ host-side and reads the Zenodo token out of the CONTAINER keyring
572
+ through the typed-read seam, because `docker save` can only run on the
573
+ host and the token lives nowhere else; it is held in a local for one
574
+ upload and written to no file and no log.
575
+ `docs/architecture.md` — "The environment archive" — carries the model.
576
+
577
+ **A deposit is fetched from the Zenodo the record NAMES, and no
578
+ redirect is followed before its host is checked (2026-09-11).** The
579
+ record carries `sZenodoService`; readers map it through
580
+ `zenodoClient`'s table (`fsResolveServiceBaseUrl`) and refuse any other
581
+ value, and a record written before the field existed is classified by
582
+ DOI prefix (`fsServiceForDoi`: `10.5072/` is the sandbox — the word
583
+ "sandbox" is in no sandbox DOI, and matching it sent every sandbox
584
+ deposit to production, where the record 404s and the fallback composed
585
+ a download URL from a DataCite error page). Every GET the client makes
586
+ goes through `fresponseGetWithinAllowlist`, which follows redirects BY
587
+ HAND and checks each hop's origin before sending; the shell fallback in
588
+ `reproduce.sh` does the same with `curl` and `%{redirect_url}`, never
589
+ `-L`, and its host table is RENDERED from the client's. Nothing read
590
+ from the envelope (`environment.json`) is ever fetched as a URL: it is
591
+ a file in a cloned repository. `test_no_reader_of_the_record_fetches_a_url_on_trust`
592
+ pins the single transport call, and the decoy-server tests in
593
+ `tests/testImageAcquisition.py` and `tests/testReproduceScriptGenerator.py`
594
+ prove a refused host receives no request. The download is BOUNDED by
595
+ the envelope's recorded size in both lanes (2026-09-12): the script
596
+ passes it to `curl --max-filesize` and measures the bytes that landed
597
+ before hashing them, the client refuses to grow past it, and a record
598
+ with no size is refused rather than fetched without a ceiling.
599
+
600
+ **A project containerized from the author's PINNED image is admitted
601
+ by its origin record, and the baseline is proven against the image
602
+ (2026-09-11).** The Containerize wizard can OBTAIN the image a clone's
603
+ envelope pins instead of rebuilding it (`docker/pinnedImageAcquisition`,
604
+ the published chain). Six things not to undo: the conversion is a
605
+ WHITELIST of runtime fields onto the author's vaibify.yml
606
+ (`pinnedEnvironmentConversion`), never a merge, and the agent install
607
+ keys are written only after the overlays exist; which overlays the
608
+ obtained image holds is PROVEN by its `vaibify-overlays` label (which
609
+ must EQUAL the repository's candidate, additions or not) or by
610
+ recomputing the recipe fingerprint over the shipped texts — a header
611
+ line in a cloned repository is a claim, and unproven never fails open
612
+ (no additions: the base runs as-is; additions: refuse before tagging);
613
+ overlays are stacked on the obtained image ID with
614
+ `vaibify.pinnedBaseImageId`, and a DERIVED running image is reported
615
+ as derived, never as the pin; the origin record
616
+ (`config/imageOrigins`) is written LAST and the launch guard in
617
+ `containerManager.flistBuildRunArgs` refuses a start without a good
618
+ one — a STALE record (tag moved, or running image neither the base
619
+ nor labeled derived) reads as absent, so a `docker build` outside
620
+ vaibify cannot inherit the archive's provenance — and requests the
621
+ recorded platform, refusing a switched daemon's silent emulation; the
622
+ record ends only on switch-to-building (one locked mutation with the
623
+ registry's `dictImageSource`), un-registration or rename, never on
624
+ stop, and plain `/build` answers 409 naming the switch; and the shadow
625
+ runs the record's BASE id on the obtained platform with the
626
+ archive-loaded marker, while `fbEnvironmentWasObtained` is the one
627
+ predicate behind the regenerate refusal. Two new routes read the host
628
+ filesystem (`pinned-environment`, `acquire-image`) and are
629
+ catalog-excluded AND agent-lane rejected. `tests/testPinnedImageAcquisition.py`
630
+ is the kill-confirmed guard.
631
+
632
+ Four more, from a review of that lane (2026-09-12). The overlays
633
+ label is a SET rendered in canonical order (`flistCanonicalizeOverlaySet`),
634
+ never the build order: a differential stack installs `node` after the
635
+ author's `claude`, and a label written in that order is one the
636
+ label's own parser refuses, so the derived image could never be
637
+ acquired again. An unproven baseline with no additions answers `None`,
638
+ not `[]`: an empty PROVEN set would make the differential resolver
639
+ re-stack the author's own overlays onto the image that holds them.
640
+ The unproven-with-additions refusal NAMES its recovery
641
+ (`sAction: reobtain-without-additions`), and `acquire-image` takes
642
+ `bWithoutAdditions`, which drops the added agents from the registry
643
+ entry before obtaining -- a refusal whose remedy has no lane is a dead
644
+ end. And re-obtain and switch-to-building are refused by the server
645
+ while the project's container EXISTS, asked of the daemon
646
+ (`_fnRefuseWhileTheContainerExists`), because the page's stop can
647
+ fail and every transition after a stop reads its answer
648
+ (`fnStopContainer` returns it) -- a stop that failed must never let a
649
+ retag, a cleared origin record or a build through.
650
+
651
+ **The envelope pins the agent-free ENVIRONMENT, never the coding
652
+ agents (ruled 2026-09-28).** Agents write code and compute nothing, so
653
+ the pin -- and with it the shadow rerun, `reproduce.sh`, the deposit
654
+ and a reader's acquisition -- is the build stage below the first agent,
655
+ and a reader brings their own agents. Five things not to undo, each
656
+ kill-confirmed. Every stage's `vaibify-overlays` and recipe labels
657
+ describe THAT stage (`test_each_stage_is_labelled_with_what_it_holds`);
658
+ stamping the whole chain's list on every stage is how `:base` came to
659
+ claim agents it did not hold. Agent and prerequisite stages name the
660
+ agent-free stage in `vaibify-environment-image-id` and every other
661
+ stage stamps it EMPTY, so no stage inherits a value through `FROM`.
662
+ `fsResolveEnvironmentImageId` trusts the label only after the named
663
+ image's layers prove a prefix of the running image's, and an
664
+ environment it cannot vouch for pins NOTHING with `sUnpinnedReason` --
665
+ falling back to the running image would publish the agents while every
666
+ record said otherwise. `agentLayerSeparation` reads the agents' layers
667
+ out of `docker save`, naming blobs by UNCOMPRESSED sha256 (the
668
+ containerd store gzips them and writes the manifest last; tiny empty
669
+ layers are real layers -- a size cut-off reported real images as
670
+ unreadable) and refuses on five rules before a deposit saves a byte
671
+ and before a reader's stacked agents are tagged; an unrun check
672
+ refuses too. And the deposit refuses a pin whose own label names
673
+ agents. Currency reads a pin on the environment below the live image
674
+ as `sRelation: "derived"`, the note obtained images already use.
675
+ `tests/testAgentLayerSeparation.py`,
676
+ `tests/testEnvironmentSnapshot.py`, `tests/testDockerfileProvenance.py`.
677
+
678
+ The pin is agent-FREE, not agent-guidance-free, and that is a known,
679
+ DEFERRED design question with its own plan. The in-container agent
680
+ guidance — the skills, the staged docs, `entrypoint.sh` with the
681
+ instructions it generates, and `vaibify-do` — is `COPY`'d by the base
682
+ `vaibify/containerImage/Dockerfile`, which `imageBuilder.fnBuildImage`
683
+ builds before any overlay, so it lies inside the agent-free stage
684
+ `environmentSnapshot.fsResolveEnvironmentImageId` names. A guidance
685
+ edit therefore changes the environment image ID the envelope pins once
686
+ the image is rebuilt, and the recipe fingerprint, which hashes only the
687
+ Dockerfile texts, does not move with it. Do not answer it here by
688
+ moving the guidance above the pin: that changes every project's pin
689
+ once, which is the deferred plan's decision to make.
690
+
691
+
692
+ ## A human step's outputs are GIVEN, not reproduced
693
+
694
+ **The rerun carries an interactive step's outputs instead of refusing
695
+ the workflow (2026-08-31 ruling).** Before this, any interactive step
696
+ refused the whole tier-5 rerun. That made Level 3 **unreachable for
697
+ every project vaibify builds**: vaibify creates an interactive AI
698
+ Declaration step, Level 2 blocks on `missing-ai-declaration-step`, so
699
+ reaching L2 the product's own way guaranteed L3 could never pass. The
700
+ researcher found it by clicking Verify; no test combined the two,
701
+ because the refusal tests used generic interactive steps.
702
+
703
+ The model is that a human step's outputs are **input** to the rerun,
704
+ like the repository's source files — data a person produced, which the
705
+ steps below consume. Nothing new carries them: the shadow's coherent
706
+ export already copies everything git can enumerate, so they arrive
707
+ verbatim and the executable steps run against the bytes the original
708
+ run used.
709
+
710
+ **The carve-out is exclusion, and both directions of it are load-bearing.**
711
+ `flistCarriedOutputRepoPaths` drops those paths from the comparison,
712
+ `fdictBuildAttestation` records them in `listCarriedPaths`, and both
713
+ lanes report them. Three ways to break it, each already pinned by a
714
+ kill-confirmed test:
715
+
716
+ - **An exclusion set that matches nothing.** It must resolve paths
717
+ through the SAME `fdictWorkflowTemplateValues` +
718
+ `flistStepOutputRepoPaths` helpers the manifest writer uses. Resolved
719
+ any other way the paths simply fail to match, nothing is excluded,
720
+ nothing says so, and every given file is graded as reproduced.
721
+ - **An exclusion that leaves nothing.** A workflow whose every pinned
722
+ entry is human-made has nothing for a rerun to reproduce, so it fails
723
+ closed on `S_DIVERGENCE_EVERY_ENTRY_GIVEN` rather than passing 0 of 0.
724
+ - **A silent count.** `iOutputHashesTotal` now covers only what
725
+ executed. Displaying that ratio without `listCarriedPaths` beside it
726
+ turns a narrow true statement into a broad false one — the same shape
727
+ as the "Outputs match the GitHub mirror" projection bug.
728
+
729
+ **DISABLED steps still refuse, and the asymmetry is deliberate.** Being
730
+ interactive is a declared property of the workflow; being disabled is a
731
+ switch. Carrying a disabled step's outputs would let anyone silence a
732
+ step and still attest around it. The AI Declaration needs no case of
733
+ its own — it is an interactive step, and the general rule covers it.
734
+
735
+ **The rerun grades only outputs it regenerated (2026-10-01 ruling,
736
+ graded by assessment since 2026-10-17).** The shadow rerun runs every
737
+ executed step's data commands whatever `bPlotOnly` says, and deletes
738
+ every path an executed step produces before running anything, so a file
739
+ left over from the original run can never be graded as reproduced. An
740
+ output the rerun did not write is FAILED (missing), never byte-identical.
741
+ A path that is both carried (human-made) and produced by an executed
742
+ step is an ambiguous overlap, and the rerun is refused by name rather
743
+ than silently keeping the file. Pinned inputs (`reproduce.sh`,
744
+ `Dockerfile`, `requirements.lock`, `environment.json`, scripts, tests,
745
+ their standards, the rendered assessor) are INTEGRITY, checked before
746
+ and after the run, and never graded as outputs.
747
+
748
+ **Level 3 is an assessment, and its contracts are these (design D1–D8,
749
+ I1–I11).** Integrity is exact; agreement is graded per output as
750
+ failed, byte-identical, comparisons passed, or insufficient evidence;
751
+ byte identity is reported whenever it holds and is never the
752
+ criterion. Each of these was built against a falsification test, and
753
+ each is a way to turn a verdict back into a claim nobody earned:
754
+
755
+ - **Two leaf modules, one rendered file.** `rerunProcedure` and the
756
+ frozen `comparisonPolicyV1` import only the standard library, parse
757
+ as Python 3.8, and share no name, because they are concatenated into
758
+ the project's rendered assessor (`S_RERUN_ASSESSMENT_REPO_PATH`)
759
+ (`tests/testRerunAssessmentStructure.py`). Both reproduction lanes
760
+ run the same bytes for the same policy and workflow.
761
+ - **The policy is frozen at its pinned hash.** A fix is a new policy
762
+ version, never an edit
763
+ (`testThePolicyModuleIsFrozenAtItsPinnedBytes`). A reproduction
764
+ grades under the policy the project RECORDED (line 2 of the rendered
765
+ file), using vaibify's own module for it, never the repository's
766
+ copy (`testAProjectGradesUnderTheComparisonPolicyItRecorded`); an ID
767
+ this vaibify lacks is "Could not run", naming the upgrade.
768
+ - **Evidence is JUnit only, bound to its step, its test file and its
769
+ command identity**, and every planned command is accounted for: a
770
+ command with no ledger line never ran, a report with no ledger line
771
+ is never read, a skip and a missing report assert nothing, and one
772
+ step's passing report never satisfies another's absent check
773
+ (`tests/testRerunAssessmentEvidence.py`). The author's committed
774
+ passing markers never stand in for tests that did not run.
775
+ - **A structural check never establishes agreement.** It can fail an
776
+ output; changed bytes with only structural checks are insufficient
777
+ evidence (`testChangedBytesWithOnlyStructuralChecksIsInsufficient`).
778
+ - **The precedence is a table in the policy, worst first**: could not
779
+ run, published inputs changed, not reproduced, insufficient evidence,
780
+ then comparisons passed or byte-identical. A later pass never erases
781
+ an earlier failure (`tests/testRerunAssessmentPrecedence.py`). Every
782
+ verdict ships with its tally, and the dashboard renders the server's
783
+ sentence.
784
+ - **The image check is narrow and labeled as vaibify's**: a single
785
+ frame, at most 8 bits per sample, the same format, size and mode,
786
+ and no RGBA channel moving by more than 2 levels. A higher-precision
787
+ image is never reduced to fit, and a vector figure is never assessed
788
+ by it (`tests/testRerunAssessmentImageCheck.py`).
789
+ - **The host re-derives the verdict from the raw evidence** and never
790
+ trusts the container's report; a self-consistent forgery of an exit
791
+ status or a hash is caught (`tests/testAssessedRerunLane.py`).
792
+ - **A historical attestation stays true and stops counting.** An
793
+ attestation made by the byte-only verifier, or under another policy or
794
+ profile, reads as a previous check and never satisfies the rebuild
795
+ requirement (`testAHistoricalAttestationNeverSatisfiesTheRebuildRequirement`).
796
+ - **The execution profile is frozen in the envelope**, its keys on a
797
+ closed allowlist checked in both languages, and a profile this vaibify
798
+ lacks stops the run before any step
799
+ (`testAProfileThisVaibifyLacksStopsTheRunBeforeAnyStep`).
800
+ - **Provenance is recorded per SECTION, only after it completed.** A
801
+ tests-only run, a failed section and a skipped one relabel nothing;
802
+ an identical rerun leaves the record byte-identical; no processor
803
+ model or computer name is ever recorded
804
+ (`tests/testOutputProvenance.py`). A provenance difference is
805
+ context, never an explanation of the difference; it is information,
806
+ never a failure, and never red.
807
+ - **Ordinary runs are unchanged.** Without `dictRerunEvidence`, no
808
+ command carries an evidence export or an invocation identity
809
+ (`testAnOrdinaryRunCarriesNoEvidenceExportAndNoInvocationIdentity`).
810
+
811
+ **A verification produces a FILE, and the per-file outcomes are the
812
+ authority for it (2026-09-11).** The rerun keeps every observed hash in
813
+ `listFileOutcomes` (one `{sPath, sExpected, sObserved, sStatus, sRole}`
814
+ per FROZEN manifest entry, in the manifest's order; the assessed rerun
815
+ keeps `sStatus` and attaches each entry's graded `sOutcome` and
816
+ `sOutcomeReason` from the assessor's report) and renders them into
817
+ `REPRODUCED.sha256` at the repository root in `MANIFEST.sha256`'s own
818
+ format — ONE header line, same paths, same order, a `# MISSING <path>`
819
+ comment at the same position for a file the shadow did not produce —
820
+ so a person compares the two with their own eyes and `diff` works.
821
+ Every count, path list and the rendered file derive from that list,
822
+ while the pass or fail VERDICT is the assessor's report
823
+ (`dictAssessmentReport`, its `iExitCode` and `sVerdict`), never
824
+ re-derived from the hash statuses; nothing re-hashes after the shadow
825
+ is destroyed or re-reads a manifest the rerun may have mutated. Three
826
+ things not to undo: the write ORDER (timestamped copy under
827
+ `.vaibify/reproducedManifests/`, then the root file, THEN the record
828
+ naming it — a foreign clone's reproduction writes and names the
829
+ timestamped copy alone and never the root file, which in that clone is
830
+ the author's committed one — shared by both lanes in
831
+ `reproductionRecord.flistWriteVerificationOutcome`, so a record never
832
+ points at a manifest that was not written); the manifest NEVER pins
833
+ `REPRODUCED.sha256`, the history directory or `.vaibify/reproductions/`
834
+ (`fbIsReproductionRecordPath`; a reproduced manifest inside the manifest
835
+ grades itself); and the viewers' line colors come from the record's
836
+ per-file `sOutcome` (its `sStatus` in a record written before the
837
+ assessment), never from JavaScript comparing hashes. A clone whose
838
+ attestation was last COMMITTED by another identity (tracked at HEAD,
839
+ `%ce` differs from the receiving repository's `user.email`; an
840
+ unconfigured identity is foreign) records a REPRODUCTION under
841
+ `.vaibify/reproductions/` in the report schema and leaves the author's
842
+ attestation untouched — `fbRepositoryCarriesForeignAttestation` takes a
843
+ git RUNNER because the two lanes ask different repositories (the
844
+ container's checkout, the CLI's `--repo` host checkout), and the
845
+ records are read on the attestation GET only, never on the poll.
846
+ Attestation schema v5 migrates the three new fields to `None`.
847
+ `tests/testReproducedManifest.py` is the kill-confirmed guard.
848
+ Whose attestation the clone carries is THREE-state (2026-09-12): a
849
+ git that cannot answer -- a broken executable, an exec failure, a
850
+ tracked file whose committer cannot be read -- raises
851
+ `RecordKindUndeterminedError`, never "not foreign", because that
852
+ answer is the fail-open that overwrites somebody else's record. Both
853
+ lanes settle the question BEFORE the rerun and refuse by name when it
854
+ is undetermined; readiness answers `undetermined` so the confirm
855
+ dialog says so first. Every step is decided by git's own exit code,
856
+ measured: `rev-parse --verify --quiet HEAD` exits 1 with no commits
857
+ and 128 outside a repository, `ls-tree` exits 0 with empty output for
858
+ an untracked path, `config` exits 1 for an unset key.
859
+
860
+ **A rerun that reached no verdict is NEVER written as an attestation.**
861
+ It used to be: a refusal became `sStatus: "failed"` plus a history
862
+ entry, i.e. a scientific claim keyed to a manifest digest saying the
863
+ project does not reproduce, on the strength of a precondition the run
864
+ could not meet. It also destroyed any earlier passing attestation the
865
+ unchanged manifest still entitled the project to. Both lanes now branch
866
+ on `bRerunAttempted` — `reproducibilityRoutes._fbRecordOutcome` and
867
+ `commandReproduce._fbWriteAttestationFromRun` — and they **must agree,
868
+ because they write the same file**. The hub remembers the reason
869
+ in-process (`_DICT_LAST_NO_VERDICT`) and the PROOF tab renders it; that
870
+ lifetime is the honest one, since nothing was established.
871
+
872
+ **A verification reports progress, or it reads as a hang.** The tab
873
+ polls only while the server says a verification is live, and disarms
874
+ when it settles. Until this existed the "started" toast was the last
875
+ thing a researcher saw — a 2.5 second refusal and a two-hour rerun were
876
+ indistinguishable from the chair. Do not make this a standing cadence,
877
+ and do not let the card pulse over a finished run.
878
+
879
+ **The shadow is destroyed, so the FAILURE RECORD is the only evidence.**
880
+ The rerun's status callback used to be `_fnDiscardStatusEvent`: every
881
+ step result and every line of output went to the floor, so a failed
882
+ rerun produced one sentence — "pipeline rerun exited non-zero" — about
883
+ a container that no longer existed. The researcher could not re-run the
884
+ shadow, could not read its logs, and could not tell a missing
885
+ dependency from a real divergence (researcher-reported, 2026-09-01).
886
+ `rerunDiagnostics.ftBuildRerunDiagnosticsCollector` keeps the first
887
+ failing step's label, name, exit code and a bounded output tail, and
888
+ both lanes persist it as `dictRerunFailure`. Three properties are
889
+ load-bearing: the FIRST failure (later steps fail because the first
890
+ did), a BOUNDED tail (this record is committed and published to Zenodo
891
+ — an unbounded log would put a researcher's whole console into a public
892
+ artifact), and unconditional FORWARDING (the CLI prints the same
893
+ stream; an observer that swallowed events would break the caller it was
894
+ added beside).
895
+
896
+ **Three states, not a boolean — twice over.** The row said "No current
897
+ rebuild attestation. Run this once every other check passes" over a
898
+ rerun that HAD run and reported a failing step, because the poll shipped
899
+ only `bRebuildAttestationCurrent`. "Never run", "ran and failed" and
900
+ "passed but stale" are different things and a researcher acts on them
901
+ differently; the poll now ships `dictRebuildAttestation` so the row can
902
+ tell them apart. Likewise `null` and `{}` in `dictRerunFailure` are
903
+ "this record predates capture" and "no step reported a failure" — the
904
+ migrators write `None` for exactly that reason.
905
+
906
+ **A shared summarizer does not know your new state.**
907
+ `fsSummarizeLevelStates` is shared with the Steps banner, so it counted
908
+ a `running` row as *nothing assessed* and painted a pulsing `?` over a
909
+ rerun plainly under way. `_fdictGroupStateByLevel` maps `running` to
910
+ `partial` before summarizing. When adding a level-cell state, check
911
+ every aggregation it flows into — the row and its banner are computed
912
+ by different code.
913
+
914
+ ## The L3 rerun happens in a shadow container, not the researcher's
915
+
916
+ **Tier 5 no longer re-runs the workflow in the live project
917
+ container.** `shadowRerun.fdictRerunAndVerifyThroughShadow` is the one
918
+ entry point both attestation lanes use — the dashboard's
919
+ `/level3/verify` route and `vaibify reproduce --rerun`. It creates a
920
+ fresh container from the image digest the envelope's environment
921
+ snapshot pins,
922
+ copies the repository in, drives the shared `rerunVerification`
923
+ comparison against **the shadow's** filesystem, and destroys the shadow
924
+ with proof.
925
+
926
+ Two reasons, and the second is the one worth remembering. The rerun
927
+ used to overwrite the researcher's real outputs. And it exercised
928
+ whatever the project container had *become* — packages from a debugging
929
+ session, files from an interactive step — rather than the image
930
+ `reproduce.sh` would pull, so it could pass where a stranger's
931
+ reproduction would fail. `docs/architecture.md` carries the full model.
932
+
933
+ **`filesRepoLive` is the source of the image PIN, never the comparison
934
+ root.** The parameter is spelled that way on purpose: the older
935
+ function beside it takes a `filesRepo` that must be rooted on the
936
+ filesystem the rerun writes to, and passing the live adapter into the
937
+ comparison is the substitution that makes a verification grade a tree
938
+ the rerun never touched — every entry clean, every attestation passing.
939
+ `testTheComparisonIsRootedOnTheShadowNeverOnTheLiveRepository` drives
940
+ the lane with the two roots made distinct and is kill-confirmed against
941
+ exactly that swap.
942
+
943
+ **The shadow needs its own mutation admission, and forgetting it breaks
944
+ every rerun.** The rerun drives the ordinary `DockerConnection`, whose
945
+ execs ask the gate about the container id they name. On the dashboard
946
+ lane that runs inside a mode-(c) durable carrier opened for the
947
+ **project** container, so the shadow's execs are refused —
948
+ `MutationNotAdmittedError`, from inside a background task, reported to
949
+ the researcher as an unexplained attestation failure. That is not
950
+ hypothetical: the lane was written without it.
951
+ `commitCarrier.ftOpenDisposableContainerAdmission` is the seam, and it
952
+ is narrow in both directions —
953
+ `tests/testShadowContainerAdmission.py` asserts that the shadow's
954
+ admission reaches nothing but the shadow, and the project's reaches
955
+ nothing of the shadow.
956
+
957
+ **Do not read a green route-test as evidence this lane works.** The
958
+ route tests patch the shadow entry point out, precisely so they do not
959
+ touch a daemon. What exercises the lane is
960
+ `tests/testRerunVerifiesWhatItRan.py`, which builds the host clone, the
961
+ live container repo and the shadow copy as three genuinely distinct
962
+ directories and runs real commands against them, and
963
+ `tests/testDisposableContainerLive.py`, which drives a real daemon.
964
+
965
+ **The archive's parent directories must be stamped, not left to the
966
+ daemon.** A tarball may name `repo/data/file` without naming
967
+ `repo/data`, and both `put_archive` and `tar` then create the gap
968
+ ROOT-owned — so the container user owns its files and cannot create a
969
+ sibling beside them. Verified live: without the synthesized parents the
970
+ first write into the copied repository is refused. `disposableSpecification`
971
+ emits every parent as its own 1000:1000 member, and
972
+ `testFnWriteFileDefaultsToContainerUserOwnership` pins it as the second
973
+ tar-building write path.
974
+
975
+ **The shadow's execs run as the image's declared `USER`.**
976
+ `DockerConnection` resolves every exec's user from the image's
977
+ `Config.User`, falling back to `researcher`. The create specification
978
+ sets the container user numerically (`1000:1000`), which is always
979
+ valid, but the per-exec override is by NAME — so a shadow built from an
980
+ image that declares no `USER` and has no `researcher` account is refused
981
+ by the daemon with "unable to find user", on every step. An L3 envelope
982
+ pins the image vaibify built for the project, which carries the
983
+ directive, so this is a constraint on what a shadow can be built FROM
984
+ rather than a live defect. It was found by pointing the live test at a
985
+ stock base image; do not "fix" it by making the exec numeric without
986
+ working out what that does to the project-container lane, which relies
987
+ on the name.
988
+
989
+ **`/shadow` is not `/workspace`, and that is deliberate.** The shadow
990
+ carries no volumes at all, so borrowing the workspace name would invite
991
+ a reader to assume a mount that is not there. Ask
992
+ `shadowRerun.ftResolveShadowPaths` rather than composing the path.
993
+
994
+ **The repository export is coherence-pinned, and BOTH halves of the
995
+ check are load-bearing.** `coherentExport.fbaExportRepositoryCoherently`
996
+ observes every path git can enumerate immediately before and
997
+ immediately after the archive stream, and refuses unless (a) the two
998
+ observations are exactly equal AND (b) every archive member matches the
999
+ before-observation by an identity recomputed host-side over the
1000
+ archived bytes. Neither implies the other, which is the thing most
1001
+ likely to be "simplified" away:
1002
+
1003
+ - a file changed after the walk passed it leaves the archive perfectly
1004
+ consistent with the before-observation — only (a) sees it;
1005
+ - a file changed and changed back leaves both observations identical —
1006
+ only (b) sees it.
1007
+
1008
+ Two registry entries exist precisely to prove that, one per half:
1009
+ delete either check and exactly one of them survives. Do not collapse
1010
+ them.
1011
+
1012
+ **The exemption is `.git/` only, and its narrowness is a real bug
1013
+ class.** Git enumerates the working tree, not its own internals, so
1014
+ `.git/` is exempt from the member check. Writing that test as
1015
+ `startswith(".git")` instead of `startswith(".git/")` silently exempts
1016
+ `.gitignore`, `.gitattributes` and `.gitmodules` — real,
1017
+ manifest-relevant files — and
1018
+ `testTheGitInternalsExemptionIsNarrow` is the kill-confirmed guard.
1019
+ Any OTHER unobserved member is refused, naming a checked-out submodule
1020
+ as the likely cause, because a submodule's files are listed by no
1021
+ superproject git command.
1022
+
1023
+ **A researcher is warned before the copy, and the warning has one
1024
+ home.** `VaibifyApp.fnConfirmLevel3Verification` is the single opener;
1025
+ both entry points (the Project block's `verify-l3` action and the PROOF
1026
+ tab's own Verify button) call it, because a safety warning maintained
1027
+ in two places is one that drifts. The CLI prints the equivalent notice
1028
+ rather than prompting — a prompt would break every unattended
1029
+ `vaibify reproduce --rerun`. Neither is the safety mechanism: the
1030
+ export refuses a torn copy either way. They exist so a researcher who
1031
+ meets that refusal was already told what causes it, which is the whole
1032
+ premise of vaibify — never a baffling debugging session.
1033
+ `tests/browser/testVerifyWarnsBeforeCopyingTheProject.py` asserts the
1034
+ ORDER (no POST before the confirm), not the wording.
1035
+
1036
+ **Three container facts this lane depends on, all found the hard way.**
1037
+ `get_archive` cannot read out of a **tmpfs** mount — it answers 404 for
1038
+ a directory an exec in the same container lists happily. It reads out
1039
+ of a named **volume** fine, which is what real project repos live in
1040
+ (verified live). And `DockerConnection` execs `/bin/bash`, so an image
1041
+ without bash fails with a non-zero exit and empty stderr, which reads
1042
+ like a broken program rather than a missing shell. Third, and so far
1043
+ measured on ONE runtime (Colima 0.10.3, virtiofs, Docker Engine
1044
+ 28.4.0): once the host file behind a `--mount` is deleted, every
1045
+ `get_archive` out of that container fails with "Could not find the
1046
+ file" while `exec` keeps working, so the export behind Verify L3 blames
1047
+ an intact `/workspace/<repo>`. The usual deleted source is a
1048
+ `/run/secrets/<name>` file. A failed directory archive read now names a
1049
+ deleted vaibify-managed secret on positive evidence only, and the remedy
1050
+ it names is Restart Container (`vaibify stop && vaibify start`), never
1051
+ `docker restart`, which reuses the missing file.
1052
+ `tests/testArchiveReadNamesAMissingMountLive.py` records what other
1053
+ runtimes do, and requires the failure only where it was measured.
1054
+
1055
+ **The disposable lifecycle is SHARED with the Agent Council.**
1056
+ `vaibify/docker/disposableContainer.py` (the SDK authority),
1057
+ `disposableSpecification.py` (the pure half) and `daemonCapacity.py`
1058
+ were extracted from the council's gateway so both lanes have one
1059
+ container lifecycle. Changes here reach both. The ledger in the gateway
1060
+ records reservations and outcomes and NOTHING else — admission quotas,
1061
+ per-provider accounting and the idle-watchdog veto belong to whoever is
1062
+ spending the resource, and the council wraps this rather than replacing
1063
+ it. Do not grow those policies into this module.
1064
+
1065
+ **Bound a container from the DAEMON's memory, never the host's.** On
1066
+ Linux they agree and the bug is invisible; on macOS the daemon is a VM
1067
+ with its own allocation (measured: 16 GB host over an 8.3 GB daemon), so
1068
+ a container sized from host RAM is over-provisioned and the kill arrives
1069
+ mid-workflow. `daemonCapacity` keeps the two figures apart by name —
1070
+ `iHostMemoryBytes` bounds what the hub materializes in its own address
1071
+ space, `iDaemonMemoryBytes` bounds the container — and
1072
+ `tests/testDaemonCapacity.py` drives them 16x apart so a test cannot
1073
+ pass while reading the wrong one.
1074
+
1075
+ ## Contracts added with the appendix-consistency work
1076
+
1077
+ - **Unseeded randomness** is written by the lint into
1078
+ `dictStep["dictVerification"]["bUnseededRandomnessWarning"]` and read
1079
+ ONLY through `fbStepHasUnseededRandomnessWarning`. Three gates once
1080
+ read it from the step's top level, where nothing writes it, and the
1081
+ Level 3 check never fired.
1082
+ - **Scan-found dependencies** (`dependency-unreconciled`, Level 1): a
1083
+ scan counts only while everything it examined still holds — every
1084
+ script it read (a clean scan included), the scripts the step's
1085
+ commands name, and every step's output declarations in step order.
1086
+ When any of these has moved, a step reorder included, or the scan
1087
+ failed, the step reads "dependency scan not current" — never a pass
1088
+ and never a red verdict drawn from old data. A failed scan clears the
1089
+ step's findings. Findings and dismissals are keyed by step id.
1090
+ - **Context is not cause.** A recorded production/rerun context
1091
+ difference makes possible causes inspectable; it never explains a
1092
+ difference. Messages say "produced under different settings or
1093
+ hardware: <both contexts>". Acceptance rests on published
1094
+ comparisons only.
1095
+ - **Byte identity of regenerated outputs is observed, never an
1096
+ acceptance rule.** No gate and no test may require a rerun's outputs
1097
+ to be byte-identical under either execution profile. Exact integrity
1098
+ checks are NOT relaxed: published inputs, scripts, standards, the
1099
+ manifest and environment records stay byte-exact, and byte-sensitive
1100
+ regression tests remain valid.
1101
+ - **Policy v1 is frozen.** A changed vector figure cannot pass under v1
1102
+ whatever comparisons exist; `S_VECTOR_REMEDY` overstates the options
1103
+ and must not be edited in place. Corrections live outside the frozen
1104
+ file or in a future policy version.