测试能力地图(生成文件,勿手改)¶
生成:myastro test-map。守卫:tests/guards/test_capability_map.py;手改本文件或漏挂标记都会让测试变红。
能力 id 定义在 src/myastro/io/testmap.py;能力说明与成熟度见 capabilities.md。
共 25 项能力、1483 个测试。
| 能力 | 说明 | 测试数 |
|---|---|---|
source.registry |
源注册表与描述符:接入声明、示例参数、漂移守卫 | 43 |
source.contract |
单源实现契约:参数校验、落盘、入库、空结果 | 151 |
source.health |
源健康探测与状态覆盖(ok/degraded/unreachable) | 18 |
source.dormant |
休眠源防腐烂(asassn:后端失联期间保持正确) | 2 |
acquire.fetch |
单件获取:缓存短路、原子落盘、入库、aria2 对账 | 29 |
acquire.query |
计划型查询:解析出 URL/文件名但不提交 | 1 |
acquire.batch |
批量下单与批次资格(构不出 spec 的源不得入选) | 7 |
acquire.retry |
重试:僵尸判定、跨进程重提、task 推断、强制重下 | 22 |
acquire.cancel |
取消与作业记录删除(资产保留) | 3 |
acquire.manifest |
清单(YAML)批量获取 | 2 |
acquire.schedule |
定时任务(launchd 代理的生成与装卸) | 4 |
manage.ledger |
账本:schema/迁移、缓存身份、meta 溯源、原子写 | 43 |
manage.integrity |
完整性巡检:sha 基线、损坏与缺失检测 | 11 |
manage.search |
本地检索(目标/坐标/时间) | 31 |
manage.coverage |
索引覆盖率统计 | 6 |
manage.index |
索引构建与浏览(builder/url 两类来源) | 16 |
process.lc |
时序处理工具:归一化、折叠、周期搜索、凌星搜索 | 20 |
present.tui |
TUI 行为:面板、键位、身份寻址、格式化 | 749 |
present.cli |
CLI 行为:子命令参数接线、输出与退出码 | 27 |
ci.config |
CI 工作流配置(可解析性/结构) | 16 |
manage.doctor |
环境自检:依赖/路径可写/账本/文件系统/索引/平台 | 15 |
manage.backup |
账本备份与恢复:在线备份、默认拒绝覆盖、安全副本 | 23 |
facade.api |
门面契约:错误分类、参数校验、执行器隐身 | 3 |
design.contract |
契约快照(门面 API/CLI/退出码/schema/注册表) | 24 |
design.guards |
设计守卫:文档同步、边界规则、能力覆盖 | 217 |
能力 → 测试明细¶
source.registry — 源注册表与描述符:接入声明、示例参数、漂移守卫¶
tests/facade/test_facade.py::TestFacadePrefill::test_prefill_descriptor_jobtests/facade/test_facade.py::TestFacadePrefill::test_prefill_missing_jobtests/facade/test_facade.py::TestFacadeSurface::test_describe_unknown_raisestests/facade/test_facade.py::TestFacadeSurface::test_sources_and_describetests/guards/test_descriptor_contract.py::TestDescriptorContract::test_descriptor_fields_cover_task_paramstests/guards/test_descriptor_contract.py::test_descriptors_cover_sourcestests/guards/test_descriptor_contract.py::test_descriptors_cover_sourcestests/guards/test_descriptor_contract.py::test_descriptors_cover_sourcestests/guards/test_descriptor_contract.py::test_descriptors_cover_sourcestests/guards/test_descriptor_contract.py::test_descriptors_cover_sourcestests/guards/test_descriptor_contract.py::test_descriptors_cover_sourcestests/guards/test_descriptor_contract.py::test_descriptors_cover_sourcestests/guards/test_descriptor_contract.py::test_descriptors_cover_sourcestests/guards/test_descriptor_contract.py::test_register_source_extension_pointtests/guards/test_descriptor_contract.py::test_register_source_extension_pointtests/guards/test_descriptor_contract.py::test_register_source_extension_pointtests/guards/test_descriptor_contract.py::test_register_source_extension_pointtests/guards/test_descriptor_contract.py::test_register_source_extension_pointtests/guards/test_descriptor_contract.py::test_register_source_extension_pointtests/guards/test_descriptor_contract.py::test_register_source_extension_pointtests/guards/test_descriptor_contract.py::test_register_source_extension_pointtests/guards/test_registry.py::TestRegistryDrift::test_url_sources_have_source_entriestests/guards/test_registry.py::TestSourcesSchema::test_schema_rejects_bad_statustests/guards/test_registry.py::TestSourcesSchema::test_statuses_are_closed_vocabtests/sources/test_unwise.py::test_descriptor_offers_only_single_bandstests/sources/test_unwise.py::test_descriptor_offers_only_single_bandstests/sources/test_unwise.py::test_descriptor_offers_only_single_bandstests/sources/test_unwise.py::test_descriptor_offers_only_single_bandstests/sources/test_unwise.py::test_descriptor_offers_only_single_bandstests/sources/test_unwise.py::test_descriptor_offers_only_single_bandstests/sources/test_unwise.py::test_descriptor_offers_only_single_bandstests/sources/test_unwise.py::test_descriptor_offers_only_single_bandstests/sources/test_unwise.py::test_descriptor_offers_only_single_bandstests/sources/test_unwise.py::test_descriptor_offers_only_single_bandstests/unit/test_prefill.py::TestPrefillMapping::test_custom_url_job_maps_to_custom_formtests/unit/test_prefill.py::TestPrefillMapping::test_custom_url_without_dest_uses_url_basenametests/unit/test_prefill.py::TestPrefillMapping::test_descriptor_hit_keeps_declared_paramstests/unit/test_prefill.py::TestPrefillMapping::test_empty_spec_degradestests/unit/test_prefill.py::TestPrefillMapping::test_extra_params_dropped_and_reportedtests/unit/test_prefill.py::TestPrefillMapping::test_missing_required_fields_reportedtests/unit/test_prefill.py::TestPrefillMapping::test_params_with_no_overlap_reportedtests/unit/test_prefill.py::TestPrefillMapping::test_prefill_type_is_exportedtests/unit/test_prefill.py::TestPrefillMapping::test_unknown_source_degrades
source.contract — 单源实现契约:参数校验、落盘、入库、空结果¶
tests/kernel/test_example_plugin.py::TestExamplePlugin::test_example_declares_entry_point_for_batch2tests/kernel/test_example_plugin.py::TestExamplePlugin::test_example_only_uses_public_apitests/kernel/test_example_plugin.py::TestExamplePlugin::test_fetches_offline_and_lands_in_ledgertests/kernel/test_example_plugin.py::TestExamplePlugin::test_registers_source_and_tasktests/kernel/test_plugin_contract.py::TestBuiltinUnchanged::test_all_builtins_pass_validationtests/kernel/test_plugin_contract.py::TestBuiltinUnchanged::test_builtin_lists_are_frozen_snapshotstests/kernel/test_plugin_contract.py::TestEndToEnd::test_plugin_task_fetches_end_to_endtests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::_synth_task_registeredtests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_failed_registration_leaves_registry_cleantests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_refuses_duplicate_plugin_without_replacetests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_refuses_to_shadow_builtin_sourcetests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_api_version_mismatchtests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_bad_field_nametests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_bad_probe_urltests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_both_executorstests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_duplicate_field_namestests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_empty_metatests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_inconsistent_example_paramstests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_invalid_nametests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_missing_example_paramstests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_no_executortests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_requires_without_install_hinttests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_uncompilable_patterntests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_unknown_indextests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_unknown_statustests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_unknown_tasktests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_unknown_url_keytests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_url_key_source_requires_field_guardtests/kernel/test_plugin_contract.py::TestTaskRegistration::test_refuses_duplicate_task_without_replacetests/kernel/test_plugin_contract.py::TestTaskRegistration::test_refuses_to_shadow_builtin_tasktests/kernel/test_plugin_contract.py::TestTaskRegistration::test_rejects_bad_nametests/kernel/test_plugin_contract.py::TestTaskRegistration::test_rejects_non_callabletests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_onlytests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshottests/kernel/test_plugin_discovery.py::TestContract::test_constants_are_the_documented_contracttests/kernel/test_plugin_discovery.py::TestContract::test_discover_is_idempotenttests/kernel/test_plugin_discovery.py::TestContract::test_empty_by_default_without_pluginstests/kernel/test_plugin_discovery.py::TestContract::test_error_record_shapetests/kernel/test_plugin_discovery.py::TestContract::test_views_are_read_only_copiestests/kernel/test_plugin_discovery.py::TestDoctorVisibility::_plugin_checkstests/kernel/test_plugin_discovery.py::TestDoctorVisibility::test_hanging_plugin_is_reported_not_fataltests/kernel/test_plugin_discovery.py::TestDoctorVisibility::test_reports_failure_with_reason_and_hinttests/kernel/test_plugin_discovery.py::TestDoctorVisibility::test_reports_loaded_plugintests/kernel/test_plugin_discovery.py::TestDoctorVisibility::test_reports_none_installedtests/kernel/test_plugin_discovery.py::TestEnvParsing::test_does_not_trigger_discoverytests/kernel/test_plugin_discovery.py::TestEnvParsing::test_empty_when_unsettests/kernel/test_plugin_discovery.py::TestEnvParsing::test_parses_list_and_ignores_blankstests/kernel/test_plugin_discovery.py::TestLazyWiring::test_cli_main_triggers_discoverytests/kernel/test_plugin_discovery.py::TestLazyWiring::test_cli_parser_includes_plugin_source_after_discoverytests/kernel/test_plugin_discovery.py::TestLazyWiring::test_descriptor_lookup_triggers_discoverytests/kernel/test_plugin_discovery.py::TestLazyWiring::test_import_myastro_does_not_discovertests/kernel/test_plugin_discovery.py::TestLazyWiring::test_sources_triggers_discoverytests/kernel/test_plugin_discovery.py::TestLoader::test_attr_form_invokes_register_functiontests/kernel/test_plugin_discovery.py::TestLoader::test_bad_env_format_is_toleratedtests/kernel/test_plugin_discovery.py::TestLoader::test_duplicate_module_listed_twice_loads_oncetests/kernel/test_plugin_discovery.py::TestLoader::test_entry_points_channel_is_supportedtests/kernel/test_plugin_discovery.py::TestLoader::test_hanging_plugin_is_isolated_by_probetests/kernel/test_plugin_discovery.py::TestLoader::test_import_error_is_recordedtests/kernel/test_plugin_discovery.py::TestLoader::test_loads_plugin_from_env_vartests/kernel/test_plugin_discovery.py::TestLoader::test_missing_module_is_recorded_not_raisedtests/kernel/test_plugin_discovery.py::TestLoader::test_registration_error_is_recorded_with_hinttests/kernel/test_plugin_discovery.py::TestOrigenVisibility::test_builtin_sources_are_marked_builtintests/kernel/test_plugin_discovery.py::TestOrigenVisibility::test_plugin_sources_are_marked_with_moduletests/kernel/test_plugin_discovery.py::TestOrigenVisibility::test_runtime_registered_source_is_marked_runtimetests/kernel/test_plugin_discovery.py::TestRecoveryFallback::test_resolve_fn_recovers_plugin_tasktests/kernel/test_plugin_discovery.py::TestRecoveryFallback::test_resolve_fn_still_raises_when_task_truly_missingtests/kernel/test_plugin_discovery.py::TestUnresolvableTask::test_missing_task_marks_job_failed_instead_of_killing_threadtests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_errortests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_errortests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_errortests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_errortests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_errortests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_errortests/sources/test_exoplanet.py::TestSolutionSelection::test_deterministic_across_orderingstests/sources/test_exoplanet.py::TestSolutionSelection::test_fallback_to_period_onlytests/sources/test_exoplanet.py::TestSolutionSelection::test_most_precise_among_completetests/sources/test_exoplanet.py::TestSolutionSelection::test_prefers_complete_solution_regardless_of_row_ordertests/sources/test_exoplanet.py::TestSolutionSelection::test_unknown_planet_raisestests/sources/test_gaia.py::TestGaia::test_fn_writes_parquet_and_registerstests/sources/test_gaia.py::TestGaia::test_radius_validationtests/sources/test_gaia.py::test_gaia_without_columnstests/sources/test_gaia.py::test_gaia_without_columnstests/sources/test_gaia.py::test_gaia_without_columnstests/sources/test_gaia.py::test_gaia_without_columnstests/sources/test_gaia.py::test_gaia_without_columnstests/sources/test_gaia.py::test_gaia_without_columnstests/sources/test_mpc.py::test_mpc_registers_parquettests/sources/test_mpc.py::test_mpc_registers_parquettests/sources/test_mpc.py::test_mpc_registers_parquettests/sources/test_simbad.py::test_simbad_empty_oktests/sources/test_simbad.py::test_simbad_empty_oktests/sources/test_simbad.py::test_simbad_empty_oktests/sources/test_tess.py::TestTess::test_fn_produces_parquet_and_registerstests/sources/test_tess.py::TestTess::test_invalid_cadence_rejectedtests/sources/test_tess.py::TestTess::test_slugtests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noisetests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noisetests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noisetests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noisetests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noisetests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noisetests/sources/test_unwise.py::TestCutoutUrl::test_band_is_integer_bitmasktests/sources/test_unwise.py::TestCutoutUrl::test_merged_band_rejectedtests/sources/test_unwise.py::TestCutoutUrl::test_unknown_band_rejectedtests/sources/test_unwise.py::TestTarballExtraction::_patch_gettests/sources/test_unwise.py::TestTarballExtraction::test_empty_response_rejectedtests/sources/test_unwise.py::TestTarballExtraction::test_extracts_fits_memberstests/sources/test_unwise.py::TestTarballExtraction::test_tarball_without_fits_rejectedtests/sources/test_unwise.py::test_task_reads_fits_and_registerstests/sources/test_unwise.py::test_task_reads_fits_and_registerstests/sources/test_unwise.py::test_task_reads_fits_and_registerstests/sources/test_unwise.py::test_task_reads_fits_and_registerstests/sources/test_unwise.py::test_task_reads_fits_and_registerstests/sources/test_unwise.py::test_task_reads_fits_and_registerstests/sources/test_unwise.py::test_task_reads_fits_and_registerstests/sources/test_unwise.py::test_task_reads_fits_and_registerstests/sources/test_unwise.py::test_task_reads_fits_and_registerstests/sources/test_unwise.py::test_task_reads_fits_and_registerstests/sources/test_vizier.py::test_vizier_via_facadetests/sources/test_vizier.py::test_vizier_via_facadetests/sources/test_vizier.py::test_vizier_via_facadetests/sources/test_ztf.py::TestZtfFrameCache::test_frame_cache_hit_no_new_jobtests/sources/test_ztf.py::TestZtfUrl::test_frame_nametests/sources/test_ztf.py::TestZtfUrl::test_url_patterntests/sources/test_ztf.py::test_ztf_lc_descriptor_and_mocktests/sources/test_ztf.py::test_ztf_lc_descriptor_and_mocktests/sources/test_ztf.py::test_ztf_lc_descriptor_and_mocktests/sources/test_ztf.py::test_ztf_lc_descriptor_and_mocktests/unit/test_path_safety.py::TestDescriptorRejectsHostileValues::test_brick_pattern_is_stricttests/unit/test_path_safety.py::TestDescriptorRejectsHostileValues::test_hostile_value_rejectedtests/unit/test_path_safety.py::TestDescriptorRejectsHostileValues::test_normal_value_still_accepted
source.health — 源健康探测与状态覆盖(ok/degraded/unreachable)¶
tests/kernel/test_health.py::TestHealth::test_facade_healthtests/kernel/test_health.py::TestHealth::test_probe_persists_and_gradestests/kernel/test_health.py::TestHealth::test_unprobeable_rejectedtests/kernel/test_health.py::TestProbeGrading::test_2xx_is_oktests/kernel/test_health.py::TestProbeGrading::test_4xx_is_degradedtests/kernel/test_health.py::TestProbeGrading::test_5xx_is_degradedtests/kernel/test_health.py::TestProbeGrading::test_connection_error_is_unreachabletests/kernel/test_health.py::TestProbeGrading::test_timeout_is_unreachabletests/sources/test_unwise.py::test_health_probe_hits_service_endpointtests/sources/test_unwise.py::test_health_probe_hits_service_endpointtests/sources/test_unwise.py::test_health_probe_hits_service_endpointtests/sources/test_unwise.py::test_health_probe_hits_service_endpointtests/sources/test_unwise.py::test_health_probe_hits_service_endpointtests/sources/test_unwise.py::test_health_probe_hits_service_endpointtests/sources/test_unwise.py::test_health_probe_hits_service_endpointtests/sources/test_unwise.py::test_health_probe_hits_service_endpointtests/sources/test_unwise.py::test_health_probe_hits_service_endpointtests/sources/test_unwise.py::test_health_probe_hits_service_endpoint
source.dormant — 休眠源防腐烂(asassn:后端失联期间保持正确)¶
tests/sources/test_asassn.py::TestAsassn::test_fn_writes_parquettests/sources/test_asassn.py::TestAsassn::test_radius_validation
acquire.fetch — 单件获取:缓存短路、原子落盘、入库、aria2 对账¶
tests/facade/test_facade.py::TestFacadeErrorTaxonomy::test_network_errortests/kernel/test_aria2_config.py::TestConfig::test_daemon_command_matches_runtime_configtests/kernel/test_aria2_config.py::TestConfig::test_defaults_preserve_backward_compatibilitytests/kernel/test_aria2_config.py::TestConfig::test_secret_and_port_are_runtime_configurabletests/kernel/test_aria2_config.py::TestFailFast::no_side_effectstests/kernel/test_aria2_config.py::TestFailFast::test_diagnose_distinguishes_not_running_from_wrong_secrettests/kernel/test_aria2_config.py::TestFailFast::test_missing_binary_fails_immediately_with_cross_platform_hinttests/kernel/test_aria2_config.py::TestFailFast::test_starts_daemon_when_binary_presenttests/kernel/test_aria2_config.py::TestFailFast::test_wrong_secret_is_reported_as_suchtests/kernel/test_jobs.py::TestAria2Validation::test_aria2_requires_url_desttests/kernel/test_jobs.py::TestHappyPath::test_deleted_file_invalidates_cachetests/kernel/test_jobs.py::TestHappyPath::test_fetch_registers_dataset_and_filestests/kernel/test_jobs.py::TestHappyPath::test_second_fetch_is_cache_hit_fn_called_oncetests/kernel/test_jobs.py::TestReconcile::test_active_download_not_writtentests/kernel/test_jobs.py::TestReconcile::test_complete_download_reconciled_to_donetests/kernel/test_jobs.py::TestReconcile::test_daemon_offline_nooptests/kernel/test_jobs.py::TestReconcile::test_error_download_reconciled_to_failedtests/kernel/test_jobs.py::TestSpec::test_aria2_without_url_rejectedtests/kernel/test_jobs.py::TestSpec::test_python_without_fn_rejectedtests/kernel/test_jobs.py::TestTuiCacheShortCircuit::test_check_cache_publictests/kernel/test_jobs.py::TestWaitSemantics::test_wait_missing_jobtests/kernel/test_jobs.py::TestWaitSemantics::test_wait_timeout_on_slow_fntests/unit/test_core.py::TestAtomicWrite::test_failure_keeps_existing_file_intacttests/unit/test_core.py::TestAtomicWrite::test_failure_leaves_no_tmp_and_no_targettests/unit/test_core.py::TestAtomicWrite::test_writes_and_replacestests/unit/test_core.py::TestRetry::test_4xx_not_retriedtests/unit/test_core.py::TestRetry::test_exhaustion_raisestests/unit/test_core.py::TestRetry::test_is_retryable_classificationtests/unit/test_core.py::TestRetry::test_success_after_failures
acquire.query — 计划型查询:解析出 URL/文件名但不提交¶
tests/facade/test_facade.py::TestFacadeE0::test_query_resolves_without_submit
acquire.batch — 批量下单与批次资格(构不出 spec 的源不得入选)¶
tests/facade/test_facade.py::TestFacadeErrorTaxonomy::test_batch_and_status_roundtriptests/kernel/test_batch.py::TestBatchE3::test_facade_batchtests/kernel/test_batch.py::TestBatchE3::test_submit_batch_shares_idtests/kernel/test_batch.py::test_retry_batchtests/kernel/test_batch.py::test_retry_batchtests/kernel/test_batch.py::test_retry_batchtests/kernel/test_batch.py::test_retry_batch
acquire.retry — 重试:僵尸判定、跨进程重提、task 推断、强制重下¶
tests/facade/test_facade.py::TestFacadeErrorTaxonomy::test_not_foundtests/facade/test_facade.py::TestFacadeErrorTaxonomy::test_state_error_on_non_retryabletests/kernel/test_jobs.py::TestCrossProcessRetry::test_aria2_retry_rebuilds_spec_from_dbtests/kernel/test_jobs.py::TestCrossProcessRetry::test_python_cross_process_still_rejectedtests/kernel/test_jobs.py::TestDoneForceRedownload::test_done_aria2_cross_process_forcetests/kernel/test_jobs.py::TestFailureAndRetry::test_done_no_force_still_rejectedtests/kernel/test_jobs.py::TestFailureAndRetry::test_done_python_in_registry_force_redownloadtests/kernel/test_jobs.py::TestFailureAndRetry::test_failure_recorded_then_retry_recoverstests/kernel/test_jobs.py::TestOldJobTaskInference::test_pre_E0_python_job_retryable_via_descriptortests/kernel/test_jobs.py::TestOrphan::test_fresh_running_not_markedtests/kernel/test_jobs.py::TestOrphan::test_stale_running_marked_orphanedtests/kernel/test_jobs.py::TestPythonZombie::test_stale_python_with_task_retryabletests/kernel/test_jobs.py::TestPythonZombie::test_stale_python_without_task_still_blockedtests/kernel/test_jobs.py::TestZombieRetry::test_fresh_running_not_retryabletests/kernel/test_jobs.py::TestZombieRetry::test_stale_queued_aria2_retryabletests/kernel/test_jobs.py::test_named_task_cross_process_retrytests/kernel/test_jobs.py::test_named_task_cross_process_retrytests/kernel/test_jobs.py::test_named_task_cross_process_retrytests/kernel/test_jobs.py::test_named_task_cross_process_retrytests/kernel/test_jobs.py::test_named_task_cross_process_retrytests/kernel/test_jobs.py::test_named_task_cross_process_retrytests/kernel/test_jobs.py::test_named_task_cross_process_retry
acquire.cancel — 取消与作业记录删除(资产保留)¶
tests/kernel/test_jobs.py::TestDeleteJobs::test_delete_failed_keeps_assetstests/kernel/test_jobs.py::TestDeleteJobs::test_healthy_running_refusedtests/kernel/test_jobs.py::TestDeleteJobs::test_missing_id_reported
acquire.manifest — 清单(YAML)批量获取¶
tests/sources/test_manifest.py::TestManifest::test_parse_and_submittests/sources/test_manifest.py::TestManifest::test_unknown_field_rejected
acquire.schedule — 定时任务(launchd 代理的生成与装卸)¶
tests/facade/test_facade.py::TestFacadeSurface::test_schedule_list_and_installtests/kernel/test_schedule.py::TestSchedule::test_plist_render_and_installtests/kernel/test_schedule.py::TestSchedule::test_unknown_tasktests/kernel/test_schedule.py::TestSchedule::test_weekday_variant
manage.ledger — 账本:schema/迁移、缓存身份、meta 溯源、原子写¶
tests/kernel/test_db.py::TestConfig::test_env_overridetests/kernel/test_db.py::TestConfig::test_init_idempotenttests/kernel/test_db.py::TestConfig::test_source_dirtests/kernel/test_db.py::TestConnectionLifecycle::_spytests/kernel/test_db.py::TestConnectionLifecycle::test_audit_closes_own_connectiontests/kernel/test_db.py::TestConnectionLifecycle::test_shared_handle_is_not_closedtests/kernel/test_db.py::TestConnectionLifecycle::test_status_closes_own_connectiontests/kernel/test_db.py::TestDB::test_context_managertests/kernel/test_db.py::TestDB::test_fresh_schema_covers_all_code_columnstests/kernel/test_db.py::TestDB::test_job_executor_check_constrainttests/kernel/test_db.py::TestDB::test_job_status_check_constrainttests/kernel/test_db.py::TestDB::test_migration_sets_user_versiontests/kernel/test_db.py::TestDB::test_reinit_idempotenttests/kernel/test_db.py::TestDB::test_roundtrip_dataset_filetests/kernel/test_db.py::TestDB::test_wal_modetests/kernel/test_db.py::TestMigrationRobustness::_make_stale_versiontests/kernel/test_db.py::TestMigrationRobustness::test_concurrent_init_is_safetests/kernel/test_db.py::TestMigrationRobustness::test_failed_migration_does_not_advance_versiontests/kernel/test_db.py::TestMigrationRobustness::test_heals_stale_version_when_columns_existtests/kernel/test_db.py::test_init_survives_concurrent_wal_changetests/kernel/test_db.py::test_init_survives_concurrent_wal_changetests/kernel/test_db.py::test_init_survives_concurrent_wal_changetests/kernel/test_db.py::test_init_survives_concurrent_wal_changetests/kernel/test_db.py::test_init_survives_concurrent_wal_changetests/kernel/test_db.py::test_init_survives_concurrent_wal_changetests/kernel/test_db.py::test_init_survives_concurrent_wal_changetests/kernel/test_jobs.py::TestMetaPersisted::test_cache_hit_returns_metatests/kernel/test_jobs.py::TestMetaPersisted::test_empty_meta_does_not_clobbertests/kernel/test_path_containment.py::TestDataRootContainment::test_escape_rejected_and_nothing_writtentests/kernel/test_path_containment.py::TestDataRootContainment::test_inside_root_acceptedtests/kernel/test_path_containment.py::TestDataRootContainment::test_parent_of_root_rejectedtests/unit/test_core.py::TestCacheKey::test_dict_order_insensitivetests/unit/test_core.py::TestCacheKey::test_different_params_differtests/unit/test_core.py::TestCacheKey::test_different_sources_differtests/unit/test_core.py::TestCacheKey::test_float_jitter_stabletests/unit/test_parquet_writer.py::TestWriteParquet::test_broken_utf8_does_not_raisetests/unit/test_parquet_writer.py::TestWriteParquet::test_concurrent_writes_do_not_interferetests/unit/test_parquet_writer.py::TestWriteParquet::test_does_not_use_pandas_arrow_conversiontests/unit/test_parquet_writer.py::TestWriteParquet::test_empty_frame_keeps_dtypestests/unit/test_parquet_writer.py::TestWriteParquet::test_index_is_not_writtentests/unit/test_parquet_writer.py::TestWriteParquet::test_mixed_object_column_becomes_stringtests/unit/test_parquet_writer.py::TestWriteParquet::test_no_temp_file_left_behindtests/unit/test_parquet_writer.py::TestWriteParquet::test_round_trip_values_and_dtypes
manage.integrity — 完整性巡检:sha 基线、损坏与缺失检测¶
tests/facade/test_facade.py::TestFacadeSurface::test_audit_search_delete_surfacetests/kernel/test_integrity.py::test_audit_baseline_then_corrupttests/kernel/test_integrity.py::test_audit_baseline_then_corrupttests/kernel/test_integrity.py::test_audit_baseline_then_corrupttests/kernel/test_integrity.py::test_audit_baseline_then_corrupttests/kernel/test_integrity.py::test_audit_baseline_then_corrupttests/kernel/test_integrity.py::test_audit_missingtests/kernel/test_integrity.py::test_audit_missingtests/kernel/test_integrity.py::test_audit_missingtests/kernel/test_integrity.py::test_audit_missingtests/kernel/test_integrity.py::test_audit_missing
manage.search — 本地检索(目标/坐标/时间)¶
tests/facade/test_facade.py::TestFacadeCoordinateSearch::test_near_parameters_are_acceptedtests/kernel/test_coords.py::TestAngularSeparation::test_declination_scalestests/kernel/test_coords.py::TestAngularSeparation::test_known_pairtests/kernel/test_coords.py::TestAngularSeparation::test_poletests/kernel/test_coords.py::TestAngularSeparation::test_wraparound_is_short_pathtests/kernel/test_coords.py::TestAngularSeparation::test_zerotests/kernel/test_coords.py::TestResolve::test_brick_via_indextests/kernel/test_coords.py::TestResolve::test_field_via_indextests/kernel/test_coords.py::TestResolve::test_filename_fallback_legacytests/kernel/test_coords.py::TestResolve::test_invalid_dec_rejectedtests/kernel/test_coords.py::TestResolve::test_meta_fallbacktests/kernel/test_coords.py::TestResolve::test_params_directtests/kernel/test_coords.py::TestResolve::test_params_win_over_indextests/kernel/test_coords.py::TestResolve::test_ra_normalized_to_0_360tests/kernel/test_coords.py::TestResolve::test_unknown_field_not_resolvedtests/kernel/test_coords.py::TestResolve::test_unresolvable_returns_nonetests/kernel/test_search.py::TestConeSearch::_seedtests/kernel/test_search.py::TestConeSearch::test_box_corner_excludedtests/kernel/test_search.py::TestConeSearch::test_ra_wraparoundtests/kernel/test_search.py::TestConeSearch::test_registration_resolves_and_stores_coordstests/kernel/test_search.py::TestConeSearch::test_rows_without_coords_excludedtests/kernel/test_search.py::TestConeSearch::test_sorted_by_separationtests/kernel/test_search.py::TestQueryBoundaries::_seedtests/kernel/test_search.py::TestQueryBoundaries::test_negative_limit_is_not_a_slicetests/kernel/test_search.py::TestQueryBoundaries::test_out_of_range_rejectedtests/kernel/test_search.py::TestQueryBoundaries::test_valid_parameters_still_worktests/kernel/test_search.py::test_search_by_target_and_neartests/kernel/test_search.py::test_search_by_target_and_neartests/kernel/test_search.py::test_search_by_target_and_neartests/kernel/test_search.py::test_search_by_target_and_neartests/kernel/test_search.py::test_search_by_target_and_near
manage.coverage — 索引覆盖率统计¶
tests/facade/test_facade.py::TestFacadeSurface::test_coveragetests/kernel/test_search.py::test_coveragetests/kernel/test_search.py::test_coveragetests/kernel/test_search.py::test_coveragetests/kernel/test_search.py::test_coveragetests/kernel/test_search.py::test_coverage
manage.index — 索引构建与浏览(builder/url 两类来源)¶
tests/facade/test_facade.py::TestFacadeSurface::test_index_lifecycletests/kernel/test_index.py::TestBatchEligibility::test_eligibility_matches_buildable_spectests/kernel/test_index.py::TestBatchEligibility::test_legacy_includedtests/kernel/test_index.py::TestBatchEligibility::test_ztf_excluded_needs_ffdtests/kernel/test_index.py::TestBatchEligibility::test_ztf_meta_includedtests/kernel/test_index.py::TestBatchEligibility::test_ztf_would_fail_without_ffdtests/kernel/test_index.py::TestIndexCacheAndPrefix::_synthtests/kernel/test_index.py::TestIndexCacheAndPrefix::test_cache_reused_until_file_changestests/kernel/test_index.py::TestIndexCacheAndPrefix::test_prefix_matches_naive_scantests/kernel/test_index.py::TestIndexCacheAndPrefix::test_save_invalidates_cachetests/kernel/test_index.py::TestIndexRegistry::test_legacy_still_url_basedtests/kernel/test_index.py::TestIndexRegistry::test_ztf_fields_registered_as_buildertests/kernel/test_index.py::TestZtfFieldsBuild::test_build_is_local_and_compacttests/kernel/test_index.py::TestZtfFieldsBuild::test_known_field_coordinatestests/kernel/test_index.py::TestZtfFieldsBuild::test_prefix_search_on_int_keytests/kernel/test_index.py::TestZtfFieldsBuild::test_rebuild_idempotent
process.lc — 时序处理工具:归一化、折叠、周期搜索、凌星搜索¶
tests/unit/test_lc.py::TestPeriodSearch::test_ls_only_modetests/unit/test_lc.py::TestPeriodSearch::test_pdm_not_worse_than_ls_on_asymmetrictests/unit/test_lc.py::TestPeriodSearch::test_refine_curve_exposed_for_plottingtests/unit/test_lc.py::TestPeriodSearch::test_sine_recoverytests/unit/test_lc.py::TestStellarParams::test_params_are_forwarded_when_giventests/unit/test_lc.py::TestStellarParams::test_real_run_with_stellar_params_is_warning_freetests/unit/test_lc.py::TestTransforms::test_bin_phase_empty_bins_nantests/unit/test_lc.py::TestTransforms::test_bin_phase_matches_conventiontests/unit/test_lc.py::TestTransforms::test_clip_rangetests/unit/test_lc.py::TestTransforms::test_fold_collapses_variancetests/unit/test_lc.py::TestTransforms::test_fold_range_and_sortingtests/unit/test_lc.py::TestTransforms::test_fold_unit_conventiontests/unit/test_lc.py::TestTransforms::test_mag_amplitudetests/unit/test_lc.py::TestTransforms::test_normalize_median_onetests/unit/test_lc.py::TestTransforms::test_normalize_rejects_zero_mediantests/unit/test_lc.py::TestTransforms::test_quality_cuttests/unit/test_lc.py::TestTransforms::test_sigma_clip_removes_outlierstests/unit/test_lc.py::TestTransitSearch::test_depth_semantics_is_true_depthtests/unit/test_lc.py::TestTransitSearch::test_raw_available_for_advanced_usetests/unit/test_lc.py::TestTransitSearch::test_unnormalized_flux_still_works
present.tui — TUI 行为:面板、键位、身份寻址、格式化¶
tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_rendertests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_every_field_has_a_labeltests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_labels_survive_filled_valuestests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_placeholder_holds_only_exampletests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_required_marker_matches_descriptortests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelledtests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_missing_indextests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_reports_no_matchtests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_keytests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_shows_completion_targettests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_notetests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fieldstests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typingtests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_indextests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_changed_data_repaints_oncetests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_column_widths_are_deterministic_and_cappedtests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewporttests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_first_render_matches_after_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuildtests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_livetests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_refresh.py::test_unchanged_data_produces_no_framestests/ui/test_suggest.py::TestIndexSuggester::test_empty_value_yields_nonetests/ui/test_suggest.py::TestIndexSuggester::test_exact_key_yields_nonetests/ui/test_suggest.py::TestIndexSuggester::test_missing_index_degrades_silentlytests/ui/test_suggest.py::TestIndexSuggester::test_no_match_yields_nonetests/ui/test_suggest.py::TestIndexSuggester::test_partial_prefix_completes_to_first_keytests/ui/test_suggest.py::test_modal_indexed_fields_have_suggestertests/ui/test_suggest.py::test_modal_indexed_fields_have_suggestertests/ui/test_suggest.py::test_modal_indexed_fields_have_suggestertests/ui/test_suggest.py::test_modal_indexed_fields_have_suggestertests/ui/test_suggest.py::test_modal_indexed_fields_have_suggestertests/ui/test_suggest.py::test_modal_indexed_fields_have_suggestertests/ui/test_suggest.py::test_modal_indexed_fields_have_suggestertests/ui/test_suggest.py::test_modal_indexed_fields_have_suggestertests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrowtests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrowtests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrowtests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrowtests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrowtests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrowtests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrowtests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrowtests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_assets_view_via_drilltests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_cursor_survives_refreshtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_cleared_on_pane_switchtests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_detail_consistent_after_sorttests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_by_path_prefixtests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_down_to_assetstests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_identity_restoretests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_drill_esc_restores_cursortests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_index_candidates_previewtests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_info_paneltests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_filter_cycletests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_jobs_outcome_columnstests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_modaltests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_new_job_registry_sourcetests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_refresh_anchors_cursor_identitytests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_keeps_cursor_on_itemtests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_sort_toggletests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_tab_advances_focus_on_indexed_fieldstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/ui/test_top.py::test_top_renders_panelstests/unit/test_format.py::test_fmt_size_adaptivetests/unit/test_format.py::test_fmt_size_adaptivetests/unit/test_format.py::test_fmt_size_adaptive
present.cli — CLI 行为:子命令参数接线、输出与退出码¶
tests/cli/test_cli.py::TestDoctorInitBackupRestore::test_backup_then_restore_round_triptests/cli/test_cli.py::TestDoctorInitBackupRestore::test_doctor_exit_1_on_failuretests/cli/test_cli.py::TestDoctorInitBackupRestore::test_doctor_ok_in_clean_envtests/cli/test_cli.py::TestDoctorInitBackupRestore::test_init_creates_pathstests/cli/test_cli.py::TestDoctorInitBackupRestore::test_restore_without_force_fails_cleanlytests/cli/test_cli.py::TestErrorExitCodes::test_healthy_delete_is_refused_with_partial_codetests/cli/test_cli.py::TestErrorExitCodes::test_invalid_task_rejected_by_argparsetests/cli/test_cli.py::TestErrorExitCodes::test_not_foundtests/cli/test_cli.py::TestHappyPaths::test_audit_empty_ledgertests/cli/test_cli.py::TestHappyPaths::test_coverage_after_index_buildtests/cli/test_cli.py::TestHappyPaths::test_doc_sync_into_temp_doctests/cli/test_cli.py::TestHappyPaths::test_fetch_unknown_source_rejected_by_argparsetests/cli/test_cli.py::TestHappyPaths::test_index_list_and_update_buildertests/cli/test_cli.py::TestHappyPaths::test_jobs_emptytests/cli/test_cli.py::TestHappyPaths::test_orphans_and_delete_and_batchtests/cli/test_cli.py::TestHappyPaths::test_schedule_install_and_removetests/cli/test_cli.py::TestHappyPaths::test_schedule_list_offlinetests/cli/test_cli.py::TestHappyPaths::test_search_renders_rows_with_separationtests/cli/test_cli.py::TestHappyPaths::test_test_map_write_and_checktests/cli/test_cli.py::TestParseSurface::test_fetch_help_exposes_every_fieldtests/cli/test_cli.py::TestParseSurface::test_top_level_help_lists_all_commandstests/cli/test_cli.py::TestSourceCheckoutOnlyCommands::_assert_no_docs_writtentests/cli/test_cli.py::TestSourceCheckoutOnlyCommands::_break_source_roottests/cli/test_cli.py::TestSourceCheckoutOnlyCommands::test_doc_sync_outside_checkouttests/cli/test_cli.py::TestSourceCheckoutOnlyCommands::test_test_map_outside_checkouttests/cli/test_cli.py::TestVersion::test_version_flagtests/cli/test_cli.py::TestVersion::test_version_is_single_sourced
ci.config — CI 工作流配置(可解析性/结构)¶
tests/guards/test_workflows_parse.py::test_workflow_dir_is_not_emptytests/guards/test_workflows_parse.py::test_workflow_dir_is_not_emptytests/guards/test_workflows_parse.py::test_workflow_dir_is_not_emptytests/guards/test_workflows_parse.py::test_workflow_dir_is_not_emptytests/guards/test_workflows_parse.py::test_workflow_dir_is_not_emptytests/guards/test_workflows_parse.py::test_workflow_dir_is_not_emptytests/guards/test_workflows_parse.py::test_workflow_dir_is_not_emptytests/guards/test_workflows_parse.py::test_workflow_dir_is_not_emptytests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formedtests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formedtests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formedtests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formedtests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formedtests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formedtests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formedtests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formed
manage.doctor — 环境自检:依赖/路径可写/账本/文件系统/索引/平台¶
tests/facade/test_facade.py::TestDoctorAndBackupContract::test_doctor_returns_checkstests/kernel/test_doctor.py::TestDoctorChecks::test_fresh_env_has_no_failurestests/kernel/test_doctor.py::TestDoctorChecks::test_json_serializabletests/kernel/test_doctor.py::TestDoctorChecks::test_local_filesystem_is_oktests/kernel/test_doctor.py::TestDoctorChecks::test_network_filesystem_for_ledger_is_failuretests/kernel/test_doctor.py::TestDoctorChecks::test_one_broken_check_does_not_kill_the_resttests/kernel/test_doctor.py::TestDoctorChecks::test_reports_missing_filestests/kernel/test_doctor.py::TestDoctorChecks::test_schema_ahead_of_code_is_failuretests/kernel/test_doctor.py::TestDoctorChecks::test_unwritable_data_root_is_failuretests/kernel/test_doctor.py::TestDoctorChecks::test_version_tuple_comparisontests/kernel/test_doctor.py::test_optional_dep_hint_is_actually_runnabletests/kernel/test_doctor.py::test_optional_dep_hint_is_actually_runnabletests/kernel/test_doctor.py::test_optional_dep_hint_is_actually_runnabletests/kernel/test_doctor.py::test_optional_dep_hint_is_actually_runnabletests/kernel/test_doctor.py::test_optional_dep_hint_is_actually_runnable
manage.backup — 账本备份与恢复:在线备份、默认拒绝覆盖、安全副本¶
tests/facade/test_facade.py::TestDoctorAndBackupContract::test_backup_errors_are_param_errorstests/kernel/test_backup.py::TestBackupRestore::test_backup_is_consistent_snapshottests/kernel/test_backup.py::TestBackupRestore::test_missing_ledger_is_a_clear_errortests/kernel/test_backup.py::TestBackupRestore::test_refuses_to_overwrite_without_forcetests/kernel/test_backup.py::TestBackupRestore::test_rejects_future_schematests/kernel/test_backup.py::TestBackupRestore::test_rejects_non_myastro_databasetests/kernel/test_backup.py::TestBackupRestore::test_restore_accepts_db_file_pathtests/kernel/test_backup.py::TestBackupRestore::test_restore_while_another_connection_is_opentests/kernel/test_backup.py::TestBackupRestore::test_round_triptests/kernel/test_backup.py::TestBackupRestore::test_safety_copy_holds_pre_restore_statetests/kernel/test_backup.py::TestBackupRestore::test_with_index_copies_built_indexestests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_triptests/kernel/test_backup.py::test_facade_exports_round_trip
facade.api — 门面契约:错误分类、参数校验、执行器隐身¶
tests/facade/test_facade.py::TestFacadeE0::test_coerce_and_choicestests/facade/test_facade.py::TestFacadeE0::test_param_error_mappingtests/facade/test_facade.py::TestQueryBoundaryContract::test_boundary_violations_raise_param_error
design.contract — 契约快照(门面 API/CLI/退出码/schema/注册表)¶
tests/guards/test_contract_snapshot.py::test_contract_snapshot_is_currenttests/guards/test_contract_snapshot.py::test_contract_snapshot_is_currenttests/guards/test_contract_snapshot.py::test_contract_snapshot_is_currenttests/guards/test_contract_snapshot.py::test_contract_snapshot_is_currenttests/guards/test_contract_snapshot.py::test_contract_snapshot_is_currenttests/guards/test_contract_snapshot.py::test_contract_snapshot_is_currenttests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytestests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytestests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytestests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytestests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytestests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytestests/kernel/test_contract.py::TestNormalization::test_annotations_drop_module_prefixestests/kernel/test_contract.py::TestNormalization::test_memory_addresses_are_normalizedtests/kernel/test_contract.py::TestProblems::_writetests/kernel/test_contract.py::TestProblems::test_invalid_json_is_reportedtests/kernel/test_contract.py::TestProblems::test_missing_file_is_reportedtests/kernel/test_contract.py::TestProblems::test_reports_added_removed_and_changed_itemstests/kernel/test_contract.py::TestSnapshot::test_cli_covers_nested_commandstests/kernel/test_contract.py::TestSnapshot::test_covers_every_facade_exporttests/kernel/test_contract.py::TestSnapshot::test_covers_public_submodule_exportstests/kernel/test_contract.py::TestSnapshot::test_exit_codes_are_snapshottedtests/kernel/test_contract.py::TestSnapshot::test_is_deterministictests/kernel/test_contract.py::TestSnapshot::test_ledger_schema_matches_scene_version
design.guards — 设计守卫:文档同步、边界规则、能力覆盖¶
tests/cli/test_cli.py::TestSourceRoot::test_finds_repo_root_from_source_treetests/cli/test_cli.py::TestSourceRoot::test_raises_outside_source_treetests/cli/test_cli.py::TestSourceRoot::test_rejects_other_projects_pyprojecttests/guards/test_boundaries.py::test_top_imports_not_privatetests/guards/test_boundaries.py::test_top_imports_not_privatetests/guards/test_boundaries.py::test_top_imports_not_privatetests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_idtests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_capability_has_teststests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_every_test_has_exactly_one_capabilitytests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_teststests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_layer_import_boundariestests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_marker_ids_are_registeredtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_capability_map.py::test_test_map_doc_is_generatedtests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registrytests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registrytests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registrytests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registrytests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registrytests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registrytests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registrytests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registrytests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversaltests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversaltests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversaltests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversaltests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversaltests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversaltests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversaltests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversaltests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safetests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safetests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safetests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safetests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safetests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safetests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safetests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safetests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agreetests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agreetests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agreetests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agreetests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agreetests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agreetests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agreetests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agreetests/guards/test_doc_sync.py::test_design_doc_matrix_matches_generatortests/guards/test_doc_sync.py::test_design_doc_matrix_matches_generatortests/guards/test_doc_sync.py::test_design_doc_matrix_matches_generatortests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_bilingual_user_docs_are_pairedtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_documented_paths_existtests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_covers_core_modulestests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_designtests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/guards/test_docs_paths.py::test_readme_pair_existstests/unit/test_path_safety.py::TestSafeName::test_accepts_reasonable_namestests/unit/test_path_safety.py::TestSafeName::test_error_message_names_the_fieldtests/unit/test_path_safety.py::TestSafeName::test_rejects_unsafe