跳转至

测试能力地图(生成文件,勿手改)

生成: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_job
  • tests/facade/test_facade.py::TestFacadePrefill::test_prefill_missing_job
  • tests/facade/test_facade.py::TestFacadeSurface::test_describe_unknown_raises
  • tests/facade/test_facade.py::TestFacadeSurface::test_sources_and_describe
  • tests/guards/test_descriptor_contract.py::TestDescriptorContract::test_descriptor_fields_cover_task_params
  • tests/guards/test_descriptor_contract.py::test_descriptors_cover_sources
  • tests/guards/test_descriptor_contract.py::test_descriptors_cover_sources
  • tests/guards/test_descriptor_contract.py::test_descriptors_cover_sources
  • tests/guards/test_descriptor_contract.py::test_descriptors_cover_sources
  • tests/guards/test_descriptor_contract.py::test_descriptors_cover_sources
  • tests/guards/test_descriptor_contract.py::test_descriptors_cover_sources
  • tests/guards/test_descriptor_contract.py::test_descriptors_cover_sources
  • tests/guards/test_descriptor_contract.py::test_descriptors_cover_sources
  • tests/guards/test_descriptor_contract.py::test_register_source_extension_point
  • tests/guards/test_descriptor_contract.py::test_register_source_extension_point
  • tests/guards/test_descriptor_contract.py::test_register_source_extension_point
  • tests/guards/test_descriptor_contract.py::test_register_source_extension_point
  • tests/guards/test_descriptor_contract.py::test_register_source_extension_point
  • tests/guards/test_descriptor_contract.py::test_register_source_extension_point
  • tests/guards/test_descriptor_contract.py::test_register_source_extension_point
  • tests/guards/test_descriptor_contract.py::test_register_source_extension_point
  • tests/guards/test_registry.py::TestRegistryDrift::test_url_sources_have_source_entries
  • tests/guards/test_registry.py::TestSourcesSchema::test_schema_rejects_bad_status
  • tests/guards/test_registry.py::TestSourcesSchema::test_statuses_are_closed_vocab
  • tests/sources/test_unwise.py::test_descriptor_offers_only_single_bands
  • tests/sources/test_unwise.py::test_descriptor_offers_only_single_bands
  • tests/sources/test_unwise.py::test_descriptor_offers_only_single_bands
  • tests/sources/test_unwise.py::test_descriptor_offers_only_single_bands
  • tests/sources/test_unwise.py::test_descriptor_offers_only_single_bands
  • tests/sources/test_unwise.py::test_descriptor_offers_only_single_bands
  • tests/sources/test_unwise.py::test_descriptor_offers_only_single_bands
  • tests/sources/test_unwise.py::test_descriptor_offers_only_single_bands
  • tests/sources/test_unwise.py::test_descriptor_offers_only_single_bands
  • tests/sources/test_unwise.py::test_descriptor_offers_only_single_bands
  • tests/unit/test_prefill.py::TestPrefillMapping::test_custom_url_job_maps_to_custom_form
  • tests/unit/test_prefill.py::TestPrefillMapping::test_custom_url_without_dest_uses_url_basename
  • tests/unit/test_prefill.py::TestPrefillMapping::test_descriptor_hit_keeps_declared_params
  • tests/unit/test_prefill.py::TestPrefillMapping::test_empty_spec_degrades
  • tests/unit/test_prefill.py::TestPrefillMapping::test_extra_params_dropped_and_reported
  • tests/unit/test_prefill.py::TestPrefillMapping::test_missing_required_fields_reported
  • tests/unit/test_prefill.py::TestPrefillMapping::test_params_with_no_overlap_reported
  • tests/unit/test_prefill.py::TestPrefillMapping::test_prefill_type_is_exported
  • tests/unit/test_prefill.py::TestPrefillMapping::test_unknown_source_degrades

source.contract — 单源实现契约:参数校验、落盘、入库、空结果

  • tests/kernel/test_example_plugin.py::TestExamplePlugin::test_example_declares_entry_point_for_batch2
  • tests/kernel/test_example_plugin.py::TestExamplePlugin::test_example_only_uses_public_api
  • tests/kernel/test_example_plugin.py::TestExamplePlugin::test_fetches_offline_and_lands_in_ledger
  • tests/kernel/test_example_plugin.py::TestExamplePlugin::test_registers_source_and_task
  • tests/kernel/test_plugin_contract.py::TestBuiltinUnchanged::test_all_builtins_pass_validation
  • tests/kernel/test_plugin_contract.py::TestBuiltinUnchanged::test_builtin_lists_are_frozen_snapshots
  • tests/kernel/test_plugin_contract.py::TestEndToEnd::test_plugin_task_fetches_end_to_end
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::_synth_task_registered
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_failed_registration_leaves_registry_clean
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_refuses_duplicate_plugin_without_replace
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_refuses_to_shadow_builtin_source
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_api_version_mismatch
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_bad_field_name
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_bad_probe_url
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_both_executors
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_duplicate_field_names
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_empty_meta
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_inconsistent_example_params
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_invalid_name
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_missing_example_params
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_no_executor
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_requires_without_install_hint
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_uncompilable_pattern
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_unknown_index
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_unknown_status
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_unknown_task
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_rejects_unknown_url_key
  • tests/kernel/test_plugin_contract.py::TestRejectsBadPlugins::test_url_key_source_requires_field_guard
  • tests/kernel/test_plugin_contract.py::TestTaskRegistration::test_refuses_duplicate_task_without_replace
  • tests/kernel/test_plugin_contract.py::TestTaskRegistration::test_refuses_to_shadow_builtin_task
  • tests/kernel/test_plugin_contract.py::TestTaskRegistration::test_rejects_bad_name
  • tests/kernel/test_plugin_contract.py::TestTaskRegistration::test_rejects_non_callable
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_doc_example_uses_public_api_only
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_contract.py::test_plugin_does_not_perturb_guards_or_snapshot
  • tests/kernel/test_plugin_discovery.py::TestContract::test_constants_are_the_documented_contract
  • tests/kernel/test_plugin_discovery.py::TestContract::test_discover_is_idempotent
  • tests/kernel/test_plugin_discovery.py::TestContract::test_empty_by_default_without_plugins
  • tests/kernel/test_plugin_discovery.py::TestContract::test_error_record_shape
  • tests/kernel/test_plugin_discovery.py::TestContract::test_views_are_read_only_copies
  • tests/kernel/test_plugin_discovery.py::TestDoctorVisibility::_plugin_checks
  • tests/kernel/test_plugin_discovery.py::TestDoctorVisibility::test_hanging_plugin_is_reported_not_fatal
  • tests/kernel/test_plugin_discovery.py::TestDoctorVisibility::test_reports_failure_with_reason_and_hint
  • tests/kernel/test_plugin_discovery.py::TestDoctorVisibility::test_reports_loaded_plugin
  • tests/kernel/test_plugin_discovery.py::TestDoctorVisibility::test_reports_none_installed
  • tests/kernel/test_plugin_discovery.py::TestEnvParsing::test_does_not_trigger_discovery
  • tests/kernel/test_plugin_discovery.py::TestEnvParsing::test_empty_when_unset
  • tests/kernel/test_plugin_discovery.py::TestEnvParsing::test_parses_list_and_ignores_blanks
  • tests/kernel/test_plugin_discovery.py::TestLazyWiring::test_cli_main_triggers_discovery
  • tests/kernel/test_plugin_discovery.py::TestLazyWiring::test_cli_parser_includes_plugin_source_after_discovery
  • tests/kernel/test_plugin_discovery.py::TestLazyWiring::test_descriptor_lookup_triggers_discovery
  • tests/kernel/test_plugin_discovery.py::TestLazyWiring::test_import_myastro_does_not_discover
  • tests/kernel/test_plugin_discovery.py::TestLazyWiring::test_sources_triggers_discovery
  • tests/kernel/test_plugin_discovery.py::TestLoader::test_attr_form_invokes_register_function
  • tests/kernel/test_plugin_discovery.py::TestLoader::test_bad_env_format_is_tolerated
  • tests/kernel/test_plugin_discovery.py::TestLoader::test_duplicate_module_listed_twice_loads_once
  • tests/kernel/test_plugin_discovery.py::TestLoader::test_entry_points_channel_is_supported
  • tests/kernel/test_plugin_discovery.py::TestLoader::test_hanging_plugin_is_isolated_by_probe
  • tests/kernel/test_plugin_discovery.py::TestLoader::test_import_error_is_recorded
  • tests/kernel/test_plugin_discovery.py::TestLoader::test_loads_plugin_from_env_var
  • tests/kernel/test_plugin_discovery.py::TestLoader::test_missing_module_is_recorded_not_raised
  • tests/kernel/test_plugin_discovery.py::TestLoader::test_registration_error_is_recorded_with_hint
  • tests/kernel/test_plugin_discovery.py::TestOrigenVisibility::test_builtin_sources_are_marked_builtin
  • tests/kernel/test_plugin_discovery.py::TestOrigenVisibility::test_plugin_sources_are_marked_with_module
  • tests/kernel/test_plugin_discovery.py::TestOrigenVisibility::test_runtime_registered_source_is_marked_runtime
  • tests/kernel/test_plugin_discovery.py::TestRecoveryFallback::test_resolve_fn_recovers_plugin_task
  • tests/kernel/test_plugin_discovery.py::TestRecoveryFallback::test_resolve_fn_still_raises_when_task_truly_missing
  • tests/kernel/test_plugin_discovery.py::TestUnresolvableTask::test_missing_task_marks_job_failed_instead_of_killing_thread
  • tests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_error
  • tests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_error
  • tests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_error
  • tests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_error
  • tests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_error
  • tests/sources/test_asassn.py::test_service_unreachable_gives_concise_actionable_error
  • tests/sources/test_exoplanet.py::TestSolutionSelection::test_deterministic_across_orderings
  • tests/sources/test_exoplanet.py::TestSolutionSelection::test_fallback_to_period_only
  • tests/sources/test_exoplanet.py::TestSolutionSelection::test_most_precise_among_complete
  • tests/sources/test_exoplanet.py::TestSolutionSelection::test_prefers_complete_solution_regardless_of_row_order
  • tests/sources/test_exoplanet.py::TestSolutionSelection::test_unknown_planet_raises
  • tests/sources/test_gaia.py::TestGaia::test_fn_writes_parquet_and_registers
  • tests/sources/test_gaia.py::TestGaia::test_radius_validation
  • tests/sources/test_gaia.py::test_gaia_without_columns
  • tests/sources/test_gaia.py::test_gaia_without_columns
  • tests/sources/test_gaia.py::test_gaia_without_columns
  • tests/sources/test_gaia.py::test_gaia_without_columns
  • tests/sources/test_gaia.py::test_gaia_without_columns
  • tests/sources/test_gaia.py::test_gaia_without_columns
  • tests/sources/test_mpc.py::test_mpc_registers_parquet
  • tests/sources/test_mpc.py::test_mpc_registers_parquet
  • tests/sources/test_mpc.py::test_mpc_registers_parquet
  • tests/sources/test_simbad.py::test_simbad_empty_ok
  • tests/sources/test_simbad.py::test_simbad_empty_ok
  • tests/sources/test_simbad.py::test_simbad_empty_ok
  • tests/sources/test_tess.py::TestTess::test_fn_produces_parquet_and_registers
  • tests/sources/test_tess.py::TestTess::test_invalid_cadence_rejected
  • tests/sources/test_tess.py::TestTess::test_slug
  • tests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noise
  • tests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noise
  • tests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noise
  • tests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noise
  • tests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noise
  • tests/sources/test_tess.py::test_lightkurve_import_suppresses_oktopus_noise
  • tests/sources/test_unwise.py::TestCutoutUrl::test_band_is_integer_bitmask
  • tests/sources/test_unwise.py::TestCutoutUrl::test_merged_band_rejected
  • tests/sources/test_unwise.py::TestCutoutUrl::test_unknown_band_rejected
  • tests/sources/test_unwise.py::TestTarballExtraction::_patch_get
  • tests/sources/test_unwise.py::TestTarballExtraction::test_empty_response_rejected
  • tests/sources/test_unwise.py::TestTarballExtraction::test_extracts_fits_members
  • tests/sources/test_unwise.py::TestTarballExtraction::test_tarball_without_fits_rejected
  • tests/sources/test_unwise.py::test_task_reads_fits_and_registers
  • tests/sources/test_unwise.py::test_task_reads_fits_and_registers
  • tests/sources/test_unwise.py::test_task_reads_fits_and_registers
  • tests/sources/test_unwise.py::test_task_reads_fits_and_registers
  • tests/sources/test_unwise.py::test_task_reads_fits_and_registers
  • tests/sources/test_unwise.py::test_task_reads_fits_and_registers
  • tests/sources/test_unwise.py::test_task_reads_fits_and_registers
  • tests/sources/test_unwise.py::test_task_reads_fits_and_registers
  • tests/sources/test_unwise.py::test_task_reads_fits_and_registers
  • tests/sources/test_unwise.py::test_task_reads_fits_and_registers
  • tests/sources/test_vizier.py::test_vizier_via_facade
  • tests/sources/test_vizier.py::test_vizier_via_facade
  • tests/sources/test_vizier.py::test_vizier_via_facade
  • tests/sources/test_ztf.py::TestZtfFrameCache::test_frame_cache_hit_no_new_job
  • tests/sources/test_ztf.py::TestZtfUrl::test_frame_name
  • tests/sources/test_ztf.py::TestZtfUrl::test_url_pattern
  • tests/sources/test_ztf.py::test_ztf_lc_descriptor_and_mock
  • tests/sources/test_ztf.py::test_ztf_lc_descriptor_and_mock
  • tests/sources/test_ztf.py::test_ztf_lc_descriptor_and_mock
  • tests/sources/test_ztf.py::test_ztf_lc_descriptor_and_mock
  • tests/unit/test_path_safety.py::TestDescriptorRejectsHostileValues::test_brick_pattern_is_strict
  • tests/unit/test_path_safety.py::TestDescriptorRejectsHostileValues::test_hostile_value_rejected
  • tests/unit/test_path_safety.py::TestDescriptorRejectsHostileValues::test_normal_value_still_accepted

source.health — 源健康探测与状态覆盖(ok/degraded/unreachable)

  • tests/kernel/test_health.py::TestHealth::test_facade_health
  • tests/kernel/test_health.py::TestHealth::test_probe_persists_and_grades
  • tests/kernel/test_health.py::TestHealth::test_unprobeable_rejected
  • tests/kernel/test_health.py::TestProbeGrading::test_2xx_is_ok
  • tests/kernel/test_health.py::TestProbeGrading::test_4xx_is_degraded
  • tests/kernel/test_health.py::TestProbeGrading::test_5xx_is_degraded
  • tests/kernel/test_health.py::TestProbeGrading::test_connection_error_is_unreachable
  • tests/kernel/test_health.py::TestProbeGrading::test_timeout_is_unreachable
  • tests/sources/test_unwise.py::test_health_probe_hits_service_endpoint
  • tests/sources/test_unwise.py::test_health_probe_hits_service_endpoint
  • tests/sources/test_unwise.py::test_health_probe_hits_service_endpoint
  • tests/sources/test_unwise.py::test_health_probe_hits_service_endpoint
  • tests/sources/test_unwise.py::test_health_probe_hits_service_endpoint
  • tests/sources/test_unwise.py::test_health_probe_hits_service_endpoint
  • tests/sources/test_unwise.py::test_health_probe_hits_service_endpoint
  • tests/sources/test_unwise.py::test_health_probe_hits_service_endpoint
  • tests/sources/test_unwise.py::test_health_probe_hits_service_endpoint
  • tests/sources/test_unwise.py::test_health_probe_hits_service_endpoint

source.dormant — 休眠源防腐烂(asassn:后端失联期间保持正确)

  • tests/sources/test_asassn.py::TestAsassn::test_fn_writes_parquet
  • tests/sources/test_asassn.py::TestAsassn::test_radius_validation

acquire.fetch — 单件获取:缓存短路、原子落盘、入库、aria2 对账

  • tests/facade/test_facade.py::TestFacadeErrorTaxonomy::test_network_error
  • tests/kernel/test_aria2_config.py::TestConfig::test_daemon_command_matches_runtime_config
  • tests/kernel/test_aria2_config.py::TestConfig::test_defaults_preserve_backward_compatibility
  • tests/kernel/test_aria2_config.py::TestConfig::test_secret_and_port_are_runtime_configurable
  • tests/kernel/test_aria2_config.py::TestFailFast::no_side_effects
  • tests/kernel/test_aria2_config.py::TestFailFast::test_diagnose_distinguishes_not_running_from_wrong_secret
  • tests/kernel/test_aria2_config.py::TestFailFast::test_missing_binary_fails_immediately_with_cross_platform_hint
  • tests/kernel/test_aria2_config.py::TestFailFast::test_starts_daemon_when_binary_present
  • tests/kernel/test_aria2_config.py::TestFailFast::test_wrong_secret_is_reported_as_such
  • tests/kernel/test_jobs.py::TestAria2Validation::test_aria2_requires_url_dest
  • tests/kernel/test_jobs.py::TestHappyPath::test_deleted_file_invalidates_cache
  • tests/kernel/test_jobs.py::TestHappyPath::test_fetch_registers_dataset_and_files
  • tests/kernel/test_jobs.py::TestHappyPath::test_second_fetch_is_cache_hit_fn_called_once
  • tests/kernel/test_jobs.py::TestReconcile::test_active_download_not_written
  • tests/kernel/test_jobs.py::TestReconcile::test_complete_download_reconciled_to_done
  • tests/kernel/test_jobs.py::TestReconcile::test_daemon_offline_noop
  • tests/kernel/test_jobs.py::TestReconcile::test_error_download_reconciled_to_failed
  • tests/kernel/test_jobs.py::TestSpec::test_aria2_without_url_rejected
  • tests/kernel/test_jobs.py::TestSpec::test_python_without_fn_rejected
  • tests/kernel/test_jobs.py::TestTuiCacheShortCircuit::test_check_cache_public
  • tests/kernel/test_jobs.py::TestWaitSemantics::test_wait_missing_job
  • tests/kernel/test_jobs.py::TestWaitSemantics::test_wait_timeout_on_slow_fn
  • tests/unit/test_core.py::TestAtomicWrite::test_failure_keeps_existing_file_intact
  • tests/unit/test_core.py::TestAtomicWrite::test_failure_leaves_no_tmp_and_no_target
  • tests/unit/test_core.py::TestAtomicWrite::test_writes_and_replaces
  • tests/unit/test_core.py::TestRetry::test_4xx_not_retried
  • tests/unit/test_core.py::TestRetry::test_exhaustion_raises
  • tests/unit/test_core.py::TestRetry::test_is_retryable_classification
  • tests/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_roundtrip
  • tests/kernel/test_batch.py::TestBatchE3::test_facade_batch
  • tests/kernel/test_batch.py::TestBatchE3::test_submit_batch_shares_id
  • tests/kernel/test_batch.py::test_retry_batch
  • tests/kernel/test_batch.py::test_retry_batch
  • tests/kernel/test_batch.py::test_retry_batch
  • tests/kernel/test_batch.py::test_retry_batch

acquire.retry — 重试:僵尸判定、跨进程重提、task 推断、强制重下

  • tests/facade/test_facade.py::TestFacadeErrorTaxonomy::test_not_found
  • tests/facade/test_facade.py::TestFacadeErrorTaxonomy::test_state_error_on_non_retryable
  • tests/kernel/test_jobs.py::TestCrossProcessRetry::test_aria2_retry_rebuilds_spec_from_db
  • tests/kernel/test_jobs.py::TestCrossProcessRetry::test_python_cross_process_still_rejected
  • tests/kernel/test_jobs.py::TestDoneForceRedownload::test_done_aria2_cross_process_force
  • tests/kernel/test_jobs.py::TestFailureAndRetry::test_done_no_force_still_rejected
  • tests/kernel/test_jobs.py::TestFailureAndRetry::test_done_python_in_registry_force_redownload
  • tests/kernel/test_jobs.py::TestFailureAndRetry::test_failure_recorded_then_retry_recovers
  • tests/kernel/test_jobs.py::TestOldJobTaskInference::test_pre_E0_python_job_retryable_via_descriptor
  • tests/kernel/test_jobs.py::TestOrphan::test_fresh_running_not_marked
  • tests/kernel/test_jobs.py::TestOrphan::test_stale_running_marked_orphaned
  • tests/kernel/test_jobs.py::TestPythonZombie::test_stale_python_with_task_retryable
  • tests/kernel/test_jobs.py::TestPythonZombie::test_stale_python_without_task_still_blocked
  • tests/kernel/test_jobs.py::TestZombieRetry::test_fresh_running_not_retryable
  • tests/kernel/test_jobs.py::TestZombieRetry::test_stale_queued_aria2_retryable
  • tests/kernel/test_jobs.py::test_named_task_cross_process_retry
  • tests/kernel/test_jobs.py::test_named_task_cross_process_retry
  • tests/kernel/test_jobs.py::test_named_task_cross_process_retry
  • tests/kernel/test_jobs.py::test_named_task_cross_process_retry
  • tests/kernel/test_jobs.py::test_named_task_cross_process_retry
  • tests/kernel/test_jobs.py::test_named_task_cross_process_retry
  • tests/kernel/test_jobs.py::test_named_task_cross_process_retry

acquire.cancel — 取消与作业记录删除(资产保留)

  • tests/kernel/test_jobs.py::TestDeleteJobs::test_delete_failed_keeps_assets
  • tests/kernel/test_jobs.py::TestDeleteJobs::test_healthy_running_refused
  • tests/kernel/test_jobs.py::TestDeleteJobs::test_missing_id_reported

acquire.manifest — 清单(YAML)批量获取

  • tests/sources/test_manifest.py::TestManifest::test_parse_and_submit
  • tests/sources/test_manifest.py::TestManifest::test_unknown_field_rejected

acquire.schedule — 定时任务(launchd 代理的生成与装卸)

  • tests/facade/test_facade.py::TestFacadeSurface::test_schedule_list_and_install
  • tests/kernel/test_schedule.py::TestSchedule::test_plist_render_and_install
  • tests/kernel/test_schedule.py::TestSchedule::test_unknown_task
  • tests/kernel/test_schedule.py::TestSchedule::test_weekday_variant

manage.ledger — 账本:schema/迁移、缓存身份、meta 溯源、原子写

  • tests/kernel/test_db.py::TestConfig::test_env_override
  • tests/kernel/test_db.py::TestConfig::test_init_idempotent
  • tests/kernel/test_db.py::TestConfig::test_source_dir
  • tests/kernel/test_db.py::TestConnectionLifecycle::_spy
  • tests/kernel/test_db.py::TestConnectionLifecycle::test_audit_closes_own_connection
  • tests/kernel/test_db.py::TestConnectionLifecycle::test_shared_handle_is_not_closed
  • tests/kernel/test_db.py::TestConnectionLifecycle::test_status_closes_own_connection
  • tests/kernel/test_db.py::TestDB::test_context_manager
  • tests/kernel/test_db.py::TestDB::test_fresh_schema_covers_all_code_columns
  • tests/kernel/test_db.py::TestDB::test_job_executor_check_constraint
  • tests/kernel/test_db.py::TestDB::test_job_status_check_constraint
  • tests/kernel/test_db.py::TestDB::test_migration_sets_user_version
  • tests/kernel/test_db.py::TestDB::test_reinit_idempotent
  • tests/kernel/test_db.py::TestDB::test_roundtrip_dataset_file
  • tests/kernel/test_db.py::TestDB::test_wal_mode
  • tests/kernel/test_db.py::TestMigrationRobustness::_make_stale_version
  • tests/kernel/test_db.py::TestMigrationRobustness::test_concurrent_init_is_safe
  • tests/kernel/test_db.py::TestMigrationRobustness::test_failed_migration_does_not_advance_version
  • tests/kernel/test_db.py::TestMigrationRobustness::test_heals_stale_version_when_columns_exist
  • tests/kernel/test_db.py::test_init_survives_concurrent_wal_change
  • tests/kernel/test_db.py::test_init_survives_concurrent_wal_change
  • tests/kernel/test_db.py::test_init_survives_concurrent_wal_change
  • tests/kernel/test_db.py::test_init_survives_concurrent_wal_change
  • tests/kernel/test_db.py::test_init_survives_concurrent_wal_change
  • tests/kernel/test_db.py::test_init_survives_concurrent_wal_change
  • tests/kernel/test_db.py::test_init_survives_concurrent_wal_change
  • tests/kernel/test_jobs.py::TestMetaPersisted::test_cache_hit_returns_meta
  • tests/kernel/test_jobs.py::TestMetaPersisted::test_empty_meta_does_not_clobber
  • tests/kernel/test_path_containment.py::TestDataRootContainment::test_escape_rejected_and_nothing_written
  • tests/kernel/test_path_containment.py::TestDataRootContainment::test_inside_root_accepted
  • tests/kernel/test_path_containment.py::TestDataRootContainment::test_parent_of_root_rejected
  • tests/unit/test_core.py::TestCacheKey::test_dict_order_insensitive
  • tests/unit/test_core.py::TestCacheKey::test_different_params_differ
  • tests/unit/test_core.py::TestCacheKey::test_different_sources_differ
  • tests/unit/test_core.py::TestCacheKey::test_float_jitter_stable
  • tests/unit/test_parquet_writer.py::TestWriteParquet::test_broken_utf8_does_not_raise
  • tests/unit/test_parquet_writer.py::TestWriteParquet::test_concurrent_writes_do_not_interfere
  • tests/unit/test_parquet_writer.py::TestWriteParquet::test_does_not_use_pandas_arrow_conversion
  • tests/unit/test_parquet_writer.py::TestWriteParquet::test_empty_frame_keeps_dtypes
  • tests/unit/test_parquet_writer.py::TestWriteParquet::test_index_is_not_written
  • tests/unit/test_parquet_writer.py::TestWriteParquet::test_mixed_object_column_becomes_string
  • tests/unit/test_parquet_writer.py::TestWriteParquet::test_no_temp_file_left_behind
  • tests/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_surface
  • tests/kernel/test_integrity.py::test_audit_baseline_then_corrupt
  • tests/kernel/test_integrity.py::test_audit_baseline_then_corrupt
  • tests/kernel/test_integrity.py::test_audit_baseline_then_corrupt
  • tests/kernel/test_integrity.py::test_audit_baseline_then_corrupt
  • tests/kernel/test_integrity.py::test_audit_baseline_then_corrupt
  • tests/kernel/test_integrity.py::test_audit_missing
  • tests/kernel/test_integrity.py::test_audit_missing
  • tests/kernel/test_integrity.py::test_audit_missing
  • tests/kernel/test_integrity.py::test_audit_missing
  • tests/kernel/test_integrity.py::test_audit_missing

manage.search — 本地检索(目标/坐标/时间)

  • tests/facade/test_facade.py::TestFacadeCoordinateSearch::test_near_parameters_are_accepted
  • tests/kernel/test_coords.py::TestAngularSeparation::test_declination_scales
  • tests/kernel/test_coords.py::TestAngularSeparation::test_known_pair
  • tests/kernel/test_coords.py::TestAngularSeparation::test_pole
  • tests/kernel/test_coords.py::TestAngularSeparation::test_wraparound_is_short_path
  • tests/kernel/test_coords.py::TestAngularSeparation::test_zero
  • tests/kernel/test_coords.py::TestResolve::test_brick_via_index
  • tests/kernel/test_coords.py::TestResolve::test_field_via_index
  • tests/kernel/test_coords.py::TestResolve::test_filename_fallback_legacy
  • tests/kernel/test_coords.py::TestResolve::test_invalid_dec_rejected
  • tests/kernel/test_coords.py::TestResolve::test_meta_fallback
  • tests/kernel/test_coords.py::TestResolve::test_params_direct
  • tests/kernel/test_coords.py::TestResolve::test_params_win_over_index
  • tests/kernel/test_coords.py::TestResolve::test_ra_normalized_to_0_360
  • tests/kernel/test_coords.py::TestResolve::test_unknown_field_not_resolved
  • tests/kernel/test_coords.py::TestResolve::test_unresolvable_returns_none
  • tests/kernel/test_search.py::TestConeSearch::_seed
  • tests/kernel/test_search.py::TestConeSearch::test_box_corner_excluded
  • tests/kernel/test_search.py::TestConeSearch::test_ra_wraparound
  • tests/kernel/test_search.py::TestConeSearch::test_registration_resolves_and_stores_coords
  • tests/kernel/test_search.py::TestConeSearch::test_rows_without_coords_excluded
  • tests/kernel/test_search.py::TestConeSearch::test_sorted_by_separation
  • tests/kernel/test_search.py::TestQueryBoundaries::_seed
  • tests/kernel/test_search.py::TestQueryBoundaries::test_negative_limit_is_not_a_slice
  • tests/kernel/test_search.py::TestQueryBoundaries::test_out_of_range_rejected
  • tests/kernel/test_search.py::TestQueryBoundaries::test_valid_parameters_still_work
  • tests/kernel/test_search.py::test_search_by_target_and_near
  • tests/kernel/test_search.py::test_search_by_target_and_near
  • tests/kernel/test_search.py::test_search_by_target_and_near
  • tests/kernel/test_search.py::test_search_by_target_and_near
  • tests/kernel/test_search.py::test_search_by_target_and_near

manage.coverage — 索引覆盖率统计

  • tests/facade/test_facade.py::TestFacadeSurface::test_coverage
  • tests/kernel/test_search.py::test_coverage
  • tests/kernel/test_search.py::test_coverage
  • tests/kernel/test_search.py::test_coverage
  • tests/kernel/test_search.py::test_coverage
  • tests/kernel/test_search.py::test_coverage

manage.index — 索引构建与浏览(builder/url 两类来源)

  • tests/facade/test_facade.py::TestFacadeSurface::test_index_lifecycle
  • tests/kernel/test_index.py::TestBatchEligibility::test_eligibility_matches_buildable_spec
  • tests/kernel/test_index.py::TestBatchEligibility::test_legacy_included
  • tests/kernel/test_index.py::TestBatchEligibility::test_ztf_excluded_needs_ffd
  • tests/kernel/test_index.py::TestBatchEligibility::test_ztf_meta_included
  • tests/kernel/test_index.py::TestBatchEligibility::test_ztf_would_fail_without_ffd
  • tests/kernel/test_index.py::TestIndexCacheAndPrefix::_synth
  • tests/kernel/test_index.py::TestIndexCacheAndPrefix::test_cache_reused_until_file_changes
  • tests/kernel/test_index.py::TestIndexCacheAndPrefix::test_prefix_matches_naive_scan
  • tests/kernel/test_index.py::TestIndexCacheAndPrefix::test_save_invalidates_cache
  • tests/kernel/test_index.py::TestIndexRegistry::test_legacy_still_url_based
  • tests/kernel/test_index.py::TestIndexRegistry::test_ztf_fields_registered_as_builder
  • tests/kernel/test_index.py::TestZtfFieldsBuild::test_build_is_local_and_compact
  • tests/kernel/test_index.py::TestZtfFieldsBuild::test_known_field_coordinates
  • tests/kernel/test_index.py::TestZtfFieldsBuild::test_prefix_search_on_int_key
  • tests/kernel/test_index.py::TestZtfFieldsBuild::test_rebuild_idempotent

process.lc — 时序处理工具:归一化、折叠、周期搜索、凌星搜索

  • tests/unit/test_lc.py::TestPeriodSearch::test_ls_only_mode
  • tests/unit/test_lc.py::TestPeriodSearch::test_pdm_not_worse_than_ls_on_asymmetric
  • tests/unit/test_lc.py::TestPeriodSearch::test_refine_curve_exposed_for_plotting
  • tests/unit/test_lc.py::TestPeriodSearch::test_sine_recovery
  • tests/unit/test_lc.py::TestStellarParams::test_params_are_forwarded_when_given
  • tests/unit/test_lc.py::TestStellarParams::test_real_run_with_stellar_params_is_warning_free
  • tests/unit/test_lc.py::TestTransforms::test_bin_phase_empty_bins_nan
  • tests/unit/test_lc.py::TestTransforms::test_bin_phase_matches_convention
  • tests/unit/test_lc.py::TestTransforms::test_clip_range
  • tests/unit/test_lc.py::TestTransforms::test_fold_collapses_variance
  • tests/unit/test_lc.py::TestTransforms::test_fold_range_and_sorting
  • tests/unit/test_lc.py::TestTransforms::test_fold_unit_convention
  • tests/unit/test_lc.py::TestTransforms::test_mag_amplitude
  • tests/unit/test_lc.py::TestTransforms::test_normalize_median_one
  • tests/unit/test_lc.py::TestTransforms::test_normalize_rejects_zero_median
  • tests/unit/test_lc.py::TestTransforms::test_quality_cut
  • tests/unit/test_lc.py::TestTransforms::test_sigma_clip_removes_outliers
  • tests/unit/test_lc.py::TestTransitSearch::test_depth_semantics_is_true_depth
  • tests/unit/test_lc.py::TestTransitSearch::test_raw_available_for_advanced_use
  • tests/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_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_concurrent_source_rebuild_does_not_double_render
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_every_field_has_a_label
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_labels_survive_filled_values
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_placeholder_holds_only_example
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_required_marker_matches_descriptor
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_form_labels.py::test_source_and_custom_fields_are_labelled
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_missing_index
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_reports_no_match
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_says_already_valid_for_numeric_key
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_shows_completion_target
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_hint_unique_exact_value_has_no_extra_note
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_marker_only_on_indexed_fields
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_index_usage_hint_shown_before_typing
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_index_hints.py::test_no_index_hint_for_sources_without_index
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_changed_data_repaints_once
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_column_widths_are_deterministic_and_capped
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_deep_scroll_repaint_keeps_viewport
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_first_render_matches_after_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_pane_switch_and_sort_still_rebuild
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_storage_scan_is_cached_but_ledger_stays_live
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_refresh.py::test_unchanged_data_produces_no_frames
  • tests/ui/test_suggest.py::TestIndexSuggester::test_empty_value_yields_none
  • tests/ui/test_suggest.py::TestIndexSuggester::test_exact_key_yields_none
  • tests/ui/test_suggest.py::TestIndexSuggester::test_missing_index_degrades_silently
  • tests/ui/test_suggest.py::TestIndexSuggester::test_no_match_yields_none
  • tests/ui/test_suggest.py::TestIndexSuggester::test_partial_prefix_completes_to_first_key
  • tests/ui/test_suggest.py::test_modal_indexed_fields_have_suggester
  • tests/ui/test_suggest.py::test_modal_indexed_fields_have_suggester
  • tests/ui/test_suggest.py::test_modal_indexed_fields_have_suggester
  • tests/ui/test_suggest.py::test_modal_indexed_fields_have_suggester
  • tests/ui/test_suggest.py::test_modal_indexed_fields_have_suggester
  • tests/ui/test_suggest.py::test_modal_indexed_fields_have_suggester
  • tests/ui/test_suggest.py::test_modal_indexed_fields_have_suggester
  • tests/ui/test_suggest.py::test_modal_indexed_fields_have_suggester
  • tests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrow
  • tests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrow
  • tests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrow
  • tests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrow
  • tests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrow
  • tests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrow
  • tests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrow
  • tests/ui/test_suggest.py::test_native_input_ghost_text_and_right_arrow
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_assets_view_via_drill
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_cursor_survives_refresh
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_cleared_on_pane_switch
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_detail_consistent_after_sort
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_by_path_prefix
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_down_to_assets
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_identity_restore
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_drill_esc_restores_cursor
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_index_candidates_preview
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_info_panel
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_filter_cycle
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_jobs_outcome_columns
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_modal
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_new_job_registry_source
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_refresh_anchors_cursor_identity
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_keeps_cursor_on_item
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_sort_toggle
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_tab_advances_focus_on_indexed_fields
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/ui/test_top.py::test_top_renders_panels
  • tests/unit/test_format.py::test_fmt_size_adaptive
  • tests/unit/test_format.py::test_fmt_size_adaptive
  • tests/unit/test_format.py::test_fmt_size_adaptive

present.cli — CLI 行为:子命令参数接线、输出与退出码

  • tests/cli/test_cli.py::TestDoctorInitBackupRestore::test_backup_then_restore_round_trip
  • tests/cli/test_cli.py::TestDoctorInitBackupRestore::test_doctor_exit_1_on_failure
  • tests/cli/test_cli.py::TestDoctorInitBackupRestore::test_doctor_ok_in_clean_env
  • tests/cli/test_cli.py::TestDoctorInitBackupRestore::test_init_creates_paths
  • tests/cli/test_cli.py::TestDoctorInitBackupRestore::test_restore_without_force_fails_cleanly
  • tests/cli/test_cli.py::TestErrorExitCodes::test_healthy_delete_is_refused_with_partial_code
  • tests/cli/test_cli.py::TestErrorExitCodes::test_invalid_task_rejected_by_argparse
  • tests/cli/test_cli.py::TestErrorExitCodes::test_not_found
  • tests/cli/test_cli.py::TestHappyPaths::test_audit_empty_ledger
  • tests/cli/test_cli.py::TestHappyPaths::test_coverage_after_index_build
  • tests/cli/test_cli.py::TestHappyPaths::test_doc_sync_into_temp_doc
  • tests/cli/test_cli.py::TestHappyPaths::test_fetch_unknown_source_rejected_by_argparse
  • tests/cli/test_cli.py::TestHappyPaths::test_index_list_and_update_builder
  • tests/cli/test_cli.py::TestHappyPaths::test_jobs_empty
  • tests/cli/test_cli.py::TestHappyPaths::test_orphans_and_delete_and_batch
  • tests/cli/test_cli.py::TestHappyPaths::test_schedule_install_and_remove
  • tests/cli/test_cli.py::TestHappyPaths::test_schedule_list_offline
  • tests/cli/test_cli.py::TestHappyPaths::test_search_renders_rows_with_separation
  • tests/cli/test_cli.py::TestHappyPaths::test_test_map_write_and_check
  • tests/cli/test_cli.py::TestParseSurface::test_fetch_help_exposes_every_field
  • tests/cli/test_cli.py::TestParseSurface::test_top_level_help_lists_all_commands
  • tests/cli/test_cli.py::TestSourceCheckoutOnlyCommands::_assert_no_docs_written
  • tests/cli/test_cli.py::TestSourceCheckoutOnlyCommands::_break_source_root
  • tests/cli/test_cli.py::TestSourceCheckoutOnlyCommands::test_doc_sync_outside_checkout
  • tests/cli/test_cli.py::TestSourceCheckoutOnlyCommands::test_test_map_outside_checkout
  • tests/cli/test_cli.py::TestVersion::test_version_flag
  • tests/cli/test_cli.py::TestVersion::test_version_is_single_sourced

ci.config — CI 工作流配置(可解析性/结构)

  • tests/guards/test_workflows_parse.py::test_workflow_dir_is_not_empty
  • tests/guards/test_workflows_parse.py::test_workflow_dir_is_not_empty
  • tests/guards/test_workflows_parse.py::test_workflow_dir_is_not_empty
  • tests/guards/test_workflows_parse.py::test_workflow_dir_is_not_empty
  • tests/guards/test_workflows_parse.py::test_workflow_dir_is_not_empty
  • tests/guards/test_workflows_parse.py::test_workflow_dir_is_not_empty
  • tests/guards/test_workflows_parse.py::test_workflow_dir_is_not_empty
  • tests/guards/test_workflows_parse.py::test_workflow_dir_is_not_empty
  • tests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formed
  • tests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formed
  • tests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formed
  • tests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formed
  • tests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formed
  • tests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formed
  • tests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formed
  • tests/guards/test_workflows_parse.py::test_workflow_is_parseable_and_well_formed

manage.doctor — 环境自检:依赖/路径可写/账本/文件系统/索引/平台

  • tests/facade/test_facade.py::TestDoctorAndBackupContract::test_doctor_returns_checks
  • tests/kernel/test_doctor.py::TestDoctorChecks::test_fresh_env_has_no_failures
  • tests/kernel/test_doctor.py::TestDoctorChecks::test_json_serializable
  • tests/kernel/test_doctor.py::TestDoctorChecks::test_local_filesystem_is_ok
  • tests/kernel/test_doctor.py::TestDoctorChecks::test_network_filesystem_for_ledger_is_failure
  • tests/kernel/test_doctor.py::TestDoctorChecks::test_one_broken_check_does_not_kill_the_rest
  • tests/kernel/test_doctor.py::TestDoctorChecks::test_reports_missing_files
  • tests/kernel/test_doctor.py::TestDoctorChecks::test_schema_ahead_of_code_is_failure
  • tests/kernel/test_doctor.py::TestDoctorChecks::test_unwritable_data_root_is_failure
  • tests/kernel/test_doctor.py::TestDoctorChecks::test_version_tuple_comparison
  • tests/kernel/test_doctor.py::test_optional_dep_hint_is_actually_runnable
  • tests/kernel/test_doctor.py::test_optional_dep_hint_is_actually_runnable
  • tests/kernel/test_doctor.py::test_optional_dep_hint_is_actually_runnable
  • tests/kernel/test_doctor.py::test_optional_dep_hint_is_actually_runnable
  • tests/kernel/test_doctor.py::test_optional_dep_hint_is_actually_runnable

manage.backup — 账本备份与恢复:在线备份、默认拒绝覆盖、安全副本

  • tests/facade/test_facade.py::TestDoctorAndBackupContract::test_backup_errors_are_param_errors
  • tests/kernel/test_backup.py::TestBackupRestore::test_backup_is_consistent_snapshot
  • tests/kernel/test_backup.py::TestBackupRestore::test_missing_ledger_is_a_clear_error
  • tests/kernel/test_backup.py::TestBackupRestore::test_refuses_to_overwrite_without_force
  • tests/kernel/test_backup.py::TestBackupRestore::test_rejects_future_schema
  • tests/kernel/test_backup.py::TestBackupRestore::test_rejects_non_myastro_database
  • tests/kernel/test_backup.py::TestBackupRestore::test_restore_accepts_db_file_path
  • tests/kernel/test_backup.py::TestBackupRestore::test_restore_while_another_connection_is_open
  • tests/kernel/test_backup.py::TestBackupRestore::test_round_trip
  • tests/kernel/test_backup.py::TestBackupRestore::test_safety_copy_holds_pre_restore_state
  • tests/kernel/test_backup.py::TestBackupRestore::test_with_index_copies_built_indexes
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip
  • tests/kernel/test_backup.py::test_facade_exports_round_trip

facade.api — 门面契约:错误分类、参数校验、执行器隐身

  • tests/facade/test_facade.py::TestFacadeE0::test_coerce_and_choices
  • tests/facade/test_facade.py::TestFacadeE0::test_param_error_mapping
  • tests/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_current
  • tests/guards/test_contract_snapshot.py::test_contract_snapshot_is_current
  • tests/guards/test_contract_snapshot.py::test_contract_snapshot_is_current
  • tests/guards/test_contract_snapshot.py::test_contract_snapshot_is_current
  • tests/guards/test_contract_snapshot.py::test_contract_snapshot_is_current
  • tests/guards/test_contract_snapshot.py::test_contract_snapshot_is_current
  • tests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytes
  • tests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytes
  • tests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytes
  • tests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytes
  • tests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytes
  • tests/guards/test_contract_snapshot.py::test_snapshot_is_the_generated_bytes
  • tests/kernel/test_contract.py::TestNormalization::test_annotations_drop_module_prefixes
  • tests/kernel/test_contract.py::TestNormalization::test_memory_addresses_are_normalized
  • tests/kernel/test_contract.py::TestProblems::_write
  • tests/kernel/test_contract.py::TestProblems::test_invalid_json_is_reported
  • tests/kernel/test_contract.py::TestProblems::test_missing_file_is_reported
  • tests/kernel/test_contract.py::TestProblems::test_reports_added_removed_and_changed_items
  • tests/kernel/test_contract.py::TestSnapshot::test_cli_covers_nested_commands
  • tests/kernel/test_contract.py::TestSnapshot::test_covers_every_facade_export
  • tests/kernel/test_contract.py::TestSnapshot::test_covers_public_submodule_exports
  • tests/kernel/test_contract.py::TestSnapshot::test_exit_codes_are_snapshotted
  • tests/kernel/test_contract.py::TestSnapshot::test_is_deterministic
  • tests/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_tree
  • tests/cli/test_cli.py::TestSourceRoot::test_raises_outside_source_tree
  • tests/cli/test_cli.py::TestSourceRoot::test_rejects_other_projects_pyproject
  • tests/guards/test_boundaries.py::test_top_imports_not_private
  • tests/guards/test_boundaries.py::test_top_imports_not_private
  • tests/guards/test_boundaries.py::test_top_imports_not_private
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_capabilities_doc_mentions_every_id
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_capability_has_tests
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_every_test_has_exactly_one_capability
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_facade_exports_all_referenced_by_tests
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_layer_import_boundaries
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_marker_ids_are_registered
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_capability_map.py::test_test_map_doc_is_generated
  • tests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registry
  • tests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registry
  • tests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registry
  • tests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registry
  • tests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registry
  • tests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registry
  • tests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registry
  • tests/guards/test_descriptor_contract.py::test_every_task_source_is_orderable_in_sources_registry
  • tests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversal
  • tests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversal
  • tests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversal
  • tests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversal
  • tests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversal
  • tests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversal
  • tests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversal
  • tests/guards/test_descriptor_contract.py::test_marked_fields_actually_reject_traversal
  • tests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safe
  • tests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safe
  • tests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safe
  • tests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safe
  • tests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safe
  • tests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safe
  • tests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safe
  • tests/guards/test_descriptor_contract.py::test_path_feeding_fields_are_declared_safe
  • tests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agree
  • tests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agree
  • tests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agree
  • tests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agree
  • tests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agree
  • tests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agree
  • tests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agree
  • tests/guards/test_descriptor_contract.py::test_task_registry_and_descriptors_agree
  • tests/guards/test_doc_sync.py::test_design_doc_matrix_matches_generator
  • tests/guards/test_doc_sync.py::test_design_doc_matrix_matches_generator
  • tests/guards/test_doc_sync.py::test_design_doc_matrix_matches_generator
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_bilingual_user_docs_are_paired
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_documented_paths_exist
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_covers_core_modules
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_processing_doc_is_linked_from_readme_and_io_design
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/guards/test_docs_paths.py::test_readme_pair_exists
  • tests/unit/test_path_safety.py::TestSafeName::test_accepts_reasonable_names
  • tests/unit/test_path_safety.py::TestSafeName::test_error_message_names_the_field
  • tests/unit/test_path_safety.py::TestSafeName::test_rejects_unsafe