kuration-sdk 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kuration_sdk-0.1.0/CHANGELOG.md +304 -0
- kuration_sdk-0.1.0/CONTRIBUTING.md +422 -0
- kuration_sdk-0.1.0/GOVERNANCE.md +33 -0
- kuration_sdk-0.1.0/LICENSE +201 -0
- kuration_sdk-0.1.0/MANIFEST.in +12 -0
- kuration_sdk-0.1.0/PKG-INFO +629 -0
- kuration_sdk-0.1.0/README.md +467 -0
- kuration_sdk-0.1.0/ROADMAP.md +112 -0
- kuration_sdk-0.1.0/SECURITY.md +37 -0
- kuration_sdk-0.1.0/SUPPORT.md +27 -0
- kuration_sdk-0.1.0/docs/action-state-consistency.md +383 -0
- kuration_sdk-0.1.0/docs/adapters.md +244 -0
- kuration_sdk-0.1.0/docs/api.md +509 -0
- kuration_sdk-0.1.0/docs/architecture.md +358 -0
- kuration_sdk-0.1.0/docs/assets/curation-flow.svg +18 -0
- kuration_sdk-0.1.0/docs/assets/kuration-hero.svg +16 -0
- kuration_sdk-0.1.0/docs/assets/operator-composition.svg +13 -0
- kuration_sdk-0.1.0/docs/assets/stylesheets/extra.css +51 -0
- kuration_sdk-0.1.0/docs/changelog.md +1 -0
- kuration_sdk-0.1.0/docs/collision.md +273 -0
- kuration_sdk-0.1.0/docs/community.md +25 -0
- kuration_sdk-0.1.0/docs/compatibility.md +40 -0
- kuration_sdk-0.1.0/docs/contributing.md +1 -0
- kuration_sdk-0.1.0/docs/customization.md +201 -0
- kuration_sdk-0.1.0/docs/documentation-contract.md +245 -0
- kuration_sdk-0.1.0/docs/domains.md +133 -0
- kuration_sdk-0.1.0/docs/dsl.md +116 -0
- kuration_sdk-0.1.0/docs/governance.md +1 -0
- kuration_sdk-0.1.0/docs/index.md +64 -0
- kuration_sdk-0.1.0/docs/jobs.md +330 -0
- kuration_sdk-0.1.0/docs/operator-inventory.md +153 -0
- kuration_sdk-0.1.0/docs/operators.md +388 -0
- kuration_sdk-0.1.0/docs/output.md +292 -0
- kuration_sdk-0.1.0/docs/overview.md +152 -0
- kuration_sdk-0.1.0/docs/pipeline.md +455 -0
- kuration_sdk-0.1.0/docs/pixel-shift.md +263 -0
- kuration_sdk-0.1.0/docs/quickstart.md +178 -0
- kuration_sdk-0.1.0/docs/releases.md +85 -0
- kuration_sdk-0.1.0/docs/releasing.md +58 -0
- kuration_sdk-0.1.0/docs/roadmap.md +1 -0
- kuration_sdk-0.1.0/docs/schema.md +103 -0
- kuration_sdk-0.1.0/docs/security.md +1 -0
- kuration_sdk-0.1.0/docs/selection.md +117 -0
- kuration_sdk-0.1.0/docs/slam.md +235 -0
- kuration_sdk-0.1.0/docs/strategies.md +227 -0
- kuration_sdk-0.1.0/docs/support.md +1 -0
- kuration_sdk-0.1.0/docs/usage.md +575 -0
- kuration_sdk-0.1.0/examples/01_timeseries_to_shards.py +70 -0
- kuration_sdk-0.1.0/examples/02_robotics_action_aware.py +83 -0
- kuration_sdk-0.1.0/examples/03_compare_strategies.py +61 -0
- kuration_sdk-0.1.0/examples/04_operator_pipeline.py +84 -0
- kuration_sdk-0.1.0/examples/05_custom_operators.py +88 -0
- kuration_sdk-0.1.0/examples/06_gameplay_operator_methods.py +76 -0
- kuration_sdk-0.1.0/examples/07_action_state_consistency.py +143 -0
- kuration_sdk-0.1.0/examples/README.md +53 -0
- kuration_sdk-0.1.0/examples/notebooks/gameplay_stats.ipynb +205 -0
- kuration_sdk-0.1.0/examples/notebooks/slam_kurious.ipynb +119 -0
- kuration_sdk-0.1.0/examples/public_data/__init__.py +1 -0
- kuration_sdk-0.1.0/examples/public_data/adapters/__init__.py +1 -0
- kuration_sdk-0.1.0/examples/public_data/adapters/open_p2p.py +255 -0
- kuration_sdk-0.1.0/examples/public_data/adapters/teapearce.py +197 -0
- kuration_sdk-0.1.0/examples/public_data/ett.md +99 -0
- kuration_sdk-0.1.0/examples/public_data/ett.py +170 -0
- kuration_sdk-0.1.0/examples/public_data/open_p2p.md +105 -0
- kuration_sdk-0.1.0/examples/public_data/open_p2p.py +119 -0
- kuration_sdk-0.1.0/examples/public_data/person_activity.md +138 -0
- kuration_sdk-0.1.0/examples/public_data/person_activity.py +242 -0
- kuration_sdk-0.1.0/examples/public_data/teapearce_csgo.md +111 -0
- kuration_sdk-0.1.0/examples/public_data/teapearce_csgo.py +137 -0
- kuration_sdk-0.1.0/examples/quickstart.py +87 -0
- kuration_sdk-0.1.0/mkdocs.yml +100 -0
- kuration_sdk-0.1.0/pyproject.toml +252 -0
- kuration_sdk-0.1.0/scripts/execute_notebook.py +34 -0
- kuration_sdk-0.1.0/setup.cfg +4 -0
- kuration_sdk-0.1.0/src/kuration/__init__.py +16 -0
- kuration_sdk-0.1.0/src/kuration/core/__init__.py +180 -0
- kuration_sdk-0.1.0/src/kuration/core/_pipeline_support.py +182 -0
- kuration_sdk-0.1.0/src/kuration/core/_registration.py +15 -0
- kuration_sdk-0.1.0/src/kuration/core/adapters/__init__.py +18 -0
- kuration_sdk-0.1.0/src/kuration/core/adapters/base.py +248 -0
- kuration_sdk-0.1.0/src/kuration/core/adapters/curated.py +208 -0
- kuration_sdk-0.1.0/src/kuration/core/adapters/hdf5.py +115 -0
- kuration_sdk-0.1.0/src/kuration/core/adapters/huggingface.py +171 -0
- kuration_sdk-0.1.0/src/kuration/core/adapters/jsonl.py +47 -0
- kuration_sdk-0.1.0/src/kuration/core/adapters/npz.py +89 -0
- kuration_sdk-0.1.0/src/kuration/core/adapters/parquet_dataset.py +137 -0
- kuration_sdk-0.1.0/src/kuration/core/adapters/timeseries.py +220 -0
- kuration_sdk-0.1.0/src/kuration/core/adapters/zarr_store.py +129 -0
- kuration_sdk-0.1.0/src/kuration/core/analyzers.py +540 -0
- kuration_sdk-0.1.0/src/kuration/core/binning.py +63 -0
- kuration_sdk-0.1.0/src/kuration/core/bounded.py +362 -0
- kuration_sdk-0.1.0/src/kuration/core/buffer.py +134 -0
- kuration_sdk-0.1.0/src/kuration/core/builtin_operators.py +358 -0
- kuration_sdk-0.1.0/src/kuration/core/checkpoints.py +419 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/__init__.py +1 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/_common.py +277 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/check.py +124 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/checkpoint.py +534 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/curate.py +147 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/diff.py +47 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/discovery.py +65 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/experiment.py +100 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/explain.py +135 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/export.py +335 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/import_dataset.py +103 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/infer_schema_cli.py +122 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/init_job.py +148 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/inspect.py +77 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/job.py +218 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/main.py +179 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/migrate.py +38 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/plugin_check.py +39 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/preview.py +133 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/report.py +111 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/stats.py +80 -0
- kuration_sdk-0.1.0/src/kuration/core/cli/validate.py +123 -0
- kuration_sdk-0.1.0/src/kuration/core/columnar.py +232 -0
- kuration_sdk-0.1.0/src/kuration/core/curate.py +120 -0
- kuration_sdk-0.1.0/src/kuration/core/dsl/__init__.py +5 -0
- kuration_sdk-0.1.0/src/kuration/core/dsl/grammar.py +597 -0
- kuration_sdk-0.1.0/src/kuration/core/dsl/registry.py +42 -0
- kuration_sdk-0.1.0/src/kuration/core/execution.py +119 -0
- kuration_sdk-0.1.0/src/kuration/core/experiment.py +246 -0
- kuration_sdk-0.1.0/src/kuration/core/external.py +622 -0
- kuration_sdk-0.1.0/src/kuration/core/features.py +86 -0
- kuration_sdk-0.1.0/src/kuration/core/html_report.py +46 -0
- kuration_sdk-0.1.0/src/kuration/core/importing.py +971 -0
- kuration_sdk-0.1.0/src/kuration/core/infer.py +388 -0
- kuration_sdk-0.1.0/src/kuration/core/inspection.py +210 -0
- kuration_sdk-0.1.0/src/kuration/core/io.py +589 -0
- kuration_sdk-0.1.0/src/kuration/core/jsonutil.py +57 -0
- kuration_sdk-0.1.0/src/kuration/core/loaders.py +918 -0
- kuration_sdk-0.1.0/src/kuration/core/manifest.py +627 -0
- kuration_sdk-0.1.0/src/kuration/core/media.py +447 -0
- kuration_sdk-0.1.0/src/kuration/core/methods.py +414 -0
- kuration_sdk-0.1.0/src/kuration/core/output/__init__.py +21 -0
- kuration_sdk-0.1.0/src/kuration/core/output/base.py +71 -0
- kuration_sdk-0.1.0/src/kuration/core/output/containers.py +176 -0
- kuration_sdk-0.1.0/src/kuration/core/output/dataset.py +694 -0
- kuration_sdk-0.1.0/src/kuration/core/output/external_fill.py +318 -0
- kuration_sdk-0.1.0/src/kuration/core/output/fill.py +217 -0
- kuration_sdk-0.1.0/src/kuration/core/output/presets.py +119 -0
- kuration_sdk-0.1.0/src/kuration/core/output/shardwriter.py +269 -0
- kuration_sdk-0.1.0/src/kuration/core/output/spec.py +268 -0
- kuration_sdk-0.1.0/src/kuration/core/output/stream.py +119 -0
- kuration_sdk-0.1.0/src/kuration/core/output/track.py +53 -0
- kuration_sdk-0.1.0/src/kuration/core/pipeline.py +2492 -0
- kuration_sdk-0.1.0/src/kuration/core/planning.py +410 -0
- kuration_sdk-0.1.0/src/kuration/core/plugin_validation.py +211 -0
- kuration_sdk-0.1.0/src/kuration/core/plugins.py +332 -0
- kuration_sdk-0.1.0/src/kuration/core/progress.py +144 -0
- kuration_sdk-0.1.0/src/kuration/core/provenance.py +495 -0
- kuration_sdk-0.1.0/src/kuration/core/quality.py +241 -0
- kuration_sdk-0.1.0/src/kuration/core/registry.py +623 -0
- kuration_sdk-0.1.0/src/kuration/core/report.py +212 -0
- kuration_sdk-0.1.0/src/kuration/core/results.py +363 -0
- kuration_sdk-0.1.0/src/kuration/core/review.py +389 -0
- kuration_sdk-0.1.0/src/kuration/core/schema.py +394 -0
- kuration_sdk-0.1.0/src/kuration/core/schemas/job.schema.json +224 -0
- kuration_sdk-0.1.0/src/kuration/core/scorers.py +260 -0
- kuration_sdk-0.1.0/src/kuration/core/scoring.py +394 -0
- kuration_sdk-0.1.0/src/kuration/core/segment.py +145 -0
- kuration_sdk-0.1.0/src/kuration/core/select.py +200 -0
- kuration_sdk-0.1.0/src/kuration/core/stats.py +1308 -0
- kuration_sdk-0.1.0/src/kuration/core/strategy.py +593 -0
- kuration_sdk-0.1.0/src/kuration/core/tags.py +54 -0
- kuration_sdk-0.1.0/src/kuration/core/torch.py +67 -0
- kuration_sdk-0.1.0/src/kuration/core/transforms.py +700 -0
- kuration_sdk-0.1.0/src/kuration/core/versioning.py +203 -0
- kuration_sdk-0.1.0/src/kuration/core/work_paths.py +119 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/__init__.py +94 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/_stats.py +486 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/action_state_consistency/__init__.py +279 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/action_state_consistency/action_state.py +554 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/action_state_consistency/anomaly_checker.py +654 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/collision/__init__.py +168 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/collision/asg_adapter.py +129 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/collision/collision_operator.py +400 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/collision/directional_collision_analyzer.py +581 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/collision/kinematics.py +85 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/collision/mesh_cache.py +682 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/collision/physics.py +107 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/collision/ramp_fitting.py +148 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/collision/teapearce_adapter.py +187 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/convenience.py +102 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/pixel_shift/__init__.py +87 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/pixel_shift/diamond_action_decode.py +625 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/pixel_shift/pixel_shift_operator.py +638 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/__init__.py +243 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_paths.py +26 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_runtime.py +1022 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/__init__.py +1 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/LICENSE +201 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/NOTICE +20 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/__init__.py +0 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/api.py +455 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/cfg.py +149 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/configs/da3-base.yaml +45 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/configs/da3-giant.yaml +71 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/configs/da3-large.yaml +45 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/configs/da3-small.yaml +45 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/configs/da3metric-large.yaml +28 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/configs/da3mono-large.yaml +28 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/configs/da3nested-giant-large.yaml +10 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/__init__.py +20 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/cam_dec.py +45 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/cam_enc.py +80 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/da3.py +445 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/__init__.py +0 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/dinov2.py +64 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/layers/__init__.py +25 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/layers/attention.py +100 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/layers/block.py +143 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/layers/drop_path.py +35 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/layers/layer_scale.py +31 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/layers/mlp.py +40 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/layers/patch_embed.py +94 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/layers/rope.py +200 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/layers/swiglu_ffn.py +62 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dinov2/vision_transformer.py +458 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dpt.py +458 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/dualdpt.py +488 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/reference_view_selector.py +223 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/utils/__init__.py +0 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/utils/attention.py +109 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/utils/block.py +81 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/utils/head_utils.py +230 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/model/utils/transform.py +208 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/registry.py +49 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/specs.py +45 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/__init__.py +0 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/alignment.py +163 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/constants.py +270 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/export.py +20 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/geometry.py +498 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/io/__init__.py +0 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/io/input_processor.py +501 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/io/output_processor.py +172 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/logger.py +82 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/parallel_utils.py +133 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/pose_align.py +347 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/_vendor/depth_anything_3/utils/ray_utils.py +524 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/adapter.py +181 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/cli.py +317 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/demo.py +84 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/export.py +420 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/motion.py +132 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/pointcloud.py +273 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/preflight.py +270 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/quality.py +227 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/runner.py +697 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/schema.py +52 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/viz.py +221 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/slam/workflow.py +143 -0
- kuration_sdk-0.1.0/src/kuration/gameplay/video.py +325 -0
- kuration_sdk-0.1.0/src/kuration/py.typed +0 -0
- kuration_sdk-0.1.0/src/kuration/sample_data/__init__.py +19 -0
- kuration_sdk-0.1.0/src/kuration/sample_data/sessions/session-0.parquet +0 -0
- kuration_sdk-0.1.0/src/kuration/sample_data/sessions/session-1.parquet +0 -0
- kuration_sdk-0.1.0/src/kuration/sample_data/sessions/session-2.parquet +0 -0
- kuration_sdk-0.1.0/src/kuration/sample_data/sessions/session-3.parquet +0 -0
- kuration_sdk-0.1.0/src/kuration/sample_data/sessions/session-4.parquet +0 -0
- kuration_sdk-0.1.0/src/kuration/sample_data/sessions/session-5.parquet +0 -0
- kuration_sdk-0.1.0/src/kuration/selection/__init__.py +88 -0
- kuration_sdk-0.1.0/src/kuration/selection/operations.py +253 -0
- kuration_sdk-0.1.0/src/kuration/selection/operators.py +80 -0
- kuration_sdk-0.1.0/src/kuration/selection/plan.py +186 -0
- kuration_sdk-0.1.0/src/kuration_sdk.egg-info/PKG-INFO +629 -0
- kuration_sdk-0.1.0/src/kuration_sdk.egg-info/SOURCES.txt +371 -0
- kuration_sdk-0.1.0/src/kuration_sdk.egg-info/dependency_links.txt +1 -0
- kuration_sdk-0.1.0/src/kuration_sdk.egg-info/entry_points.txt +26 -0
- kuration_sdk-0.1.0/src/kuration_sdk.egg-info/requires.txt +159 -0
- kuration_sdk-0.1.0/src/kuration_sdk.egg-info/top_level.txt +1 -0
- kuration_sdk-0.1.0/tests/test_action_state_consistency.py +524 -0
- kuration_sdk-0.1.0/tests/test_adapters_tier1.py +145 -0
- kuration_sdk-0.1.0/tests/test_analyzer_registry.py +217 -0
- kuration_sdk-0.1.0/tests/test_anomaly_checker.py +461 -0
- kuration_sdk-0.1.0/tests/test_api_reference.py +224 -0
- kuration_sdk-0.1.0/tests/test_artifact_publication_safety.py +808 -0
- kuration_sdk-0.1.0/tests/test_audit_regressions.py +149 -0
- kuration_sdk-0.1.0/tests/test_bounded.py +147 -0
- kuration_sdk-0.1.0/tests/test_bounded_hours.py +100 -0
- kuration_sdk-0.1.0/tests/test_bounded_output.py +121 -0
- kuration_sdk-0.1.0/tests/test_bounded_path_safety.py +178 -0
- kuration_sdk-0.1.0/tests/test_breadth.py +107 -0
- kuration_sdk-0.1.0/tests/test_builtin_operators.py +117 -0
- kuration_sdk-0.1.0/tests/test_check_source.py +160 -0
- kuration_sdk-0.1.0/tests/test_checkpoint_cli_safety.py +219 -0
- kuration_sdk-0.1.0/tests/test_checkpoints.py +176 -0
- kuration_sdk-0.1.0/tests/test_cli.py +168 -0
- kuration_sdk-0.1.0/tests/test_cli_artifact_inprocess.py +217 -0
- kuration_sdk-0.1.0/tests/test_cli_authoring.py +550 -0
- kuration_sdk-0.1.0/tests/test_cli_discovery.py +44 -0
- kuration_sdk-0.1.0/tests/test_cli_output_hygiene.py +522 -0
- kuration_sdk-0.1.0/tests/test_cli_output_overlap_safety.py +310 -0
- kuration_sdk-0.1.0/tests/test_cli_strict_json.py +131 -0
- kuration_sdk-0.1.0/tests/test_collision_asg_adapter.py +67 -0
- kuration_sdk-0.1.0/tests/test_collision_directional.py +451 -0
- kuration_sdk-0.1.0/tests/test_collision_kinematics.py +91 -0
- kuration_sdk-0.1.0/tests/test_collision_mesh_cache.py +280 -0
- kuration_sdk-0.1.0/tests/test_collision_operator.py +324 -0
- kuration_sdk-0.1.0/tests/test_collision_physics.py +46 -0
- kuration_sdk-0.1.0/tests/test_collision_ramp_fitting.py +109 -0
- kuration_sdk-0.1.0/tests/test_collision_registration.py +112 -0
- kuration_sdk-0.1.0/tests/test_collision_teapearce_adapter.py +157 -0
- kuration_sdk-0.1.0/tests/test_columnar.py +57 -0
- kuration_sdk-0.1.0/tests/test_determinism_conformance.py +113 -0
- kuration_sdk-0.1.0/tests/test_diagnostic_privacy_and_scorer_consistency.py +325 -0
- kuration_sdk-0.1.0/tests/test_documentation_links.py +138 -0
- kuration_sdk-0.1.0/tests/test_example_open_p2p.py +52 -0
- kuration_sdk-0.1.0/tests/test_example_public.py +96 -0
- kuration_sdk-0.1.0/tests/test_example_teapearce.py +57 -0
- kuration_sdk-0.1.0/tests/test_execution_backpressure.py +134 -0
- kuration_sdk-0.1.0/tests/test_execution_parity.py +53 -0
- kuration_sdk-0.1.0/tests/test_external.py +467 -0
- kuration_sdk-0.1.0/tests/test_gameplay.py +221 -0
- kuration_sdk-0.1.0/tests/test_gameplay_stats.py +294 -0
- kuration_sdk-0.1.0/tests/test_grammar.py +179 -0
- kuration_sdk-0.1.0/tests/test_hours_review_quality.py +124 -0
- kuration_sdk-0.1.0/tests/test_import_cli.py +730 -0
- kuration_sdk-0.1.0/tests/test_infer.py +357 -0
- kuration_sdk-0.1.0/tests/test_io.py +182 -0
- kuration_sdk-0.1.0/tests/test_jupyter_ui.py +90 -0
- kuration_sdk-0.1.0/tests/test_loaders.py +215 -0
- kuration_sdk-0.1.0/tests/test_manifest_entity_ordering.py +53 -0
- kuration_sdk-0.1.0/tests/test_media_transforms_execution.py +335 -0
- kuration_sdk-0.1.0/tests/test_methods.py +132 -0
- kuration_sdk-0.1.0/tests/test_operator_registry.py +275 -0
- kuration_sdk-0.1.0/tests/test_package_structure.py +75 -0
- kuration_sdk-0.1.0/tests/test_phase_b.py +134 -0
- kuration_sdk-0.1.0/tests/test_phase_c.py +181 -0
- kuration_sdk-0.1.0/tests/test_phase_d.py +191 -0
- kuration_sdk-0.1.0/tests/test_phase_e.py +101 -0
- kuration_sdk-0.1.0/tests/test_pipeline.py +631 -0
- kuration_sdk-0.1.0/tests/test_pipeline_analyze.py +751 -0
- kuration_sdk-0.1.0/tests/test_pixel_shift.py +1010 -0
- kuration_sdk-0.1.0/tests/test_planning.py +106 -0
- kuration_sdk-0.1.0/tests/test_plugin_validation.py +123 -0
- kuration_sdk-0.1.0/tests/test_plugins_progress.py +254 -0
- kuration_sdk-0.1.0/tests/test_product_ux.py +91 -0
- kuration_sdk-0.1.0/tests/test_properties.py +83 -0
- kuration_sdk-0.1.0/tests/test_provenance_identity_safety.py +96 -0
- kuration_sdk-0.1.0/tests/test_provenance_privacy.py +149 -0
- kuration_sdk-0.1.0/tests/test_quickstart.py +37 -0
- kuration_sdk-0.1.0/tests/test_reader_contract_safety.py +369 -0
- kuration_sdk-0.1.0/tests/test_readme_pypi.py +18 -0
- kuration_sdk-0.1.0/tests/test_registry_architecture_fixes.py +312 -0
- kuration_sdk-0.1.0/tests/test_release_identity.py +38 -0
- kuration_sdk-0.1.0/tests/test_review_api_plugin_fixes.py +296 -0
- kuration_sdk-0.1.0/tests/test_review_core_fixes.py +264 -0
- kuration_sdk-0.1.0/tests/test_review_findings.py +217 -0
- kuration_sdk-0.1.0/tests/test_review_fixes.py +804 -0
- kuration_sdk-0.1.0/tests/test_review_integration_fixes.py +65 -0
- kuration_sdk-0.1.0/tests/test_review_io_fixes.py +585 -0
- kuration_sdk-0.1.0/tests/test_review_loop.py +75 -0
- kuration_sdk-0.1.0/tests/test_review_remediation.py +262 -0
- kuration_sdk-0.1.0/tests/test_scale.py +158 -0
- kuration_sdk-0.1.0/tests/test_schema.py +99 -0
- kuration_sdk-0.1.0/tests/test_scorers.py +133 -0
- kuration_sdk-0.1.0/tests/test_selection_correctness_regressions.py +477 -0
- kuration_sdk-0.1.0/tests/test_selection_domain.py +415 -0
- kuration_sdk-0.1.0/tests/test_selection_reliability.py +211 -0
- kuration_sdk-0.1.0/tests/test_slam.py +649 -0
- kuration_sdk-0.1.0/tests/test_slam_regressions.py +970 -0
- kuration_sdk-0.1.0/tests/test_source_reuse_safety.py +158 -0
- kuration_sdk-0.1.0/tests/test_sources.py +113 -0
- kuration_sdk-0.1.0/tests/test_stats.py +612 -0
- kuration_sdk-0.1.0/tests/test_streaming.py +166 -0
- kuration_sdk-0.1.0/tests/test_tags.py +102 -0
- kuration_sdk-0.1.0/tests/test_usability_customization.py +137 -0
- kuration_sdk-0.1.0/tests/test_validate.py +223 -0
- kuration_sdk-0.1.0/tests/test_validation_adapter_regressions.py +112 -0
- kuration_sdk-0.1.0/tests/test_versioning_semantics.py +126 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
This project follows semantic versioning after `1.0`. During the `0.x` beta, minor releases may
|
|
4
|
+
change documented APIs with the notice and deprecation process in `docs/compatibility.md`.
|
|
5
|
+
|
|
6
|
+
## 0.1.0
|
|
7
|
+
|
|
8
|
+
First public release. It includes everything in the earlier release candidates `0.1.0rc1`
|
|
9
|
+
through `0.1.0rc5`, which were not published to PyPI and are kept below as history.
|
|
10
|
+
|
|
11
|
+
- Every built-in operator is now labeled Selection, Annotation, or Aggregation in
|
|
12
|
+
`docs/operators.md` and `docs/operator-inventory.md`, by its primary effect on the segment
|
|
13
|
+
pool. No built-in operator is Aggregation yet — a confirmed gap (reducing a per-window
|
|
14
|
+
feature to a per-group rollup), not an oversight; see `action-state-consistency.md`.
|
|
15
|
+
- Renamed `gameplay.slam_pipeline` to `gameplay.slam_reconstruct` (groups with
|
|
16
|
+
`slam_quality`/`slam_motion_diversity` under one `slam_` prefix for discoverability). Clean
|
|
17
|
+
rename, no compatibility alias. Extracted `CollisionMechanics`'s per-tick velocity/turn-rate
|
|
18
|
+
derivation from a private, untested function into a public, directly tested
|
|
19
|
+
`kuration.gameplay.collision.kinematics.extract_kinematics` — the one part of its fused
|
|
20
|
+
per-tick scan/classify loop that is independently reusable; the gating and raycast
|
|
21
|
+
classification stages remain fused, as does `DirectionalCollisionAnalyzer`'s unrelated
|
|
22
|
+
expected-velocity-from-ramp-model computation.
|
|
23
|
+
- Added `Segment.records: dict[str, list]`, a non-scalar counterpart to `Segment.features` for
|
|
24
|
+
transforms measuring several discrete per-instance events within a window. `PixelShift` now
|
|
25
|
+
emits its per-press instances there instead of discarding them after collapsing to scalars.
|
|
26
|
+
`action_state_consistency` is rehosted as `ActionStateAnomalyScorer`, a `SegmentScorer`
|
|
27
|
+
reading pixel-shift's own records instead of redundantly re-deriving them from raw frames —
|
|
28
|
+
it scores per window, not per whole clip, since no built-in aggregation operator exists yet
|
|
29
|
+
to reconstruct the old per-clip verdict (see above). Dataset-mode auditing (`check_dataset`)
|
|
30
|
+
never shared computation with a live pixel-shift transform and is unaffected; only the
|
|
31
|
+
tick-stream-driven analyzer path (the actual redundant-computation bug) is retired.
|
|
32
|
+
- Eliminated the standalone `kuration-ai` package. Its three curation recipes
|
|
33
|
+
(`BalancedSelector`, `RareEventCoverage`, `DiverseSubset`) and config-driven
|
|
34
|
+
`run`/`plan`/`describe`/`register_operation_type` runner are now first-class SDK
|
|
35
|
+
components under `kuration.selection`, each also registered as a `Pipeline`
|
|
36
|
+
operator (`kuration/balanced-selector`, `kuration/rare-event-coverage`,
|
|
37
|
+
`kuration/diverse-subset`). `kuration-ai` is preserved, unmodified, on the
|
|
38
|
+
`feature/kuration-ai-legacy` branch.
|
|
39
|
+
- Development builds now use the distinct `0.1.0rc5.dev0` identity instead of reusing the
|
|
40
|
+
prior `0.1.0rc4` candidate identity. `ARTIFACT_FORMAT_VERSION` is `1.2` for the corrected
|
|
41
|
+
bounded/materialized uniform-bin ordering, experiment-arm tag isolation, and zero
|
|
42
|
+
tag-coverage-floor semantics described below.
|
|
43
|
+
- Raised the minimum versions of scikit-learn, PyArrow, protobuf, PyTorch/TorchVision, Ray,
|
|
44
|
+
tqdm, and Pillow past known-vulnerable historical floors; the minimum-dependency CI lane now
|
|
45
|
+
exercises those security-supported baselines.
|
|
46
|
+
- Dataset publication is no-clobber by default across pipeline, classic, job/CLI, and import
|
|
47
|
+
paths. `force=True` (or `kur-curate --force`) explicitly replaces a destination; `resume=True`
|
|
48
|
+
remains a separate, fingerprint-matched hours-run intent. Selection, source-contract,
|
|
49
|
+
container-dependency, and output-memory preflights finish before invalidating an old commit;
|
|
50
|
+
one writer lease prevents concurrent publishers from interleaving. Resume markers are now
|
|
51
|
+
commit-checksummed, non-resumable replacements remove stale markers, and bounded checkpoints
|
|
52
|
+
are namespaced by run fingerprint.
|
|
53
|
+
- Fixed selection correctness across execution modes: bounded uniform-bin RNG order now matches
|
|
54
|
+
canonical materialized order, predicates remain hard exclusions through tag coverage,
|
|
55
|
+
fractional tag floors round up, experiment arms no longer inherit unrelated tag vocabularies,
|
|
56
|
+
`min_tag_frac=0` is a true no-op, and Python-equal group/tag values have the same meaning in
|
|
57
|
+
memory and SQLite-backed fills.
|
|
58
|
+
- Persisted reuse now fails closed unless inputs have adapter, local-content, or immutable remote
|
|
59
|
+
version identities. Readers pin one exact commit generation for each operation, validate
|
|
60
|
+
manifest modality contracts against the committed output config, and reject local shard
|
|
61
|
+
symlinks and non-regular files. Source references and persisted skip diagnostics no longer
|
|
62
|
+
publish credentials or host-local paths.
|
|
63
|
+
- Smart imports now validate and consume one private local source snapshot: POSIX ancestry is
|
|
64
|
+
traversed through no-follow directory descriptors, array/tick publication never reopens the
|
|
65
|
+
caller pathname, and directory stores are copied descriptor-relatively. Generic remote imports
|
|
66
|
+
fail closed because an unconditioned fsspec read cannot be bound to a separately reported
|
|
67
|
+
object generation; download the exact immutable generation locally first. Smart import also
|
|
68
|
+
fails before source inspection on platforms without POSIX descriptor-relative open support.
|
|
69
|
+
- `on_error="skip"` now applies consistently to transform and scorer second-read failures as
|
|
70
|
+
well as the feature pass; failed sources are removed as a unit, mutable transform state is
|
|
71
|
+
reset before continuing, and total failure remains loud.
|
|
72
|
+
- Tightened validation at the boundary: `speed` requires a declared sample rate, numeric filter
|
|
73
|
+
literals must be finite, bitmask values must be positive exact integers, and mixed-case
|
|
74
|
+
`.parquet` suffixes follow one detection/preflight/read path.
|
|
75
|
+
- **Analyzers are pipeline operations.** New `Pipeline.analyze(name, parameters=None, *,
|
|
76
|
+
mode=None, inputs=None, batch_size=None, analyzer=None, **options)` terminal drives a
|
|
77
|
+
registered stateful analyzer with no job spec and no CLI. On any `input(...)` pipeline it
|
|
78
|
+
drives a new optional `add_batch(batch, ctx)` hook (`StreamAnalyzer`) over the segmented tick
|
|
79
|
+
stream through the *same* bounded batch/media-decode machinery batch transforms use
|
|
80
|
+
(`transforms.build_batch`, one decode path, per-input lookbehind/lookahead, `ctx.input_token`,
|
|
81
|
+
`ctx.valid_steps`) — a single pass with one batch resident, so it works under
|
|
82
|
+
`streaming=True`. On an artifact-backed pipeline it drives `check_dataset` and returns exactly
|
|
83
|
+
what `run_dataset_analyzer()` returns. Analyzers declare `field:`/`media:` inputs (plus
|
|
84
|
+
optional per-input boundary counts) at registration, validated there and by
|
|
85
|
+
`kur-plugin-check`; unknown analyzers, a missing hook for the resolved mode, and a pool that
|
|
86
|
+
measured zero segments all raise. `run_stream_analyzer()` and `StreamAnalyzer` are exported for
|
|
87
|
+
callers driving an analyzer outside the pipeline API.
|
|
88
|
+
- The built-in `aintropy/action-state-consistency` analyzer now runs on both modes. Its
|
|
89
|
+
tick-stream path declares the same input contract as `aintropy/pixel-shift` and measures in
|
|
90
|
+
**real source frames**, so the documented `(source_id, control, cell_key, frame)`
|
|
91
|
+
de-duplication of one press seen by overlapping windows holds (`cross_window_dedup: true`) —
|
|
92
|
+
the guarantee dataset mode has to give up (`frame_space: "shard-concatenation"`).
|
|
93
|
+
- New `Pipeline.check(policy=None, *, verify=False, **expectations)` — the pipeline-API
|
|
94
|
+
equivalent of `kur-check --policy`: it merges `.expect(...)`, a policy mapping, and keywords, then evaluates
|
|
95
|
+
them without raising against an artifact inspection (artifact-backed pipelines) or a bounded
|
|
96
|
+
input preview. `CuratedDatasetAdapter.datasets()` is the new adapter seam that lets a pipeline
|
|
97
|
+
reach artifact-level hooks at all.
|
|
98
|
+
- `Pipeline.stats(**kwargs)` now forwards every keyword `kuration.stats()` accepts (including
|
|
99
|
+
`progress`) instead of re-declaring a narrower subset that could drift.
|
|
100
|
+
- Batch-transform inputs are now roles rather than fixed batch keys. `TransformContext` carries
|
|
101
|
+
`inputs` (declared role → resolved token, in declaration order) and `input_token(role)`, so a
|
|
102
|
+
transform used with a per-use `inputs=` remapping addresses the batch it was actually given
|
|
103
|
+
instead of failing mid-run on a hardcoded registration token. A remapping must supply exactly
|
|
104
|
+
one token per role, of the same kind, and per-input `media_requirements` are matched by role;
|
|
105
|
+
all three are validated while the pipeline is built. The bundled `aintropy/pixel-shift`
|
|
106
|
+
transform now resolves its frames/actions inputs (and its media `color_space`) this way.
|
|
107
|
+
- `lookbehind`/`lookahead` may be declared per input (`lookbehind={"field:action": 1}`) instead
|
|
108
|
+
of as one count shared by every input, so a transform no longer pays to extract — or, for
|
|
109
|
+
media, decode — boundary context it never reads. `aintropy/pixel-shift` declares its single
|
|
110
|
+
lookbehind row on the action input only, removing one video-frame decode per segment.
|
|
111
|
+
- Every batch transform now receives per-row valid timestep counts (`ctx.valid_steps` and the
|
|
112
|
+
`valid_steps` batch entry). `field:` inputs are `(B,T,E,D)` arrays NaN-padded to the widest
|
|
113
|
+
extent in the batch — a contract change from the earlier `(B,T)` stacking, which raised on a
|
|
114
|
+
ragged batch instead of padding it — and the counts make that padding observable, so a
|
|
115
|
+
transform cannot silently average pad cells; previously only `ownership="rightmost-start"`
|
|
116
|
+
transforms received any length information.
|
|
117
|
+
- `pixel_shift` gained a `{control}_shift_measured` (0/1) feature. The transform contract admits
|
|
118
|
+
only finite scalars, so an untested control's `shift_min`/`max`/`mean` must report some number;
|
|
119
|
+
the flag makes "no instance was measured" filterable
|
|
120
|
+
(`.filter("w_shift_measured", ">=", 1)`) instead of indistinguishable from a real zero-shift
|
|
121
|
+
measurement. `pixel_shift.iter_instances()` now validates its own arrays (pass
|
|
122
|
+
`validated=True` for arrays already returned by `validate_segment_inputs`).
|
|
123
|
+
- The action-state analyzer accepts NumPy integer segment indexes (normalizing them to `int`),
|
|
124
|
+
and its `check_dataset` no longer presents synthetic offsets as source frames: results report
|
|
125
|
+
`frame_space: "shard-concatenation"`, per-shard `shard_ranges`, and `cross_shard_dedup: false`,
|
|
126
|
+
with the same caveat printed in the report. Manifest entries carry no source start offset, so
|
|
127
|
+
cross-shard de-duplication of overlapping curated spans is documented as unavailable in
|
|
128
|
+
dataset mode instead of silently lost.
|
|
129
|
+
- Gameplay video contact sheets label a frame index as `frame N` instead of formatting it as
|
|
130
|
+
`"{:.2f}s"` when a source exposes neither a duration nor an average frame rate.
|
|
131
|
+
- Bumped `ARTIFACT_FORMAT_VERSION` to `1.1` for two DSL semantic changes and recorded them in a
|
|
132
|
+
compat table (`ARTIFACT_SEMANTIC_CHANGES` in `kuration.core.versioning`): `dispersion` and
|
|
133
|
+
`min_pair_dist` now use every declared position dimension (`1.0` used only the first two), and
|
|
134
|
+
`scope: per_entity_mean` is now honored on categorical fields (`1.0` silently pooled them).
|
|
135
|
+
Both change *which segments get selected* on 3D-position or per-entity-categorical data, so
|
|
136
|
+
`kur-migrate` now prints the notes for the versions a document has not seen while it migrates
|
|
137
|
+
it. `migration_notes()`/`document_migration_notes()` expose the same table programmatically.
|
|
138
|
+
- Registering a compositional operator whose method name is already a real `Pipeline`
|
|
139
|
+
attribute (`report`, `window`, `filter`, `schema`, ...) now fails loudly at registration and in
|
|
140
|
+
`kur-plugin-check`, naming the collision and asking for a rename. Python resolves the attribute
|
|
141
|
+
before `__getattr__`, so such an operator was silently shadowed and unreachable. The reserved
|
|
142
|
+
set is derived from the `Pipeline` class itself.
|
|
143
|
+
- An un-namespaced operator now keeps its own method spelling when a plugin registers the same
|
|
144
|
+
local name: a spelling that is a component's complete name outranks the same spelling used as a
|
|
145
|
+
namespaced component's shorthand (`smooth` vs `acme/smooth`, still `acme__smooth()`). An
|
|
146
|
+
ambiguity error now only suggests spellings that actually resolve, falling back to
|
|
147
|
+
`apply("<name>")` when a component has no unique method spelling left.
|
|
148
|
+
- Added two pipeline-only public-data walkthroughs. `examples/public_data/ett.py` curates
|
|
149
|
+
real hourly electricity-transformer telemetry, and `person_activity.py` curates 25 real
|
|
150
|
+
wearable-sensor recordings with four tags as the entity axis, a tag-coverage floor that keeps
|
|
151
|
+
rare activities, and source-level splits stratified by person. Both take a local path, fetch
|
|
152
|
+
the data with `--download`, or run offline against synthetic stand-ins with `--demo`; each
|
|
153
|
+
ships a provenance/licensing note and the equivalent command-line session.
|
|
154
|
+
- Simplified the numbered examples. `01` is now the genuine five-minute start — `input()` over a
|
|
155
|
+
folder of CSVs with everything inferred — and `02`/`03` drop their hand-rolled adapter classes
|
|
156
|
+
in favour of passing `{source_id: ticks}` straight to `input()`.
|
|
157
|
+
- Fixed `dataset_report` crashing on a metric whose values differ only at float-noise scale.
|
|
158
|
+
NumPy widens the histogram range for exactly-constant data but raises "Too many bins for data
|
|
159
|
+
range" just below that, which took down `.review()` and `kur-report` for a near-flat field;
|
|
160
|
+
such a metric now reports as the flat distribution it is.
|
|
161
|
+
- `kur-init` now scaffolds `span_steps` alongside its hours budget. Without a span the budget
|
|
162
|
+
admits whole tracks, so a single long recording was emitted in full regardless of
|
|
163
|
+
`--train-hours`.
|
|
164
|
+
- Added a `kur` dispatcher so every command is reachable as `kur <command>` alongside its own
|
|
165
|
+
`kur-<command>` script, with `kur --help`/`--list` and `kur completion bash|zsh|fish`.
|
|
166
|
+
Subcommands contributed by installed plugin packages are discovered through their console
|
|
167
|
+
script entry points, so no domain is named in the core dispatcher.
|
|
168
|
+
- Added `kur-infer`, `kur-init`, and `kur-preview`, closing the gap before a job spec exists.
|
|
169
|
+
`kur-infer` emits the inferred schema (referenceable from a job by path); `kur-init`
|
|
170
|
+
scaffolds a whole job and resolves it before writing, so what it emits is a job
|
|
171
|
+
`kur-validate` accepts; `kur-preview` decodes a bounded prefix of the sources and reports
|
|
172
|
+
field ranges, missingness, and example ticks.
|
|
173
|
+
- Added `kur-stats` and `kur-export` on the artifact side. `kur-stats` exposes the existing
|
|
174
|
+
unified `stats()` report — including plugin-contributed sections — to the shell, and
|
|
175
|
+
`kur-export` writes shards as npz/npy/parquet with an `export_index.json` preserving the
|
|
176
|
+
manifest metadata that bare arrays lose.
|
|
177
|
+
- Added `kur-checkpoint list|verify|clear` for stage checkpoint directories. Verification reads
|
|
178
|
+
committed metadata instead of reconstructing the run's `CheckpointIdentity`, so a damaged
|
|
179
|
+
commit is detectable from the checkpoint tree alone; `clear` requires `--yes` and supports
|
|
180
|
+
`--attempts-only`.
|
|
181
|
+
- Added `--review`, `--review-json`, and `--review-html` to `kur-curate`, surfacing the
|
|
182
|
+
hours-budget admission review from the run's recorded decisions without a second scoring pass.
|
|
183
|
+
- Added `kur-import` and `import_dataset()` with confidence-based registered-adapter detection.
|
|
184
|
+
NPZ, HDF5, and Zarr use lossless tensor hooks; CSV, JSONL, and single/partitioned Parquet use
|
|
185
|
+
ordinary schema inference and canonical ticks. Plugin adapters can advertise detection and
|
|
186
|
+
raw-array import hooks. Imports default to source-aligned shards and publish the same
|
|
187
|
+
checksummed transactional artifacts consumed by inspection, analyzers, and loaders.
|
|
188
|
+
- Added artifact-level analyzer execution to `kur-check`, with separate JSON construction
|
|
189
|
+
parameters and dataset options, composable quality-gate output, and exit-code-2 verdicts.
|
|
190
|
+
Action-state consistency can now read configurable frame/action modalities from curated
|
|
191
|
+
shards, while split leakage can audit assignments directly from a dataset manifest.
|
|
192
|
+
- Added unified lifecycle stats for pipelines, curated selections, write results, and existing
|
|
193
|
+
dataset artifacts. Reports render directly in notebooks, can be saved as standalone HTML, and
|
|
194
|
+
offer optional Matplotlib plots through the `stats` extra; artifact stats inspect the actual
|
|
195
|
+
emitted, padding-trimmed arrays. Importing the gameplay domain now enriches the same report
|
|
196
|
+
with video, action, and SLAM signals and a gameplay plot; synchronized video comparison,
|
|
197
|
+
automatic Jupyter/terminal progress selection, and a model-free JupyterLab example complete
|
|
198
|
+
the end-user workflow. Reports discover their available plots and evidence modes, choose an
|
|
199
|
+
applicable domain plot automatically, and expose bounded selected/rejected/strongest/weakest
|
|
200
|
+
examples; live gameplay reports add frame strips, actions, and SLAM diagnostics without
|
|
201
|
+
placing media in serialized report data.
|
|
202
|
+
- Added `kuration.core` and `kuration.gameplay` domain surfaces. Pixel shift, action-state
|
|
203
|
+
consistency, and SLAM now ship together in the SDK wheel instead of separate first-party
|
|
204
|
+
plugin distributions; OpenCV, Torch, FAISS, and related runtimes remain extras.
|
|
205
|
+
- Physically moved the generic SDK implementation under `kuration.core` and made
|
|
206
|
+
`kuration.gameplay` the only maintained domain package. Direct implementation imports such as
|
|
207
|
+
`kuration.pipeline` now use `kuration.core.pipeline`; package-level imports such as
|
|
208
|
+
`from kuration import Pipeline` remain available. Removed the former gameplay compatibility
|
|
209
|
+
packages, and nested Depth Anything privately under gameplay SLAM.
|
|
210
|
+
- Integrated the native `kuration.gameplay.slam.SLAMReconstructor` and `slam_pipeline()`
|
|
211
|
+
workflow for optional video/frame reconstruction,
|
|
212
|
+
stable model/config provenance, resumable portable exports, trajectory quality and diversity
|
|
213
|
+
curation, point-cloud reduction, preflight, and `kur-slam`. Precomputed manifests remain a
|
|
214
|
+
lightweight NumPy-only SDK input; global model execution is intentionally separate from
|
|
215
|
+
bounded compositional operators.
|
|
216
|
+
|
|
217
|
+
## 0.1.0rc4
|
|
218
|
+
|
|
219
|
+
- Added a discoverable `analyzer` registry kind for user-owned capabilities that aggregate
|
|
220
|
+
across segments, with `register_analyzer()`, `get_analyzer()`, and CLI discovery. The
|
|
221
|
+
action-state consistency plugin now registers its real clip-level analyzer instead of an
|
|
222
|
+
unrelated stateless compliance component. A dependency-free `kuration/split-leakage`
|
|
223
|
+
analyzer audits existing source and group assignments across dataset splits.
|
|
224
|
+
- Corrected pipeline and bounded execution around duplicate sources, exact vector widths,
|
|
225
|
+
registered-metric transform dependencies, cross-kind feature collisions, scorer parameters and
|
|
226
|
+
registry lookup, callable metric overlays, test-split validation, and checkpoint partition
|
|
227
|
+
identity. The same validation now applies consistently at direct public execution boundaries.
|
|
228
|
+
- Artifact readers now verify recorded shard size and SHA-256 by default, including
|
|
229
|
+
`iter_shards()`, `read_shard_arrays()`, `ShardDataset`, and curated-dataset adapters. Pass
|
|
230
|
+
`verify=False` only for explicitly trusted artifacts. Commit sidecars, rebased legacy paths,
|
|
231
|
+
split names, and shard paths are validated before reads, preventing traversal and stale or
|
|
232
|
+
corrupted shard reuse.
|
|
233
|
+
- Made shard filenames and manifest entity IDs type-preserving so values such as integer `1` and
|
|
234
|
+
string `"1"` cannot overwrite each other. Shard writing now rejects non-finite or extension
|
|
235
|
+
object IDs that have no canonical value identity instead of relying on unsafe string or pickle
|
|
236
|
+
representations.
|
|
237
|
+
- Fixed adapter and media correctness for large integer timestamps, missing categorical values,
|
|
238
|
+
Parquet dataset glob preflight and source fingerprints, Arrow chunk/batch ingestion, duplicate
|
|
239
|
+
columnar bin names, joined-media fingerprints, multi-video frame rate and shape validation, and
|
|
240
|
+
finite ordered timestamp alignment.
|
|
241
|
+
- Tightened registry and plugin contracts: malformed targets and true no-op entry points fail
|
|
242
|
+
transactionally with persistent diagnostics; pre-imported package-owned registrations remain
|
|
243
|
+
valid; nested parameter schemas are checked at registration; and `enum`, `const`, and
|
|
244
|
+
`uniqueItems` use JSON-type-sensitive equality rather than Python's boolean/integer aliasing.
|
|
245
|
+
- Corrected job-versus-artifact migration classification, strict-mode `kur-explain` policy,
|
|
246
|
+
vector event-reduction preflight, nested non-finite review JSON conversion, group-report identity
|
|
247
|
+
collisions, actionable video inference errors, and feature-schema drift detection.
|
|
248
|
+
- Hardened the SLAM plugin with exact timestamp coverage and explicit point-cloud format/version
|
|
249
|
+
validation in both manifests and NPZ artifacts.
|
|
250
|
+
- Added focused regression suites for the comprehensive correctness review and its independent
|
|
251
|
+
cross-subsystem follow-up, alongside full core, plugin, typing, lint, example, and distribution
|
|
252
|
+
build verification.
|
|
253
|
+
|
|
254
|
+
## 0.1.0rc3
|
|
255
|
+
|
|
256
|
+
- Added transactional plugin loading: failed initializers roll back registry mutations, explicit
|
|
257
|
+
modules fail fast, and broken ambient entry points no longer hide healthy plugins; ambient
|
|
258
|
+
failures remain visible through discovery CLIs, `plugin_failures()`, and run provenance.
|
|
259
|
+
- Added `kur-plugin-check`, the public `check_plugins()` API, and a one-command isolated plugin
|
|
260
|
+
validation workflow covering dependencies, tests, lint, wheels, entry points, and descriptors.
|
|
261
|
+
- Added typed `TransformContext` boundary accessors while retaining the rc2 batch-key
|
|
262
|
+
compatibility form, plus deterministic lookbehind/lookahead and overlapping-window ownership.
|
|
263
|
+
- Bounded source scheduling, Ray submission, transform context memory, Hugging Face partition
|
|
264
|
+
behavior, and the pixel-shift radial cache; kept Arrow publication on the caller thread and
|
|
265
|
+
removed process-global reporting assumptions. Ray's `workers` now caps submitted tasks even
|
|
266
|
+
when `max_in_flight` is larger.
|
|
267
|
+
- Hardened source-ID normalization, normalized timestamp grouping, count-budget tag coverage,
|
|
268
|
+
remote replacement failure behavior, and unknown-total progress reporting. Direct low-level
|
|
269
|
+
curation calls now require non-empty string source IDs; convert `pathlib.Path` values with `str`.
|
|
270
|
+
- Binning now fails explicitly when any candidate lacks a requested axis feature instead of
|
|
271
|
+
silently treating the missing metric as zero.
|
|
272
|
+
- Added cross-mode determinism conformance tests spanning serial/parallel, streaming/materialized,
|
|
273
|
+
bounded/reference, and optional Ray execution.
|
|
274
|
+
- Isolated every repository plugin in CI and added exact-CI-artifact plugin publication with
|
|
275
|
+
metadata, hash, wheel-content, dependency, and installed-discovery checks.
|
|
276
|
+
- Corrected affected documentation claims and added regression coverage for realistic failure,
|
|
277
|
+
boundary, overlap, retry, packaging, and discovery scenarios.
|
|
278
|
+
- Pixel-shift radial geometry is now computed and cached as float32 (rather than float64), so
|
|
279
|
+
measurements may differ by normal float32 rounding; the two-entry cache deliberately bounds
|
|
280
|
+
global memory and may recompute when a process cycles through more than two resolutions.
|
|
281
|
+
|
|
282
|
+
## 0.1.0rc2
|
|
283
|
+
|
|
284
|
+
- Added integrity-aware shard resume, structured execution diagnostics, Python 3.14 and
|
|
285
|
+
minimum-dependency CI, coverage artifacts, and real optional-backend integration tests.
|
|
286
|
+
- Hardened transform dispatch so implementation `TypeError`s are not mistaken for signature
|
|
287
|
+
mismatches, and fixed transform discovery through `kur-list`.
|
|
288
|
+
- Standardized CLI failures as concise one-line errors by default while retaining full
|
|
289
|
+
tracebacks behind `--debug`.
|
|
290
|
+
- Hardened release automation with pinned build tools, artifact validation, CI-gated artifact
|
|
291
|
+
promotion, platform and minimal-install smoke coverage, and trusted PyPI publishing.
|
|
292
|
+
- Added a runtime `kuration.__version__`, a security policy, and an explicit compatibility
|
|
293
|
+
policy.
|
|
294
|
+
- Reworked the README and documentation around product outcomes and user journeys, added a
|
|
295
|
+
searchable documentation site, editable diagrams, and compositional/transform-backed operator
|
|
296
|
+
examples.
|
|
297
|
+
- Added support and governance guidance, contribution templates, documentation link checks, and
|
|
298
|
+
deployment configuration for the published documentation site.
|
|
299
|
+
- Fixed bounded columnar execution against the declared PyArrow 15 minimum.
|
|
300
|
+
|
|
301
|
+
## 0.1.0rc1
|
|
302
|
+
|
|
303
|
+
- Initial release candidate for the schema-driven curation SDK, pipeline, job/CLI layer,
|
|
304
|
+
versioned artifacts, extension registries, bounded execution, and optional integrations.
|