straw-queue 0.1.4__tar.gz → 0.1.5__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.
- straw_queue-0.1.5/.agents/skills/straw-protocol-review/SKILL.md +77 -0
- straw_queue-0.1.5/.agents/skills/straw-protocol-review/agents/openai.yaml +4 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/.github/workflows/tests.yml +2 -33
- {straw_queue-0.1.4 → straw_queue-0.1.5}/CHANGELOG.md +16 -2
- {straw_queue-0.1.4 → straw_queue-0.1.5}/CHANGELOG_zh.md +16 -2
- straw_queue-0.1.5/CONTRIBUTING.md +138 -0
- straw_queue-0.1.5/CONTRIBUTING_zh.md +79 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/Cargo.lock +1 -1
- {straw_queue-0.1.4 → straw_queue-0.1.5}/Cargo.toml +3 -5
- {straw_queue-0.1.4 → straw_queue-0.1.5}/PKG-INFO +17 -31
- {straw_queue-0.1.4 → straw_queue-0.1.5}/README.md +16 -30
- {straw_queue-0.1.4 → straw_queue-0.1.5}/README_zh.md +13 -19
- {straw_queue-0.1.4 → straw_queue-0.1.5}/docs/BENCHMARKS.md +75 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/docs/BENCHMARKS_zh.md +39 -0
- straw_queue-0.1.5/docs/DESIGN.md +323 -0
- straw_queue-0.1.5/docs/DESIGN_zh.md +202 -0
- straw_queue-0.1.5/docs/FILESYSTEM.md +230 -0
- straw_queue-0.1.5/docs/FILESYSTEM_zh.md +125 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/docs/FORMAT.md +2 -2
- {straw_queue-0.1.4 → straw_queue-0.1.5}/docs/FORMAT_zh.md +2 -2
- straw_queue-0.1.5/docs/README.md +17 -0
- straw_queue-0.1.5/docs/README_zh.md +14 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/docs/USAGE.md +46 -7
- {straw_queue-0.1.4 → straw_queue-0.1.5}/docs/USAGE_zh.md +25 -5
- {straw_queue-0.1.4 → straw_queue-0.1.5}/pyproject.toml +5 -2
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/access.rs +0 -7
- straw_queue-0.1.5/rust/bounds.rs +88 -0
- straw_queue-0.1.5/rust/catalog_append.rs +66 -0
- straw_queue-0.1.5/rust/catalog_decode.rs +284 -0
- straw_queue-0.1.5/rust/catalog_event.rs +85 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/catalog_frame.rs +5 -97
- straw_queue-0.1.5/rust/catalog_gc.rs +47 -0
- straw_queue-0.1.5/rust/catalog_json.rs +179 -0
- straw_queue-0.1.5/rust/catalog_log.rs +302 -0
- straw_queue-0.1.5/rust/catalog_namespace.rs +135 -0
- straw_queue-0.1.5/rust/catalog_primitives.rs +62 -0
- straw_queue-0.1.5/rust/catalog_runtime.rs +363 -0
- straw_queue-0.1.5/rust/catalog_state.rs +185 -0
- straw_queue-0.1.5/rust/catalog_target.rs +94 -0
- straw_queue-0.1.5/rust/catalog_transaction.rs +102 -0
- straw_queue-0.1.5/rust/closure.rs +262 -0
- straw_queue-0.1.5/rust/closure_node.rs +226 -0
- straw_queue-0.1.5/rust/consumption.rs +79 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/directory.rs +1 -26
- straw_queue-0.1.5/rust/directory_io.rs +27 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/discovery.rs +0 -15
- straw_queue-0.1.5/rust/extent_retry.rs +91 -0
- straw_queue-0.1.5/rust/file_adapter.rs +140 -0
- straw_queue-0.1.5/rust/file_primitives.rs +46 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/finalization.rs +1 -46
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/framing.rs +4 -102
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/gc.rs +34 -4
- straw_queue-0.1.5/rust/gc_batch.rs +108 -0
- straw_queue-0.1.5/rust/gc_collection.rs +379 -0
- straw_queue-0.1.5/rust/gc_io.rs +90 -0
- straw_queue-0.1.5/rust/gc_mark.rs +58 -0
- straw_queue-0.1.5/rust/gc_receipt.rs +37 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/gc_writer.rs +1 -1
- straw_queue-0.1.5/rust/holding.rs +21 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/identities.rs +1 -26
- straw_queue-0.1.5/rust/incomplete.rs +74 -0
- straw_queue-0.1.5/rust/journal_append.rs +40 -0
- straw_queue-0.1.5/rust/journal_io.rs +52 -0
- straw_queue-0.1.5/rust/journal_owner.rs +169 -0
- straw_queue-0.1.5/rust/journal_primitives.rs +16 -0
- straw_queue-0.1.5/rust/journal_recovery.rs +81 -0
- straw_queue-0.1.5/rust/journal_state.rs +98 -0
- straw_queue-0.1.5/rust/json_update.rs +64 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/lib.rs +4 -6
- straw_queue-0.1.5/rust/namespace_identity.rs +138 -0
- straw_queue-0.1.5/rust/namespace_step.rs +86 -0
- straw_queue-0.1.5/rust/namespace_target.rs +125 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/pending.rs +0 -9
- straw_queue-0.1.5/rust/protocol.rs +157 -0
- straw_queue-0.1.5/rust/queue_admin.rs +269 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/queue_application.rs +10 -120
- straw_queue-0.1.5/rust/queue_commit.rs +146 -0
- straw_queue-0.1.5/rust/queue_event.rs +71 -0
- straw_queue-0.1.5/rust/queue_gc.rs +255 -0
- straw_queue-0.1.5/rust/queue_gc_prepare.rs +80 -0
- straw_queue-0.1.5/rust/queue_handoff.rs +181 -0
- straw_queue-0.1.5/rust/queue_history.rs +469 -0
- straw_queue-0.1.5/rust/queue_metadata.rs +156 -0
- straw_queue-0.1.5/rust/queue_progress.rs +315 -0
- straw_queue-0.1.5/rust/queue_reader.rs +179 -0
- straw_queue-0.1.5/rust/queue_receipt.rs +83 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/queue_replay.rs +6 -170
- straw_queue-0.1.5/rust/queue_retirement.rs +129 -0
- straw_queue-0.1.5/rust/queue_roots.rs +459 -0
- straw_queue-0.1.5/rust/queue_state.rs +161 -0
- straw_queue-0.1.5/rust/queue_task.rs +170 -0
- straw_queue-0.1.5/rust/queue_transition.rs +313 -0
- straw_queue-0.1.5/rust/reclamation.rs +17 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/record_index.rs +25 -102
- straw_queue-0.1.5/rust/record_manifest.rs +258 -0
- straw_queue-0.1.5/rust/reference_node.rs +355 -0
- straw_queue-0.1.5/rust/reference_validation.rs +187 -0
- straw_queue-0.1.5/rust/replay.rs +41 -0
- straw_queue-0.1.5/rust/request.rs +108 -0
- straw_queue-0.1.5/rust/selection.rs +16 -0
- straw_queue-0.1.5/rust/staging_consumption.rs +247 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/store.rs +7 -9
- straw_queue-0.1.5/rust/stream.rs +32 -0
- straw_queue-0.1.5/rust/traversal.rs +27 -0
- straw_queue-0.1.5/rust/typed.rs +27 -0
- straw_queue-0.1.5/rust/wal.rs +77 -0
- straw_queue-0.1.5/rust/wal_append.rs +82 -0
- straw_queue-0.1.5/rust/wal_device.rs +46 -0
- straw_queue-0.1.5/rust/wal_recovery.rs +171 -0
- straw_queue-0.1.5/rust/wal_sink.rs +101 -0
- straw_queue-0.1.5/rust/wal_source.rs +169 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/writer_gate.rs +7 -11
- straw_queue-0.1.5/rust/writer_gate_flow.rs +235 -0
- straw_queue-0.1.5/rust/writer_ownership.rs +194 -0
- straw_queue-0.1.5/rust/writer_registry.rs +444 -0
- straw_queue-0.1.5/rust/writer_retirement.rs +128 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/native.rs +38 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_commit_consumption.py +25 -0
- straw_queue-0.1.5/tests/test_verification_runner.py +68 -0
- straw_queue-0.1.5/verification/README.md +20 -0
- straw_queue-0.1.5/verification/README_zh.md +20 -0
- straw_queue-0.1.5/verification/common/README.md +19 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/common/tla/EnvironmentInputs.tla +1 -6
- straw_queue-0.1.5/verification/environment_contracts.json +1526 -0
- straw_queue-0.1.5/verification/gc/README.md +33 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/GCDeletion.tla +1 -1
- straw_queue-0.1.5/verification/gc/tla/WriterRetirement.cfg +9 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/WriterRetirement.tla +46 -29
- straw_queue-0.1.5/verification/offline/README.md +24 -0
- straw_queue-0.1.5/verification/protocol/README.md +45 -0
- straw_queue-0.1.5/verification/protocol/tla/CrossLogComposition.cfg +10 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/CrossLogComposition.tla +25 -6
- straw_queue-0.1.5/verification/protocol/tla/ReactivationRace.cfg +9 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/ReactivationRace.tla +24 -14
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/runners/check_tla.py +65 -47
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/runners/environment_manifest.py +12 -56
- straw_queue-0.1.5/verification/storage/README.md +53 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/positioned_extent_probe.rs +1 -1
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/ReadAttempt.cfg +1 -0
- straw_queue-0.1.5/verification/storage/tla/ReadAttempt.tla +72 -0
- straw_queue-0.1.5/verification/wal/README.md +26 -0
- straw_queue-0.1.5/verification/wal/tla/CatalogTransaction.cfg +8 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/tla/CatalogTransaction.tla +21 -7
- straw_queue-0.1.4/CONTRIBUTING.md +0 -52
- straw_queue-0.1.4/CONTRIBUTING_zh.md +0 -32
- straw_queue-0.1.4/docs/APPLICATIONS.md +0 -53
- straw_queue-0.1.4/docs/APPLICATIONS_zh.md +0 -30
- straw_queue-0.1.4/docs/BUILDING.md +0 -171
- straw_queue-0.1.4/docs/BUILDING_zh.md +0 -108
- straw_queue-0.1.4/docs/DESIGN.md +0 -86
- straw_queue-0.1.4/docs/DESIGN_zh.md +0 -57
- straw_queue-0.1.4/docs/ENVIRONMENT_MODELS.md +0 -985
- straw_queue-0.1.4/docs/ENVIRONMENT_MODELS_zh.md +0 -561
- straw_queue-0.1.4/docs/FILESYSTEM.md +0 -1636
- straw_queue-0.1.4/docs/FILESYSTEM_zh.md +0 -972
- straw_queue-0.1.4/docs/FORMAL_VERIFICATION.md +0 -1952
- straw_queue-0.1.4/docs/FORMAL_VERIFICATION_zh.md +0 -1010
- straw_queue-0.1.4/docs/PROTOCOL_AND_VERIFICATION.md +0 -247
- straw_queue-0.1.4/docs/PROTOCOL_AND_VERIFICATION_zh.md +0 -127
- straw_queue-0.1.4/docs/README.md +0 -27
- straw_queue-0.1.4/docs/README_zh.md +0 -25
- straw_queue-0.1.4/docs/VERIFICATION.md +0 -111
- straw_queue-0.1.4/docs/VERIFICATION_BOUNDARIES.md +0 -106
- straw_queue-0.1.4/docs/VERIFICATION_BOUNDARIES_zh.md +0 -92
- straw_queue-0.1.4/docs/VERIFICATION_zh.md +0 -77
- straw_queue-0.1.4/rust/bounds.rs +0 -161
- straw_queue-0.1.4/rust/catalog_append.rs +0 -192
- straw_queue-0.1.4/rust/catalog_decode.rs +0 -686
- straw_queue-0.1.4/rust/catalog_event.rs +0 -166
- straw_queue-0.1.4/rust/catalog_gc.rs +0 -71
- straw_queue-0.1.4/rust/catalog_json.rs +0 -341
- straw_queue-0.1.4/rust/catalog_log.rs +0 -641
- straw_queue-0.1.4/rust/catalog_namespace.rs +0 -241
- straw_queue-0.1.4/rust/catalog_primitives.rs +0 -124
- straw_queue-0.1.4/rust/catalog_runtime.rs +0 -595
- straw_queue-0.1.4/rust/catalog_state.rs +0 -513
- straw_queue-0.1.4/rust/catalog_target.rs +0 -247
- straw_queue-0.1.4/rust/catalog_transaction.rs +0 -230
- straw_queue-0.1.4/rust/closure.rs +0 -635
- straw_queue-0.1.4/rust/closure_node.rs +0 -367
- straw_queue-0.1.4/rust/consumption.rs +0 -166
- straw_queue-0.1.4/rust/directory_io.rs +0 -76
- straw_queue-0.1.4/rust/extent_retry.rs +0 -210
- straw_queue-0.1.4/rust/file_adapter.rs +0 -273
- straw_queue-0.1.4/rust/file_primitives.rs +0 -204
- straw_queue-0.1.4/rust/gc_batch.rs +0 -227
- straw_queue-0.1.4/rust/gc_collection.rs +0 -848
- straw_queue-0.1.4/rust/gc_io.rs +0 -183
- straw_queue-0.1.4/rust/gc_mark.rs +0 -262
- straw_queue-0.1.4/rust/gc_receipt.rs +0 -239
- straw_queue-0.1.4/rust/holding.rs +0 -34
- straw_queue-0.1.4/rust/incomplete.rs +0 -126
- straw_queue-0.1.4/rust/journal_append.rs +0 -85
- straw_queue-0.1.4/rust/journal_io.rs +0 -126
- straw_queue-0.1.4/rust/journal_owner.rs +0 -416
- straw_queue-0.1.4/rust/journal_primitives.rs +0 -52
- straw_queue-0.1.4/rust/journal_recovery.rs +0 -168
- straw_queue-0.1.4/rust/journal_state.rs +0 -158
- straw_queue-0.1.4/rust/json_update.rs +0 -104
- straw_queue-0.1.4/rust/namespace_identity.rs +0 -296
- straw_queue-0.1.4/rust/namespace_step.rs +0 -168
- straw_queue-0.1.4/rust/namespace_target.rs +0 -249
- straw_queue-0.1.4/rust/protocol.rs +0 -432
- straw_queue-0.1.4/rust/queue_admin.rs +0 -510
- straw_queue-0.1.4/rust/queue_commit.rs +0 -340
- straw_queue-0.1.4/rust/queue_event.rs +0 -145
- straw_queue-0.1.4/rust/queue_gc.rs +0 -789
- straw_queue-0.1.4/rust/queue_gc_prepare.rs +0 -150
- straw_queue-0.1.4/rust/queue_handoff.rs +0 -465
- straw_queue-0.1.4/rust/queue_history.rs +0 -812
- straw_queue-0.1.4/rust/queue_metadata.rs +0 -319
- straw_queue-0.1.4/rust/queue_progress.rs +0 -418
- straw_queue-0.1.4/rust/queue_reader.rs +0 -403
- straw_queue-0.1.4/rust/queue_receipt.rs +0 -166
- straw_queue-0.1.4/rust/queue_retirement.rs +0 -268
- straw_queue-0.1.4/rust/queue_roots.rs +0 -935
- straw_queue-0.1.4/rust/queue_state.rs +0 -376
- straw_queue-0.1.4/rust/queue_task.rs +0 -305
- straw_queue-0.1.4/rust/queue_transition.rs +0 -591
- straw_queue-0.1.4/rust/reclamation.rs +0 -33
- straw_queue-0.1.4/rust/record_manifest.rs +0 -356
- straw_queue-0.1.4/rust/reference_node.rs +0 -484
- straw_queue-0.1.4/rust/reference_validation.rs +0 -334
- straw_queue-0.1.4/rust/replay.rs +0 -68
- straw_queue-0.1.4/rust/request.rs +0 -191
- straw_queue-0.1.4/rust/selection.rs +0 -31
- straw_queue-0.1.4/rust/staging_consumption.rs +0 -655
- straw_queue-0.1.4/rust/stream.rs +0 -53
- straw_queue-0.1.4/rust/traversal.rs +0 -55
- straw_queue-0.1.4/rust/typed.rs +0 -40
- straw_queue-0.1.4/rust/wal.rs +0 -123
- straw_queue-0.1.4/rust/wal_append.rs +0 -166
- straw_queue-0.1.4/rust/wal_device.rs +0 -177
- straw_queue-0.1.4/rust/wal_recovery.rs +0 -599
- straw_queue-0.1.4/rust/wal_sink.rs +0 -164
- straw_queue-0.1.4/rust/wal_source.rs +0 -340
- straw_queue-0.1.4/rust/writer_gate_flow.rs +0 -390
- straw_queue-0.1.4/rust/writer_ownership.rs +0 -350
- straw_queue-0.1.4/rust/writer_registry.rs +0 -1100
- straw_queue-0.1.4/rust/writer_retirement.rs +0 -263
- straw_queue-0.1.4/tests/test_verification_runner.py +0 -158
- straw_queue-0.1.4/verification/README.md +0 -71
- straw_queue-0.1.4/verification/README_zh.md +0 -42
- straw_queue-0.1.4/verification/common/README.md +0 -30
- straw_queue-0.1.4/verification/common/verus/collections.rs +0 -59
- straw_queue-0.1.4/verification/common/verus/environment.rs +0 -99
- straw_queue-0.1.4/verification/common/verus/serde_json.rs +0 -281
- straw_queue-0.1.4/verification/common/verus/verus.rs +0 -278
- straw_queue-0.1.4/verification/environment_contracts.json +0 -2313
- straw_queue-0.1.4/verification/gc/README.md +0 -45
- straw_queue-0.1.4/verification/gc/tla/UsageCache.cfg +0 -6
- straw_queue-0.1.4/verification/gc/tla/UsageCache.tla +0 -34
- straw_queue-0.1.4/verification/gc/tla/WriterRetirement.cfg +0 -8
- straw_queue-0.1.4/verification/gc/verus/gc_liveness.rs +0 -189
- straw_queue-0.1.4/verification/measurements/20261023-catalog-buffer.json +0 -338
- straw_queue-0.1.4/verification/measurements/20261023-catalog-discovery.json +0 -158
- straw_queue-0.1.4/verification/measurements/20261023-catalog-encoding.json +0 -591
- straw_queue-0.1.4/verification/measurements/20261023-catalog-history.json +0 -322
- straw_queue-0.1.4/verification/measurements/20261023-catalog-replay.json +0 -113
- straw_queue-0.1.4/verification/measurements/20261023-control.json +0 -103
- straw_queue-0.1.4/verification/measurements/20261023-dependency-traversal.json +0 -173
- straw_queue-0.1.4/verification/measurements/20261023-directory-durability.json +0 -197
- straw_queue-0.1.4/verification/measurements/20261023-environment-review.json +0 -49
- straw_queue-0.1.4/verification/measurements/20261023-gc-batch.json +0 -143
- straw_queue-0.1.4/verification/measurements/20261023-gc-parent-repair.json +0 -1005
- straw_queue-0.1.4/verification/measurements/20261023-gc-progress.json +0 -88
- straw_queue-0.1.4/verification/measurements/20261023-gc-receipt.json +0 -469
- straw_queue-0.1.4/verification/measurements/20261023-gc-stat.json +0 -99
- straw_queue-0.1.4/verification/measurements/20261023-incomplete-publication.json +0 -1079
- straw_queue-0.1.4/verification/measurements/20261023-path-identity.json +0 -680
- straw_queue-0.1.4/verification/measurements/20261023-pending-publication.json +0 -428
- straw_queue-0.1.4/verification/measurements/20261023-provisional-holds.json +0 -1460
- straw_queue-0.1.4/verification/measurements/20261023-publication-finalization.json +0 -475
- straw_queue-0.1.4/verification/measurements/20261023-publication-handoff.json +0 -1184
- straw_queue-0.1.4/verification/measurements/20261023-publication-preparation.json +0 -672
- straw_queue-0.1.4/verification/measurements/20261023-publication-retry.json +0 -225
- straw_queue-0.1.4/verification/measurements/20261023-reactivation-timing.json +0 -303
- straw_queue-0.1.4/verification/measurements/20261023-reactivation.json +0 -1405
- straw_queue-0.1.4/verification/measurements/20261023-selection.json +0 -73
- straw_queue-0.1.4/verification/measurements/20261023-shared-record-workflow.json +0 -2572
- straw_queue-0.1.4/verification/measurements/20261023-staging-consumption.json +0 -1509
- straw_queue-0.1.4/verification/measurements/20261023-stream-length.json +0 -158
- straw_queue-0.1.4/verification/measurements/20261023-unlocked-reactivation.json +0 -304
- straw_queue-0.1.4/verification/measurements/20261023-writer-lifetime.json +0 -174
- straw_queue-0.1.4/verification/measurements/20261023.json +0 -887
- straw_queue-0.1.4/verification/measurements/20261024-commit-cleanup.json +0 -239
- straw_queue-0.1.4/verification/measurements/20261024-environment-layers.json +0 -69
- straw_queue-0.1.4/verification/measurements/20261024-offline-guard.json +0 -484
- straw_queue-0.1.4/verification/measurements/20261024-positioned-range.json +0 -345
- straw_queue-0.1.4/verification/measurements/20261024-queue-record-workflow.json +0 -386
- straw_queue-0.1.4/verification/measurements/20261024-read-latency.json +0 -3468
- straw_queue-0.1.4/verification/measurements/20261024-read-lookup.json +0 -610
- straw_queue-0.1.4/verification/measurements/20261024-single-open.json +0 -1579
- straw_queue-0.1.4/verification/measurements/20261024-tensor-granularity.json +0 -411
- straw_queue-0.1.4/verification/measurements/20261024-typed-preflight.json +0 -1674
- straw_queue-0.1.4/verification/measurements/20261024-writer-access.json +0 -191
- straw_queue-0.1.4/verification/measurements/20261025-catalog-admission.json +0 -206
- straw_queue-0.1.4/verification/measurements/20261025-catalog-append.json +0 -577
- straw_queue-0.1.4/verification/measurements/20261025-catalog-decode.json +0 -374
- straw_queue-0.1.4/verification/measurements/20261025-catalog-equivalence.json +0 -439
- straw_queue-0.1.4/verification/measurements/20261025-catalog-event.json +0 -187
- straw_queue-0.1.4/verification/measurements/20261025-catalog-frame.json +0 -642
- straw_queue-0.1.4/verification/measurements/20261025-catalog-indexes.json +0 -55
- straw_queue-0.1.4/verification/measurements/20261025-catalog-json.json +0 -79
- straw_queue-0.1.4/verification/measurements/20261025-catalog-log.json +0 -164
- straw_queue-0.1.4/verification/measurements/20261025-catalog-recovery.json +0 -1355
- straw_queue-0.1.4/verification/measurements/20261025-catalog-target.json +0 -304
- straw_queue-0.1.4/verification/measurements/20261025-catalog-transaction.json +0 -697
- straw_queue-0.1.4/verification/measurements/20261025-closure-node.json +0 -437
- straw_queue-0.1.4/verification/measurements/20261025-commit-recovery.json +0 -736
- straw_queue-0.1.4/verification/measurements/20261025-cross-log-composition.json +0 -944
- straw_queue-0.1.4/verification/measurements/20261025-dependency-closure.json +0 -529
- straw_queue-0.1.4/verification/measurements/20261025-file-adapters.json +0 -2115
- straw_queue-0.1.4/verification/measurements/20261025-gc-batch.json +0 -782
- straw_queue-0.1.4/verification/measurements/20261025-gc-io.json +0 -726
- straw_queue-0.1.4/verification/measurements/20261025-gc-mark.json +0 -489
- straw_queue-0.1.4/verification/measurements/20261025-gc-receipt.json +0 -1033
- straw_queue-0.1.4/verification/measurements/20261025-journal-append.json +0 -754
- straw_queue-0.1.4/verification/measurements/20261025-offline-alias.json +0 -378
- straw_queue-0.1.4/verification/measurements/20261025-queue-event.json +0 -819
- straw_queue-0.1.4/verification/measurements/20261025-queue-metadata.json +0 -703
- straw_queue-0.1.4/verification/measurements/20261025-queue-reader.json +0 -867
- straw_queue-0.1.4/verification/measurements/20261025-queue-state.json +0 -1074
- straw_queue-0.1.4/verification/measurements/20261025-queue-task.json +0 -992
- straw_queue-0.1.4/verification/measurements/20261025-replay-completeness.json +0 -328
- straw_queue-0.1.4/verification/measurements/20261025-request-replay.json +0 -477
- straw_queue-0.1.4/verification/measurements/20261025-runtime-performance.json +0 -971
- straw_queue-0.1.4/verification/measurements/20261025-verification-layout.json +0 -374
- straw_queue-0.1.4/verification/measurements/20261025-wal-append.json +0 -165
- straw_queue-0.1.4/verification/measurements/20261025-wal-errors-staging-graph.json +0 -58
- straw_queue-0.1.4/verification/measurements/20261026-gc-collection.json +0 -297
- straw_queue-0.1.4/verification/measurements/20261026-journal-io.json +0 -630
- straw_queue-0.1.4/verification/measurements/20261026-owned-chains-integration.json +0 -601
- straw_queue-0.1.4/verification/measurements/20261026-queue-admin.json +0 -1021
- straw_queue-0.1.4/verification/measurements/20261026-queue-application.json +0 -852
- straw_queue-0.1.4/verification/measurements/20261026-queue-history.json +0 -732
- straw_queue-0.1.4/verification/measurements/20261026-queue-replay.json +0 -1013
- straw_queue-0.1.4/verification/measurements/20261026-queue-transition.json +0 -825
- straw_queue-0.1.4/verification/measurements/20261026-release-checks.json +0 -188
- straw_queue-0.1.4/verification/measurements/20261026-writer-admission.json +0 -1110
- straw_queue-0.1.4/verification/measurements/20261026-writer-roots-integration.json +0 -212
- straw_queue-0.1.4/verification/offline/README.md +0 -26
- straw_queue-0.1.4/verification/protocol/README.md +0 -69
- straw_queue-0.1.4/verification/protocol/tla/CrossLogComposition.cfg +0 -10
- straw_queue-0.1.4/verification/protocol/tla/LeaseSelection.cfg +0 -8
- straw_queue-0.1.4/verification/protocol/tla/LeaseSelection.tla +0 -22
- straw_queue-0.1.4/verification/protocol/tla/ReactivationRace.cfg +0 -7
- straw_queue-0.1.4/verification/protocol/verus/control_plane.rs +0 -147
- straw_queue-0.1.4/verification/protocol/verus/cross_log.rs +0 -351
- straw_queue-0.1.4/verification/protocol/verus/queue_event_equivalence.rs +0 -146
- straw_queue-0.1.4/verification/protocol/verus/queue_transition_roots.rs +0 -67
- straw_queue-0.1.4/verification/protocol/verus/request_history.rs +0 -66
- straw_queue-0.1.4/verification/protocol/verus/retry_liveness.rs +0 -168
- straw_queue-0.1.4/verification/runners/check_verus.py +0 -7292
- straw_queue-0.1.4/verification/storage/README.md +0 -47
- straw_queue-0.1.4/verification/storage/tla/ExtentArithmetic.cfg +0 -7
- straw_queue-0.1.4/verification/storage/tla/ExtentArithmetic.tla +0 -31
- straw_queue-0.1.4/verification/storage/tla/NamespaceEncoding.cfg +0 -7
- straw_queue-0.1.4/verification/storage/tla/NamespaceEncoding.tla +0 -44
- straw_queue-0.1.4/verification/storage/tla/PayloadStream.cfg +0 -8
- straw_queue-0.1.4/verification/storage/tla/PayloadStream.tla +0 -47
- straw_queue-0.1.4/verification/storage/tla/ReadAttempt.tla +0 -63
- straw_queue-0.1.4/verification/storage/tla/TensorGranularity.cfg +0 -8
- straw_queue-0.1.4/verification/storage/tla/TensorGranularity.tla +0 -48
- straw_queue-0.1.4/verification/wal/README.md +0 -61
- straw_queue-0.1.4/verification/wal/tla/CatalogTransaction.cfg +0 -8
- straw_queue-0.1.4/verification/wal/verus/catalog_equivalence.rs +0 -274
- straw_queue-0.1.4/verification/wal/verus/catalog_json_equivalence.rs +0 -157
- straw_queue-0.1.4/verification/wal/verus/journal_equivalence.rs +0 -149
- straw_queue-0.1.4/verification/wal/verus/prefix_projection.rs +0 -96
- {straw_queue-0.1.4 → straw_queue-0.1.5}/.github/workflows/wheels.yml +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/LICENSE +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/examples/multiprocess.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/examples/records.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/examples/tensors.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/examples/work_queue.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/coordinator.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/journal.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/payload.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/python.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/rust/wal_file.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/__init__.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/backend.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/benchmark.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/coordinator.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/errors.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/inspect.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/journal.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/protocol.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/reporting.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/rpc.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/store.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/tensor.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/src/straw/tracing.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_artifact_privacy.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_benchmark_profile.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_catalog_encoding.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_commit_protocol.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_consumer_rewind.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_dependency_traversal.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_durable_handoff.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_extent_bounds.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_extent_visibility.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_filesystem_queue.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_gc_batch.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_gc_extent_validation.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_gc_missing_parent.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_gc_receipts.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_incomplete_publication.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_journal_contract.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_json_roundtrip.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_lease_selection.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_metadata_recovery.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_offline_aliases.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_offline_inspection.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_offline_recovery.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_online_gc.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_packed_store.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_path_identity.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_pending_publication.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_provisional_holds.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_publication_handoff.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_publication_preparation.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_queue_gc_roots.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_read_session.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_request_replay.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_resume_workflow.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_staging_consumption.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_streaming_write.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_task_recovery.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_tensor.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_tensor_granularity.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_tensor_preflight.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_unlimited_capacity.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_visibility_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_wal_recovery.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_writer_access.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tests/test_writer_retirement.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tools/check_artifact_privacy.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tools/check_wheel.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/tools/release_build.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/common/probes/runtime_performance.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/common/tla/EnvironmentCatalog.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/common/tla/EnvironmentGraph.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/common/tla/EnvironmentNamespace.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/common/tla/EnvironmentPersistence.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/common/tla/EnvironmentProgress.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/common/tla/EnvironmentRead.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/probes/catalog_discovery_fault.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/probes/catalog_discovery_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/probes/gc_cross_client.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/probes/gc_history_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/probes/gc_parent_fault.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/probes/gc_parent_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/probes/gc_receipt_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/probes/gc_scale.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/probes/gc_stat_fault.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/probes/gc_stat_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/EnvironmentParentRepair.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/EnvironmentWriter.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/EnvironmentWriterRetirement.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/GCBatchDeletion.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/GCBatchDeletion.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/GCDeletion.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/GCDiscovery.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/GCDiscovery.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/GCParentRepair.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/GCParentRepair.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/GCReceipt.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/GCReceipt.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/WriterLifetime.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/gc/tla/WriterLifetime.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/measurements/20261026-release-100gb.json +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/measurements/20261026-release-comparison.json +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/measurements/20261026-release-visibility.json +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/probes/offline_alias_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/probes/offline_guard_fault.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/probes/offline_guard_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/tla/EnvironmentBindings.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/tla/EnvironmentOffline.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/tla/OfflineAliases.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/tla/OfflineAliases.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/tla/OfflineCleanup.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/tla/OfflineCleanup.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/tla/OfflineRoots.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/offline/tla/OfflineRoots.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/checks/ownership_model.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/probes/commit_cleanup_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/probes/consumption_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/probes/handoff_extent_probe.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/probes/handoff_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/probes/lease_selection_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/probes/provisional_hold_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/probes/queue_record_probe.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/probes/reactivation_peer_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/probes/reactivation_probe.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/probes/workflow_extent_probe.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/CommitApplication.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/CommitApplication.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/CommitCleanup.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/CommitCleanup.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/Completion.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/Completion.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/DurableHandoff.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/DurableHandoff.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/EnvironmentApplication.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/EnvironmentClock.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/EnvironmentCommitCleanup.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/EnvironmentConsumption.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/EnvironmentCrossComposition.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/EnvironmentCrossLog.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/EnvironmentHandoff.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/EnvironmentReaders.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/EnvironmentRequest.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/EnvironmentTraining.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/Ownership.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/Ownership.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/ProvisionalHold.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/ProvisionalHold.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/PublicationHandoff.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/PublicationHandoff.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/QueueRecordWorkflow.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/QueueRecordWorkflow.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/ReactivationScan.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/ReactivationScan.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/RequestReplay.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/RequestReplay.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/SharedRecordWorkflow.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/SharedRecordWorkflow.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/StagingConsumption.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/StagingConsumption.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/TrainingResume.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/protocol/tla/TrainingResume.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/catalog_encoding_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/dependency_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/directory_sync_fault.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/directory_sync_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/extent_visibility_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/filesystem_bandwidth_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/incomplete_cleanup_fault.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/incomplete_publication_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/large_extent_probe.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/namespace_lookup_count.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/path_identity_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/pending_publication_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/preparation_fault.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/preparation_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/publication_finalize_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/publication_retry_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/publication_sync_fault.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/read_latency_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/read_latency_trace.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/read_lookup_fault.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/read_lookup_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/standalone_extent_probe.rs +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/tensor_granularity_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/typed_preflight_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/writer_access_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/probes/writer_lifetime_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/DependencyTraversal.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/DependencyTraversal.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/DirectoryDurability.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/DirectoryDurability.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/EnvironmentAuthentication.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/EnvironmentIncomplete.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/EnvironmentLocalAccess.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/EnvironmentLookup.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/EnvironmentPreparation.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/EnvironmentTyped.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/EnvironmentVisibility.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/ExtentVisibility.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/ExtentVisibility.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/IncompletePublication.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/IncompletePublication.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/NamespaceIdentity.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/NamespaceIdentity.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/PendingPublication.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/PendingPublication.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/PublicationFinalization.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/PublicationFinalization.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/PublicationPreparation.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/PublicationPreparation.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/PublicationRetry.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/PublicationRetry.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/RangeRead.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/RangeRead.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/ReadLookup.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/ReadLookup.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/TypedRead.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/TypedRead.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/WriterAccess.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/storage/tla/WriterAccess.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/checks/crash_campaign.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/probes/catalog_fsync_fault.c +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/probes/catalog_history_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/probes/catalog_replay_probe.py +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/tla/CatalogReadBuffer.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/tla/CatalogReadBuffer.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/tla/CatalogReplay.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/tla/CatalogReplay.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/tla/EnvironmentWal.tla +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/tla/WalRecovery.cfg +0 -0
- {straw_queue-0.1.4 → straw_queue-0.1.5}/verification/wal/tla/WalRecovery.tla +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: straw-protocol-review
|
|
3
|
+
description: Review or change straw's persistence, ownership, recovery, GC, publication and read protocols. Use for protocol review, TODO acceptance, TLA+ changes, or Rust changes affecting durable ordering, crash/retry, request/attempt/epoch admission, reader roots or authentication. Compare the human protocol document to TLA+, then TLA+ to actual implementation; identify discrepancies and validate fixes with relevant regressions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# straw 协议审查
|
|
7
|
+
|
|
8
|
+
以仓库根目录为工作目录。先读 `docs/DESIGN_zh.md`
|
|
9
|
+
(英文版去掉 `_zh`),再按三部分中的“模型与实现对应”定位模型、调用链和测试。
|
|
10
|
+
文档是人审查的规则入口;映射表只是导航,不能替代阅读当前源码。
|
|
11
|
+
|
|
12
|
+
## 1. 确定规则与范围
|
|
13
|
+
|
|
14
|
+
从用户要求、diff 和 `TODO.md` 确定受影响的规则:
|
|
15
|
+
|
|
16
|
+
- **分布式协议 C1/C2/C4**:跨日志 handoff、请求/attempt/epoch、checkpoint 回退。
|
|
17
|
+
- **WAL 与数据 I/O C3/R1–R4**:日志与派生状态恢复、准备与发布重试、认证读取、独立可见性与有限重试。
|
|
18
|
+
- **所有权与 GC G1–G4**:完整根、认证与缓存、删除屏障与回执、writer 退休和条件活性。
|
|
19
|
+
|
|
20
|
+
追踪一条完整流程,包括入口、成功返回、报错但已生效、崩溃恢复和重复调用。
|
|
21
|
+
区分 accepted、applied、protected、reclaimed。禁止通过扩大环境假设或把失败步骤
|
|
22
|
+
合成原子动作来消除反例。没有格式变化就保留现有 wire format 和 API。
|
|
23
|
+
|
|
24
|
+
## 2. 文档 → TLA+
|
|
25
|
+
|
|
26
|
+
逐条检查对应 `.tla`、`.cfg` 和 `verification/runners/check_tla.py` 的实际配置:
|
|
27
|
+
|
|
28
|
+
1. 文档的状态、前置条件、持久化点、错误路径分别对应哪些变量和动作?
|
|
29
|
+
2. 锁、write、sync、apply、release、unlink、目录屏障、receipt 的可观察顺序是否保留?
|
|
30
|
+
3. 关键性质是否在运行配置中启用?正例能否成功,避免“一律拒绝”假安全?
|
|
31
|
+
4. 负例是否因为指定不变量/时序性质失败?解析错误、超时和工具错误不是有效反例。
|
|
32
|
+
5. 有限实例抽象了什么?跨日志模型的完整事务不能替代 WAL 的碎片写入模型。
|
|
33
|
+
6. 活性是否单列公平性、锁/I/O 返回、环境稳定和实际调用者继续重试?永久 owner
|
|
34
|
+
与永久无效输入应有独立安全/拒绝场景,不能假设它们最终消失或成功。
|
|
35
|
+
|
|
36
|
+
审查 `verification/environment_contracts.json` 和 `docs/DESIGN_zh.md#environment`:
|
|
37
|
+
环境保证与 straw 调用者义务分别列出。尤其不能把“已认证闭包”“正确根集合”或
|
|
38
|
+
“正确 callback”当成外部保证,跳过实际构造与调用。
|
|
39
|
+
|
|
40
|
+
## 3. TLA+ → 实现
|
|
41
|
+
|
|
42
|
+
从公开入口向下读真实 Rust/Python/FFI 调用路径,不能只核对同名 helper。
|
|
43
|
+
对每个关键动作记录:实际函数、guard、数据身份、持久化效果、错误后可用状态和恢复入口。
|
|
44
|
+
同时检查返回值和后续调用者是否真的遵守 guard。
|
|
45
|
+
|
|
46
|
+
重点反查这些越界:
|
|
47
|
+
|
|
48
|
+
- queue WAL 确认前释放 staging/根;旧 handoff 消耗新一代 staging。
|
|
49
|
+
- 部分 apply、I/O 错误或 caught unwind 后仍允许写入、缓存回复或 GC;恢复用了另一条日志。
|
|
50
|
+
- stale attempt/epoch 被新请求接受;旧成功请求因数据已回收而不能重放。
|
|
51
|
+
- reader/checkpoint/其他队列/传递依赖根遗漏;锁外认证后没有锁内重查。
|
|
52
|
+
- 缓存跨 pool/run/namespace/reference 复用;既有可变 owner 名不保护所请求的根。
|
|
53
|
+
- unlink/NotFound 后目录屏障未完成就记回执;回执删除永久 tombstone。
|
|
54
|
+
- writer fence 未排空旧 I/O;未认证结果就恢复 staging;release 与登记 settlement 混成一步。
|
|
55
|
+
- warm index cache 跳过 frame/envelope/payload 校验;失败读取不关闭重开;永久损坏被当成功。
|
|
56
|
+
|
|
57
|
+
对发现的实现错误,先保留可失败的实际回归,再修复并跑正常路径。
|
|
58
|
+
修改模型和文档时同步中英文、规则 ID、映射和环境登记;不添加重复的协议正文。
|
|
59
|
+
普通确定性 helper 优先编译器、Clippy 和有意义的边界测试,不重建局部证明体系。
|
|
60
|
+
|
|
61
|
+
## 4. 验证与交付
|
|
62
|
+
|
|
63
|
+
按风险运行 `CONTRIBUTING.md#checks` 中的命令。模型改动至少运行对应 area、
|
|
64
|
+
关联组合模型和环境登记检查;完整版本验收运行全部保留模型、Rust/FFI 回归及 crash campaign。
|
|
65
|
+
运行 Python 测试前确认加载的 native 扩展由当前源码构建,避免测试旧 wheel。
|
|
66
|
+
只有新的修改、失败或未解决疑点才需要重复已通过的检查。
|
|
67
|
+
|
|
68
|
+
输出须能让人复查:
|
|
69
|
+
|
|
70
|
+
- 结论及受影响规则;文档→TLA、TLA→实现分别有哪些一致点和差异。
|
|
71
|
+
- 每个问题的具体触发/崩溃窗口、影响、源码位置、复现及修复证据。
|
|
72
|
+
- 实际运行命令、输入/工具版本或哈希、结果,以及未运行的部分。
|
|
73
|
+
- 有意保留的抽象差异、环境前提和剩余风险;没有发现问题时也报告这些边界。
|
|
74
|
+
- 删除验证时说明原来防止的错误、保留证据、减少的保证与维护成本;性能只报可比实测。
|
|
75
|
+
|
|
76
|
+
有限模型检查、源码审查和具体回归是三种不同证据。不能把 CI 全绿写成完整实现等价证明,
|
|
77
|
+
也不能仅删除 TODO 或改标记来宣布完成。只有对应交付物与验收结果齐全才勾选。
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "straw 协议审查"
|
|
3
|
+
short_description: "Review straw docs, TLA+ models and implementation consistency"
|
|
4
|
+
default_prompt: "Use $straw-protocol-review to review the affected protocol flows, compare docs to TLA+ and TLA+ to implementation, and validate any fixes with relevant evidence."
|
|
@@ -44,37 +44,6 @@ jobs:
|
|
|
44
44
|
target/tla/**/*.cfg
|
|
45
45
|
if-no-files-found: error
|
|
46
46
|
|
|
47
|
-
verus:
|
|
48
|
-
name: Verus / shard ${{ matrix.shard }}
|
|
49
|
-
runs-on: ubuntu-latest
|
|
50
|
-
timeout-minutes: 60
|
|
51
|
-
strategy:
|
|
52
|
-
fail-fast: false
|
|
53
|
-
matrix:
|
|
54
|
-
shard: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
|
|
55
|
-
steps:
|
|
56
|
-
- uses: actions/checkout@v4
|
|
57
|
-
- uses: dtolnay/rust-toolchain@1.99.1
|
|
58
|
-
with:
|
|
59
|
-
components: rustc-dev, llvm-tools
|
|
60
|
-
- uses: actions/setup-python@v5
|
|
61
|
-
with:
|
|
62
|
-
python-version: '3.12'
|
|
63
|
-
- name: Verify pinned Rust contracts and semantic mutants
|
|
64
|
-
run: >-
|
|
65
|
-
python verification/runners/check_verus.py --download --timeout 600
|
|
66
|
-
--shard-index ${{ matrix.shard }} --shard-count 16
|
|
67
|
-
- uses: actions/upload-artifact@v4
|
|
68
|
-
if: always()
|
|
69
|
-
with:
|
|
70
|
-
name: verus-verification-${{ matrix.shard }}
|
|
71
|
-
path: |
|
|
72
|
-
target/verus/report.json
|
|
73
|
-
target/verus/environment_contracts.json
|
|
74
|
-
target/verus/**/*.log
|
|
75
|
-
target/verus/**/*.rs
|
|
76
|
-
if-no-files-found: error
|
|
77
|
-
|
|
78
47
|
checks:
|
|
79
48
|
name: Rust tests and code checks
|
|
80
49
|
runs-on: ubuntu-latest
|
|
@@ -138,7 +107,7 @@ jobs:
|
|
|
138
107
|
|
|
139
108
|
verification:
|
|
140
109
|
name: Verification passed
|
|
141
|
-
needs: [formal,
|
|
110
|
+
needs: [formal, checks, python]
|
|
142
111
|
if: always()
|
|
143
112
|
runs-on: ubuntu-latest
|
|
144
113
|
timeout-minutes: 5
|
|
@@ -152,7 +121,7 @@ jobs:
|
|
|
152
121
|
import os
|
|
153
122
|
|
|
154
123
|
results = json.loads(os.environ["RESULTS"])
|
|
155
|
-
assert set(results) == {"formal", "
|
|
124
|
+
assert set(results) == {"formal", "checks", "python"}
|
|
156
125
|
failed = {name: job["result"] for name, job in results.items() if job["result"] != "success"}
|
|
157
126
|
if failed:
|
|
158
127
|
raise SystemExit(f"Verification did not pass: {failed}")
|
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
[中文版](CHANGELOG_zh.md)
|
|
4
4
|
|
|
5
|
+
## 0.1.5
|
|
6
|
+
|
|
7
|
+
### Ownership safety
|
|
8
|
+
|
|
9
|
+
- Fix reactivation reusing an existing public owner without checking that it protects the requested root, including owner changes after authentication outside the lock. Check the retained pack closure both initially and under the fresh lock; internal queue owners bind the reference digest. Correct reuse still succeeds; public owner reuse adds closure/metadata checks.
|
|
10
|
+
- Preserve public APIs, WAL/pack formats and durability ordering. Add regressions for existing-owner and post-authentication changes, and for staging remaining protected until queue WAL confirmation.
|
|
11
|
+
|
|
12
|
+
### Specification, verification and maintenance
|
|
13
|
+
|
|
14
|
+
- Remove all Verus source, inline specifications, ghost state, library contracts, runner, negative controls and CI; simplify Rust wrappers. Remove six deterministic local TLA+ models while retaining complete protocol models and product fault regressions.
|
|
15
|
+
- Extend cross-log attempt/epoch and checkpoint rewind, WAL caller/cache, reactivation, authenticated read, writer retirement and conditional-progress scenarios. Distinguish model checking, execution tests and source review without claiming complete implementation equivalence.
|
|
16
|
+
- Merge design, protocol, environmental premises and model-to-code correspondence into the [design and spec](docs/DESIGN.md). Move application integration into usage and checks/builds/releases into contributing; update both languages and add the `straw-protocol-review` skill.
|
|
17
|
+
- Delete per-iteration proof, measurement and acceptance reports. Retain only three public benchmarks cited by the performance guide and explicitly list them in source-package manifests. Their results describe the original 0.1.4 candidate, not this version's performance.
|
|
18
|
+
|
|
5
19
|
## 0.1.4
|
|
6
20
|
|
|
7
21
|
### Recovery and continuation
|
|
@@ -43,7 +57,7 @@
|
|
|
43
57
|
|
|
44
58
|
- Scan source distributions and wheel contents, including native libraries, for local paths and recognizable credentials. Remap Rust build paths before compilation so released binaries omit local source, home and toolchain locations; CI checks artifacts before upload and rejects findings without printing matched secrets.
|
|
45
59
|
- Require TLA+/Verus checks, semantic negative controls, environment-contract audits, Rust/Python tests, formatting and Clippy before release builds and publishing. TLC records its jar hash without enforcing a checksum; Verus logs distinguish successful proofs from expected semantic rejections. Verification files are organized by protocol, WAL, GC, storage and offline recovery, with independently reviewable environment assumptions.
|
|
46
|
-
- Freeze new formal-verification work for this release. Integrated proofs cover specific production bodies and models; complete retain/reactivation, cross-log recovery, authentication and liveness composition remain deferred and receive regression/fault-injection coverage.
|
|
60
|
+
- Freeze new formal-verification work for this release. Integrated proofs cover specific production bodies and models; complete retain/reactivation, cross-log recovery, authentication and liveness composition remain deferred and receive regression/fault-injection coverage. That scope describes the historical release. Passing tests does not complete these proofs, and prior performance measurements do not establish this build's throughput or latency.
|
|
47
61
|
|
|
48
62
|
## 0.1.3
|
|
49
63
|
|
|
@@ -119,4 +133,4 @@ Each queue requires one externally fenced coordinator. Automatic failover,
|
|
|
119
133
|
live-pack compaction, journal compaction and a general distributed application
|
|
120
134
|
checkpoint transaction are not provided. Additional network filesystems require
|
|
121
135
|
deployment validation. See the [filesystem requirements](docs/FILESYSTEM.md) and
|
|
122
|
-
[protocol guarantees](docs/
|
|
136
|
+
[protocol guarantees](docs/DESIGN.md).
|
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
[English](CHANGELOG.md)
|
|
4
4
|
|
|
5
|
+
## 0.1.5
|
|
6
|
+
|
|
7
|
+
### 所有权安全
|
|
8
|
+
|
|
9
|
+
- 修复 reactivation 复用既有公共 owner 名时没有确认其保护请求根的问题,包括锁外认证后 owner 被变更的竞态。在初次检查与重新加锁后核对实际 pack 闭包;内部 queue owner 绑定引用摘要。正确复用仍可成功,公共 owner 复用增加闭包/元数据检查。
|
|
10
|
+
- 保持公开 API、WAL 和 pack 格式及持久化顺序。新增既有 owner/认证后变更回归,以及 queue WAL 确认前 staging 不得被消费的回归。
|
|
11
|
+
|
|
12
|
+
### 规格、验证与维护
|
|
13
|
+
|
|
14
|
+
- 完全移除 Verus 源码、内嵌规格、ghost state、库契约、运行器、负例与 CI,简化 Rust 包装层。删除六个确定性局部 TLA+ 模型,保留完整协议模型和产品故障回归。
|
|
15
|
+
- 补齐跨日志 attempt/epoch 与 checkpoint 回退、WAL 调用者/缓存、reactivation、认证读取、writer 退休及条件进展场景。模型检查、实际回归和源码审查分别说明,不宣称完整实现等价证明。
|
|
16
|
+
- 将设计、协议、环境假设及模型/实现对应合并到[设计与 spec](docs/DESIGN_zh.md)。应用集成并入使用指南,检查/构建/发布并入贡献指南;中英文同步,新增 `straw-protocol-review` skill。
|
|
17
|
+
- 删除逐轮证明、测量和验收过程报告,仅保留性能文档引用的三份公开基准;源码包明确列出允许包含的数据。保留结果对应原 0.1.4 候选构建,不代表本版性能。
|
|
18
|
+
|
|
5
19
|
## 0.1.4
|
|
6
20
|
|
|
7
21
|
### 恢复与续读
|
|
@@ -43,7 +57,7 @@
|
|
|
43
57
|
|
|
44
58
|
- 扫描源码分发包与 wheel 内容(包括原生库),检查本机路径和可识别的凭据。编译时 remap Rust 路径,避免发布二进制携带本机源码、用户目录和工具链位置;CI 上传产物前检查,发现问题即拒绝,报告不输出命中的秘密内容。
|
|
45
59
|
- release 构建和发布以前置检查为条件,包括 TLA+/Verus、语义负例、environment contract 审计、Rust/Python 测试、格式和 Clippy。TLC 只记录 jar 哈希、不做校验;Verus 日志明确区分证明通过与预期语义拒绝。验证目录按协议、WAL、GC、存储与离线恢复组织,环境假设可独立审查。
|
|
46
|
-
- 本次发布冻结新增形式化验证。已集成证明覆盖具体生产函数和模型;完整 retain/reactivation
|
|
60
|
+
- 本次发布冻结新增形式化验证。已集成证明覆盖具体生产函数和模型;完整 retain/reactivation、跨日志恢复、认证与活性组合延期,以回归和故障注入测试覆盖。该范围描述当时的版本。测试通过不等于这些证明已完成,历史性能测量也不能代表当前构建的吞吐或延迟。
|
|
47
61
|
|
|
48
62
|
## 0.1.3
|
|
49
63
|
|
|
@@ -80,4 +94,4 @@ straw 首次发布:面向 AI 应用、基于文件系统的持久化队列与
|
|
|
80
94
|
- 本地与多机 I/O benchmark、应用负载采集与重放、独立协议模型,以及进程崩溃与恢复检查。
|
|
81
95
|
- CPython 3.10–3.13 的 Linux x86_64 wheel、自动化产物测试与 PyPI Trusted Publishing、独立使用示例和配套中英文指南。
|
|
82
96
|
|
|
83
|
-
每个队列需要一个由外部机制隔离保护的协调器。尚不提供自动故障切换、存活 pack 整理、日志压缩或通用分布式应用 checkpoint 事务。其他网络文件系统需要单独验证部署语义。详见[文件系统要求](docs/FILESYSTEM_zh.md)与[协议保证](docs/
|
|
97
|
+
每个队列需要一个由外部机制隔离保护的协调器。尚不提供自动故障切换、存活 pack 整理、日志压缩或通用分布式应用 checkpoint 事务。其他网络文件系统需要单独验证部署语义。详见[文件系统要求](docs/FILESYSTEM_zh.md)与[协议保证](docs/DESIGN_zh.md)。
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
[中文版](CONTRIBUTING_zh.md)
|
|
4
|
+
|
|
5
|
+
Read the [design and spec](docs/DESIGN.md) before changing durable ordering,
|
|
6
|
+
recovery, ownership or authentication. Use the
|
|
7
|
+
[straw-protocol-review skill](.agents/skills/straw-protocol-review/SKILL.md)
|
|
8
|
+
to compare rules to TLA+, then trace the models to actual callers.
|
|
9
|
+
|
|
10
|
+
Protocol changes should explain success, uncertain effects, crash/retry and
|
|
11
|
+
compatibility. Add a reproducer for a real failure boundary and preserve a valid
|
|
12
|
+
success path. Update the rule, model, caller and regression together. Ordinary
|
|
13
|
+
local functions use compiler checks, Clippy and meaningful tests; do not rebuild
|
|
14
|
+
per-function proof scaffolding. Unknown wire versions fail explicitly; framing
|
|
15
|
+
changes require a format version.
|
|
16
|
+
|
|
17
|
+
When changing an environmental premise, update its stable ID in
|
|
18
|
+
[environment_contracts.json](verification/environment_contracts.json), the
|
|
19
|
+
[spec](docs/DESIGN.md#environment), consuming models and sensitivity controls.
|
|
20
|
+
Do not turn straw caller obligations into assumed filesystem guarantees.
|
|
21
|
+
User/contributor guides have paired English `.md` and Chinese `_zh.md` versions;
|
|
22
|
+
keep links, APIs and commands aligned. Application codecs and scheduling belong
|
|
23
|
+
in the consuming application. The project uses the [MIT license](LICENSE).
|
|
24
|
+
|
|
25
|
+
<a id="checks"></a>
|
|
26
|
+
|
|
27
|
+
## Development and checks
|
|
28
|
+
|
|
29
|
+
Use Rust 1.89+, a C linker, CPython 3.10+ and Java 17+ for TLC. Install the
|
|
30
|
+
appropriate CPU/CUDA PyTorch build, then the editable development package:
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
python -m pip install -e '.[test,build,dev]'
|
|
34
|
+
python -m black --check src tests examples tools verification
|
|
35
|
+
python -m isort --check-only src tests examples tools verification
|
|
36
|
+
cargo fmt --check
|
|
37
|
+
cargo clippy --locked --all-targets -- -D warnings
|
|
38
|
+
cargo clippy --locked --all-targets --features python -- -D warnings
|
|
39
|
+
cargo test --locked
|
|
40
|
+
python -m pytest
|
|
41
|
+
python verification/runners/environment_manifest.py --check
|
|
42
|
+
python verification/runners/check_tla.py
|
|
43
|
+
python verification/protocol/checks/ownership_model.py --output /tmp/straw-ownership.json
|
|
44
|
+
python verification/wal/checks/crash_campaign.py --output /tmp/straw-crashes.json
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Rebuild/reinstall the native extension after Rust changes before running Python
|
|
48
|
+
tests. For focused model work, use `check_tla.py --area wal --area gc` or
|
|
49
|
+
`--case NAME`; run the full retained suite for release acceptance. Supply
|
|
50
|
+
`--jar /path/to/tla2tools.jar` to select TLC; otherwise the runner downloads its
|
|
51
|
+
configured release. It records the actual jar hash without enforcing a checksum.
|
|
52
|
+
Logs, configs and counterexamples default to `target/tla/`. Positives must pass;
|
|
53
|
+
negatives must fail the named invariant/temporal property. Parse errors, timeouts
|
|
54
|
+
and launch failures never count as semantic rejection.
|
|
55
|
+
|
|
56
|
+
The inventory checks declared IDs, paths and environment imports. The independent
|
|
57
|
+
ownership model explores a bounded abstraction; the crash campaign checks byte
|
|
58
|
+
prefixes/corruption and process exits. None certifies storage-service or power-loss
|
|
59
|
+
behavior. Multi-client qualification is in [deployment](docs/FILESYSTEM.md#qualification).
|
|
60
|
+
|
|
61
|
+
<a id="build"></a>
|
|
62
|
+
|
|
63
|
+
## Build and check distributions
|
|
64
|
+
|
|
65
|
+
Only the build machine needs Rust. Dependencies are declared in `pyproject.toml`
|
|
66
|
+
and pinned by `Cargo.lock`:
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
python -m pip install build maturin twine
|
|
70
|
+
python tools/release_build.py python -m build --wheel --sdist
|
|
71
|
+
python -m twine check dist/*
|
|
72
|
+
python tools/check_artifact_privacy.py dist/*
|
|
73
|
+
python tools/check_wheel.py dist/<compatible-wheel>.whl --tests --report /tmp/straw-wheel-check.json
|
|
74
|
+
python tools/release_build.py python -m pip wheel --no-deps dist/straw_queue-*.tar.gz --wheel-dir rebuilt
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Use the actual compatible wheel filename and check the rebuilt wheel too.
|
|
78
|
+
`check_wheel.py` creates a temporary environment, reuses installed NumPy/PyTorch,
|
|
79
|
+
installs only the wheel without an index, rejects source imports and removes Rust
|
|
80
|
+
from the test PATH. It runs examples, multiprocess recovery, benchmark/GC and
|
|
81
|
+
trace checks; `--tests` adds the full Python suite, ownership model and crash campaign.
|
|
82
|
+
|
|
83
|
+
The release wrapper removes local source/toolchain paths from Rust output.
|
|
84
|
+
Artifact scans check archive contents for recognizable paths/secrets without
|
|
85
|
+
printing their values. Rust SBOM generation is disabled because it embeds local
|
|
86
|
+
crate paths; locked dependency versions remain in `Cargo.lock`.
|
|
87
|
+
|
|
88
|
+
The release workflow targets Linux x86_64, CPython 3.10–3.13 and manylinux/glibc
|
|
89
|
+
2.28+. Wheels use interpreter-specific buffer APIs, not ABI3. Local builds receive
|
|
90
|
+
the platform tag they actually satisfy; never rename a tag to imply compatibility.
|
|
91
|
+
Use the [manylinux workflow](.github/workflows/wheels.yml), or on Linux:
|
|
92
|
+
|
|
93
|
+
```sh
|
|
94
|
+
python -m pip install 'maturin[zig,patchelf]>=1.12,<2'
|
|
95
|
+
python tools/release_build.py maturin build --release --locked --strip --zig \
|
|
96
|
+
--compatibility manylinux_2_28 --out dist
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
<a id="release"></a>
|
|
100
|
+
|
|
101
|
+
## CI and releases
|
|
102
|
+
|
|
103
|
+
[Tests](.github/workflows/tests.yml) run all TLA cases in 16 disjoint shards,
|
|
104
|
+
formatting, both Clippy configurations, Rust tests and installed-wheel checks on
|
|
105
|
+
CPython 3.10–3.13. [Wheels](.github/workflows/wheels.yml) requires that same-commit
|
|
106
|
+
workflow, checks each portable wheel and a wheel rebuilt from the sdist, then
|
|
107
|
+
uploads artifacts. Failed, cancelled, skipped or timed-out checks block release.
|
|
108
|
+
Hosted CI uses a local Linux filesystem and CPU PyTorch; inspect hosted results
|
|
109
|
+
separately from local checks and distributed deployment tests.
|
|
110
|
+
|
|
111
|
+
For a release, align the versions in `Cargo.toml`, `pyproject.toml` and the
|
|
112
|
+
`straw` entry in `Cargo.lock`; record compatibility/limits in the changelog.
|
|
113
|
+
A matching new `v*` tag triggers publication of the already tested artifacts.
|
|
114
|
+
PRs and manual dispatch build/test without publishing. Keep the source revision
|
|
115
|
+
and wheel hash with release artifacts; rebuilding changes the artifact identity.
|
|
116
|
+
Do not overwrite an existing published version/tag.
|
|
117
|
+
|
|
118
|
+
The publish job uses GitHub OIDC with environment `pypi`. Configure PyPI's
|
|
119
|
+
publisher for project `straw-queue`, repository `zhuzilin/straw`, workflow
|
|
120
|
+
`wheels.yml`, environment `pypi`; the workflow filename has no directory prefix.
|
|
121
|
+
No PyPI token is required by this workflow. See the
|
|
122
|
+
[PyPI publisher setup](https://docs.pypi.org/trusted-publishers/creating-a-project-through-oidc/)
|
|
123
|
+
for service setup. Both workflows also support manual dispatch from Actions.
|
|
124
|
+
|
|
125
|
+
<a id="evidence"></a>
|
|
126
|
+
|
|
127
|
+
## Reports and public benchmarks
|
|
128
|
+
|
|
129
|
+
Keep per-run verification reports, attempted fixes, wheels, credentials, machine
|
|
130
|
+
addresses, payloads and raw logs in CI artifacts or ignored local directories.
|
|
131
|
+
Use fresh bounded test roots and clean them only after owned processes stop.
|
|
132
|
+
|
|
133
|
+
`verification/measurements/` contains only selected public benchmark data cited
|
|
134
|
+
by [benchmarks](docs/BENCHMARKS.md#published-results). A retained result needs
|
|
135
|
+
workload/method, build/probe identity, units, samples and limitations. Compare
|
|
136
|
+
payload sizes, publication granularity, fanout, durability and cache conditions;
|
|
137
|
+
do not imply an old build's numbers describe current code. Record one-off task
|
|
138
|
+
acceptance in the PR or CI result rather than adding another dated JSON file.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# 贡献指南
|
|
2
|
+
|
|
3
|
+
[English](CONTRIBUTING.md)
|
|
4
|
+
|
|
5
|
+
修改持久化顺序、恢复、所有权或认证前,阅读[设计与 spec](docs/DESIGN_zh.md)。使用 [straw-protocol-review skill](.agents/skills/straw-protocol-review/SKILL.md) 先核对规则与 TLA+,再沿实际调用链核对实现。
|
|
6
|
+
|
|
7
|
+
协议改动说明成功、报错但已生效、崩溃/重试及兼容性。针对真实故障边界添加复现,并保留合法成功路径;同步规则、模型、调用者与回归。普通局部函数使用编译器、Clippy 和有意义的测试,不重建逐函数证明。未知 wire 版本明确拒绝,framing 变化需要格式版本。
|
|
8
|
+
|
|
9
|
+
修改环境前提时,同步 [environment_contracts.json](verification/environment_contracts.json) 的稳定 ID、[spec](docs/DESIGN_zh.md#environment)、模型与敏感性负例,不把 straw 调用者义务改成文件系统假设。用户/贡献者文档有中英文两版,链接、API 与命令保持一致。应用 codec 与调度留在使用方。项目使用 [MIT 许可证](LICENSE)。
|
|
10
|
+
|
|
11
|
+
<a id="checks"></a>
|
|
12
|
+
|
|
13
|
+
## 开发与检查
|
|
14
|
+
|
|
15
|
+
需要 Rust 1.89+、C linker、CPython 3.10+;TLC 需要 Java 17+。安装适合环境的 CPU/CUDA PyTorch,再安装开发包:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
python -m pip install -e '.[test,build,dev]'
|
|
19
|
+
python -m black --check src tests examples tools verification
|
|
20
|
+
python -m isort --check-only src tests examples tools verification
|
|
21
|
+
cargo fmt --check
|
|
22
|
+
cargo clippy --locked --all-targets -- -D warnings
|
|
23
|
+
cargo clippy --locked --all-targets --features python -- -D warnings
|
|
24
|
+
cargo test --locked
|
|
25
|
+
python -m pytest
|
|
26
|
+
python verification/runners/environment_manifest.py --check
|
|
27
|
+
python verification/runners/check_tla.py
|
|
28
|
+
python verification/protocol/checks/ownership_model.py --output /tmp/straw-ownership.json
|
|
29
|
+
python verification/wal/checks/crash_campaign.py --output /tmp/straw-crashes.json
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Rust 修改后先重新构建/安装 native 扩展,再跑 Python 测试。局部模型工作可用 `check_tla.py --area wal --area gc` 或 `--case NAME`;发布验收运行全部保留场景。`--jar /path/to/tla2tools.jar` 指定 TLC,否则 runner 下载配置的发行包;记录实际 jar 哈希,不强制 checksum。日志、配置和反例默认在 `target/tla/`。正例必须通过,负例必须违反指定不变量/时序性质;解析错误、超时和启动失败不算检出。
|
|
33
|
+
|
|
34
|
+
环境登记检查核对声明的 ID、路径与模块导入。独立所有权模型探索有限抽象;crash campaign 检查逐字节前缀/损坏和进程退出,都不认证存储服务故障或掉电行为。多客户端验证见[部署指南](docs/FILESYSTEM_zh.md#qualification)。
|
|
35
|
+
|
|
36
|
+
<a id="build"></a>
|
|
37
|
+
|
|
38
|
+
## 构建与检查发行包
|
|
39
|
+
|
|
40
|
+
只有构建机需要 Rust。依赖由 `pyproject.toml` 声明、`Cargo.lock` 固定:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
python -m pip install build maturin twine
|
|
44
|
+
python tools/release_build.py python -m build --wheel --sdist
|
|
45
|
+
python -m twine check dist/*
|
|
46
|
+
python tools/check_artifact_privacy.py dist/*
|
|
47
|
+
python tools/check_wheel.py dist/<compatible-wheel>.whl --tests --report /tmp/straw-wheel-check.json
|
|
48
|
+
python tools/release_build.py python -m pip wheel --no-deps dist/straw_queue-*.tar.gz --wheel-dir rebuilt
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
使用实际兼容 wheel 的文件名,并检查从 sdist 重建的 wheel。`check_wheel.py` 创建临时环境,复用已安装 NumPy/PyTorch,不访问索引,只安装 wheel,拒绝源码导入,并从测试 PATH 移除 Rust。它运行示例、多进程恢复、benchmark/GC 和 trace 检查;`--tests` 加上全部 Python 回归、所有权模型和 crash campaign。
|
|
52
|
+
|
|
53
|
+
发布包装器移除 Rust 产物中的本地源码/工具链路径。隐私检查扫描 archive 内可识别的路径/凭据,不打印匹配值。自动 Rust SBOM 因嵌入本地 crate 路径而关闭;依赖版本仍保存在 `Cargo.lock`。
|
|
54
|
+
|
|
55
|
+
发布工作流面向 Linux x86_64、CPython 3.10–3.13、manylinux/glibc 2.28+。绑定使用区分解释器版本的 buffer API,不是 ABI3。本地构建只获得实际满足的平台 tag,不得改名冒充兼容性。使用 [manylinux 工作流](.github/workflows/wheels.yml),或在 Linux 上运行:
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
python -m pip install 'maturin[zig,patchelf]>=1.12,<2'
|
|
59
|
+
python tools/release_build.py maturin build --release --locked --strip --zig \
|
|
60
|
+
--compatibility manylinux_2_28 --out dist
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
<a id="release"></a>
|
|
64
|
+
|
|
65
|
+
## CI 与发布
|
|
66
|
+
|
|
67
|
+
[测试工作流](.github/workflows/tests.yml)运行全部 TLA 场景的 16 个独立分片、格式、两种 Clippy 配置、Rust 测试,以及 CPython 3.10–3.13 的已安装 wheel 检查。[Wheel 工作流](.github/workflows/wheels.yml)先要求同一提交通过上述工作流,再验证每个可移植 wheel 和从 sdist 重建的 wheel,之后上传产物。失败、取消、跳过或超时阻止发布。托管 CI 使用本地 Linux 文件系统和 CPU PyTorch;本地验收、托管结果与分布式部署测试分别确认。
|
|
68
|
+
|
|
69
|
+
发布前同步 `Cargo.toml`、`pyproject.toml` 和 `Cargo.lock` 中 `straw` 的版本,并在 changelog 写明兼容性与限制。新的匹配 `v*` tag 触发发布已经测试过的产物;PR 和手动触发只构建/测试。源码 revision 与 wheel 哈希随发布产物保存,重新构建会改变产物身份。不要覆盖已发布版本/tag。
|
|
70
|
+
|
|
71
|
+
发布使用 GitHub OIDC 和 `pypi` environment。PyPI publisher 配置为项目 `straw-queue`、仓库 `zhuzilin/straw`、workflow `wheels.yml`、environment `pypi`;workflow 文件名不带目录。本工作流不需要 PyPI token,服务端配置见 [PyPI 指南](https://docs.pypi.org/trusted-publishers/creating-a-project-through-oidc/)。两条工作流都支持从 Actions 手动触发。
|
|
72
|
+
|
|
73
|
+
<a id="evidence"></a>
|
|
74
|
+
|
|
75
|
+
## 报告与公开基准
|
|
76
|
+
|
|
77
|
+
逐轮验证报告、尝试过程、wheel、凭据、机器地址、载荷和原始日志保存在 CI artifacts 或忽略的本地目录。使用全新、有界的测试根,仅在自有进程停止后清理。
|
|
78
|
+
|
|
79
|
+
`verification/measurements/` 只保留[性能文档](docs/BENCHMARKS_zh.md#published-results)引用的精选公开基准:说明负载/方法、构建/探针身份、单位、样本和限制。比较时保持载荷大小、发布粒度、fanout、持久化与缓存条件可比,不把旧构建结果当成当前代码性能。单次任务验收写入 PR 或 CI 结果,不再新增逐日 JSON 流水账。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "straw"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.5"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
rust-version = "1.89"
|
|
6
6
|
license = "MIT"
|
|
@@ -9,8 +9,9 @@ description = "Durable shared-filesystem queues and immutable packed records"
|
|
|
9
9
|
include = [
|
|
10
10
|
"Cargo.toml", "Cargo.lock", "pyproject.toml", "README*.md", "LICENSE",
|
|
11
11
|
"CHANGELOG*.md", "CONTRIBUTING*.md", ".github/workflows/*.yml",
|
|
12
|
+
".agents/skills/straw-protocol-review/**",
|
|
12
13
|
"rust/*.rs", "src/**/*.py", "docs/**/*.md", "examples/*.py",
|
|
13
|
-
"tests/*.py", "tests/native.rs", "verification/**/*.md", "verification/**/*.py", "verification/**/*.rs", "verification/**/*.c", "verification/environment_contracts.json", "verification/measurements
|
|
14
|
+
"tests/*.py", "tests/native.rs", "verification/**/*.md", "verification/**/*.py", "verification/**/*.rs", "verification/**/*.c", "verification/environment_contracts.json", "verification/measurements/20261026-release-comparison.json", "verification/measurements/20261026-release-100gb.json", "verification/measurements/20261026-release-visibility.json", "verification/**/tla/*.tla", "verification/**/tla/*.cfg", "tools/*.py",
|
|
14
15
|
]
|
|
15
16
|
readme = "README.md"
|
|
16
17
|
|
|
@@ -33,9 +34,6 @@ pyo3 = { version = "0.23.5", optional = true }
|
|
|
33
34
|
[dev-dependencies]
|
|
34
35
|
tempfile = "3.27"
|
|
35
36
|
|
|
36
|
-
[lints.rust]
|
|
37
|
-
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(straw_verus)"] }
|
|
38
|
-
|
|
39
37
|
[[example]]
|
|
40
38
|
name = "large_extent_probe"
|
|
41
39
|
path = "verification/storage/probes/large_extent_probe.rs"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: straw-queue
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.5
|
|
4
4
|
Classifier: Development Status :: 3 - Alpha
|
|
5
5
|
Classifier: Operating System :: POSIX :: Linux
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -46,7 +46,7 @@ straw currently serves the rollout and training pipelines in
|
|
|
46
46
|
**[slime](https://github.com/THUDM/slime)**, including rollout-to-rollout and
|
|
47
47
|
rollout-to-training queues that share tensor storage. It is an independent AI
|
|
48
48
|
application library, also suited to preprocessing and inference pipelines. See
|
|
49
|
-
the [design rationale](docs/DESIGN.md) and [application integration](docs/
|
|
49
|
+
the [design rationale](docs/DESIGN.md) and [application integration](docs/USAGE.md#integration).
|
|
50
50
|
|
|
51
51
|
## Multi-machine parallel reads and writes
|
|
52
52
|
|
|
@@ -57,7 +57,7 @@ results and consumer progress, and coordinates shared ownership and GC through
|
|
|
57
57
|
cross-client catalog locks. Reader pins and explicit completion signals protect
|
|
58
58
|
data until every consumer has finished. See the
|
|
59
59
|
[concurrency rules](docs/USAGE.md#concurrency-processes-and-threads) and
|
|
60
|
-
[protocol](docs/
|
|
60
|
+
[protocol](docs/DESIGN.md).
|
|
61
61
|
|
|
62
62
|
## Avoid the small-file bottleneck
|
|
63
63
|
|
|
@@ -71,7 +71,7 @@ File counts grow with packs and writer lifetimes instead of individual samples;
|
|
|
71
71
|
**Status:** early release, Linux/POSIX. One externally fenced coordinator per
|
|
72
72
|
queue; no automatic leader election or journal/live-pack compaction. Applications
|
|
73
73
|
must provide real reader-completion signals before reclamation. See
|
|
74
|
-
[filesystem requirements](docs/FILESYSTEM.md) and [protocol guarantees](docs/
|
|
74
|
+
[filesystem requirements](docs/FILESYSTEM.md) and [protocol guarantees](docs/DESIGN.md).
|
|
75
75
|
|
|
76
76
|
## Install
|
|
77
77
|
|
|
@@ -85,7 +85,7 @@ pip selects a compatible wheel containing the Rust extension.
|
|
|
85
85
|
**Installing a wheel does not require Rust or maturin.**
|
|
86
86
|
NumPy and PyTorch are runtime dependencies; an existing compatible PyTorch
|
|
87
87
|
installation can be reused. Distribution name: `straw-queue`; import: `straw`.
|
|
88
|
-
See [supported platforms, offline installation and source builds](
|
|
88
|
+
See [supported platforms, offline installation and source builds](CONTRIBUTING.md#build).
|
|
89
89
|
|
|
90
90
|
## Write, read, keep, reclaim
|
|
91
91
|
|
|
@@ -172,34 +172,20 @@ workers stop. [Multi-host benchmarks and trace replay](docs/BENCHMARKS.md).
|
|
|
172
172
|
|
|
173
173
|
## Read next
|
|
174
174
|
|
|
175
|
-
- [
|
|
176
|
-
- [
|
|
177
|
-
- [Filesystem deployment
|
|
178
|
-
- [
|
|
179
|
-
- [
|
|
180
|
-
- [
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
## Build and test on GitHub
|
|
186
|
-
|
|
187
|
-
- [Full tests](.github/workflows/tests.yml): Rust tests, formatting and Clippy,
|
|
188
|
-
plus the complete Python suite, ownership model, crash campaign, examples and
|
|
189
|
-
bounded I/O/GC benchmark against installed wheels on CPython 3.10–3.13.
|
|
190
|
-
- [Wheels](.github/workflows/wheels.yml): build and verify Linux x86_64 wheels
|
|
191
|
-
for CPython 3.10–3.13 (manylinux/glibc 2.28+), plus a source archive and rebuild
|
|
192
|
-
check. Download the outputs from the run's **Artifacts** section. Version-tag
|
|
193
|
-
pushes publish the verified artifacts to PyPI through Trusted Publishing. The
|
|
194
|
-
same-commit complete verification workflow must pass before package uploads.
|
|
195
|
-
|
|
196
|
-
Both workflows support **Actions → select workflow → Run workflow**. Tests also
|
|
197
|
-
run on pushes and pull requests; wheels run on pull requests and `v*` tags.
|
|
198
|
-
Hosted CI uses a local filesystem and CPU PyTorch; deployment qualification on
|
|
199
|
-
multiple JuiceFS clients and GPU training use [separate checks](docs/VERIFICATION.md).
|
|
200
|
-
See [build and release instructions](docs/BUILDING.md).
|
|
175
|
+
- [Design and protocol spec](docs/DESIGN.md): architecture, premises, distributed protocol/WAL/GC and model-to-code correspondence
|
|
176
|
+
- [Usage](docs/USAGE.md): installation, APIs, recovery and application integration
|
|
177
|
+
- [Filesystem deployment](docs/FILESYSTEM.md): mount requirements, storage planning and multi-client checks
|
|
178
|
+
- [Benchmarks](docs/BENCHMARKS.md): measurement, trace replay and selected public results
|
|
179
|
+
- [Binary format](docs/FORMAT.md): compatible readers and format changes
|
|
180
|
+
- [Contributing](CONTRIBUTING.md): tests, builds and releases; [changelog](CHANGELOG.md)
|
|
181
|
+
|
|
182
|
+
The [tests](.github/workflows/tests.yml) and [wheels](.github/workflows/wheels.yml)
|
|
183
|
+
workflows provide CI checks and downloadable artifacts; version tags publish
|
|
184
|
+
tested artifacts. See [contributing](CONTRIBUTING.md#release) for setup and release steps.
|
|
201
185
|
|
|
202
186
|
## License
|
|
203
187
|
|
|
204
188
|
[MIT](LICENSE).
|
|
205
189
|
|
|
190
|
+
[straw-protocol-review skill](.agents/skills/straw-protocol-review/SKILL.md): review document → TLA+ → implementation.
|
|
191
|
+
|