firecube 0.1.7__tar.gz → 0.1.8__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.
- firecube-0.1.8/.github/PULL_REQUEST_TEMPLATE.md +50 -0
- firecube-0.1.8/.prompts/make-release.md +249 -0
- firecube-0.1.8/AGENTS.md +265 -0
- firecube-0.1.8/CHANGELOG.md +1671 -0
- firecube-0.1.8/CONTRIBUTING.md +256 -0
- firecube-0.1.8/PKG-INFO +260 -0
- firecube-0.1.8/README.md +200 -0
- firecube-0.1.8/docs/concepts/glossary.md +69 -0
- firecube-0.1.8/docs/concepts/observability/logs.md +73 -0
- firecube-0.1.8/docs/concepts/observability/traces.md +86 -0
- firecube-0.1.8/docs/concepts/orchestration/retries.md +73 -0
- firecube-0.1.8/docs/concepts/orchestration.md +51 -0
- firecube-0.1.8/docs/concepts/output-formats/zarr/chunk-ownership.md +118 -0
- firecube-0.1.8/docs/concepts/output-formats/zarr/direct-region.md +154 -0
- firecube-0.1.8/docs/concepts/output-formats/zarr/parallel-writes.md +91 -0
- firecube-0.1.8/docs/concepts/performance.md +179 -0
- firecube-0.1.8/docs/concepts/production-guide.md +162 -0
- firecube-0.1.8/docs/concepts/storage.md +100 -0
- firecube-0.1.8/docs/contributing/firecube-contributors.md +155 -0
- firecube-0.1.8/docs/guides/plugins/add-config-options.md +142 -0
- firecube-0.1.8/docs/guides/plugins/base-ingestor.md +147 -0
- firecube-0.1.8/docs/guides/plugins/configure-zarr-chunking.md +145 -0
- firecube-0.1.8/docs/guides/plugins/configure-zarr-compression.md +123 -0
- firecube-0.1.8/docs/guides/plugins/configure-zarr-sharding.md +106 -0
- firecube-0.1.8/docs/guides/plugins/declare-a-calendar.md +342 -0
- firecube-0.1.8/docs/guides/plugins/direct-zarr-auto.md +198 -0
- firecube-0.1.8/docs/guides/plugins/direct-zarr.md +375 -0
- firecube-0.1.8/docs/guides/plugins/discover-zipped-data.md +83 -0
- firecube-0.1.8/docs/guides/plugins/generic-parquet.md +116 -0
- firecube-0.1.8/docs/guides/plugins/generic-zarr.md +248 -0
- firecube-0.1.8/docs/guides/plugins/multi-group-writes.md +86 -0
- firecube-0.1.8/docs/guides/plugins/paired-source-files.md +200 -0
- firecube-0.1.8/docs/guides/plugins/parse-filename-fields.md +233 -0
- firecube-0.1.8/docs/guides/plugins/source-discovery.md +121 -0
- firecube-0.1.8/docs/index.md +66 -0
- firecube-0.1.8/docs/operations/archive/create.md +164 -0
- firecube-0.1.8/docs/operations/archive/index.md +47 -0
- firecube-0.1.8/docs/operations/archive/inspect.md +156 -0
- firecube-0.1.8/docs/operations/archive/restore.md +169 -0
- firecube-0.1.8/docs/operations/chunk-manager/delete.md +304 -0
- firecube-0.1.8/docs/operations/chunk-manager/index.md +83 -0
- firecube-0.1.8/docs/operations/chunk-manager/post-crash-recovery.md +317 -0
- firecube-0.1.8/docs/operations/chunk-manager/recover.md +287 -0
- firecube-0.1.8/docs/operations/firecube-index.md +254 -0
- firecube-0.1.8/docs/operations/fix-chunk-ownership-refusal.md +194 -0
- firecube-0.1.8/docs/operations/ingest-from-a-stac-api.md +153 -0
- firecube-0.1.8/docs/operations/parallel-zarr-writes.md +280 -0
- firecube-0.1.8/docs/operations/s3-access.md +80 -0
- firecube-0.1.8/docs/quickstart/ingestion.md +101 -0
- firecube-0.1.8/docs/quickstart/source-data.md +43 -0
- firecube-0.1.8/docs/reference/control-plane-spec.md +313 -0
- firecube-0.1.8/docs/reference/core-utilities.md +152 -0
- firecube-0.1.8/docs/showcase/mtg-fci-l1c-benchmarks.ipynb +572 -0
- firecube-0.1.8/docs/showcase/netcdf-to-zarr-requirements.txt +8 -0
- firecube-0.1.8/docs/showcase/netcdf-to-zarr.ipynb +538 -0
- firecube-0.1.8/docs/showcase/requirements.txt +7 -0
- firecube-0.1.8/docs/showcase/sentinel3-fire-detections.ipynb +15081 -0
- firecube-0.1.8/mkdocs.yml +221 -0
- firecube-0.1.8/plans/DESIGN.md +256 -0
- firecube-0.1.8/plans/DONE.md +2622 -0
- firecube-0.1.8/plans/IDEAS.md +345 -0
- firecube-0.1.8/plans/RELEASE.md +138 -0
- firecube-0.1.8/plans/TEST.md +168 -0
- firecube-0.1.8/plans/TESTING_STANDARDS.md +276 -0
- firecube-0.1.8/plans/TEST_GAPS.md +114 -0
- firecube-0.1.8/plans/TODO.md +893 -0
- firecube-0.1.8/pyproject.toml +159 -0
- firecube-0.1.8/src/firecube/cli/_command_schemas.py +104 -0
- firecube-0.1.8/src/firecube/cli/_ctx.py +88 -0
- firecube-0.1.8/src/firecube/cli/_errors.py +129 -0
- firecube-0.1.8/src/firecube/cli/_input_filters.py +98 -0
- firecube-0.1.8/src/firecube/cli/_input_sources.py +132 -0
- firecube-0.1.8/src/firecube/cli/_product.py +39 -0
- firecube-0.1.8/src/firecube/cli/_recovery.py +219 -0
- firecube-0.1.8/src/firecube/cli/_typed_options.py +188 -0
- firecube-0.1.8/src/firecube/cli/_uri_policy.py +197 -0
- firecube-0.1.8/src/firecube/cli/advise.py +331 -0
- firecube-0.1.8/src/firecube/cli/archive/__init__.py +59 -0
- firecube-0.1.8/src/firecube/cli/archive/_common.py +58 -0
- firecube-0.1.8/src/firecube/cli/archive/_create.py +260 -0
- firecube-0.1.8/src/firecube/cli/archive/_inspect.py +245 -0
- firecube-0.1.8/src/firecube/cli/archive/_restore.py +190 -0
- firecube-0.1.8/src/firecube/cli/catalog.py +203 -0
- firecube-0.1.8/src/firecube/cli/chunks/_claims.py +242 -0
- firecube-0.1.8/src/firecube/cli/chunks/_delete.py +500 -0
- firecube-0.1.8/src/firecube/cli/chunks/_list.py +357 -0
- firecube-0.1.8/src/firecube/cli/chunks/_manager.py +168 -0
- firecube-0.1.8/src/firecube/cli/chunks/_runs.py +347 -0
- firecube-0.1.8/src/firecube/cli/index.py +439 -0
- firecube-0.1.8/src/firecube/cli/main.py +960 -0
- firecube-0.1.8/src/firecube/cli/parquet.py +305 -0
- firecube-0.1.8/src/firecube/cli/plugins/commands.py +290 -0
- firecube-0.1.8/src/firecube/cli/zarr/_common.py +66 -0
- firecube-0.1.8/src/firecube/cli/zarr/_consolidate.py +172 -0
- firecube-0.1.8/src/firecube/cli/zarr/_multires.py +161 -0
- firecube-0.1.8/src/firecube/cli/zarr/_preallocate.py +304 -0
- firecube-0.1.8/src/firecube/cli/zarr/_slots.py +496 -0
- firecube-0.1.8/src/firecube/cli/zarr/_validate.py +248 -0
- firecube-0.1.8/src/firecube/core/api.py +194 -0
- firecube-0.1.8/src/firecube/core/config.py +353 -0
- firecube-0.1.8/src/firecube/core/controlplane/_helpers.py +78 -0
- firecube-0.1.8/src/firecube/core/controlplane/_projection.py +390 -0
- firecube-0.1.8/src/firecube/core/controlplane/_snapshot.py +217 -0
- firecube-0.1.8/src/firecube/core/controlplane/claims.py +359 -0
- firecube-0.1.8/src/firecube/core/controlplane/deletion.py +1915 -0
- firecube-0.1.8/src/firecube/core/controlplane/manager.py +2175 -0
- firecube-0.1.8/src/firecube/core/controlplane/repo.py +968 -0
- firecube-0.1.8/src/firecube/core/controlplane/repo_utils.py +76 -0
- firecube-0.1.8/src/firecube/core/controlplane/time_dim.py +125 -0
- firecube-0.1.8/src/firecube/core/controlplane/types.py +850 -0
- firecube-0.1.8/src/firecube/core/discovery/__init__.py +132 -0
- firecube-0.1.8/src/firecube/core/discovery/_filters.py +108 -0
- firecube-0.1.8/src/firecube/core/discovery/_registry.py +52 -0
- firecube-0.1.8/src/firecube/core/discovery/_stac.py +239 -0
- firecube-0.1.8/src/firecube/core/discovery/_stac_compat.py +39 -0
- firecube-0.1.8/src/firecube/core/discovery/_types.py +192 -0
- firecube-0.1.8/src/firecube/core/discovery/_walk.py +257 -0
- firecube-0.1.8/src/firecube/core/discovery/errors.py +121 -0
- firecube-0.1.8/src/firecube/core/duckdb/bridge.py +90 -0
- firecube-0.1.8/src/firecube/core/errors.py +630 -0
- firecube-0.1.8/src/firecube/core/filesystem/fsspec_backend.py +377 -0
- firecube-0.1.8/src/firecube/core/filesystem/obstore_backend.py +456 -0
- firecube-0.1.8/src/firecube/core/filesystem/ops.py +488 -0
- firecube-0.1.8/src/firecube/core/filesystem/protocol.py +160 -0
- firecube-0.1.8/src/firecube/core/filesystem/publication.py +89 -0
- firecube-0.1.8/src/firecube/core/filesystem/store_factory.py +191 -0
- firecube-0.1.8/src/firecube/core/formats/__init__.py +43 -0
- firecube-0.1.8/src/firecube/core/index_resolve.py +867 -0
- firecube-0.1.8/src/firecube/core/index_spec.py +815 -0
- firecube-0.1.8/src/firecube/core/indexed_write.py +206 -0
- firecube-0.1.8/src/firecube/core/intake.py +558 -0
- firecube-0.1.8/src/firecube/core/product/resolver.py +127 -0
- firecube-0.1.8/src/firecube/core/product/target.py +125 -0
- firecube-0.1.8/src/firecube/core/storage/completion.py +402 -0
- firecube-0.1.8/src/firecube/core/storage/results.py +31 -0
- firecube-0.1.8/src/firecube/core/storage/session.py +902 -0
- firecube-0.1.8/src/firecube/core/tensogram/converter.py +465 -0
- firecube-0.1.8/src/firecube/core/tensogram/inspection.py +322 -0
- firecube-0.1.8/src/firecube/core/tensogram/metadata.py +292 -0
- firecube-0.1.8/src/firecube/core/tensogram/restore.py +386 -0
- firecube-0.1.8/src/firecube/core/time/__init__.py +23 -0
- firecube-0.1.8/src/firecube/core/time/_codecs.py +33 -0
- firecube-0.1.8/src/firecube/core/time/calendar.py +194 -0
- firecube-0.1.8/src/firecube/core/time/canonical.py +92 -0
- firecube-0.1.8/src/firecube/core/time/convert.py +48 -0
- firecube-0.1.8/src/firecube/core/time/encode.py +222 -0
- firecube-0.1.8/src/firecube/core/time/encoding.py +299 -0
- firecube-0.1.8/src/firecube/core/time/gregorian.py +308 -0
- firecube-0.1.8/src/firecube/core/time/guard.py +74 -0
- firecube-0.1.8/src/firecube/core/uris.py +211 -0
- firecube-0.1.8/src/firecube/core/zarr/_coord_common.py +129 -0
- firecube-0.1.8/src/firecube/core/zarr/_coord_lifecycle.py +91 -0
- firecube-0.1.8/src/firecube/core/zarr/_drift.py +306 -0
- firecube-0.1.8/src/firecube/core/zarr/_fill.py +83 -0
- firecube-0.1.8/src/firecube/core/zarr/_reserved_attrs.py +109 -0
- firecube-0.1.8/src/firecube/core/zarr/_sealing_markers.py +83 -0
- firecube-0.1.8/src/firecube/core/zarr/_zarr_compat.py +30 -0
- firecube-0.1.8/src/firecube/core/zarr/coord_consolidation.py +770 -0
- firecube-0.1.8/src/firecube/core/zarr/coord_materialization.py +772 -0
- firecube-0.1.8/src/firecube/core/zarr/coord_rematerialization.py +516 -0
- firecube-0.1.8/src/firecube/core/zarr/guard/__init__.py +171 -0
- firecube-0.1.8/src/firecube/core/zarr/guard/_layout.py +260 -0
- firecube-0.1.8/src/firecube/core/zarr/guard/_unit_locks.py +119 -0
- firecube-0.1.8/src/firecube/core/zarr/guard/chunk_geometry.py +486 -0
- firecube-0.1.8/src/firecube/core/zarr/guard/engine_owned.py +699 -0
- firecube-0.1.8/src/firecube/core/zarr/guard/guarded_write.py +492 -0
- firecube-0.1.8/src/firecube/core/zarr/guard/metadata_authority.py +794 -0
- firecube-0.1.8/src/firecube/core/zarr/guard/promotion_plan.py +215 -0
- firecube-0.1.8/src/firecube/core/zarr/guard/unit_ownership.py +393 -0
- firecube-0.1.8/src/firecube/core/zarr/io.py +98 -0
- firecube-0.1.8/src/firecube/core/zarr/layers.py +221 -0
- firecube-0.1.8/src/firecube/core/zarr/multires.py +190 -0
- firecube-0.1.8/src/firecube/core/zarr/planning.py +373 -0
- firecube-0.1.8/src/firecube/core/zarr/region_writer.py +1606 -0
- firecube-0.1.8/src/firecube/core/zarr/state.py +295 -0
- firecube-0.1.8/src/firecube/core/zarr/time_decode.py +161 -0
- firecube-0.1.8/src/firecube/core/zarr/validation.py +1530 -0
- firecube-0.1.8/src/firecube/core/zarr/zip_archive.py +499 -0
- firecube-0.1.8/src/firecube/ingestor/config/coercion.py +186 -0
- firecube-0.1.8/src/firecube/ingestor/config/engine.py +273 -0
- firecube-0.1.8/src/firecube/ingestor/contracts/interfaces.py +396 -0
- firecube-0.1.8/src/firecube/ingestor/devtools/_templates/readme.md.tpl +88 -0
- firecube-0.1.8/src/firecube/ingestor/devtools/scaffolding.py +459 -0
- firecube-0.1.8/src/firecube/ingestor/errors.py +323 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/archive.py +639 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/base.py +1311 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/batching.py +216 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/configure.py +280 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/engine.py +1051 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/index_binding.py +358 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/index_record.py +404 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/parallel_gate.py +270 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/preallocate.py +1211 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/recording.py +712 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/resume_guard.py +773 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/slot_plan.py +516 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/telemetry.py +163 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/workspace.py +290 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/append.py +1144 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/append_failure.py +289 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/append_order.py +145 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/append_services.py +1419 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/batch_runner.py +260 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/direct_region_adapter.py +420 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/existing_cube_check.py +297 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/root_group.py +68 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/schema.py +256 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/staged_metadata.py +616 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/strategies/indexed_region.py +1339 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/write.py +690 -0
- firecube-0.1.8/src/firecube/ingestor/runtime/zarr/write_session.py +762 -0
- firecube-0.1.8/src/firecube/ingestor/templates/config.py +366 -0
- firecube-0.1.8/src/firecube/ingestor/templates/direct_zarr.py +1924 -0
- firecube-0.1.8/src/firecube/ingestor/templates/generic.py +701 -0
- firecube-0.1.8/src/firecube/ingestor/templates/generic_tensogram.py +195 -0
- firecube-0.1.8/src/firecube/ingestor/types/context.py +626 -0
- firecube-0.1.8/src/firecube/ingestor/types/planned_range.py +176 -0
- firecube-0.1.8/tests/README.md +112 -0
- firecube-0.1.8/tests/architecture/conftest.py +27 -0
- firecube-0.1.8/tests/architecture/test_cli_boundary.py +407 -0
- firecube-0.1.8/tests/architecture/test_core_independence.py +72 -0
- firecube-0.1.8/tests/architecture/test_fixture_plugin_list_consistency.py +206 -0
- firecube-0.1.8/tests/architecture/test_import_boundaries.py +149 -0
- firecube-0.1.8/tests/architecture/test_no_cli_inference.py +146 -0
- firecube-0.1.8/tests/architecture/test_no_naked_fill_value_comparison.py +140 -0
- firecube-0.1.8/tests/architecture/test_storage_flows.py +714 -0
- firecube-0.1.8/tests/cli/test_archive_artifact_uri_contract.py +116 -0
- firecube-0.1.8/tests/cli/test_archive_create_contract.py +179 -0
- firecube-0.1.8/tests/cli/test_archive_restore_contract.py +90 -0
- firecube-0.1.8/tests/cli/test_audience_groups.py +92 -0
- firecube-0.1.8/tests/cli/test_catalog_intake_contract.py +195 -0
- firecube-0.1.8/tests/cli/test_chunks_delete_record_only.py +96 -0
- firecube-0.1.8/tests/cli/test_chunks_manager_typed.py +166 -0
- firecube-0.1.8/tests/cli/test_chunks_storage_banner.py +117 -0
- firecube-0.1.8/tests/cli/test_click_error_boundary.py +163 -0
- firecube-0.1.8/tests/cli/test_ingest_decorator_consistency.py +116 -0
- firecube-0.1.8/tests/cli/test_parquet_consolidate_output_artifact.py +68 -0
- firecube-0.1.8/tests/cli/test_range_help_names_axis.py +153 -0
- firecube-0.1.8/tests/cli/test_rename_hints.py +109 -0
- firecube-0.1.8/tests/cli/test_uri_policy_stac.py +131 -0
- firecube-0.1.8/tests/cli/test_uri_scheme_policy.py +139 -0
- firecube-0.1.8/tests/cli/test_zarr_multires_contract.py +208 -0
- firecube-0.1.8/tests/cli/test_zarr_validate_contract.py +126 -0
- firecube-0.1.8/tests/cli/test_zarr_validate_static_marker.py +78 -0
- firecube-0.1.8/tests/conftest.py +291 -0
- firecube-0.1.8/tests/fixtures/firecube_test_plugins/pyproject.toml +55 -0
- firecube-0.1.8/tests/fixtures/firecube_test_plugins/src/cf_time_dim_test_plugin/ingestor.py +198 -0
- firecube-0.1.8/tests/fixtures/firecube_test_plugins/src/irregular_axis_test_plugin/__init__.py +337 -0
- firecube-0.1.8/tests/fixtures/firecube_test_plugins/src/regular_axis_test_plugin/__init__.py +413 -0
- firecube-0.1.8/tests/fixtures/firecube_test_plugins/src/w14_single_discovery_plugin/__init__.py +95 -0
- firecube-0.1.8/tests/helpers/cli_hints.py +52 -0
- firecube-0.1.8/tests/helpers/contention.py +133 -0
- firecube-0.1.8/tests/helpers/fake_stac.py +221 -0
- firecube-0.1.8/tests/helpers/rows.py +91 -0
- firecube-0.1.8/tests/helpers/storage.py +203 -0
- firecube-0.1.8/tests/helpers/test_storage_helpers.py +241 -0
- firecube-0.1.8/tests/integration/_staged_helpers.py +138 -0
- firecube-0.1.8/tests/integration/test_alignment_cli.py +145 -0
- firecube-0.1.8/tests/integration/test_append_failure_messages.py +338 -0
- firecube-0.1.8/tests/integration/test_append_group_attrs_first_write_wins.py +116 -0
- firecube-0.1.8/tests/integration/test_append_static_var_drift_raises.py +302 -0
- firecube-0.1.8/tests/integration/test_architecture_invariants.py +522 -0
- firecube-0.1.8/tests/integration/test_byte_parity_existing_indexes.py +168 -0
- firecube-0.1.8/tests/integration/test_callable_payload_integration.py +184 -0
- firecube-0.1.8/tests/integration/test_cf_time_dim_value_dedup.py +183 -0
- firecube-0.1.8/tests/integration/test_chunk_ownership_races.py +88 -0
- firecube-0.1.8/tests/integration/test_cli_chunks_runs_target.py +379 -0
- firecube-0.1.8/tests/integration/test_cli_fresh_target_ingest.py +149 -0
- firecube-0.1.8/tests/integration/test_cli_index_rebuild.py +654 -0
- firecube-0.1.8/tests/integration/test_cli_index_show.py +191 -0
- firecube-0.1.8/tests/integration/test_cli_index_verify.py +465 -0
- firecube-0.1.8/tests/integration/test_cli_inference_baseline.py +79 -0
- firecube-0.1.8/tests/integration/test_cli_input_data_presence.py +275 -0
- firecube-0.1.8/tests/integration/test_cli_zarr_preallocate.py +127 -0
- firecube-0.1.8/tests/integration/test_cli_zarr_preallocate_slot_index.py +235 -0
- firecube-0.1.8/tests/integration/test_cli_zarr_preallocate_spec_attrs.py +342 -0
- firecube-0.1.8/tests/integration/test_compat_matrix.py +129 -0
- firecube-0.1.8/tests/integration/test_concurrent_same_product.py +314 -0
- firecube-0.1.8/tests/integration/test_consolidate_custom_time_dim.py +171 -0
- firecube-0.1.8/tests/integration/test_consolidate_error_wrapping.py +78 -0
- firecube-0.1.8/tests/integration/test_consolidate_time_coord_command.py +539 -0
- firecube-0.1.8/tests/integration/test_crash_recovery_bulk_sweep.py +415 -0
- firecube-0.1.8/tests/integration/test_cross_regime_marker_refusals.py +186 -0
- firecube-0.1.8/tests/integration/test_delete_span_collateral_guard.py +308 -0
- firecube-0.1.8/tests/integration/test_delete_span_region_nan_fill.py +920 -0
- firecube-0.1.8/tests/integration/test_direct_zarr_codec_cli_routing.py +162 -0
- firecube-0.1.8/tests/integration/test_direct_zarr_codec_end_to_end.py +231 -0
- firecube-0.1.8/tests/integration/test_direct_zarr_resolved_index.py +314 -0
- firecube-0.1.8/tests/integration/test_direct_zarr_shard_sharing_reproduction.py +78 -0
- firecube-0.1.8/tests/integration/test_discovery_obstore_single_object.py +75 -0
- firecube-0.1.8/tests/integration/test_e2e_time_dim_plugin.py +237 -0
- firecube-0.1.8/tests/integration/test_e2e_zarr_ingest_preflight_wiring.py +379 -0
- firecube-0.1.8/tests/integration/test_engine_ingest_with_peer_run.py +443 -0
- firecube-0.1.8/tests/integration/test_engine_owned_arrays.py +356 -0
- firecube-0.1.8/tests/integration/test_existing_cube_check_parallel_path.py +120 -0
- firecube-0.1.8/tests/integration/test_existing_cube_mismatch.py +321 -0
- firecube-0.1.8/tests/integration/test_force_reingest_region_overwrite.py +190 -0
- firecube-0.1.8/tests/integration/test_force_reingest_state.py +737 -0
- firecube-0.1.8/tests/integration/test_generic_zarr_codec_cli_defaults.py +173 -0
- firecube-0.1.8/tests/integration/test_generic_zarr_static_vars_span.py +226 -0
- firecube-0.1.8/tests/integration/test_horizon_growth_rejects_shape_drift.py +197 -0
- firecube-0.1.8/tests/integration/test_indexed_write_pipeline.py +569 -0
- firecube-0.1.8/tests/integration/test_ingest_command_typed.py +198 -0
- firecube-0.1.8/tests/integration/test_ingest_stac_options.py +626 -0
- firecube-0.1.8/tests/integration/test_input_filters_cli.py +229 -0
- firecube-0.1.8/tests/integration/test_integer_axis_e2e.py +207 -0
- firecube-0.1.8/tests/integration/test_irregular_axis_pipeline.py +486 -0
- firecube-0.1.8/tests/integration/test_irregular_coord_materialization.py +247 -0
- firecube-0.1.8/tests/integration/test_legacy_slot_index_detection.py +281 -0
- firecube-0.1.8/tests/integration/test_maintenance_audit.py +501 -0
- firecube-0.1.8/tests/integration/test_maintenance_claims.py +531 -0
- firecube-0.1.8/tests/integration/test_manifest_explicit_null.py +233 -0
- firecube-0.1.8/tests/integration/test_marker_lifecycle.py +194 -0
- firecube-0.1.8/tests/integration/test_multiprocess_race_managed_coord.py +266 -0
- firecube-0.1.8/tests/integration/test_nd_region_pipeline.py +283 -0
- firecube-0.1.8/tests/integration/test_obstore_claim_atomicity.py +240 -0
- firecube-0.1.8/tests/integration/test_off_grid_floor_ingest_e2e.py +334 -0
- firecube-0.1.8/tests/integration/test_parallel_materialize.py +405 -0
- firecube-0.1.8/tests/integration/test_parquet_drivers.py +234 -0
- firecube-0.1.8/tests/integration/test_phase3_5_blocked_ranges.py +138 -0
- firecube-0.1.8/tests/integration/test_planner_window_alignment.py +236 -0
- firecube-0.1.8/tests/integration/test_plugin_config_validated.py +142 -0
- firecube-0.1.8/tests/integration/test_post_write_integrity_guard.py +222 -0
- firecube-0.1.8/tests/integration/test_preallocate_auto_rebuild.py +162 -0
- firecube-0.1.8/tests/integration/test_preallocate_claim_release_on_terminal_failure.py +417 -0
- firecube-0.1.8/tests/integration/test_preallocate_empty_discovery.py +196 -0
- firecube-0.1.8/tests/integration/test_preallocate_error_wrapping.py +151 -0
- firecube-0.1.8/tests/integration/test_preallocate_idempotent.py +458 -0
- firecube-0.1.8/tests/integration/test_preallocate_marker_at_creation.py +228 -0
- firecube-0.1.8/tests/integration/test_preallocate_recovery.py +412 -0
- firecube-0.1.8/tests/integration/test_preallocate_regular_axis_dense.py +700 -0
- firecube-0.1.8/tests/integration/test_preallocate_release_failure.py +265 -0
- firecube-0.1.8/tests/integration/test_preallocate_slot_group_env.py +333 -0
- firecube-0.1.8/tests/integration/test_resolved_index_precedence_matrix.py +305 -0
- firecube-0.1.8/tests/integration/test_resume_refills_state2_hole.py +159 -0
- firecube-0.1.8/tests/integration/test_run_terminal_slot_preservation.py +240 -0
- firecube-0.1.8/tests/integration/test_serial_peer_blocks_materializer.py +181 -0
- firecube-0.1.8/tests/integration/test_serial_unbounded_axis.py +150 -0
- firecube-0.1.8/tests/integration/test_slots_auto_input_data.py +133 -0
- firecube-0.1.8/tests/integration/test_staged_mode_template_parity.py +572 -0
- firecube-0.1.8/tests/integration/test_staged_partial_chunk_preserves_data.py +541 -0
- firecube-0.1.8/tests/integration/test_staged_retains_all_batches.py +214 -0
- firecube-0.1.8/tests/integration/test_storage_driver_integration.py +264 -0
- firecube-0.1.8/tests/integration/test_stored_chunk_coverage.py +120 -0
- firecube-0.1.8/tests/integration/test_tensogram_archive.py +560 -0
- firecube-0.1.8/tests/integration/test_timestamps_skipped_surfaces.py +178 -0
- firecube-0.1.8/tests/integration/test_upload_tree_hard_fail.py +254 -0
- firecube-0.1.8/tests/integration/test_zarr_default_compressed_resume.py +182 -0
- firecube-0.1.8/tests/integration/test_zarr_index_show_derived.py +262 -0
- firecube-0.1.8/tests/integration/test_zarr_preallocate_dry_run.py +146 -0
- firecube-0.1.8/tests/integration/test_zero_input_no_firecube_created.py +169 -0
- firecube-0.1.8/tests/unit/_helpers/counting_fs.py +128 -0
- firecube-0.1.8/tests/unit/ingestor/extensions/test_grid.py +81 -0
- firecube-0.1.8/tests/unit/ingestor/extensions/test_healpix.py +153 -0
- firecube-0.1.8/tests/unit/test_advise_cli.py +104 -0
- firecube-0.1.8/tests/unit/test_anonymous_config_file.py +80 -0
- firecube-0.1.8/tests/unit/test_anonymous_env.py +93 -0
- firecube-0.1.8/tests/unit/test_append_coverage_builder_time_decode.py +173 -0
- firecube-0.1.8/tests/unit/test_append_overwrite_errors.py +108 -0
- firecube-0.1.8/tests/unit/test_append_region_overwrite.py +271 -0
- firecube-0.1.8/tests/unit/test_append_regression.py +405 -0
- firecube-0.1.8/tests/unit/test_append_stale_consolidated_metadata.py +259 -0
- firecube-0.1.8/tests/unit/test_append_state_aware_overlap.py +271 -0
- firecube-0.1.8/tests/unit/test_append_write_executor.py +133 -0
- firecube-0.1.8/tests/unit/test_as_resolved_index_record.py +224 -0
- firecube-0.1.8/tests/unit/test_bare_glob_via_coerce.py +85 -0
- firecube-0.1.8/tests/unit/test_base_aggregate_contract.py +131 -0
- firecube-0.1.8/tests/unit/test_batching_metadata.py +81 -0
- firecube-0.1.8/tests/unit/test_bulk_abandon_stale_runs.py +879 -0
- firecube-0.1.8/tests/unit/test_bulk_clear_stale_claims.py +548 -0
- firecube-0.1.8/tests/unit/test_catalog_intake.py +292 -0
- firecube-0.1.8/tests/unit/test_cf_validator.py +334 -0
- firecube-0.1.8/tests/unit/test_chunk_geometry.py +205 -0
- firecube-0.1.8/tests/unit/test_chunk_manager.py +798 -0
- firecube-0.1.8/tests/unit/test_chunk_manager_queries.py +303 -0
- firecube-0.1.8/tests/unit/test_chunk_manager_resolved_index.py +244 -0
- firecube-0.1.8/tests/unit/test_chunk_manager_slot_index.py +515 -0
- firecube-0.1.8/tests/unit/test_chunks_list_cli.py +199 -0
- firecube-0.1.8/tests/unit/test_claims_clear_product_mismatch.py +188 -0
- firecube-0.1.8/tests/unit/test_cli_archive_safety.py +309 -0
- firecube-0.1.8/tests/unit/test_cli_chunks_delete.py +396 -0
- firecube-0.1.8/tests/unit/test_cli_completion.py +46 -0
- firecube-0.1.8/tests/unit/test_cli_errors.py +80 -0
- firecube-0.1.8/tests/unit/test_cli_output_options.py +119 -0
- firecube-0.1.8/tests/unit/test_cli_runs_all_stale.py +218 -0
- firecube-0.1.8/tests/unit/test_cli_slot_planning.py +134 -0
- firecube-0.1.8/tests/unit/test_cli_zarr_preallocate.py +395 -0
- firecube-0.1.8/tests/unit/test_cli_zarr_preallocate_static.py +56 -0
- firecube-0.1.8/tests/unit/test_cli_zarr_slots.py +672 -0
- firecube-0.1.8/tests/unit/test_codec_semantic_matrix.py +226 -0
- firecube-0.1.8/tests/unit/test_coerce_append_value.py +56 -0
- firecube-0.1.8/tests/unit/test_compare_zarr_stores.py +269 -0
- firecube-0.1.8/tests/unit/test_compute_schema_hash.py +174 -0
- firecube-0.1.8/tests/unit/test_config.py +39 -0
- firecube-0.1.8/tests/unit/test_config_file_strict.py +171 -0
- firecube-0.1.8/tests/unit/test_context_hook_signature_validation.py +83 -0
- firecube-0.1.8/tests/unit/test_controlplane_types.py +284 -0
- firecube-0.1.8/tests/unit/test_coord_chunks.py +53 -0
- firecube-0.1.8/tests/unit/test_coord_lifecycle.py +80 -0
- firecube-0.1.8/tests/unit/test_coord_rematerialization.py +136 -0
- firecube-0.1.8/tests/unit/test_coverage_tracker.py +161 -0
- firecube-0.1.8/tests/unit/test_credentials.py +60 -0
- firecube-0.1.8/tests/unit/test_default_suffixes_include_common_hdf5_families.py +41 -0
- firecube-0.1.8/tests/unit/test_deletion_alignment_from_store.py +603 -0
- firecube-0.1.8/tests/unit/test_deletion_engine_errors.py +68 -0
- firecube-0.1.8/tests/unit/test_deletion_fill_value.py +226 -0
- firecube-0.1.8/tests/unit/test_deletion_missing_key_not_error.py +139 -0
- firecube-0.1.8/tests/unit/test_deletion_time_dim_resolution.py +393 -0
- firecube-0.1.8/tests/unit/test_direct_zarr_ingestor.py +708 -0
- firecube-0.1.8/tests/unit/test_direct_zarr_parallel_contract.py +59 -0
- firecube-0.1.8/tests/unit/test_direct_zarr_per_slot_claims.py +775 -0
- firecube-0.1.8/tests/unit/test_direct_zarr_slot_index_subclass.py +107 -0
- firecube-0.1.8/tests/unit/test_direct_zarr_time_dim_wiring.py +213 -0
- firecube-0.1.8/tests/unit/test_discover_empty_source_fails.py +193 -0
- firecube-0.1.8/tests/unit/test_discovery_file_uri_hdf5_sniff.py +64 -0
- firecube-0.1.8/tests/unit/test_discovery_stac.py +267 -0
- firecube-0.1.8/tests/unit/test_driver_parity_deletion.py +389 -0
- firecube-0.1.8/tests/unit/test_driver_parity_zarr_to_tgm.py +85 -0
- firecube-0.1.8/tests/unit/test_duckdb_bridge.py +131 -0
- firecube-0.1.8/tests/unit/test_duckdb_capability_check.py +160 -0
- firecube-0.1.8/tests/unit/test_engine_config_slot_group_warning.py +50 -0
- firecube-0.1.8/tests/unit/test_engine_fail_stop.py +325 -0
- firecube-0.1.8/tests/unit/test_engine_failure_handling.py +139 -0
- firecube-0.1.8/tests/unit/test_engine_resilience.py +308 -0
- firecube-0.1.8/tests/unit/test_engine_sequential_slot_filter_call.py +181 -0
- firecube-0.1.8/tests/unit/test_engine_time_dim_hook.py +68 -0
- firecube-0.1.8/tests/unit/test_epoch_parse_helper.py +62 -0
- firecube-0.1.8/tests/unit/test_filesystem_capabilities.py +123 -0
- firecube-0.1.8/tests/unit/test_fsspec_atomic_writer.py +395 -0
- firecube-0.1.8/tests/unit/test_generic_template_logging.py +108 -0
- firecube-0.1.8/tests/unit/test_global_expected_coverage.py +303 -0
- firecube-0.1.8/tests/unit/test_group_identity_hash.py +183 -0
- firecube-0.1.8/tests/unit/test_index_binding_filter.py +121 -0
- firecube-0.1.8/tests/unit/test_index_ensured_event.py +86 -0
- firecube-0.1.8/tests/unit/test_index_ensured_telemetry.py +386 -0
- firecube-0.1.8/tests/unit/test_index_resolve_byte_parity.py +96 -0
- firecube-0.1.8/tests/unit/test_index_resolve_irregular.py +149 -0
- firecube-0.1.8/tests/unit/test_index_spec.py +105 -0
- firecube-0.1.8/tests/unit/test_indexed_region_custom_dim.py +93 -0
- firecube-0.1.8/tests/unit/test_indexed_region_schema_claim.py +99 -0
- firecube-0.1.8/tests/unit/test_indexed_region_slot_group.py +217 -0
- firecube-0.1.8/tests/unit/test_indexed_region_static_dispatch.py +400 -0
- firecube-0.1.8/tests/unit/test_indexed_region_strategy_ordering.py +108 -0
- firecube-0.1.8/tests/unit/test_indexed_write.py +128 -0
- firecube-0.1.8/tests/unit/test_indexed_write_compile.py +246 -0
- firecube-0.1.8/tests/unit/test_indexed_write_compile_matrix.py +393 -0
- firecube-0.1.8/tests/unit/test_indexed_write_exception.py +82 -0
- firecube-0.1.8/tests/unit/test_ingest_command_config.py +148 -0
- firecube-0.1.8/tests/unit/test_input_filters.py +207 -0
- firecube-0.1.8/tests/unit/test_intake_catalog_entry_args.py +71 -0
- firecube-0.1.8/tests/unit/test_integer_axis.py +82 -0
- firecube-0.1.8/tests/unit/test_integer_resolver.py +75 -0
- firecube-0.1.8/tests/unit/test_list_runs_is_wal_scan_free_after_terminal.py +122 -0
- firecube-0.1.8/tests/unit/test_manifest_repo_cache.py +63 -0
- firecube-0.1.8/tests/unit/test_materialize_irregular_coord_array.py +304 -0
- firecube-0.1.8/tests/unit/test_materialize_regular_coord_array.py +323 -0
- firecube-0.1.8/tests/unit/test_nd_region_writes.py +150 -0
- firecube-0.1.8/tests/unit/test_netcdf_utils.py +363 -0
- firecube-0.1.8/tests/unit/test_no_raw_fsspec_usage.py +900 -0
- firecube-0.1.8/tests/unit/test_otel_lifecycle.py +159 -0
- firecube-0.1.8/tests/unit/test_output_name_rejected.py +61 -0
- firecube-0.1.8/tests/unit/test_parallel_gate_slot_group.py +161 -0
- firecube-0.1.8/tests/unit/test_parallel_run_id.py +48 -0
- firecube-0.1.8/tests/unit/test_parallel_run_id_path_safety.py +49 -0
- firecube-0.1.8/tests/unit/test_parallel_schema_sizing.py +268 -0
- firecube-0.1.8/tests/unit/test_per_array_codec_override.py +130 -0
- firecube-0.1.8/tests/unit/test_pipeline_result_typed_metrics.py +91 -0
- firecube-0.1.8/tests/unit/test_planned_range.py +74 -0
- firecube-0.1.8/tests/unit/test_plugin_context_sources.py +189 -0
- firecube-0.1.8/tests/unit/test_plugin_scaffolding.py +587 -0
- firecube-0.1.8/tests/unit/test_pod_startup_phantom_group.py +220 -0
- firecube-0.1.8/tests/unit/test_pod_startup_schema_verification.py +264 -0
- firecube-0.1.8/tests/unit/test_pre_batch_filter.py +281 -0
- firecube-0.1.8/tests/unit/test_product_resolver.py +53 -0
- firecube-0.1.8/tests/unit/test_product_target.py +179 -0
- firecube-0.1.8/tests/unit/test_ranges_overlap_helper.py +32 -0
- firecube-0.1.8/tests/unit/test_read_hdf5_array_dtype.py +90 -0
- firecube-0.1.8/tests/unit/test_region_zarr_writer.py +870 -0
- firecube-0.1.8/tests/unit/test_resume_guard.py +256 -0
- firecube-0.1.8/tests/unit/test_resume_guard_enforce_op_counts.py +169 -0
- firecube-0.1.8/tests/unit/test_resume_guard_group_aware.py +111 -0
- firecube-0.1.8/tests/unit/test_resume_guard_slot_ranges.py +155 -0
- firecube-0.1.8/tests/unit/test_run_id_slot_parser.py +85 -0
- firecube-0.1.8/tests/unit/test_schema_verification_audit.py +96 -0
- firecube-0.1.8/tests/unit/test_seed_touched_data_chunks.py +351 -0
- firecube-0.1.8/tests/unit/test_serial_unbounded_axis.py +136 -0
- firecube-0.1.8/tests/unit/test_session_upload_tree.py +1067 -0
- firecube-0.1.8/tests/unit/test_setup_global_zarr_schema_concurrent.py +209 -0
- firecube-0.1.8/tests/unit/test_slot_index_model.py +209 -0
- firecube-0.1.8/tests/unit/test_slot_index_record.py +263 -0
- firecube-0.1.8/tests/unit/test_state_dim_threading.py +112 -0
- firecube-0.1.8/tests/unit/test_storage_cache_key.py +96 -0
- firecube-0.1.8/tests/unit/test_storage_completion.py +1041 -0
- firecube-0.1.8/tests/unit/test_storage_config_anonymous.py +214 -0
- firecube-0.1.8/tests/unit/test_storage_errors.py +78 -0
- firecube-0.1.8/tests/unit/test_storage_metadata.py +220 -0
- firecube-0.1.8/tests/unit/test_telemetry_schema_snapshot.py +94 -0
- firecube-0.1.8/tests/unit/test_tensogram_cli.py +103 -0
- firecube-0.1.8/tests/unit/test_tensogram_core.py +665 -0
- firecube-0.1.8/tests/unit/test_tensogram_ingest.py +170 -0
- firecube-0.1.8/tests/unit/test_tensogram_input.py +77 -0
- firecube-0.1.8/tests/unit/test_tensogram_time_dim.py +141 -0
- firecube-0.1.8/tests/unit/test_time_axis_declaration.py +208 -0
- firecube-0.1.8/tests/unit/test_time_coord_consolidations_scan.py +323 -0
- firecube-0.1.8/tests/unit/test_time_decode.py +184 -0
- firecube-0.1.8/tests/unit/test_time_encode.py +187 -0
- firecube-0.1.8/tests/unit/test_typed_options_param.py +92 -0
- firecube-0.1.8/tests/unit/test_unsorted_existing_refused.py +144 -0
- firecube-0.1.8/tests/unit/test_uri_handling.py +182 -0
- firecube-0.1.8/tests/unit/test_uris.py +79 -0
- firecube-0.1.8/tests/unit/test_validate_chunk_alignment_terminal.py +55 -0
- firecube-0.1.8/tests/unit/test_validate_directzarr_passes.py +149 -0
- firecube-0.1.8/tests/unit/test_validate_time_coord_uniqueness.py +196 -0
- firecube-0.1.8/tests/unit/test_validate_zarr_specs_against_template.py +96 -0
- firecube-0.1.8/tests/unit/test_verify_array_spec.py +298 -0
- firecube-0.1.8/tests/unit/test_verify_array_spec_codec_drift.py +74 -0
- firecube-0.1.8/tests/unit/test_wal_reader_run_id_safety.py +111 -0
- firecube-0.1.8/tests/unit/test_workspace_manager.py +110 -0
- firecube-0.1.8/tests/unit/test_write_intent_kinds.py +28 -0
- firecube-0.1.8/tests/unit/test_write_mode_policy.py +239 -0
- firecube-0.1.8/tests/unit/test_writeintent_callable_dispatch.py +409 -0
- firecube-0.1.8/tests/unit/test_zarr_array_spec_codec_fields.py +58 -0
- firecube-0.1.8/tests/unit/test_zarr_array_spec_new_fields.py +133 -0
- firecube-0.1.8/tests/unit/test_zarr_codec_mutual_exclusion.py +57 -0
- firecube-0.1.8/tests/unit/test_zarr_drift.py +297 -0
- firecube-0.1.8/tests/unit/test_zarr_encoding_time_chunk_honored.py +157 -0
- firecube-0.1.8/tests/unit/test_zarr_fill.py +80 -0
- firecube-0.1.8/tests/unit/test_zarr_group_attrs.py +827 -0
- firecube-0.1.8/tests/unit/test_zarr_multi_res_config_rejected.py +108 -0
- firecube-0.1.8/tests/unit/test_zarr_staged_metadata.py +704 -0
- firecube-0.1.8/tests/unit/test_zarr_validation.py +240 -0
- firecube-0.1.8/tests/unit/test_zarr_write_context.py +134 -0
- firecube-0.1.8/tests/unit/test_zarr_write_empty_chunks.py +488 -0
- firecube-0.1.8/uv.lock +4653 -0
- firecube-0.1.7/.github/PULL_REQUEST_TEMPLATE.md +0 -50
- firecube-0.1.7/.prompts/make-release.md +0 -249
- firecube-0.1.7/AGENTS.md +0 -146
- firecube-0.1.7/CHANGELOG.md +0 -847
- firecube-0.1.7/CONTRIBUTING.md +0 -256
- firecube-0.1.7/PKG-INFO +0 -253
- firecube-0.1.7/README.md +0 -196
- firecube-0.1.7/docs/concepts/glossary.md +0 -65
- firecube-0.1.7/docs/concepts/observability/logs.md +0 -73
- firecube-0.1.7/docs/concepts/observability/traces.md +0 -86
- firecube-0.1.7/docs/concepts/orchestration/retries.md +0 -73
- firecube-0.1.7/docs/concepts/orchestration.md +0 -51
- firecube-0.1.7/docs/concepts/output-formats/zarr/direct-region.md +0 -154
- firecube-0.1.7/docs/concepts/output-formats/zarr/parallel-writes.md +0 -91
- firecube-0.1.7/docs/concepts/performance.md +0 -165
- firecube-0.1.7/docs/concepts/production-guide.md +0 -162
- firecube-0.1.7/docs/concepts/storage.md +0 -100
- firecube-0.1.7/docs/contributing/firecube-contributors.md +0 -159
- firecube-0.1.7/docs/guides/plugins/add-config-options.md +0 -142
- firecube-0.1.7/docs/guides/plugins/base-ingestor.md +0 -147
- firecube-0.1.7/docs/guides/plugins/configure-zarr-chunking.md +0 -129
- firecube-0.1.7/docs/guides/plugins/configure-zarr-compression.md +0 -123
- firecube-0.1.7/docs/guides/plugins/configure-zarr-sharding.md +0 -106
- firecube-0.1.7/docs/guides/plugins/direct-zarr-auto.md +0 -195
- firecube-0.1.7/docs/guides/plugins/direct-zarr.md +0 -250
- firecube-0.1.7/docs/guides/plugins/discover-zipped-data.md +0 -83
- firecube-0.1.7/docs/guides/plugins/generic-parquet.md +0 -116
- firecube-0.1.7/docs/guides/plugins/generic-zarr.md +0 -224
- firecube-0.1.7/docs/guides/plugins/multi-group-writes.md +0 -77
- firecube-0.1.7/docs/guides/plugins/paired-source-files.md +0 -200
- firecube-0.1.7/docs/guides/plugins/parse-filename-fields.md +0 -233
- firecube-0.1.7/docs/guides/plugins/source-discovery.md +0 -118
- firecube-0.1.7/docs/index.md +0 -66
- firecube-0.1.7/docs/operations/archive/create.md +0 -92
- firecube-0.1.7/docs/operations/archive/index.md +0 -43
- firecube-0.1.7/docs/operations/archive/inspect.md +0 -106
- firecube-0.1.7/docs/operations/archive/restore.md +0 -86
- firecube-0.1.7/docs/operations/chunk-manager/delete.md +0 -248
- firecube-0.1.7/docs/operations/chunk-manager/index.md +0 -64
- firecube-0.1.7/docs/operations/chunk-manager/post-crash-recovery.md +0 -206
- firecube-0.1.7/docs/operations/chunk-manager/recover.md +0 -220
- firecube-0.1.7/docs/operations/firecube-index.md +0 -178
- firecube-0.1.7/docs/operations/parallel-zarr-writes.md +0 -242
- firecube-0.1.7/docs/operations/s3-access.md +0 -80
- firecube-0.1.7/docs/quickstart/ingestion.md +0 -101
- firecube-0.1.7/docs/quickstart/source-data.md +0 -43
- firecube-0.1.7/docs/reference/control-plane-spec.md +0 -282
- firecube-0.1.7/docs/reference/core-utilities.md +0 -143
- firecube-0.1.7/docs/showcase/mtg-fci-l1c-benchmarks.ipynb +0 -572
- firecube-0.1.7/docs/showcase/netcdf-to-zarr-requirements.txt +0 -8
- firecube-0.1.7/docs/showcase/netcdf-to-zarr.ipynb +0 -538
- firecube-0.1.7/docs/showcase/requirements.txt +0 -7
- firecube-0.1.7/docs/showcase/sentinel3-fire-detections.ipynb +0 -15080
- firecube-0.1.7/mkdocs.yml +0 -217
- firecube-0.1.7/plans/DESIGN.md +0 -161
- firecube-0.1.7/plans/DONE.md +0 -2055
- firecube-0.1.7/plans/IDEAS.md +0 -333
- firecube-0.1.7/plans/RELEASE.md +0 -138
- firecube-0.1.7/plans/TEST.md +0 -163
- firecube-0.1.7/plans/TESTING_STANDARDS.md +0 -269
- firecube-0.1.7/plans/TEST_GAPS.md +0 -98
- firecube-0.1.7/plans/TODO.md +0 -617
- firecube-0.1.7/pyproject.toml +0 -158
- firecube-0.1.7/src/firecube/cli/_command_schemas.py +0 -115
- firecube-0.1.7/src/firecube/cli/_ctx.py +0 -85
- firecube-0.1.7/src/firecube/cli/_errors.py +0 -107
- firecube-0.1.7/src/firecube/cli/_input_filters.py +0 -88
- firecube-0.1.7/src/firecube/cli/_product.py +0 -47
- firecube-0.1.7/src/firecube/cli/_slot_planning.py +0 -200
- firecube-0.1.7/src/firecube/cli/_typed_options.py +0 -187
- firecube-0.1.7/src/firecube/cli/_uri_policy.py +0 -110
- firecube-0.1.7/src/firecube/cli/advise.py +0 -331
- firecube-0.1.7/src/firecube/cli/archive.py +0 -899
- firecube-0.1.7/src/firecube/cli/catalog.py +0 -202
- firecube-0.1.7/src/firecube/cli/chunks/_claims.py +0 -241
- firecube-0.1.7/src/firecube/cli/chunks/_delete.py +0 -467
- firecube-0.1.7/src/firecube/cli/chunks/_list.py +0 -349
- firecube-0.1.7/src/firecube/cli/chunks/_manager.py +0 -161
- firecube-0.1.7/src/firecube/cli/chunks/_runs.py +0 -317
- firecube-0.1.7/src/firecube/cli/index.py +0 -444
- firecube-0.1.7/src/firecube/cli/main.py +0 -959
- firecube-0.1.7/src/firecube/cli/parquet.py +0 -299
- firecube-0.1.7/src/firecube/cli/plugins/commands.py +0 -289
- firecube-0.1.7/src/firecube/cli/zarr/_common.py +0 -78
- firecube-0.1.7/src/firecube/cli/zarr/_consolidate.py +0 -798
- firecube-0.1.7/src/firecube/cli/zarr/_multires.py +0 -128
- firecube-0.1.7/src/firecube/cli/zarr/_preallocate.py +0 -860
- firecube-0.1.7/src/firecube/cli/zarr/_slots.py +0 -448
- firecube-0.1.7/src/firecube/cli/zarr/_validate.py +0 -242
- firecube-0.1.7/src/firecube/core/api.py +0 -186
- firecube-0.1.7/src/firecube/core/config.py +0 -346
- firecube-0.1.7/src/firecube/core/controlplane/_helpers.py +0 -114
- firecube-0.1.7/src/firecube/core/controlplane/_projection.py +0 -339
- firecube-0.1.7/src/firecube/core/controlplane/_snapshot.py +0 -215
- firecube-0.1.7/src/firecube/core/controlplane/claims.py +0 -306
- firecube-0.1.7/src/firecube/core/controlplane/deletion.py +0 -1314
- firecube-0.1.7/src/firecube/core/controlplane/manager.py +0 -1679
- firecube-0.1.7/src/firecube/core/controlplane/repo.py +0 -858
- firecube-0.1.7/src/firecube/core/controlplane/repo_utils.py +0 -73
- firecube-0.1.7/src/firecube/core/controlplane/time_dim.py +0 -111
- firecube-0.1.7/src/firecube/core/controlplane/types.py +0 -833
- firecube-0.1.7/src/firecube/core/duckdb/bridge.py +0 -82
- firecube-0.1.7/src/firecube/core/errors.py +0 -170
- firecube-0.1.7/src/firecube/core/filesystem/fsspec_backend.py +0 -354
- firecube-0.1.7/src/firecube/core/filesystem/obstore_backend.py +0 -435
- firecube-0.1.7/src/firecube/core/filesystem/ops.py +0 -465
- firecube-0.1.7/src/firecube/core/filesystem/protocol.py +0 -141
- firecube-0.1.7/src/firecube/core/filesystem/store_factory.py +0 -159
- firecube-0.1.7/src/firecube/core/formats/__init__.py +0 -46
- firecube-0.1.7/src/firecube/core/formats/_input_filters.py +0 -61
- firecube-0.1.7/src/firecube/core/formats/discovery.py +0 -213
- firecube-0.1.7/src/firecube/core/index_resolve.py +0 -733
- firecube-0.1.7/src/firecube/core/index_spec.py +0 -562
- firecube-0.1.7/src/firecube/core/indexed_write.py +0 -205
- firecube-0.1.7/src/firecube/core/intake.py +0 -552
- firecube-0.1.7/src/firecube/core/product/resolver.py +0 -121
- firecube-0.1.7/src/firecube/core/product/target.py +0 -120
- firecube-0.1.7/src/firecube/core/storage/completion.py +0 -257
- firecube-0.1.7/src/firecube/core/storage/results.py +0 -30
- firecube-0.1.7/src/firecube/core/storage/session.py +0 -432
- firecube-0.1.7/src/firecube/core/tensogram/converter.py +0 -390
- firecube-0.1.7/src/firecube/core/tensogram/metadata.py +0 -274
- firecube-0.1.7/src/firecube/core/tensogram/restore.py +0 -303
- firecube-0.1.7/src/firecube/core/uris.py +0 -182
- firecube-0.1.7/src/firecube/core/zarr/_coord_lifecycle.py +0 -77
- firecube-0.1.7/src/firecube/core/zarr/_drift.py +0 -306
- firecube-0.1.7/src/firecube/core/zarr/_reserved_attrs.py +0 -106
- firecube-0.1.7/src/firecube/core/zarr/_sealing_markers.py +0 -50
- firecube-0.1.7/src/firecube/core/zarr/chunk_geometry.py +0 -187
- firecube-0.1.7/src/firecube/core/zarr/coord_materialization.py +0 -637
- firecube-0.1.7/src/firecube/core/zarr/io.py +0 -88
- firecube-0.1.7/src/firecube/core/zarr/layers.py +0 -180
- firecube-0.1.7/src/firecube/core/zarr/multires.py +0 -182
- firecube-0.1.7/src/firecube/core/zarr/planning.py +0 -78
- firecube-0.1.7/src/firecube/core/zarr/region_writer.py +0 -1047
- firecube-0.1.7/src/firecube/core/zarr/state.py +0 -279
- firecube-0.1.7/src/firecube/core/zarr/time_decode.py +0 -118
- firecube-0.1.7/src/firecube/core/zarr/validation.py +0 -1490
- firecube-0.1.7/src/firecube/ingestor/config/coercion.py +0 -180
- firecube-0.1.7/src/firecube/ingestor/config/engine.py +0 -239
- firecube-0.1.7/src/firecube/ingestor/contracts/interfaces.py +0 -296
- firecube-0.1.7/src/firecube/ingestor/devtools/_templates/readme.md.tpl +0 -87
- firecube-0.1.7/src/firecube/ingestor/devtools/scaffolding.py +0 -459
- firecube-0.1.7/src/firecube/ingestor/errors.py +0 -252
- firecube-0.1.7/src/firecube/ingestor/runtime/base.py +0 -1102
- firecube-0.1.7/src/firecube/ingestor/runtime/batching.py +0 -196
- firecube-0.1.7/src/firecube/ingestor/runtime/configure.py +0 -200
- firecube-0.1.7/src/firecube/ingestor/runtime/engine.py +0 -913
- firecube-0.1.7/src/firecube/ingestor/runtime/index_binding.py +0 -317
- firecube-0.1.7/src/firecube/ingestor/runtime/parallel_gate.py +0 -220
- firecube-0.1.7/src/firecube/ingestor/runtime/recording.py +0 -700
- firecube-0.1.7/src/firecube/ingestor/runtime/resume_guard.py +0 -676
- firecube-0.1.7/src/firecube/ingestor/runtime/telemetry.py +0 -174
- firecube-0.1.7/src/firecube/ingestor/runtime/workspace.py +0 -252
- firecube-0.1.7/src/firecube/ingestor/runtime/zarr/append.py +0 -1141
- firecube-0.1.7/src/firecube/ingestor/runtime/zarr/append_failure.py +0 -272
- firecube-0.1.7/src/firecube/ingestor/runtime/zarr/append_order.py +0 -136
- firecube-0.1.7/src/firecube/ingestor/runtime/zarr/append_services.py +0 -1355
- firecube-0.1.7/src/firecube/ingestor/runtime/zarr/batch_runner.py +0 -233
- firecube-0.1.7/src/firecube/ingestor/runtime/zarr/existing_cube_check.py +0 -290
- firecube-0.1.7/src/firecube/ingestor/runtime/zarr/schema.py +0 -97
- firecube-0.1.7/src/firecube/ingestor/runtime/zarr/staged_metadata.py +0 -492
- firecube-0.1.7/src/firecube/ingestor/runtime/zarr/strategies/indexed_region.py +0 -1114
- firecube-0.1.7/src/firecube/ingestor/runtime/zarr/write.py +0 -670
- firecube-0.1.7/src/firecube/ingestor/templates/config.py +0 -361
- firecube-0.1.7/src/firecube/ingestor/templates/direct_zarr.py +0 -1515
- firecube-0.1.7/src/firecube/ingestor/templates/generic.py +0 -692
- firecube-0.1.7/src/firecube/ingestor/templates/generic_tensogram.py +0 -193
- firecube-0.1.7/src/firecube/ingestor/types/context.py +0 -562
- firecube-0.1.7/src/firecube/ingestor/types/planned_range.py +0 -162
- firecube-0.1.7/tests/README.md +0 -93
- firecube-0.1.7/tests/architecture/conftest.py +0 -22
- firecube-0.1.7/tests/architecture/test_core_independence.py +0 -70
- firecube-0.1.7/tests/architecture/test_fixture_plugin_list_consistency.py +0 -164
- firecube-0.1.7/tests/architecture/test_import_boundaries.py +0 -116
- firecube-0.1.7/tests/architecture/test_no_cli_inference.py +0 -140
- firecube-0.1.7/tests/architecture/test_no_naked_fill_value_comparison.py +0 -139
- firecube-0.1.7/tests/architecture/test_product_name_required.py +0 -44
- firecube-0.1.7/tests/architecture/test_storage_flows.py +0 -881
- firecube-0.1.7/tests/benchmarks/bench_resume_queries.py +0 -214
- firecube-0.1.7/tests/benchmarks/lazy_writeintent_harness/__init__.py +0 -13
- firecube-0.1.7/tests/benchmarks/lazy_writeintent_harness/conftest.py +0 -429
- firecube-0.1.7/tests/benchmarks/lazy_writeintent_harness/test_peak_retained_payload.py +0 -354
- firecube-0.1.7/tests/cli/test_archive_artifact_uri_contract.py +0 -73
- firecube-0.1.7/tests/cli/test_archive_create_contract.py +0 -99
- firecube-0.1.7/tests/cli/test_archive_restore_contract.py +0 -61
- firecube-0.1.7/tests/cli/test_audience_groups.py +0 -97
- firecube-0.1.7/tests/cli/test_catalog_intake_contract.py +0 -182
- firecube-0.1.7/tests/cli/test_chunks_manager_typed.py +0 -165
- firecube-0.1.7/tests/cli/test_chunks_storage_banner.py +0 -155
- firecube-0.1.7/tests/cli/test_click_error_boundary.py +0 -80
- firecube-0.1.7/tests/cli/test_ingest_decorator_consistency.py +0 -113
- firecube-0.1.7/tests/cli/test_parquet_consolidate_output_artifact.py +0 -56
- firecube-0.1.7/tests/cli/test_range_help_names_axis.py +0 -149
- firecube-0.1.7/tests/cli/test_rename_hints.py +0 -142
- firecube-0.1.7/tests/cli/test_uri_scheme_policy.py +0 -177
- firecube-0.1.7/tests/cli/test_zarr_multires_contract.py +0 -65
- firecube-0.1.7/tests/cli/test_zarr_validate_contract.py +0 -124
- firecube-0.1.7/tests/cli/test_zarr_validate_static_marker.py +0 -84
- firecube-0.1.7/tests/conftest.py +0 -290
- firecube-0.1.7/tests/fixtures/firecube_test_plugins/pyproject.toml +0 -52
- firecube-0.1.7/tests/fixtures/firecube_test_plugins/src/cf_time_dim_test_plugin/ingestor.py +0 -180
- firecube-0.1.7/tests/fixtures/firecube_test_plugins/src/irregular_axis_test_plugin/__init__.py +0 -309
- firecube-0.1.7/tests/fixtures/firecube_test_plugins/src/regular_axis_test_plugin/__init__.py +0 -343
- firecube-0.1.7/tests/fixtures/firecube_test_plugins/src/w14_single_discovery_plugin/__init__.py +0 -94
- firecube-0.1.7/tests/helpers/__init__.py +0 -14
- firecube-0.1.7/tests/helpers/storage.py +0 -200
- firecube-0.1.7/tests/helpers/test_storage_helpers.py +0 -155
- firecube-0.1.7/tests/integration/_staged_helpers.py +0 -138
- firecube-0.1.7/tests/integration/test_alignment_cli.py +0 -145
- firecube-0.1.7/tests/integration/test_append_failure_messages.py +0 -359
- firecube-0.1.7/tests/integration/test_append_group_attrs_first_write_wins.py +0 -125
- firecube-0.1.7/tests/integration/test_append_static_var_drift_raises.py +0 -193
- firecube-0.1.7/tests/integration/test_architecture_invariants.py +0 -516
- firecube-0.1.7/tests/integration/test_auto_discovery.py +0 -78
- firecube-0.1.7/tests/integration/test_byte_parity_existing_indexes.py +0 -183
- firecube-0.1.7/tests/integration/test_callable_payload_integration.py +0 -185
- firecube-0.1.7/tests/integration/test_cf_time_dim_value_dedup.py +0 -124
- firecube-0.1.7/tests/integration/test_cli_chunks_runs_target.py +0 -354
- firecube-0.1.7/tests/integration/test_cli_fresh_target_ingest.py +0 -149
- firecube-0.1.7/tests/integration/test_cli_index_rebuild.py +0 -559
- firecube-0.1.7/tests/integration/test_cli_index_show.py +0 -181
- firecube-0.1.7/tests/integration/test_cli_index_verify.py +0 -298
- firecube-0.1.7/tests/integration/test_cli_inference_baseline.py +0 -79
- firecube-0.1.7/tests/integration/test_cli_input_data_presence.py +0 -247
- firecube-0.1.7/tests/integration/test_cli_zarr_preallocate.py +0 -127
- firecube-0.1.7/tests/integration/test_cli_zarr_preallocate_slot_index.py +0 -299
- firecube-0.1.7/tests/integration/test_cli_zarr_preallocate_spec_attrs.py +0 -163
- firecube-0.1.7/tests/integration/test_compat_matrix.py +0 -130
- firecube-0.1.7/tests/integration/test_concurrent_same_product.py +0 -319
- firecube-0.1.7/tests/integration/test_consolidate_custom_time_dim.py +0 -191
- firecube-0.1.7/tests/integration/test_consolidate_error_wrapping.py +0 -78
- firecube-0.1.7/tests/integration/test_consolidate_time_coord_command.py +0 -337
- firecube-0.1.7/tests/integration/test_crash_recovery_bulk_sweep.py +0 -415
- firecube-0.1.7/tests/integration/test_cross_regime_marker_refusals.py +0 -161
- firecube-0.1.7/tests/integration/test_delete_span_collateral_guard.py +0 -246
- firecube-0.1.7/tests/integration/test_delete_span_region_nan_fill.py +0 -426
- firecube-0.1.7/tests/integration/test_direct_zarr_codec_cli_routing.py +0 -162
- firecube-0.1.7/tests/integration/test_direct_zarr_codec_end_to_end.py +0 -273
- firecube-0.1.7/tests/integration/test_direct_zarr_resolved_index.py +0 -276
- firecube-0.1.7/tests/integration/test_direct_zarr_shard_sharing_reproduction.py +0 -78
- firecube-0.1.7/tests/integration/test_discovery_obstore_single_object.py +0 -75
- firecube-0.1.7/tests/integration/test_e2e_time_dim_plugin.py +0 -237
- firecube-0.1.7/tests/integration/test_e2e_zarr_ingest_preflight_wiring.py +0 -329
- firecube-0.1.7/tests/integration/test_engine_ingest_with_peer_run.py +0 -443
- firecube-0.1.7/tests/integration/test_existing_cube_check_parallel_path.py +0 -125
- firecube-0.1.7/tests/integration/test_existing_cube_mismatch.py +0 -218
- firecube-0.1.7/tests/integration/test_force_reingest_region_overwrite.py +0 -190
- firecube-0.1.7/tests/integration/test_force_reingest_state.py +0 -754
- firecube-0.1.7/tests/integration/test_generic_zarr_codec_cli_defaults.py +0 -173
- firecube-0.1.7/tests/integration/test_horizon_growth_rejects_shape_drift.py +0 -185
- firecube-0.1.7/tests/integration/test_indexed_write_pipeline.py +0 -571
- firecube-0.1.7/tests/integration/test_ingest_command_typed.py +0 -240
- firecube-0.1.7/tests/integration/test_input_filters_cli.py +0 -229
- firecube-0.1.7/tests/integration/test_integer_axis_e2e.py +0 -239
- firecube-0.1.7/tests/integration/test_irregular_axis_pipeline.py +0 -459
- firecube-0.1.7/tests/integration/test_irregular_coord_materialization.py +0 -265
- firecube-0.1.7/tests/integration/test_legacy_slot_index_detection.py +0 -302
- firecube-0.1.7/tests/integration/test_maintenance_audit.py +0 -359
- firecube-0.1.7/tests/integration/test_maintenance_claims.py +0 -219
- firecube-0.1.7/tests/integration/test_manifest_explicit_null.py +0 -249
- firecube-0.1.7/tests/integration/test_marker_lifecycle.py +0 -203
- firecube-0.1.7/tests/integration/test_multiprocess_race_managed_coord.py +0 -266
- firecube-0.1.7/tests/integration/test_obstore_claim_atomicity.py +0 -207
- firecube-0.1.7/tests/integration/test_off_grid_floor_ingest_e2e.py +0 -334
- firecube-0.1.7/tests/integration/test_parallel_materialize.py +0 -294
- firecube-0.1.7/tests/integration/test_parquet_drivers.py +0 -234
- firecube-0.1.7/tests/integration/test_phase3_5_blocked_ranges.py +0 -124
- firecube-0.1.7/tests/integration/test_planner_window_alignment.py +0 -212
- firecube-0.1.7/tests/integration/test_plugin_config_validated.py +0 -142
- firecube-0.1.7/tests/integration/test_post_write_integrity_guard.py +0 -193
- firecube-0.1.7/tests/integration/test_preallocate_auto_rebuild.py +0 -162
- firecube-0.1.7/tests/integration/test_preallocate_claim_release_on_terminal_failure.py +0 -363
- firecube-0.1.7/tests/integration/test_preallocate_empty_discovery.py +0 -196
- firecube-0.1.7/tests/integration/test_preallocate_error_wrapping.py +0 -151
- firecube-0.1.7/tests/integration/test_preallocate_idempotent.py +0 -458
- firecube-0.1.7/tests/integration/test_preallocate_marker_at_creation.py +0 -228
- firecube-0.1.7/tests/integration/test_preallocate_recovery.py +0 -412
- firecube-0.1.7/tests/integration/test_preallocate_regular_axis_dense.py +0 -607
- firecube-0.1.7/tests/integration/test_preallocate_release_failure.py +0 -265
- firecube-0.1.7/tests/integration/test_preallocate_slot_group_env.py +0 -319
- firecube-0.1.7/tests/integration/test_resolved_index_precedence_matrix.py +0 -321
- firecube-0.1.7/tests/integration/test_resume_refills_state2_hole.py +0 -159
- firecube-0.1.7/tests/integration/test_run_terminal_slot_preservation.py +0 -240
- firecube-0.1.7/tests/integration/test_serial_peer_blocks_materializer.py +0 -176
- firecube-0.1.7/tests/integration/test_serial_unbounded_axis.py +0 -150
- firecube-0.1.7/tests/integration/test_slots_auto_input_data.py +0 -133
- firecube-0.1.7/tests/integration/test_staged_mode_template_parity.py +0 -652
- firecube-0.1.7/tests/integration/test_staged_partial_chunk_preserves_data.py +0 -228
- firecube-0.1.7/tests/integration/test_staged_retains_all_batches.py +0 -214
- firecube-0.1.7/tests/integration/test_storage_driver_integration.py +0 -277
- firecube-0.1.7/tests/integration/test_stored_chunk_coverage.py +0 -120
- firecube-0.1.7/tests/integration/test_tensogram_archive.py +0 -457
- firecube-0.1.7/tests/integration/test_timestamps_skipped_surfaces.py +0 -175
- firecube-0.1.7/tests/integration/test_upload_tree_hard_fail.py +0 -251
- firecube-0.1.7/tests/integration/test_zarr_default_compressed_resume.py +0 -182
- firecube-0.1.7/tests/integration/test_zarr_index_show_derived.py +0 -257
- firecube-0.1.7/tests/integration/test_zarr_preallocate_dry_run.py +0 -161
- firecube-0.1.7/tests/integration/test_zero_input_no_firecube_created.py +0 -189
- firecube-0.1.7/tests/unit/_helpers/counting_fs.py +0 -128
- firecube-0.1.7/tests/unit/ingestor/extensions/test_grid.py +0 -79
- firecube-0.1.7/tests/unit/ingestor/extensions/test_healpix.py +0 -155
- firecube-0.1.7/tests/unit/test_advise_cli.py +0 -102
- firecube-0.1.7/tests/unit/test_anonymous_config_file.py +0 -93
- firecube-0.1.7/tests/unit/test_anonymous_env.py +0 -103
- firecube-0.1.7/tests/unit/test_append_coverage_builder_time_decode.py +0 -127
- firecube-0.1.7/tests/unit/test_append_overwrite_errors.py +0 -77
- firecube-0.1.7/tests/unit/test_append_region_overwrite.py +0 -213
- firecube-0.1.7/tests/unit/test_append_regression.py +0 -752
- firecube-0.1.7/tests/unit/test_append_stale_consolidated_metadata.py +0 -210
- firecube-0.1.7/tests/unit/test_append_state_aware_overlap.py +0 -404
- firecube-0.1.7/tests/unit/test_append_write_executor.py +0 -132
- firecube-0.1.7/tests/unit/test_as_resolved_index_record.py +0 -201
- firecube-0.1.7/tests/unit/test_bare_glob_via_coerce.py +0 -69
- firecube-0.1.7/tests/unit/test_base_aggregate_contract.py +0 -128
- firecube-0.1.7/tests/unit/test_batching_metadata.py +0 -66
- firecube-0.1.7/tests/unit/test_bulk_abandon_stale_runs.py +0 -777
- firecube-0.1.7/tests/unit/test_bulk_clear_stale_claims.py +0 -548
- firecube-0.1.7/tests/unit/test_catalog_intake.py +0 -272
- firecube-0.1.7/tests/unit/test_cf_validator.py +0 -369
- firecube-0.1.7/tests/unit/test_chunk_geometry.py +0 -162
- firecube-0.1.7/tests/unit/test_chunk_manager.py +0 -799
- firecube-0.1.7/tests/unit/test_chunk_manager_queries.py +0 -228
- firecube-0.1.7/tests/unit/test_chunk_manager_resolved_index.py +0 -216
- firecube-0.1.7/tests/unit/test_chunk_manager_slot_index.py +0 -438
- firecube-0.1.7/tests/unit/test_chunks_list_cli.py +0 -181
- firecube-0.1.7/tests/unit/test_claims_clear_product_mismatch.py +0 -178
- firecube-0.1.7/tests/unit/test_cli_archive_safety.py +0 -202
- firecube-0.1.7/tests/unit/test_cli_chunks_delete.py +0 -113
- firecube-0.1.7/tests/unit/test_cli_completion.py +0 -45
- firecube-0.1.7/tests/unit/test_cli_errors.py +0 -79
- firecube-0.1.7/tests/unit/test_cli_output_options.py +0 -134
- firecube-0.1.7/tests/unit/test_cli_runs_all_stale.py +0 -192
- firecube-0.1.7/tests/unit/test_cli_slot_planning.py +0 -114
- firecube-0.1.7/tests/unit/test_cli_zarr_preallocate.py +0 -229
- firecube-0.1.7/tests/unit/test_cli_zarr_preallocate_static.py +0 -67
- firecube-0.1.7/tests/unit/test_cli_zarr_slots.py +0 -469
- firecube-0.1.7/tests/unit/test_codec_semantic_matrix.py +0 -239
- firecube-0.1.7/tests/unit/test_coerce_append_value.py +0 -54
- firecube-0.1.7/tests/unit/test_compare_zarr_stores.py +0 -269
- firecube-0.1.7/tests/unit/test_compute_schema_hash.py +0 -214
- firecube-0.1.7/tests/unit/test_config.py +0 -48
- firecube-0.1.7/tests/unit/test_config_file_strict.py +0 -127
- firecube-0.1.7/tests/unit/test_context_hook_signature_validation.py +0 -82
- firecube-0.1.7/tests/unit/test_controlplane_types.py +0 -293
- firecube-0.1.7/tests/unit/test_coord_chunks.py +0 -57
- firecube-0.1.7/tests/unit/test_coord_lifecycle.py +0 -71
- firecube-0.1.7/tests/unit/test_coverage_tracker.py +0 -166
- firecube-0.1.7/tests/unit/test_credentials.py +0 -67
- firecube-0.1.7/tests/unit/test_default_suffixes_include_common_hdf5_families.py +0 -41
- firecube-0.1.7/tests/unit/test_deletion_alignment_from_store.py +0 -411
- firecube-0.1.7/tests/unit/test_deletion_engine_errors.py +0 -63
- firecube-0.1.7/tests/unit/test_deletion_missing_key_not_error.py +0 -135
- firecube-0.1.7/tests/unit/test_deletion_time_dim_resolution.py +0 -393
- firecube-0.1.7/tests/unit/test_direct_zarr_ingestor.py +0 -550
- firecube-0.1.7/tests/unit/test_direct_zarr_parallel_contract.py +0 -56
- firecube-0.1.7/tests/unit/test_direct_zarr_per_slot_claims.py +0 -263
- firecube-0.1.7/tests/unit/test_direct_zarr_slot_index_subclass.py +0 -99
- firecube-0.1.7/tests/unit/test_direct_zarr_time_dim_wiring.py +0 -211
- firecube-0.1.7/tests/unit/test_discover_empty_source_fails.py +0 -184
- firecube-0.1.7/tests/unit/test_discovery_file_uri_hdf5_sniff.py +0 -64
- firecube-0.1.7/tests/unit/test_driver_parity_deletion.py +0 -218
- firecube-0.1.7/tests/unit/test_driver_parity_zarr_to_tgm.py +0 -83
- firecube-0.1.7/tests/unit/test_duckdb_bridge.py +0 -131
- firecube-0.1.7/tests/unit/test_duckdb_capability_check.py +0 -150
- firecube-0.1.7/tests/unit/test_engine_config_slot_group_warning.py +0 -48
- firecube-0.1.7/tests/unit/test_engine_fail_stop.py +0 -318
- firecube-0.1.7/tests/unit/test_engine_failure_handling.py +0 -103
- firecube-0.1.7/tests/unit/test_engine_resilience.py +0 -326
- firecube-0.1.7/tests/unit/test_engine_sequential_slot_filter_call.py +0 -179
- firecube-0.1.7/tests/unit/test_engine_time_dim_hook.py +0 -63
- firecube-0.1.7/tests/unit/test_epoch_parse_helper.py +0 -64
- firecube-0.1.7/tests/unit/test_filesystem_capabilities.py +0 -133
- firecube-0.1.7/tests/unit/test_fsspec_atomic_writer.py +0 -403
- firecube-0.1.7/tests/unit/test_generic_template_logging.py +0 -103
- firecube-0.1.7/tests/unit/test_global_expected_coverage.py +0 -299
- firecube-0.1.7/tests/unit/test_group_identity_hash.py +0 -147
- firecube-0.1.7/tests/unit/test_index_binding_filter.py +0 -115
- firecube-0.1.7/tests/unit/test_index_ensured_event.py +0 -98
- firecube-0.1.7/tests/unit/test_index_ensured_telemetry.py +0 -388
- firecube-0.1.7/tests/unit/test_index_resolve_byte_parity.py +0 -97
- firecube-0.1.7/tests/unit/test_index_resolve_irregular.py +0 -52
- firecube-0.1.7/tests/unit/test_index_spec.py +0 -99
- firecube-0.1.7/tests/unit/test_indexed_region_custom_dim.py +0 -84
- firecube-0.1.7/tests/unit/test_indexed_region_schema_claim.py +0 -92
- firecube-0.1.7/tests/unit/test_indexed_region_slot_group.py +0 -197
- firecube-0.1.7/tests/unit/test_indexed_region_static_dispatch.py +0 -322
- firecube-0.1.7/tests/unit/test_indexed_region_strategy_ordering.py +0 -108
- firecube-0.1.7/tests/unit/test_indexed_write.py +0 -128
- firecube-0.1.7/tests/unit/test_indexed_write_compile.py +0 -259
- firecube-0.1.7/tests/unit/test_indexed_write_compile_matrix.py +0 -397
- firecube-0.1.7/tests/unit/test_indexed_write_exception.py +0 -82
- firecube-0.1.7/tests/unit/test_ingest_command_config.py +0 -163
- firecube-0.1.7/tests/unit/test_input_filters.py +0 -207
- firecube-0.1.7/tests/unit/test_intake_catalog_entry_args.py +0 -67
- firecube-0.1.7/tests/unit/test_integer_axis.py +0 -79
- firecube-0.1.7/tests/unit/test_integer_resolver.py +0 -84
- firecube-0.1.7/tests/unit/test_list_runs_is_wal_scan_free_after_terminal.py +0 -118
- firecube-0.1.7/tests/unit/test_manifest_repo_cache.py +0 -72
- firecube-0.1.7/tests/unit/test_materialize_irregular_coord_array.py +0 -299
- firecube-0.1.7/tests/unit/test_materialize_regular_coord_array.py +0 -267
- firecube-0.1.7/tests/unit/test_multi_group_fixture.py +0 -73
- firecube-0.1.7/tests/unit/test_netcdf_utils.py +0 -469
- firecube-0.1.7/tests/unit/test_no_raw_fsspec_usage.py +0 -785
- firecube-0.1.7/tests/unit/test_otel_lifecycle.py +0 -159
- firecube-0.1.7/tests/unit/test_output_name_rejected.py +0 -35
- firecube-0.1.7/tests/unit/test_parallel_gate_slot_group.py +0 -171
- firecube-0.1.7/tests/unit/test_parallel_run_id.py +0 -61
- firecube-0.1.7/tests/unit/test_parallel_run_id_path_safety.py +0 -56
- firecube-0.1.7/tests/unit/test_parallel_schema_sizing.py +0 -266
- firecube-0.1.7/tests/unit/test_per_array_codec_override.py +0 -207
- firecube-0.1.7/tests/unit/test_pipeline_result_typed_metrics.py +0 -92
- firecube-0.1.7/tests/unit/test_planned_range.py +0 -76
- firecube-0.1.7/tests/unit/test_plugin_scaffolding.py +0 -587
- firecube-0.1.7/tests/unit/test_pod_startup_phantom_group.py +0 -187
- firecube-0.1.7/tests/unit/test_pod_startup_schema_verification.py +0 -262
- firecube-0.1.7/tests/unit/test_pre_batch_filter.py +0 -279
- firecube-0.1.7/tests/unit/test_product_resolver.py +0 -59
- firecube-0.1.7/tests/unit/test_product_target.py +0 -160
- firecube-0.1.7/tests/unit/test_ranges_overlap_helper.py +0 -37
- firecube-0.1.7/tests/unit/test_read_hdf5_array_dtype.py +0 -107
- firecube-0.1.7/tests/unit/test_region_writer_fill_helpers.py +0 -80
- firecube-0.1.7/tests/unit/test_region_zarr_writer.py +0 -364
- firecube-0.1.7/tests/unit/test_resume_guard.py +0 -329
- firecube-0.1.7/tests/unit/test_resume_guard_enforce_op_counts.py +0 -169
- firecube-0.1.7/tests/unit/test_resume_guard_group_aware.py +0 -114
- firecube-0.1.7/tests/unit/test_resume_guard_slot_ranges.py +0 -189
- firecube-0.1.7/tests/unit/test_run_id_slot_parser.py +0 -77
- firecube-0.1.7/tests/unit/test_schema_verification_audit.py +0 -103
- firecube-0.1.7/tests/unit/test_seed_touched_data_chunks.py +0 -256
- firecube-0.1.7/tests/unit/test_serial_unbounded_axis.py +0 -135
- firecube-0.1.7/tests/unit/test_session_upload_tree.py +0 -476
- firecube-0.1.7/tests/unit/test_setup_global_zarr_schema_concurrent.py +0 -118
- firecube-0.1.7/tests/unit/test_slot_index_model.py +0 -207
- firecube-0.1.7/tests/unit/test_slot_index_record.py +0 -280
- firecube-0.1.7/tests/unit/test_state_dim_threading.py +0 -62
- firecube-0.1.7/tests/unit/test_storage_cache_key.py +0 -98
- firecube-0.1.7/tests/unit/test_storage_completion.py +0 -237
- firecube-0.1.7/tests/unit/test_storage_config_anonymous.py +0 -203
- firecube-0.1.7/tests/unit/test_storage_errors.py +0 -74
- firecube-0.1.7/tests/unit/test_storage_metadata.py +0 -217
- firecube-0.1.7/tests/unit/test_telemetry_schema_snapshot.py +0 -114
- firecube-0.1.7/tests/unit/test_tensogram_cli.py +0 -122
- firecube-0.1.7/tests/unit/test_tensogram_core.py +0 -485
- firecube-0.1.7/tests/unit/test_tensogram_ingest.py +0 -134
- firecube-0.1.7/tests/unit/test_tensogram_input.py +0 -77
- firecube-0.1.7/tests/unit/test_tensogram_time_dim.py +0 -129
- firecube-0.1.7/tests/unit/test_time_axis_declaration.py +0 -155
- firecube-0.1.7/tests/unit/test_time_coord_consolidations_scan.py +0 -323
- firecube-0.1.7/tests/unit/test_time_decode.py +0 -159
- firecube-0.1.7/tests/unit/test_typed_options_param.py +0 -92
- firecube-0.1.7/tests/unit/test_unsorted_existing_refused.py +0 -129
- firecube-0.1.7/tests/unit/test_uri_handling.py +0 -187
- firecube-0.1.7/tests/unit/test_uris.py +0 -83
- firecube-0.1.7/tests/unit/test_validate_chunk_alignment_terminal.py +0 -55
- firecube-0.1.7/tests/unit/test_validate_directzarr_passes.py +0 -112
- firecube-0.1.7/tests/unit/test_validate_time_coord_uniqueness.py +0 -135
- firecube-0.1.7/tests/unit/test_validate_zarr_specs_against_template.py +0 -156
- firecube-0.1.7/tests/unit/test_verify_array_spec.py +0 -284
- firecube-0.1.7/tests/unit/test_verify_array_spec_codec_drift.py +0 -108
- firecube-0.1.7/tests/unit/test_wal_reader_run_id_safety.py +0 -119
- firecube-0.1.7/tests/unit/test_workspace_manager.py +0 -55
- firecube-0.1.7/tests/unit/test_write_intent_kinds.py +0 -34
- firecube-0.1.7/tests/unit/test_write_mode_policy.py +0 -238
- firecube-0.1.7/tests/unit/test_writeintent_callable_dispatch.py +0 -431
- firecube-0.1.7/tests/unit/test_zarr_array_spec_codec_fields.py +0 -70
- firecube-0.1.7/tests/unit/test_zarr_array_spec_new_fields.py +0 -151
- firecube-0.1.7/tests/unit/test_zarr_codec_mutual_exclusion.py +0 -61
- firecube-0.1.7/tests/unit/test_zarr_drift.py +0 -463
- firecube-0.1.7/tests/unit/test_zarr_encoding_time_chunk_honored.py +0 -157
- firecube-0.1.7/tests/unit/test_zarr_group_attrs.py +0 -149
- firecube-0.1.7/tests/unit/test_zarr_multi_res_config_rejected.py +0 -103
- firecube-0.1.7/tests/unit/test_zarr_staged_metadata.py +0 -452
- firecube-0.1.7/tests/unit/test_zarr_validation.py +0 -221
- firecube-0.1.7/tests/unit/test_zarr_write_context.py +0 -124
- firecube-0.1.7/tests/unit/test_zarr_write_empty_chunks.py +0 -155
- firecube-0.1.7/uv.lock +0 -4141
- {firecube-0.1.7 → firecube-0.1.8}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.github/ISSUE_TEMPLATE/2-feature_request.yml +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.github/dependabot.yml +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.github/workflows/ci.yml +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.github/workflows/docs-deploy.yml +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.github/workflows/publish.yml +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.gitignore +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/address-pr-comments.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/doc-fact-check.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/docs-policy.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/improve-code-coverage.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/improve-edge-cases.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/improve-error-handling.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/make-further-pass.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/prepare-make-pr.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/write-internal-doc.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/write-operator-doc.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/write-plugin-doc.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/.prompts/write-user-doc.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/AUTHORS.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/CLAUDE.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/CODE_OF_CONDUCT.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/LICENSE +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/Makefile +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/dist/.gitignore +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/_macros.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/firecube-amblem-white.png +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/firecube-amblem-white.png.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/firecube-favicon.png +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/firecube-favicon.png.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/firecube-logo-title-2x.png +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/firecube-logo-title-2x.png.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/firecube-logo-title.png +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/firecube-logo-title.png.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-chunkmanager-records.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-chunkmanager-records.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-concepts-flow.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-concepts-flow.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-direct-zarr-golden-path.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-direct-zarr-golden-path.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-direct-zarr-region.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-direct-zarr-region.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-execution-shapes.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-execution-shapes.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-external-orchestrator-contract.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-external-orchestrator-contract.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-generic-zarr-append.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-generic-zarr-append.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-generic-zarr-parallel-groups.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-generic-zarr-parallel-groups.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-observability-signals.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-observability-signals.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-orchestration-overview.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-orchestration-overview.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-orchestration-write-safety.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-orchestration-write-safety.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-output-format-choice.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-output-format-choice.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-parallel-zarr-slots.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-parallel-zarr-slots.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-parallelism-models.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-parallelism-models.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-parquet-file-layout.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-parquet-file-layout.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-performance-bottlenecks.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-performance-bottlenecks.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-plugin-authoring-flow.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-plugin-authoring-flow.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-storage-chunkmanager-flow.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-storage-chunkmanager-flow.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-tensogram-flow.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-tensogram-flow.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-time-axis-ownership.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-time-axis-ownership.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-tutorial-direct-zarr-slots.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-tutorial-direct-zarr-slots.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-tutorial-netcdf-zarr.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-tutorial-netcdf-zarr.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-tutorial-zip-parquet.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-tutorial-zip-parquet.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-zarr-store-layout.svg +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/firecube-zarr-store-layout.svg.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/mtg-fci-benchmark-preview.png +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/mtg-fci-benchmark-preview.png.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/netcdf-to-zarr-preview.png +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/netcdf-to-zarr-preview.png.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/sentinel3-frp-preview.png +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/images/sentinel3-frp-preview.png.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/assets/stylesheets/showcase.css +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/benchmarks.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/best-practices.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/chunk-management.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/chunkmanager.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/configuration.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/observability/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/observability/metrics.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/orchestration/execution-shapes.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/orchestration/external-orchestrator.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/orchestration/write-safety.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/output-formats/archive.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/output-formats/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/output-formats/parquet.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/output-formats/zarr/generic-append.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/output-formats/zarr/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/parallelism.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/plugins/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/concepts/reproducibility.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/contributing/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/guides/plugins/contract.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/guides/plugins/create-a-plugin.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/guides/plugins/customize-source-discovery.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/guides/plugins/extensions.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/guides/plugins/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/guides/plugins/install-a-plugin.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/guides/plugins/observability.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/operations/chunk-manager/inspect.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/operations/chunk-manager/snapshots.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/operations/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/operations/intake-catalog.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/operations/zarr-compare.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/quickstart/catalogs.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/quickstart/configuration.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/quickstart/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/quickstart/installation.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/quickstart/plugins.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/cli.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/config.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/context.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/exceptions.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/extensions.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/hooks.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/observability.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/parallelism.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/storage-drivers.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/reference/templates.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/showcase/benchmark-requirements.txt +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/docs/showcase/index.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/plans/STYLE.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/__main__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/_version.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/_audience.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/_formatter.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/_rename_hints.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/_shared_options.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/_slot_env.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/chunks/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/chunks/_common.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/chunks/_snapshots.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/completion.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/plugins/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/plugins/introspect.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/plugins/mgmt.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/plugins/registry.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/cli/zarr/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/batch_registry.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/cf/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/cf/check_ids.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/cf/report.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/cf/validator.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/controlplane/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/controlplane/_event_processor.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/controlplane/_paths.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/controlplane/_wal_reader.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/controlplane/_wal_writer.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/controlplane/events.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/controlplane/metrics.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/controlplane/ranges.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/credentials.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/duckdb/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/duckdb/io.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/filesystem/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/filesystem/_obstore_compat.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/filesystem/instrumentation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/formats/_iso.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/formats/hdf5.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/formats/netcdf.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/formats/zip.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/observability/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/observability/_state.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/observability/logging.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/observability/metrics.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/observability/telemetry/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/observability/telemetry/pushgateway.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/observability/telemetry/sinks.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/observability/tracing.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/product/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/product/identity.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/runtime.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/slot_index.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/storage/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/storage/binding.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/storage/cache_key.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/storage/driver_config.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/storage/transfer.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/storage/uri.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/tensogram/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/tensogram/_compat.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/tensogram/controlplane_codec.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/tensogram/schema.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/workspaces.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/zarr/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/zarr/_coord_chunks.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/zarr/_reserved_root_attrs.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/zarr/codec_pipeline.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/core/zarr/scrub.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/api.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/config/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/contracts/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/devtools/_templates/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/devtools/_templates/ingestor_base.py.tpl +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/devtools/_templates/ingestor_direct_zarr.py.tpl +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/devtools/_templates/ingestor_parquet.py.tpl +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/devtools/_templates/ingestor_zarr.py.tpl +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/extensions/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/extensions/_binning.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/extensions/duck.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/extensions/grid.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/extensions/healpix.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/extensions/patterns.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/registry/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/registry/loader.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/registry/metadata.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/registry/version_compat.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/_metrics_helpers.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/aggregation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/base_hooks.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/coverage.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/output_guard.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/parallel_evidence.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/parallel_execution_state.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/parallel_run_id.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/preflight.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/resume_types.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/tensogram/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/tensogram/strategy.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/zarr/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/zarr/alignment.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/zarr/contracts.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/zarr/ordered_gate.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/zarr/resume_cache.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/zarr/strategies/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/zarr/strategies/append.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/runtime/zarr/write_context.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/templates/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/templates/_parquet.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/types/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/types/config.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/types/manifest.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/types/result_metrics.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/utils/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/utils/duckdb_utils.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/ingestor/validation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/py.typed +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/src/firecube/py.typed.ABOUT +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_chunks_manager_no_parent_reconstruction.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_cli_no_private_cross_subsystem_imports.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_no_dead_force_reingest.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_no_internal_output_path_reads.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_no_planning_notation_leaks.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_no_raw_pd_timestamp_numeric.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_no_storage_config_subclasses.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_no_unguarded_time_count_substitution.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_plugin_isolation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_scaffold_license_headers.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_storage_driver_config_boundary.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_storage_redaction.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_storage_type_coherence.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_template_config_class_declared.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_typed_pipeline_result.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_wal_release_fixture.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/architecture/test_wal_schema_backward_compat.py +0 -0
- {firecube-0.1.7/tests/benchmarks → firecube-0.1.8/tests/cli}/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/_cli_introspection.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/_command_contracts.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/conftest.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_advise_batch_size_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_advise_compliance_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_archive_no_double_pass.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_chunks_list_no_info_json_line.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_cli_contract_matrix.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_cli_introspection_drift.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_help_conformance.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_parquet_validate_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_per_command_contracts.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_runs_list_slot_fields.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_shared_options.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_write_mode_error_message.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_zarr_compare.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/cli/test_zarr_slots_static_owner.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/cf_dataset_fixtures.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/demo_plugin/pyproject.toml +0 -0
- {firecube-0.1.7/tests/cli → firecube-0.1.8/tests/fixtures/demo_plugin/src/demo_plugin}/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/demo_plugin/src/demo_plugin/plugin.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/demo_plugin/src/demo_plugin/plugin_cli.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/callable_payload_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/cf_time_dim_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/cli_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/direct_zarr_capable_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/direct_zarr_non_capable_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/e2e_zarr_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/e2e_zarr_test_plugin/ingestor.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/index_spec_integer_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/index_spec_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/indexed_write_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/mixed_bounded_unbounded_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/multi_group_capable_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/precip_daily_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/precip_daily_test_plugin/ingestor.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/src/slot_shape_test_plugin/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/tests/callable_payload_test_plugin/test_safe_ingestor.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/tests/callable_payload_test_plugin/test_static_resume_documented_behavior.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/tests/callable_payload_test_plugin/test_unsafe_ingestor.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/tests/indexed_write_test_plugin/test_indexed_write_ingestor.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/firecube_test_plugins/tests/irregular_axis_test_plugin/test_ingestor.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/gen_synthetic_precip_daily.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/test_stub_ingestor/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/test_stub_ingestor/plugin.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/test_stub_ingestor/run_firecube.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/wal_v0.1.5/README.md +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/wal_v0.1.5/events_sample.jsonl +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/fixtures/wal_v0.1.5/events_sample.jsonl.ABOUT +0 -0
- {firecube-0.1.7/tests/fixtures/demo_plugin/src/demo_plugin → firecube-0.1.8/tests/helpers}/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/ingestor/test_config_architecture.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/ingestor/test_refactor_safeties.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/_bt_helpers.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_append_coordinate_safety.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_append_failed_batch_repair.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_append_ordered_commit.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_append_strategy_behavior.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_archive_drivers.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_archive_remote.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_archive_restore_audit.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_catalog_intake_anonymous.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_cf_time_dim_telemetry.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_cli_advise_compliance.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_cli_chunks_fallback_unchanged.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_cli_chunks_s3_basename_mismatch.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_cli_chunks_storage_config_fallback.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_cli_plugin_shims.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_cli_zarr_preallocate_lifecycle.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_cli_zarr_preallocate_typed_config.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_concurrent_preallocate_race.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_consolidate_partial_recovery.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_consolidate_s3_refusal.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_consolidate_time_coord_dry_run.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_consolidate_wal_backfill.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_convergence_policy_alignment.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_direct_zarr_index_spec_integration.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_direct_zarr_parity_slot_range.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_direct_zarr_schema_claim_retry.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_direct_zarr_startup_slot_index.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_direct_zarr_xr_open_roundtrip.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_driver_compliance_vertical_slice.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_dryrun_no_maintenance_run.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_dtype_subsecond_no_false_drift.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_engine_failed_batch_wal.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_existing_cube_check_directzarr.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_existing_cube_check_multigroup_plugin.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_existing_cube_check_static_arrays.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_fillvalue_attribute.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_frozen_index_safety.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_group_hash_survives_consolidate.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_group_hash_survives_staged_seed.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_index_rebuild_unbounded.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_index_show_derived_label.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_index_spec_recursion_regression.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_indexed_region_behavior.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_ingest_anonymous_moto.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_mixed_spec_skip_persistence.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_observed_coord_reconciliation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_obstore_s3_keys.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_obstore_streaming_upload.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_one_driver_invariant.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_open_time_default_reader.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_ordering_pollution_regression.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_otel_context_concurrency.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_parquet_target_safety.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_partial_replacement_via_overwrites_meta.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_per_group_identity_restore.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_phase2_behavior_preserved.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_phase3_2_multi_group_run_isolation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_phase3_3_encoded_run_id_lifecycle.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_phase3_3_phantom_group_e2e.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_phase3_3_plan_to_ingest_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_phase3_3_sequential_slot_filter.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_phase3_4_cli_phantom_group.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_phase3_single_group_preserved.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_pipeline_manifest_creation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_plugin_lifecycle.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_post_write_integrity_guard_coord_values.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_preallocate_end_date_bounded.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_preallocate_epilog_wording.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_preallocate_input_data_routing.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_preallocate_parallel_zero_loss.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_preallocate_unbounded_axis.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_prefill_verify_first.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_prefill_window_scoped.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_resolved_index_concurrency.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_slot_index_concurrency.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_slot_index_fixture_plugins.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_slot_index_non_parallel.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_slot_index_precedence_matrix.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_slot_index_s3_precondition_retry.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_staged_force_reingest_chunk_integrity.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_staged_reoffer_skip_isolation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_staged_seed_publish_s3.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_staged_write_resume.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_static_intent_nan_fill.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_static_spec_shape_preservation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_static_suppression.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_version_compat.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_wal_concurrent_ordering.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_workspace_materialization_race.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_xarray_open_cost.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_zarr_codec_end_to_end.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/integration/test_zarr_preallocate_codec_cli.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/scripts/create_legacy_cube.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/scripts/create_legacy_cube_with_nat.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/sdk/test_api_docs_coverage.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/sdk/test_control_plane_spec_consistency.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/sdk/test_facade_exports.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/sdk/test_plugin_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/sdk/test_public_api_surface.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/sdk/test_py_typed_marker.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/sdk/test_reference_pages_stay_generated.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/sdk/test_scratch_module_deleted.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/test_zarr_sharding.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/_helpers/__init__.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/_helpers/conftest.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/_helpers/test_counting_fs.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/ingestor/extensions/test_lazy_duckdb.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/ingestor/extensions/test_patterns.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/ingestor/runtime/test_output_resolution.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/ingestor/types/test_ingest_context.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/ingestor/types/test_ingest_context_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/observability/test_factory.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/observability/test_label_sanitization.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/observability/test_protocol_surface.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/observability/test_pushgateway_emit.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/observability/test_pushgateway_flush.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/observability/test_pushgateway_labels.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_alignment_warn.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_all_arrays_chunk_alignment.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_configured_state_array.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_coverage_builder.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_indexed_coordinate_helper.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_resume_service.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_services_custom_dim.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_services_require_time_dim.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_state_dim_propagation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_strategy.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_strategy_custom_dim.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_timestamp_state.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_append_with_custom_time_dim.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_batch_registry.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_batch_runner.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_batching_index_metadata.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_build_write_intents_compilation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cf_dataset_fixtures.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cf_report.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_chunk_event_writer.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_chunk_honored_larger_than_batch.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_chunks_admin_cli.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_chunks_manager_factory.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_claim_heartbeat_warning.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_claims_stale_query.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_audience.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_bridge_consumers.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_chunks_claims.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_chunks_delete_time_range_option.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_chunks_runs.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_chunks_snapshots.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_claims_all_stale.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_shared_options.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_slot_group.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_slot_range_env_discovery.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_slot_range_options.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cli_zarr_multires.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_codec_pipeline_normalization.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_concurrency.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_consolidated_time_coord_event.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_context_mutation_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_controlplane_events.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_cooperative_batch_hooks.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_coverage_tracker_custom_dim.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_ctx_escape_removed.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_data_chunk_seeding_call_order.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_dataset_for_batch_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_deletion_dim_lookup.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_derive_target_uri.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_direct_zarr_contract_stability.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_direct_zarr_parallel_capability.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_domain_defaults_removed.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_driver_parity_append_resume.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_driver_parity_cli.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_driver_parity_storage_session.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_driver_parity_validation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_driver_parity_write_zarr.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_duckdb_tier_scoping.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_emit_index_ensured_full.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_encode_time_array.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_engine_config_allow_empty_source.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_engine_config_slot_range.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_engine_prefix_preservation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_engine_typed_result_access.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_ensure_group_new_kwargs.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_env_var_compatibility.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_errors_messages.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_execution_mode_selection.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_existing_cube_check_read_bytes.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_experimental_options.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_extensions_duck.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_failed_run_recovery_hint.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_filesystem_claim_service_read_by_domain.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_filesystem_instrumentation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_filesystem_metrics.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_from_storage_config_or_default.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_generic_zarr_claim_category.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_generic_zarr_process_batch.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_hash_read_exception_categorization.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_index_binding.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_indexed_region_bounded_concurrency.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_indexed_region_static_array_slot_check.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_indexed_region_time_1d_coverage.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_ingest_result_typed_metrics.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_ingestor_errors.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_insert_recovery_guidance.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_intake_discovery_error_visibility.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_intake_explicit_storage.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_iso_to_epoch_s_utc_strict.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_list_runs_lazy_cache.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_loader_cache.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_logging_json_formatter.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_maintenance_events.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_manifest_repo_parity.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_manifest_repository_safety.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_manifest_versioning.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_metrics_no_import_cycle.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_no_storage_config_view.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_normalize_for_coord_compare.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_observability_boundaries.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_obstore_atomic_writer.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_obstore_streaming_buffer.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_ordered_write_gate.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_overlap_keys_unit_safe.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_parallel_evidence.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_parallel_execution_state.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_parallel_gate_capability.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_parallel_gate_chunk_alignment.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_parallel_gate_phantom_group.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_parallel_gate_static_array_chunks.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_parallel_post_intent_assertion.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_parquet_cli.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_parquet_storage_invariant.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_per_array_codec_override_preserved.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_pipeline_spans.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_pipeline_summary_schema_no_warning.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_plugin_config_type_coercion.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_plugin_context_boundary.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_plugins_install_output_names_mode.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_preflight.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_prewrite_dim_check.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_product_identity.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_product_name_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_projection_orphan_slot_fallback.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_recording_coverage_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_recording_failed_batch_spans.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_recording_typed_result.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_region_write_schema_drift.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_region_writer_custom_coord.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_region_writer_marker_aware.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_region_writer_write_static.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_region_zarr_writer_preallocation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_reserved_attrs.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_reserved_root_attrs.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_resolve_codec_pipeline.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_resolved_index_attrs.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_resolved_index_conflict_diff.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_resolved_index_record.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_restore_group_attrs_atomic.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_result_constructor_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_resume_guard_completed_spans.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_resume_guard_consolidated.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_resume_guard_telemetry.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_resume_meta_orphan_slot_fallback.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_resume_types.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_run_dir_for.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_run_record_slot_group.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_run_record_slot_range.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_runs_stale_query.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_runtime.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_scaffold_defaults_direct.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_scaffold_header_uses_author.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_scaffold_install_hint_offers_editable.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_schema_drift_error.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_seeding_claim_held.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_seeding_ownership_invariant.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_setup_global_schema_static.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_setup_global_zarr_schema_strict.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_sharding_config_validation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_slot_range_validators.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_snapshot_derivation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_span_coverage_neutral.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_spdx_handling.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_staged_metadata_error_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_staged_metadata_workspace_idempotency.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_staged_metrics.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_staged_seed_strips_static_marker.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_start_overlap_plus_new_tail.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_binding.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_config.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_config_binding_roundtrip.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_driver.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_driver_config.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_driver_config_lockdown.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_filesystem.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_filesystem_protocol.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_session.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_transfer.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_storage_uri.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_strategy_protocols.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_suppress_logger_warnings.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_telemetry_schema.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_telemetry_typed_result.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_template_hierarchy.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_template_product_name.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_template_typed_metrics_population.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_tensogram_routing.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_tier_configurator.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_time_dim_name_resolution.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_tracing_facade.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_unaligned_warn_once_per_group.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_unknown_summary_key_warns.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_validate_group_iterates_arrays.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_version_consistency.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_wal_metrics.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_wal_reader_read_run_entry.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_warn_if_misaligned_terminal.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_write_view_strips_static_and_attrs.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_append_engine.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_array_spec_fill_value_validation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_chunk_alias_removed.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_codec_api_assumptions.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_codecs_entry_validation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_compare_cli.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_compare_layout_vs_content.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_compression_string_form_removed.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_config_validation.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_discover_groups.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_store_factory.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_store_factory_contract.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_time_encoding.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zarr_write_preflight_narrow_exception.py +0 -0
- {firecube-0.1.7 → firecube-0.1.8}/tests/unit/test_zip_extract_safety.py +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Thanks for contributing to Firecube. Please read CONTRIBUTING.md first.
|
|
3
|
+
Keep pull requests focused: one logical change per PR.
|
|
4
|
+
-->
|
|
5
|
+
|
|
6
|
+
## What changed
|
|
7
|
+
|
|
8
|
+
<!-- A clear description of the change. -->
|
|
9
|
+
|
|
10
|
+
## Why
|
|
11
|
+
|
|
12
|
+
<!-- The motivation. Link the issue this closes, e.g. "Closes #123". -->
|
|
13
|
+
|
|
14
|
+
## Affected behavior
|
|
15
|
+
|
|
16
|
+
<!-- Which user, operator, plugin, or maintainer behavior changes? -->
|
|
17
|
+
|
|
18
|
+
- User / CLI:
|
|
19
|
+
- Plugin authors:
|
|
20
|
+
- Operators / production:
|
|
21
|
+
- Stored formats or control-plane state:
|
|
22
|
+
|
|
23
|
+
## Type of change
|
|
24
|
+
|
|
25
|
+
- [ ] Bug fix (non-breaking)
|
|
26
|
+
- [ ] New feature (non-breaking)
|
|
27
|
+
- [ ] Breaking change (CLI flags, plugin contract, config, or stored format)
|
|
28
|
+
- [ ] Documentation
|
|
29
|
+
- [ ] CI / build / chore
|
|
30
|
+
|
|
31
|
+
## Checks run
|
|
32
|
+
|
|
33
|
+
<!-- Tick what you ran; paste anything notable. -->
|
|
34
|
+
|
|
35
|
+
- [ ] `uv run ruff check .`
|
|
36
|
+
- [ ] `uv run ruff format --check .`
|
|
37
|
+
- [ ] `uv run pyright`
|
|
38
|
+
- [ ] `uv run --with bandit bandit -c pyproject.toml -r src scripts -lll`
|
|
39
|
+
- [ ] `uv run pytest --strict-deps -m "not slow and not s3 and not docs_static and not snapshot and not race" -q`
|
|
40
|
+
- [ ] Docs build (if docs changed): `uv run mkdocs build --strict`
|
|
41
|
+
|
|
42
|
+
## Follow-up work
|
|
43
|
+
|
|
44
|
+
<!-- Known gaps or planned follow-ups, or "none". -->
|
|
45
|
+
|
|
46
|
+
## Contributor certification
|
|
47
|
+
|
|
48
|
+
- [ ] Commits are signed off (`git commit -s`) with my real name and a reachable email.
|
|
49
|
+
- [ ] No credentials, generated products, caches, or virtualenvs are included in this PR.
|
|
50
|
+
- [ ] If AI assistance materially shaped this change, I disclosed it here and added an `Assisted-by` trailer.
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Prepare a Firecube release with checks, version update, and publishing notes
|
|
3
|
+
agent: build
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Make Release
|
|
7
|
+
|
|
8
|
+
Prepare a new Firecube release.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
Provide the target package version as `$ARGUMENTS`, for example `/make-release 0.2.0`.
|
|
13
|
+
If no version is given, ask the user for the intended version. Do not infer a
|
|
14
|
+
major version bump. The package version is bare PEP 440-compatible SemVer; the
|
|
15
|
+
git tag is `v<version>`.
|
|
16
|
+
|
|
17
|
+
## Pre-Release Checks
|
|
18
|
+
|
|
19
|
+
Run all relevant checks. If any required step fails, stop and report the failure.
|
|
20
|
+
|
|
21
|
+
### 1. Clean Working Tree
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
git status --short
|
|
25
|
+
git diff --stat
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The release should start from a reviewed, intentional state. Do not discard or
|
|
29
|
+
overwrite user changes.
|
|
30
|
+
|
|
31
|
+
### 2. Dependencies And Fixtures
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
uv sync --locked --extra test --group docs
|
|
35
|
+
uv pip install -e tests/fixtures/cli_test_plugin
|
|
36
|
+
uv pip install -e tests/fixtures/direct_zarr_capable_test_plugin
|
|
37
|
+
uv pip install -e tests/fixtures/direct_zarr_non_capable_test_plugin
|
|
38
|
+
uv pip install -e tests/fixtures/multi_group_capable_test_plugin
|
|
39
|
+
uv pip install -e tests/fixtures/cf_time_dim_test_plugin
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 3. Lint And Tests
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
uv run ruff check .
|
|
46
|
+
uv run ruff format --check .
|
|
47
|
+
uv run pyright
|
|
48
|
+
uv run pytest --strict-deps -q --tb=short -W error::DeprecationWarning
|
|
49
|
+
uv run pytest --strict-deps -m "not slow and not s3 and not race" --cov=firecube --cov-report=term-missing --cov-report=xml -q
|
|
50
|
+
uv run pytest tests/unit/test_version_consistency.py -q
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
If the full suite requires unavailable credentials or external services, run the
|
|
54
|
+
publishable local suite and report what was skipped.
|
|
55
|
+
|
|
56
|
+
### 4. Documentation
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
uv run mkdocs build --strict --site-dir /tmp/firecube-mkdocs-check
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Run `/doc-fact-check` on changed or high-traffic docs before publishing.
|
|
63
|
+
|
|
64
|
+
### 5. Package Build
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
rm -rf dist
|
|
68
|
+
uv build
|
|
69
|
+
uv run --with twine twine check dist/*
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Inspect the generated wheel/sdist filenames and contents before publishing.
|
|
73
|
+
|
|
74
|
+
### 6. Version And Contract Audit
|
|
75
|
+
|
|
76
|
+
Check for stale hardcoded package versions after the version bump. If there is a
|
|
77
|
+
previous release tag, use its package version as the value to search for:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
PREVIOUS_TAG="$(git describe --tags --abbrev=0 --match 'v[0-9]*' 2>/dev/null || true)"
|
|
81
|
+
if [ -n "$PREVIOUS_TAG" ]; then
|
|
82
|
+
PREVIOUS_VERSION="$(git show "${PREVIOUS_TAG}:pyproject.toml" | awk -F'"' '
|
|
83
|
+
/^\[project\]$/ { in_project=1; next }
|
|
84
|
+
/^\[/ { in_project=0 }
|
|
85
|
+
in_project && /^version = / { print $2; exit }
|
|
86
|
+
')"
|
|
87
|
+
if [ -n "$PREVIOUS_VERSION" ]; then
|
|
88
|
+
rg -n "${PREVIOUS_VERSION}" \
|
|
89
|
+
--glob '!uv.lock' \
|
|
90
|
+
--glob '!CHANGELOG.md' \
|
|
91
|
+
--glob '!dist/**' \
|
|
92
|
+
--glob '!site/**' \
|
|
93
|
+
. || true
|
|
94
|
+
fi
|
|
95
|
+
fi
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Any remaining old package-version hits must be intentional historical references,
|
|
99
|
+
not runtime code, docs examples, CI metadata, or release artifacts.
|
|
100
|
+
|
|
101
|
+
Audit contract/schema versions separately:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
rg -n "schema_version|SCHEMA_VERSION|ARCHIVE_VERSION|PLAN_SCHEMA_VERSION|CURRENT_SCHEMA_VERSION" src tests docs plans
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Do not change schema or contract versions just because the package version
|
|
108
|
+
changed. Change them only when the persisted format or machine-readable output
|
|
109
|
+
contract changes, and update `plans/RELEASE.md` if the contract map changes.
|
|
110
|
+
|
|
111
|
+
## Release Process
|
|
112
|
+
|
|
113
|
+
### 1. Version Update
|
|
114
|
+
|
|
115
|
+
Update `pyproject.toml` `[project].version` to the target version and refresh
|
|
116
|
+
`uv.lock`.
|
|
117
|
+
|
|
118
|
+
Do not hardcode the package version in runtime code or public docs. Runtime
|
|
119
|
+
version exports and docs examples should derive from the package version.
|
|
120
|
+
|
|
121
|
+
Update `CHANGELOG.md`.
|
|
122
|
+
|
|
123
|
+
If `CHANGELOG.md` does not exist, create it using Keep a Changelog format with
|
|
124
|
+
an `[Unreleased]` section.
|
|
125
|
+
|
|
126
|
+
### 2. Changelog Entry
|
|
127
|
+
|
|
128
|
+
Write a `CHANGELOG.md` entry for the target version following the existing Keep
|
|
129
|
+
a Changelog format. Use a dated header:
|
|
130
|
+
|
|
131
|
+
```markdown
|
|
132
|
+
## [X.Y.Z] - YYYY-MM-DD
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Insert the entry below `[Unreleased]`. Do not leave this as a manual follow-up
|
|
136
|
+
unless the user explicitly asks to skip changelog editing.
|
|
137
|
+
|
|
138
|
+
Find the previous release tag:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
git describe --tags --abbrev=0 --match 'v[0-9]*' 2>/dev/null || true
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Build the draft from commits since the previous tag. If there is no previous
|
|
145
|
+
tag, use all reachable commits:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
PREVIOUS_TAG="$(git describe --tags --abbrev=0 --match 'v[0-9]*' 2>/dev/null || true)"
|
|
149
|
+
if [ -n "$PREVIOUS_TAG" ]; then
|
|
150
|
+
git log --oneline "${PREVIOUS_TAG}..HEAD"
|
|
151
|
+
else
|
|
152
|
+
git log --oneline
|
|
153
|
+
fi
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Organize into:
|
|
157
|
+
|
|
158
|
+
- Added
|
|
159
|
+
- Changed
|
|
160
|
+
- Fixed
|
|
161
|
+
- Removed
|
|
162
|
+
- Migration Notes
|
|
163
|
+
- Stats
|
|
164
|
+
|
|
165
|
+
Use the section only when it has real content. Keep user-facing behavior first.
|
|
166
|
+
Put internal refactors only when they affect users, plugin authors, operators,
|
|
167
|
+
release artifacts, or public contracts.
|
|
168
|
+
|
|
169
|
+
For `Stats`, use the current release checks and CI output. Include:
|
|
170
|
+
|
|
171
|
+
- test count summary, for example `pytest: 1234 passed`
|
|
172
|
+
- type-check result, for example `pyright: 0 errors`
|
|
173
|
+
- coverage percentage from the pytest coverage `TOTAL` line
|
|
174
|
+
- docs build result
|
|
175
|
+
- package/container build result, when run
|
|
176
|
+
|
|
177
|
+
Do not invent stats. If a stat is unavailable, write the check result and why the
|
|
178
|
+
number is unavailable.
|
|
179
|
+
|
|
180
|
+
### 3. Release Notes
|
|
181
|
+
|
|
182
|
+
Prepare release notes from the changelog entry. Keep them shorter than the
|
|
183
|
+
changelog and focused on user, plugin-author, and operator consequences.
|
|
184
|
+
|
|
185
|
+
### 4. Commit Release Edits
|
|
186
|
+
|
|
187
|
+
Only after user approval:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
git add pyproject.toml uv.lock CHANGELOG.md docs README.md
|
|
191
|
+
git commit -m "chore: release X.Y.Z"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Do not tag from a feature branch. The release commit should be reviewed and
|
|
195
|
+
merged to the default branch first.
|
|
196
|
+
|
|
197
|
+
Do not push without explicit user approval.
|
|
198
|
+
|
|
199
|
+
### 5. Merge
|
|
200
|
+
|
|
201
|
+
Push the release branch and open a pull request. Let branch CI pass, review the
|
|
202
|
+
release diff, and merge it to `main`.
|
|
203
|
+
|
|
204
|
+
### 6. Tag And Publish
|
|
205
|
+
|
|
206
|
+
After the release commit is merged to `main`, tag from a clean, up-to-date local
|
|
207
|
+
`main` checkout:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
git switch main
|
|
211
|
+
git pull --ff-only origin main
|
|
212
|
+
make release VERSION=X.Y.Z
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
`make release` creates and pushes the annotated tag `vX.Y.Z` only when
|
|
216
|
+
`VERSION` matches `pyproject.toml`, the working tree is clean, and local `main`
|
|
217
|
+
matches `origin/main`.
|
|
218
|
+
|
|
219
|
+
The tag pipeline should run validation, container build, scan, patch, smoke
|
|
220
|
+
test, and push jobs. Watch the tag pipeline and confirm:
|
|
221
|
+
|
|
222
|
+
- `version_check` accepts `CI_COMMIT_TAG == v<pyproject version>`
|
|
223
|
+
- the container image is pushed as `:vX.Y.Z`
|
|
224
|
+
- the image label `org.opencontainers.image.version` is the bare package version
|
|
225
|
+
|
|
226
|
+
Create the GitHub Release manually from the matching `CHANGELOG.md` entry and
|
|
227
|
+
include the pushed container image reference.
|
|
228
|
+
|
|
229
|
+
For package smoke testing in a clean environment:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
uv venv /tmp/firecube-release-smoke
|
|
233
|
+
/tmp/firecube-release-smoke/bin/python -m pip install dist/firecube-X.Y.Z-py3-none-any.whl
|
|
234
|
+
/tmp/firecube-release-smoke/bin/firecube --help
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
If publishing to a package index, wait for propagation and test install from the
|
|
238
|
+
published artifact.
|
|
239
|
+
|
|
240
|
+
## Report
|
|
241
|
+
|
|
242
|
+
Return:
|
|
243
|
+
|
|
244
|
+
- version
|
|
245
|
+
- checks run and result
|
|
246
|
+
- files changed
|
|
247
|
+
- release notes draft
|
|
248
|
+
- remaining manual steps
|
|
249
|
+
- whether anything was skipped and why
|