tensorfs 0.3.88__tar.gz → 0.3.89__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 (203) hide show
  1. {tensorfs-0.3.88 → tensorfs-0.3.89}/Cargo.lock +3 -3
  2. {tensorfs-0.3.88 → tensorfs-0.3.89}/Cargo.toml +1 -1
  3. {tensorfs-0.3.88 → tensorfs-0.3.89}/PKG-INFO +1 -1
  4. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/download.rs +3 -2
  5. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/tests.rs +19 -0
  6. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/source_download.rs +3 -5
  7. {tensorfs-0.3.88 → tensorfs-0.3.89}/pyproject.toml +1 -1
  8. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/Cargo.toml +0 -0
  9. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/build.rs +0 -0
  10. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/examples/h3-swiglu-layout.md +0 -0
  11. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/examples/optional-cache-backfill.md +0 -0
  12. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/examples/resident-conversion.md +0 -0
  13. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/examples/resident_conversion_profile.rs +0 -0
  14. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/asset_update.rs +0 -0
  15. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/b64.rs +0 -0
  16. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/bin/tfs/ckpt.rs +0 -0
  17. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/bin/tfs/conform.rs +0 -0
  18. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/bin/tfs/ensure.rs +0 -0
  19. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/bin/tfs/fetch.rs +0 -0
  20. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/bin/tfs/ingest.rs +0 -0
  21. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/bin/tfs/main.rs +0 -0
  22. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/bin/tfs/rd.rs +0 -0
  23. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/bin/tfs/repo.rs +0 -0
  24. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/bin/tfs/snap.rs +0 -0
  25. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/bin/tfs/watch.rs +0 -0
  26. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/cache_roots.rs +0 -0
  27. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/canon.rs +0 -0
  28. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/capability.rs +0 -0
  29. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/catalog/lock.rs +0 -0
  30. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/catalog.rs +0 -0
  31. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/cbor.rs +0 -0
  32. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/checkpoint.rs +0 -0
  33. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/checkpoint_root.rs +0 -0
  34. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/corpus.rs +0 -0
  35. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/adoption.rs +0 -0
  36. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/companion_tests.rs +0 -0
  37. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/estimate.rs +0 -0
  38. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/graft_tests.rs +0 -0
  39. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/group_commit_tests.rs +0 -0
  40. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/history_cost_tests.rs +0 -0
  41. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/part_rows_tests.rs +0 -0
  42. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/progress.rs +0 -0
  43. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/resume_tests.rs +0 -0
  44. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/retention.rs +0 -0
  45. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived/roots.rs +0 -0
  46. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/derived.rs +0 -0
  47. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/descriptors.rs +0 -0
  48. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/disk.rs +0 -0
  49. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/dtype.rs +0 -0
  50. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/durability.rs +0 -0
  51. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ensure/admission.rs +0 -0
  52. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ensure/flight.rs +0 -0
  53. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ensure.rs +0 -0
  54. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/err.rs +0 -0
  55. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/fetch.rs +0 -0
  56. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/filesystem_identity.rs +0 -0
  57. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/fill.rs +0 -0
  58. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/fit.rs +0 -0
  59. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/gc.rs +0 -0
  60. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/header.rs +0 -0
  61. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/home.rs +0 -0
  62. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ids.rs +0 -0
  63. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/carrier.rs +0 -0
  64. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/convert.rs +0 -0
  65. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/custody.rs +0 -0
  66. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/fingerprint.rs +0 -0
  67. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/gguf.rs +0 -0
  68. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/h3_lora.rs +0 -0
  69. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/journal.rs +0 -0
  70. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/mod.rs +0 -0
  71. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/narrow.rs +0 -0
  72. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/preflight.rs +0 -0
  73. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/routes/anima.routes.json +0 -0
  74. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/routes/anima.spec.json +0 -0
  75. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/routes/sdxl.routes.json +0 -0
  76. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/routes/sdxl.spec.json +0 -0
  77. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/routes.rs +0 -0
  78. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/source.rs +0 -0
  79. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/stamp.rs +0 -0
  80. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/ingest/transaction.rs +0 -0
  81. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/jcs.rs +0 -0
  82. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/keyed_roots.rs +0 -0
  83. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/lib.rs +0 -0
  84. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/limits.rs +0 -0
  85. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/machine.rs +0 -0
  86. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/manifest.rs +0 -0
  87. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/meta.rs +0 -0
  88. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/project.rs +0 -0
  89. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/providers.rs +0 -0
  90. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/read.rs +0 -0
  91. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/receipt.rs +0 -0
  92. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/reclaim.rs +0 -0
  93. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/registry.rs +0 -0
  94. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/relation.rs +0 -0
  95. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/repo_cache.rs +0 -0
  96. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/repository.rs +0 -0
  97. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/sha256.rs +0 -0
  98. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/source_artifact.rs +0 -0
  99. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/spec.rs +0 -0
  100. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/staging.rs +0 -0
  101. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/stats.rs +0 -0
  102. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/storage.rs +0 -0
  103. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/store.rs +0 -0
  104. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/api.rs +0 -0
  105. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/decisions.rs +0 -0
  106. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/http.rs +0 -0
  107. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/http_reuse_tests.rs +0 -0
  108. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/hub.rs +0 -0
  109. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/ledger.rs +0 -0
  110. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/memory.rs +0 -0
  111. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/mod.rs +0 -0
  112. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/policy.rs +0 -0
  113. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/pull.rs +0 -0
  114. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/push.rs +0 -0
  115. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/sources.rs +0 -0
  116. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/transport/tests/tail.rs +0 -0
  117. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/unsynced.rs +0 -0
  118. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/src/vectors.rs +0 -0
  119. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/additive_fields.rs +0 -0
  120. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/anima_hf_profile.rs +0 -0
  121. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/as_is.rs +0 -0
  122. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/catalog_owner_probe.c +0 -0
  123. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/checkpoint_roots.rs +0 -0
  124. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/civitai_anima.rs +0 -0
  125. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/civitai_sdxl_profile.rs +0 -0
  126. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/ensure.rs +0 -0
  127. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fd_budget.rs +0 -0
  128. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fd_headroom.rs +0 -0
  129. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fetch_faults.rs +0 -0
  130. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fetch_url_progress.rs +0 -0
  131. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fit.rs +0 -0
  132. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fixtures/repo_apply/blobs.jsonl +0 -0
  133. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fixtures/repo_apply/expected_list.jsonl +0 -0
  134. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fixtures/repo_apply/expected_repository.json +0 -0
  135. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fixtures/repo_apply/expected_rows.jsonl +0 -0
  136. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fixtures/repo_apply/header.cbor +0 -0
  137. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fixtures/repo_apply/manifest.json +0 -0
  138. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/fixtures/repo_apply/mutation.json +0 -0
  139. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/foreign_json.rs +0 -0
  140. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/h3_lora.rs +0 -0
  141. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/h3_swiglu.rs +0 -0
  142. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/home.rs +0 -0
  143. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/hub_tls.rs +0 -0
  144. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/import_tree.rs +0 -0
  145. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/instrument_profiles.rs +0 -0
  146. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/keyed_roots.rs +0 -0
  147. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/liveness.rs +0 -0
  148. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/qwen_image21_profile.rs +0 -0
  149. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/read_plan.rs +0 -0
  150. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/reclaim.rs +0 -0
  151. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/reclaim_run.rs +0 -0
  152. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/repo_cache.rs +0 -0
  153. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/repo_store.rs +0 -0
  154. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/resident_admission.rs +0 -0
  155. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/routed_single_file.rs +0 -0
  156. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/sha256_backends.rs +0 -0
  157. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/sharded_cas.rs +0 -0
  158. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/source_artifacts.rs +0 -0
  159. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/source_plan.rs +0 -0
  160. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/source_prefixes.rs +0 -0
  161. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/source_preflight.rs +0 -0
  162. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/staging.rs +0 -0
  163. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/store_boundaries.rs +0 -0
  164. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/tensor_schema.rs +0 -0
  165. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/transfer_memory.rs +0 -0
  166. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/trust_index.rs +0 -0
  167. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/version.rs +0 -0
  168. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-core/tests/write_through.rs +0 -0
  169. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/API.md +0 -0
  170. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/Cargo.toml +0 -0
  171. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/bin/g1_vmm.rs +0 -0
  172. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/bin/g2_overlap.rs +0 -0
  173. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/bin/gpu_bench/mod.rs +0 -0
  174. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/cuda.rs +0 -0
  175. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/cursor.rs +0 -0
  176. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/device.rs +0 -0
  177. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/faults.rs +0 -0
  178. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/host.rs +0 -0
  179. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/io.rs +0 -0
  180. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/layout.rs +0 -0
  181. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/lib.rs +0 -0
  182. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/src/plane.rs +0 -0
  183. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/tests/common/mod.rs +0 -0
  184. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/tests/gpu.rs +0 -0
  185. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-plane/tests/host_tier.rs +0 -0
  186. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-py/Cargo.toml +0 -0
  187. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-py/src/docs.rs +0 -0
  188. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-py/src/ensure.rs +0 -0
  189. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-py/src/errors.rs +0 -0
  190. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-py/src/ingest.rs +0 -0
  191. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-py/src/lib.rs +0 -0
  192. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-py/src/plane.rs +0 -0
  193. {tensorfs-0.3.88 → tensorfs-0.3.89}/crates/tensorfs-py/src/store.rs +0 -0
  194. {tensorfs-0.3.88 → tensorfs-0.3.89}/python/tensorfs/__init__.py +0 -0
  195. {tensorfs-0.3.88 → tensorfs-0.3.89}/python/tensorfs/_derived_channel.py +0 -0
  196. {tensorfs-0.3.88 → tensorfs-0.3.89}/python/tensorfs/_ext.pyi +0 -0
  197. {tensorfs-0.3.88 → tensorfs-0.3.89}/python/tensorfs/_source_channel.py +0 -0
  198. {tensorfs-0.3.88 → tensorfs-0.3.89}/python/tensorfs/_tensors.py +0 -0
  199. {tensorfs-0.3.88 → tensorfs-0.3.89}/python/tensorfs/derived.py +0 -0
  200. {tensorfs-0.3.88 → tensorfs-0.3.89}/python/tensorfs/errors.py +0 -0
  201. {tensorfs-0.3.88 → tensorfs-0.3.89}/python/tensorfs/plane.py +0 -0
  202. {tensorfs-0.3.88 → tensorfs-0.3.89}/python/tensorfs/plane.pyi +0 -0
  203. {tensorfs-0.3.88 → tensorfs-0.3.89}/python/tensorfs/py.typed +0 -0
@@ -449,7 +449,7 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
449
449
 
450
450
  [[package]]
451
451
  name = "tensorfs-core"
452
- version = "0.3.88"
452
+ version = "0.3.89"
453
453
  dependencies = [
454
454
  "fs2",
455
455
  "libc",
@@ -464,7 +464,7 @@ dependencies = [
464
464
 
465
465
  [[package]]
466
466
  name = "tensorfs-plane"
467
- version = "0.3.88"
467
+ version = "0.3.89"
468
468
  dependencies = [
469
469
  "libc",
470
470
  "libloading",
@@ -474,7 +474,7 @@ dependencies = [
474
474
 
475
475
  [[package]]
476
476
  name = "tensorfs-py"
477
- version = "0.3.88"
477
+ version = "0.3.89"
478
478
  dependencies = [
479
479
  "pyo3",
480
480
  "tensorfs-core",
@@ -3,5 +3,5 @@ resolver = "2"
3
3
  members = ["crates/tensorfs-core", "crates/tensorfs-plane", "crates/tensorfs-py"]
4
4
 
5
5
  [workspace.package]
6
- version = "0.3.88"
6
+ version = "0.3.89"
7
7
  edition = "2021"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tensorfs
3
- Version: 0.3.88
3
+ Version: 0.3.89
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Rust
@@ -715,7 +715,8 @@ impl Run<'_> {
715
715
  let job = self.job;
716
716
  let object = &chunk.object;
717
717
  let wanted = &object.grant.object;
718
- // An object that is one chunk is one plain GET.
718
+ // A Hub object that is one chunk is one plain GET. A source request always names its
719
+ // range: a 206 is how the origin says it ranges, and its stand-ins answer only ranges.
719
720
  let whole = chunk.first == 0 && chunk.end == wanted.length;
720
721
  let range = [(
721
722
  "range".to_string(),
@@ -729,7 +730,7 @@ impl Run<'_> {
729
730
  job.credential,
730
731
  job.deadline,
731
732
  ledger,
732
- if whole { &[] } else { &range },
733
+ if whole && job.ranged { &[] } else { &range },
733
734
  &mut |checked, _| hops.push(checked.url()),
734
735
  )?;
735
736
  // A redirect target that refuses is forgotten, and the object's URL asked again.
@@ -3733,6 +3733,25 @@ fn a_source_object_crosses_in_parallel_byte_ranges() {
3733
3733
  assert_eq!(temps(&source.root), 0);
3734
3734
  }
3735
3735
 
3736
+ /// A source object no larger than one request is still asked for by range, as every source
3737
+ /// fetch before 0.3.87 was: an origin that answers only ranges serves it.
3738
+ #[test]
3739
+ fn a_small_source_object_is_asked_for_by_range() {
3740
+ let body = ranged_body(300 << 10);
3741
+ let served = body.clone();
3742
+ let source = Source::new("ranged-small", &body, move |request| {
3743
+ match range_of(request) {
3744
+ Some(_) => partial(&served, request),
3745
+ None => status(400, b"a range is required"),
3746
+ }
3747
+ });
3748
+ let fetched = source.fetch(4, &local_policy()).unwrap();
3749
+
3750
+ assert_eq!(fetched.transferred, source.object.length);
3751
+ assert!(source.held());
3752
+ assert_eq!(source.asked(), vec![format!("bytes=0-{}", body.len() - 1)]);
3753
+ }
3754
+
3736
3755
  /// A source that will not range must still work: the first chunk's ask is answered with
3737
3756
  /// the whole object, and that one request is the object.
3738
3757
  #[test]
@@ -447,11 +447,9 @@ fn a_connection_cut_mid_body_resumes_at_the_byte_it_reached() {
447
447
  let bytes = body(9, 5 * MIB + 1);
448
448
  let length = bytes.len() as u64;
449
449
  // The first delivery answer dies 2.5 MiB in; the next ask must start there.
450
- let origin = Origin::start(vec![(name, bytes)], 0, |request, _| {
451
- match request.path.starts_with("/cdn/") && request.range.is_none() {
452
- true => Act::Cut(5 * MIB / 2),
453
- false => Act::Serve,
454
- }
450
+ let origin = Origin::start(vec![(name, bytes)], 0, |request, _| match request.range {
451
+ Some((0, _)) if request.path.starts_with("/cdn/") => Act::Cut(5 * MIB / 2),
452
+ _ => Act::Serve,
455
453
  });
456
454
  let dir = root("cut");
457
455
  let store = Store::init(&dir).unwrap();
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "tensorfs"
7
- version = "0.3.88"
7
+ version = "0.3.89"
8
8
  description = "TensorFS — canonical tensor artifact substrate"
9
9
  requires-python = ">=3.12"
10
10
  classifiers = [