@LAW: LAW-SNAP01|SYM|on_add|ast_first|ast_walk_top_level_def_class
@LAW: LAW-SNAP02|MOD|on_add|one_per_file|one_mod_per_source_file
@CFG: CFG01|MemNet|MOD_repo_root|0.2.16|memnet_codebase_snap
@MOD: MOD_repo_root|.|MemNet repo root|active|persistent
@TSK: TSK_codebase_snap_memnet|Full MemNet src index|MOD_repo_root|in_progress|persistent
@USR: USR_snap_scope|scope|src+applications public top-level defs|active|persistent
@MOD: MOD_src_memnet___init___py|src/memnet/__init__.py|__init__.py engine|active|persistent
@MOD: MOD_src_memnet___main___py|src/memnet/__main__.py|__main__.py engine|active|persistent
@MOD: MOD_src_memnet_cli_py|src/memnet/cli.py|cli.py engine|active|persistent
@MOD: MOD_src_memnet_config_py|src/memnet/config.py|config.py engine|active|persistent
@MOD: MOD_src_memnet_context_view_py|src/memnet/context_view.py|context_view.py engine|active|persistent
@MOD: MOD_src_memnet_exceptions_py|src/memnet/exceptions.py|exceptions.py engine|active|persistent
@MOD: MOD_src_memnet_filter_py|src/memnet/filter.py|filter.py engine|active|persistent
@MOD: MOD_src_memnet_fixed_tags_py|src/memnet/fixed_tags.py|fixed_tags.py engine|active|persistent
@MOD: MOD_src_memnet_help_text_py|src/memnet/help_text.py|help_text.py engine|active|persistent
@MOD: MOD_src_memnet_housekeep_py|src/memnet/housekeep.py|housekeep.py engine|active|persistent
@MOD: MOD_src_memnet_mem_store_py|src/memnet/mem_store.py|mem_store.py engine|active|persistent
@MOD: MOD_src_memnet_models_py|src/memnet/models.py|models.py engine|active|persistent
@MOD: MOD_src_memnet_output_py|src/memnet/output.py|output.py engine|active|persistent
@MOD: MOD_src_memnet_registry_py|src/memnet/registry.py|registry.py engine|active|persistent
@MOD: MOD_src_memnet_sanitiser_py|src/memnet/sanitiser.py|sanitiser.py engine|active|persistent
@MOD: MOD_src_memnet_serve_py|src/memnet/serve.py|serve.py engine|active|persistent
@MOD: MOD_src_memnet_serve_client_py|src/memnet/serve_client.py|serve_client.py engine|active|persistent
@MOD: MOD_src_memnet_session_py|src/memnet/session.py|session.py engine|active|persistent
@MOD: MOD_src_memnet_snapshot_py|src/memnet/snapshot.py|snapshot.py engine|active|persistent
@MOD: MOD_src_memnet_tag_map_py|src/memnet/tag_map.py|tag_map.py engine|active|persistent
@MOD: MOD_src_memnet_warnings_py|src/memnet/warnings.py|warnings.py engine|active|persistent
@MOD: MOD_src_memnet_wire_py|src/memnet/wire.py|wire.py engine|active|persistent
@MOD: MOD_src_memnet_mcp___init___py|src/memnet_mcp/__init__.py|__init__.py mcp|active|persistent
@MOD: MOD_src_memnet_mcp___main___py|src/memnet_mcp/__main__.py|__main__.py mcp|active|persistent
@MOD: MOD_src_memnet_mcp_client_py|src/memnet_mcp/client.py|client.py mcp|active|persistent
@MOD: MOD_src_memnet_mcp_parse_py|src/memnet_mcp/parse.py|parse.py mcp|active|persistent
@MOD: MOD_src_memnet_mcp_seed_py|src/memnet_mcp/seed.py|seed.py mcp|active|persistent
@MOD: MOD_src_memnet_mcp_server_py|src/memnet_mcp/server.py|server.py mcp|active|persistent
@MOD: MOD_src_novel_mcp___init___py|src/novel_mcp/__init__.py|__init__.py mcp|active|persistent
@MOD: MOD_src_novel_mcp___main___py|src/novel_mcp/__main__.py|__main__.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_affinity_edges_py|src/novel_mcp/affinity_edges.py|affinity_edges.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_beat_pipeline_py|src/novel_mcp/beat_pipeline.py|beat_pipeline.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_beat_stage_py|src/novel_mcp/beat_stage.py|beat_stage.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_body_state_py|src/novel_mcp/body_state.py|body_state.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_bootstrap_py|src/novel_mcp/bootstrap.py|bootstrap.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_calendars___init___py|src/novel_mcp/calendars/__init__.py|__init__.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_calendars_chongzhen_shichen_py|src/novel_mcp/calendars/chongzhen_shichen.py|chongzhen_shichen.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_catalog_schema_py|src/novel_mcp/catalog_schema.py|catalog_schema.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_catalog_session_py|src/novel_mcp/catalog_session.py|catalog_session.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_chapter_io_py|src/novel_mcp/chapter_io.py|chapter_io.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_character_gender_py|src/novel_mcp/character_gender.py|character_gender.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_character_knowledge_py|src/novel_mcp/character_knowledge.py|character_knowledge.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_constants_py|src/novel_mcp/constants.py|constants.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_edg_time_py|src/novel_mcp/edg_time.py|edg_time.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_entity_knowledge_py|src/novel_mcp/entity_knowledge.py|entity_knowledge.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_game_time_py|src/novel_mcp/game_time.py|game_time.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_knowledge_graph_py|src/novel_mcp/knowledge_graph.py|knowledge_graph.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_library_contracts_py|src/novel_mcp/library_contracts.py|library_contracts.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_martial_catalog_expand_py|src/novel_mcp/martial_catalog_expand.py|martial_catalog_expand.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_opening_loadout_py|src/novel_mcp/opening_loadout.py|opening_loadout.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_party_sheet_py|src/novel_mcp/party_sheet.py|party_sheet.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_paths_py|src/novel_mcp/paths.py|paths.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_play_context_py|src/novel_mcp/play_context.py|play_context.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_player_profile_py|src/novel_mcp/player_profile.py|player_profile.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_player_setup_py|src/novel_mcp/player_setup.py|player_setup.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_player_sheet_py|src/novel_mcp/player_sheet.py|player_sheet.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_presentation_py|src/novel_mcp/presentation.py|presentation.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_server_py|src/novel_mcp/server.py|server.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_session_contract_py|src/novel_mcp/session_contract.py|session_contract.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_session_meta_py|src/novel_mcp/session_meta.py|session_meta.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_setup_ack_py|src/novel_mcp/setup_ack.py|setup_ack.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_setup_constants_py|src/novel_mcp/setup_constants.py|setup_constants.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_setup_graph_py|src/novel_mcp/setup_graph.py|setup_graph.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_setup_profile_rules_py|src/novel_mcp/setup_profile_rules.py|setup_profile_rules.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_skill_catalog_keys_py|src/novel_mcp/skill_catalog_keys.py|skill_catalog_keys.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_stage_wire_validate_py|src/novel_mcp/stage_wire_validate.py|stage_wire_validate.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_time_display_py|src/novel_mcp/time_display.py|time_display.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_validators_py|src/novel_mcp/validators.py|validators.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_warm_index_py|src/novel_mcp/warm_index.py|warm_index.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_warm_supplement_py|src/novel_mcp/warm_supplement.py|warm_supplement.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_warm_walk_py|src/novel_mcp/warm_walk.py|warm_walk.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_writing_contract_py|src/novel_mcp/writing_contract.py|writing_contract.py mcp|active|persistent
@MOD: MOD_src_novel_mcp_zh_text_py|src/novel_mcp/zh_text.py|zh_text.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_app_config_py|applications/novel_cursor/app_config.py|app_config.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_beat_orchestrator_py|applications/novel_cursor/beat_orchestrator.py|beat_orchestrator.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_beat_prompt_py|applications/novel_cursor/beat_prompt.py|beat_prompt.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_catalog_expand_py|applications/novel_cursor/catalog_expand.py|catalog_expand.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_chat_thread_py|applications/novel_cursor/chat_thread.py|chat_thread.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_cursor_beat_py|applications/novel_cursor/cursor_beat.py|cursor_beat.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_env_load_py|applications/novel_cursor/env_load.py|env_load.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_llm_client_py|applications/novel_cursor/llm_client.py|llm_client.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_mcp_config_py|applications/novel_cursor/mcp_config.py|mcp_config.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_play_service_py|applications/novel_cursor/play_service.py|play_service.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_session_bootstrap_py|applications/novel_cursor/session_bootstrap.py|session_bootstrap.py mcp|active|persistent
@MOD: MOD_applications_novel_cursor_wire_parse_py|applications/novel_cursor/wire_parse.py|wire_parse.py mcp|active|persistent
@MOD: MOD_applications_novel_mobile___init___py|applications/novel_mobile/__init__.py|__init__.py mobile|active|persistent
@MOD: MOD_applications_novel_mobile_auth_py|applications/novel_mobile/auth.py|auth.py mobile|active|persistent
@MOD: MOD_applications_novel_mobile_jobs_py|applications/novel_mobile/jobs.py|jobs.py mobile|active|persistent
@MOD: MOD_applications_novel_mobile_server_py|applications/novel_mobile/server.py|server.py mobile|active|persistent
@MOD: MOD_applications_novel_mobile_world_registry_py|applications/novel_mobile/world_registry.py|world_registry.py mobile|active|persistent
@MOD: MOD_applications_novel_mobile_world_slot_py|applications/novel_mobile/world_slot.py|world_slot.py mobile|active|persistent
@SYM: SYM_src_memnet_cli_py_emit_del|emit_del|fn|src/memnet/cli.py|58|def emit_del(record_id|active|persistent
@SYM: SYM_src_memnet_cli_py_emit_stat|emit_stat|fn|src/memnet/cli.py|62|def emit_stat(key|active|persistent
@SYM: SYM_src_memnet_cli_py_emit_stderr|emit_stderr|fn|src/memnet/cli.py|178|def emit_stderr(line|active|persistent
@SYM: SYM_src_memnet_cli_py_emit_stderr_summary|emit_stderr_summary|fn|src/memnet/cli.py|182|def emit_stderr_summary(ok|active|persistent
@SYM: SYM_src_memnet_cli_py_version|version|fn|src/memnet/cli.py|187|def version(|active|persistent
@SYM: SYM_src_memnet_cli_py_serve|serve|fn|src/memnet/cli.py|200|def serve(|active|persistent
@SYM: SYM_src_memnet_cli_py_guide|guide|fn|src/memnet/cli.py|212|def guide(|active|persistent
@SYM: SYM_src_memnet_cli_py_examples_list|examples_list|fn|src/memnet/cli.py|220|def examples_list(ctx|active|persistent
@SYM: SYM_src_memnet_cli_py_examples_map|examples_map|fn|src/memnet/cli.py|226|def examples_map() -> None|active|persistent
@SYM: SYM_src_memnet_cli_py_examples_workflow|examples_workflow|fn|src/memnet/cli.py|231|def examples_workflow() -> None|active|persistent
@SYM: SYM_src_memnet_cli_py_examples_add|examples_add|fn|src/memnet/cli.py|236|def examples_add(|active|persistent
@SYM: SYM_src_memnet_cli_py_examples_path|examples_path|fn|src/memnet/cli.py|243|def examples_path() -> None|active|persistent
@SYM: SYM_src_memnet_cli_py_examples_agent_guide|examples_agent_guide|fn|src/memnet/cli.py|248|def examples_agent_guide() -> None|active|persistent
@SYM: SYM_src_memnet_cli_py_tagmap_fields|tagmap_fields|fn|src/memnet/cli.py|259|def tagmap_fields(|active|persistent
@SYM: SYM_src_memnet_cli_py_tagmap_show|tagmap_show|fn|src/memnet/cli.py|266|def tagmap_show(|active|persistent
@SYM: SYM_src_memnet_cli_py_session_open|session_open|fn|src/memnet/cli.py|278|def session_open(|active|persistent
@SYM: SYM_src_memnet_cli_py_session_resume|session_resume|fn|src/memnet/cli.py|298|def session_resume(session_id|active|persistent
@SYM: SYM_src_memnet_cli_py_session_current|session_current|fn|src/memnet/cli.py|310|def session_current(|active|persistent
@SYM: SYM_src_memnet_cli_py_session_list|session_list|fn|src/memnet/cli.py|333|def session_list() -> None|active|persistent
@SYM: SYM_src_memnet_cli_py_session_save|session_save|fn|src/memnet/cli.py|340|def session_save(|active|persistent
@SYM: SYM_src_memnet_cli_py_session_load|session_load|fn|src/memnet/cli.py|352|def session_load(|active|persistent
@SYM: SYM_src_memnet_cli_py_session_close|session_close|fn|src/memnet/cli.py|368|def session_close(session_id|active|persistent
@SYM: SYM_src_memnet_cli_py_relations_list|relations_list|fn|src/memnet/cli.py|377|def relations_list(|active|persistent
@SYM: SYM_src_memnet_cli_py_add_cmd|add_cmd|fn|src/memnet/cli.py|443|def add_cmd(|active|persistent
@SYM: SYM_src_memnet_cli_py_update_cmd|update_cmd|fn|src/memnet/cli.py|466|def update_cmd(|active|persistent
@SYM: SYM_src_memnet_cli_py_delete_cmd|delete_cmd|fn|src/memnet/cli.py|489|def delete_cmd(|active|persistent
@SYM: SYM_src_memnet_cli_py_read_list|read_list|fn|src/memnet/cli.py|503|def read_list(|active|persistent
@SYM: SYM_src_memnet_cli_py_read_get|read_get|fn|src/memnet/cli.py|520|def read_get(|active|persistent
@SYM: SYM_src_memnet_cli_py_query_neighbors|query_neighbors|fn|src/memnet/cli.py|580|def query_neighbors(|active|persistent
@SYM: SYM_src_memnet_cli_py_query_path|query_path|fn|src/memnet/cli.py|599|def query_path(|active|persistent
@SYM: SYM_src_memnet_cli_py_query_context|query_context|fn|src/memnet/cli.py|611|def query_context(|active|persistent
@SYM: SYM_src_memnet_cli_py_query_warm|query_warm|fn|src/memnet/cli.py|631|def query_warm(|active|persistent
@SYM: SYM_src_memnet_cli_py_query_walk|query_walk|fn|src/memnet/cli.py|650|def query_walk(|active|persistent
@SYM: SYM_src_memnet_cli_py_housekeep_stats|housekeep_stats|fn|src/memnet/cli.py|672|def housekeep_stats(|active|persistent
@SYM: SYM_src_memnet_cli_py_housekeep_stale|housekeep_stale|fn|src/memnet/cli.py|690|def housekeep_stale(|active|persistent
@SYM: SYM_src_memnet_cli_py_housekeep_orphans|housekeep_orphans|fn|src/memnet/cli.py|700|def housekeep_orphans(|active|persistent
@SYM: SYM_src_memnet_cli_py_housekeep_dangling|housekeep_dangling|fn|src/memnet/cli.py|713|def housekeep_dangling(|active|persistent
@SYM: SYM_src_memnet_cli_py_housekeep_recyclable|housekeep_recyclable|fn|src/memnet/cli.py|723|def housekeep_recyclable(|active|persistent
@SYM: SYM_src_memnet_cli_py_prune_help|prune_help|fn|src/memnet/cli.py|737|def prune_help(ctx|active|persistent
@SYM: SYM_src_memnet_cli_py_prune_stale_cmd|prune_stale_cmd|fn|src/memnet/cli.py|743|def prune_stale_cmd(|active|persistent
@SYM: SYM_src_memnet_cli_py_prune_orphans|prune_orphans|fn|src/memnet/cli.py|751|def prune_orphans(|active|persistent
@SYM: SYM_src_memnet_cli_py_prune_dangling|prune_dangling|fn|src/memnet/cli.py|763|def prune_dangling(|active|persistent
@SYM: SYM_src_memnet_cli_py_prune_recyclable|prune_recyclable|fn|src/memnet/cli.py|771|def prune_recyclable(|active|persistent
@SYM: SYM_src_memnet_cli_py_main|main|fn|src/memnet/cli.py|819|def main() -> None|active|persistent
@SYM: SYM_src_memnet_config_py_Caps|Caps|class|src/memnet/config.py|29|class Caps|active|persistent
@SYM: SYM_src_memnet_config_py_serve_host|serve_host|fn|src/memnet/config.py|58|def serve_host() -> str|active|persistent
@SYM: SYM_src_memnet_config_py_serve_port|serve_port|fn|src/memnet/config.py|62|def serve_port() -> int|active|persistent
@SYM: SYM_src_memnet_config_py_examples_dir|examples_dir|fn|src/memnet/config.py|66|def examples_dir() -> Path|active|persistent
@SYM: SYM_src_memnet_config_py_default_ttl_minutes|default_ttl_minutes|fn|src/memnet/config.py|70|def default_ttl_minutes() -> int|active|persistent
@SYM: SYM_src_memnet_context_view_py_format_walk_hop|format_walk_hop|fn|src/memnet/context_view.py|6|def format_walk_hop(src|active|persistent
@SYM: SYM_src_memnet_exceptions_py_MemNetError|MemNetError|class|src/memnet/exceptions.py|6|class MemNetError(Exception)|active|persistent
@SYM: SYM_src_memnet_filter_py_parse_where|parse_where|fn|src/memnet/filter.py|11|def parse_where(clause|active|persistent
@SYM: SYM_src_memnet_filter_py_parse_wheres|parse_wheres|fn|src/memnet/filter.py|24|def parse_wheres(clauses|active|persistent
@SYM: SYM_src_memnet_filter_py_field_matches|field_matches|fn|src/memnet/filter.py|28|def field_matches(value|active|persistent
@SYM: SYM_src_memnet_filter_py_record_matches|record_matches|fn|src/memnet/filter.py|34|def record_matches(record|active|persistent
@SYM: SYM_src_memnet_fixed_tags_py_fixed_tag_map|fixed_tag_map|fn|src/memnet/fixed_tags.py|16|def fixed_tag_map() -> TagMap|active|persistent
@SYM: SYM_src_memnet_help_text_py_guide_text|guide_text|fn|src/memnet/help_text.py|32|def guide_text(*, loose|active|persistent
@SYM: SYM_src_memnet_help_text_py_examples_map_text|examples_map_text|fn|src/memnet/help_text.py|73|def examples_map_text() -> str|active|persistent
@SYM: SYM_src_memnet_help_text_py_examples_workflow_text|examples_workflow_text|fn|src/memnet/help_text.py|85|def examples_workflow_text() -> str|active|persistent
@SYM: SYM_src_memnet_help_text_py_examples_path_text|examples_path_text|fn|src/memnet/help_text.py|92|def examples_path_text() -> str|active|persistent
@SYM: SYM_src_memnet_help_text_py_fields_text|fields_text|fn|src/memnet/help_text.py|99|def fields_text(tag|active|persistent
@SYM: SYM_src_memnet_help_text_py_add_example_text|add_example_text|fn|src/memnet/help_text.py|109|def add_example_text(tag|active|persistent
@SYM: SYM_src_memnet_housekeep_py_recyclable_rows|recyclable_rows|fn|src/memnet/housekeep.py|76|def recyclable_rows(store|active|persistent
@SYM: SYM_src_memnet_housekeep_py_dangling_rows|dangling_rows|fn|src/memnet/housekeep.py|80|def dangling_rows(store|active|persistent
@SYM: SYM_src_memnet_housekeep_py_orphan_rows|orphan_rows|fn|src/memnet/housekeep.py|84|def orphan_rows(|active|persistent
@SYM: SYM_src_memnet_housekeep_py_stale_rows|stale_rows|fn|src/memnet/housekeep.py|93|def stale_rows(store|active|persistent
@SYM: SYM_src_memnet_housekeep_py_stats|stats|fn|src/memnet/housekeep.py|105|def stats(store|active|persistent
@SYM: SYM_src_memnet_housekeep_py_prune_rows|prune_rows|fn|src/memnet/housekeep.py|117|def prune_rows(store|active|persistent
@SYM: SYM_src_memnet_housekeep_py_prune_stale|prune_stale|fn|src/memnet/housekeep.py|125|def prune_stale(store|active|persistent
@SYM: SYM_src_memnet_mem_store_py_MemStore|MemStore|class|src/memnet/mem_store.py|20|class MemStore|active|persistent
@SYM: SYM_src_memnet_models_py_TagDef|TagDef|class|src/memnet/models.py|10|class TagDef(BaseModel)|active|persistent
@SYM: SYM_src_memnet_models_py_TagMap|TagMap|class|src/memnet/models.py|16|class TagMap(BaseModel)|active|persistent
@SYM: SYM_src_memnet_models_py_Record|Record|class|src/memnet/models.py|26|class Record(BaseModel)|active|persistent
@SYM: SYM_src_memnet_models_py_SessionMeta|SessionMeta|class|src/memnet/models.py|48|class SessionMeta(BaseModel)|active|persistent
@SYM: SYM_src_memnet_output_py_reset_warn_budget|reset_warn_budget|fn|src/memnet/output.py|13|def reset_warn_budget() -> None|active|persistent
@SYM: SYM_src_memnet_output_py_emit_stdout|emit_stdout|fn|src/memnet/output.py|18|def emit_stdout(line|active|persistent
@SYM: SYM_src_memnet_output_py_emit_stderr|emit_stderr|fn|src/memnet/output.py|22|def emit_stderr(line|active|persistent
@SYM: SYM_src_memnet_output_py_format_err|format_err|fn|src/memnet/output.py|26|def format_err(code|active|persistent
@SYM: SYM_src_memnet_output_py_format_wrn|format_wrn|fn|src/memnet/output.py|33|def format_wrn(code|active|persistent
@SYM: SYM_src_memnet_output_py_emit_err|emit_err|fn|src/memnet/output.py|44|def emit_err(error|active|persistent
@SYM: SYM_src_memnet_output_py_emit_wrn|emit_wrn|fn|src/memnet/output.py|48|def emit_wrn(code|active|persistent
@SYM: SYM_src_memnet_output_py_emit_session|emit_session|fn|src/memnet/output.py|54|def emit_session(|active|persistent
@SYM: SYM_src_memnet_output_py_emit_record_line|emit_record_line|fn|src/memnet/output.py|68|def emit_record_line(tag|active|persistent
@SYM: SYM_src_memnet_output_py_emit_record|emit_record|fn|src/memnet/output.py|73|def emit_record(record|active|persistent
@SYM: SYM_src_memnet_output_py_parse_err_line|parse_err_line|fn|src/memnet/output.py|83|def parse_err_line(line|active|persistent
@SYM: SYM_src_memnet_output_py_values_from_record|values_from_record|fn|src/memnet/output.py|95|def values_from_record(record|active|persistent
@SYM: SYM_src_memnet_registry_py_SessionEntry|SessionEntry|class|src/memnet/registry.py|18|class SessionEntry|active|persistent
@SYM: SYM_src_memnet_registry_py_register|register|fn|src/memnet/registry.py|26|def register(session_id|active|persistent
@SYM: SYM_src_memnet_registry_py_get|get|fn|src/memnet/registry.py|31|def get(session_id|active|persistent
@SYM: SYM_src_memnet_registry_py_remove|remove|fn|src/memnet/registry.py|36|def remove(session_id|active|persistent
@SYM: SYM_src_memnet_registry_py_contains|contains|fn|src/memnet/registry.py|41|def contains(session_id|active|persistent
@SYM: SYM_src_memnet_registry_py_count|count|fn|src/memnet/registry.py|46|def count() -> int|active|persistent
@SYM: SYM_src_memnet_registry_py_list_entries|list_entries|fn|src/memnet/registry.py|51|def list_entries() -> list[SessionEntry]|active|persistent
@SYM: SYM_src_memnet_registry_py_clear_all|clear_all|fn|src/memnet/registry.py|56|def clear_all() -> None|active|persistent
@SYM: SYM_src_memnet_registry_py_purge_before|purge_before|fn|src/memnet/registry.py|61|def purge_before(now|active|persistent
@SYM: SYM_src_memnet_sanitiser_py_sanitise_line|sanitise_line|fn|src/memnet/sanitiser.py|15|def sanitise_line(line|active|persistent
@SYM: SYM_src_memnet_sanitiser_py_sanitise_batch|sanitise_batch|fn|src/memnet/sanitiser.py|43|def sanitise_batch(raw_lines|active|persistent
@SYM: SYM_src_memnet_serve_py_run_serve|run_serve|fn|src/memnet/serve.py|84|def run_serve(host|active|persistent
@SYM: SYM_src_memnet_serve_py_send_command|send_command|fn|src/memnet/serve.py|92|def send_command(|active|persistent
@SYM: SYM_src_memnet_serve_py_probe|probe|fn|src/memnet/serve.py|126|def probe(host|active|persistent
@SYM: SYM_src_memnet_serve_client_py_dispatch|dispatch|fn|src/memnet/serve_client.py|25|def dispatch(argv|active|persistent
@SYM: SYM_src_memnet_session_py_set_now_override|set_now_override|fn|src/memnet/session.py|20|def set_now_override(dt|active|persistent
@SYM: SYM_src_memnet_session_py_utc_now|utc_now|fn|src/memnet/session.py|25|def utc_now() -> datetime|active|persistent
@SYM: SYM_src_memnet_session_py_iso_timestamp|iso_timestamp|fn|src/memnet/session.py|29|def iso_timestamp(dt|active|persistent
@SYM: SYM_src_memnet_session_py_SessionStore|SessionStore|class|src/memnet/session.py|46|class SessionStore|active|persistent
@SYM: SYM_src_memnet_session_py_purge_expired|purge_expired|fn|src/memnet/session.py|89|def purge_expired(caps|active|persistent
@SYM: SYM_src_memnet_session_py_count_sessions|count_sessions|fn|src/memnet/session.py|94|def count_sessions() -> int|active|persistent
@SYM: SYM_src_memnet_session_py_open_session|open_session|fn|src/memnet/session.py|99|def open_session(|active|persistent
@SYM: SYM_src_memnet_session_py_get_session|get_session|fn|src/memnet/session.py|141|def get_session(session_id|active|persistent
@SYM: SYM_src_memnet_session_py_list_sessions|list_sessions|fn|src/memnet/session.py|156|def list_sessions(caps|active|persistent
@SYM: SYM_src_memnet_session_py_close_session|close_session|fn|src/memnet/session.py|172|def close_session(session_id|active|persistent
@SYM: SYM_src_memnet_session_py_resolve_session_id|resolve_session_id|fn|src/memnet/session.py|180|def resolve_session_id(cli_session|active|persistent
@SYM: SYM_src_memnet_session_py_reset_registry|reset_registry|fn|src/memnet/session.py|191|def reset_registry() -> None|active|persistent
@SYM: SYM_src_memnet_snapshot_py_snapshot_text|snapshot_text|fn|src/memnet/snapshot.py|24|def snapshot_text(ss|active|persistent
@SYM: SYM_src_memnet_snapshot_py_write_snapshot|write_snapshot|fn|src/memnet/snapshot.py|45|def write_snapshot(ss|active|persistent
@SYM: SYM_src_memnet_snapshot_py_load_snapshot|load_snapshot|fn|src/memnet/snapshot.py|114|def load_snapshot(|active|persistent
@SYM: SYM_src_memnet_snapshot_py_load_snapshot_text|load_snapshot_text|fn|src/memnet/snapshot.py|137|def load_snapshot_text(|active|persistent
@SYM: SYM_src_memnet_tag_map_py_parse_map_line|parse_map_line|fn|src/memnet/tag_map.py|17|def parse_map_line(line|active|persistent
@SYM: SYM_src_memnet_tag_map_py_load_user_map|load_user_map|fn|src/memnet/tag_map.py|22|def load_user_map(lines|active|persistent
@SYM: SYM_src_memnet_tag_map_py_merge_fixed|merge_fixed|fn|src/memnet/tag_map.py|52|def merge_fixed(user_map|active|persistent
@SYM: SYM_src_memnet_tag_map_py_load_persisted_map_from_lines|load_persisted_map_from_lines|fn|src/memnet/tag_map.py|58|def load_persisted_map_from_lines(lines|active|persistent
@SYM: SYM_src_memnet_tag_map_py_load_map_from_lines|load_map_from_lines|fn|src/memnet/tag_map.py|74|def load_map_from_lines(lines|active|persistent
@SYM: SYM_src_memnet_tag_map_py_load_map_from_file|load_map_from_file|fn|src/memnet/tag_map.py|79|def load_map_from_file(path|active|persistent
@SYM: SYM_src_memnet_tag_map_py_tag_map_to_lines|tag_map_to_lines|fn|src/memnet/tag_map.py|84|def tag_map_to_lines(tag_map|active|persistent
@SYM: SYM_src_memnet_tag_map_py_validate_id|validate_id|fn|src/memnet/tag_map.py|92|def validate_id(record_id|active|persistent
@SYM: SYM_src_memnet_tag_map_py_validate_values|validate_values|fn|src/memnet/tag_map.py|106|def validate_values(tag_def|active|persistent
@SYM: SYM_src_memnet_tag_map_py_parse_line|parse_line|fn|src/memnet/tag_map.py|143|def parse_line(line|active|persistent
@SYM: SYM_src_memnet_tag_map_py_example_ingest_line|example_ingest_line|fn|src/memnet/tag_map.py|165|def example_ingest_line(tag_def|active|persistent
@SYM: SYM_src_memnet_warnings_py_emit_cap_warnings|emit_cap_warnings|fn|src/memnet/warnings.py|11|def emit_cap_warnings(store|active|persistent
@SYM: SYM_src_memnet_warnings_py_emit_ttl_warning|emit_ttl_warning|fn|src/memnet/warnings.py|27|def emit_ttl_warning(store|active|persistent
@SYM: SYM_src_memnet_warnings_py_emit_stale_warnings|emit_stale_warnings|fn|src/memnet/warnings.py|38|def emit_stale_warnings(store|active|persistent
@SYM: SYM_src_memnet_warnings_py_emit_session_warnings|emit_session_warnings|fn|src/memnet/warnings.py|55|def emit_session_warnings(store|active|persistent
@SYM: SYM_src_memnet_wire_py_split_payload|split_payload|fn|src/memnet/wire.py|8|def split_payload(payload|active|persistent
@SYM: SYM_src_memnet_wire_py_join_payload|join_payload|fn|src/memnet/wire.py|33|def join_payload(fields|active|persistent
@SYM: SYM_src_memnet_wire_py_parse_tag_line|parse_tag_line|fn|src/memnet/wire.py|41|def parse_tag_line(line|active|persistent
@SYM: SYM_src_memnet_wire_py_emit_record_line|emit_record_line|fn|src/memnet/wire.py|48|def emit_record_line(tag|active|persistent
@SYM: SYM_src_memnet_mcp_client_py_MemNetResponse|MemNetResponse|class|src/memnet_mcp/client.py|18|class MemNetResponse|active|persistent
@SYM: SYM_src_memnet_mcp_client_py_run_memnet|run_memnet|fn|src/memnet_mcp/client.py|130|def run_memnet(|active|persistent
@SYM: SYM_src_memnet_mcp_parse_py_extract_session_id|extract_session_id|fn|src/memnet_mcp/parse.py|12|def extract_session_id(stdout|active|persistent
@SYM: SYM_src_memnet_mcp_parse_py_extract_errors|extract_errors|fn|src/memnet_mcp/parse.py|24|def extract_errors(stderr|active|persistent
@SYM: SYM_src_memnet_mcp_seed_py_supplement_seed_lines|supplement_seed_lines|fn|src/memnet_mcp/seed.py|24|def supplement_seed_lines(seed_lines|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_serve_status|serve_status|fn|src/memnet_mcp/server.py|36|async def serve_status() -> str|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_session_open|session_open|fn|src/memnet_mcp/server.py|48|async def session_open(|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_session_current|session_current|fn|src/memnet_mcp/server.py|102|async def session_current(session|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_session_load|session_load|fn|src/memnet_mcp/server.py|108|async def session_load(|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_session_save|session_save|fn|src/memnet_mcp/server.py|128|async def session_save(|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_query_warm|query_warm|fn|src/memnet_mcp/server.py|137|async def query_warm(|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_query_walk|query_walk|fn|src/memnet_mcp/server.py|158|async def query_walk(|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_add|add|fn|src/memnet_mcp/server.py|179|async def add(|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_update|update|fn|src/memnet_mcp/server.py|196|async def update(|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_read_get|read_get|fn|src/memnet_mcp/server.py|213|async def read_get(id|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_housekeep_stats|housekeep_stats|fn|src/memnet_mcp/server.py|219|async def housekeep_stats(session|active|persistent
@SYM: SYM_src_memnet_mcp_server_py_main|main|fn|src/memnet_mcp/server.py|224|def main() -> None|active|persistent
@SYM: SYM_src_novel_mcp_affinity_edges_py_format_affinity_attrs|format_affinity_attrs|fn|src/novel_mcp/affinity_edges.py|13|def format_affinity_attrs(|active|persistent
@SYM: SYM_src_novel_mcp_affinity_edges_py_parse_affinity_attrs|parse_affinity_attrs|fn|src/novel_mcp/affinity_edges.py|25|def parse_affinity_attrs(|active|persistent
@SYM: SYM_src_novel_mcp_affinity_edges_py_read_directed_affinity|read_directed_affinity|fn|src/novel_mcp/affinity_edges.py|49|def read_directed_affinity(session|active|persistent
@SYM: SYM_src_novel_mcp_beat_pipeline_py_parse_warm_stdout|parse_warm_stdout|fn|src/novel_mcp/beat_pipeline.py|412|def parse_warm_stdout(stdout|active|persistent
@SYM: SYM_src_novel_mcp_beat_pipeline_py_pipeline_next_action|pipeline_next_action|fn|src/novel_mcp/beat_pipeline.py|561|def pipeline_next_action(|active|persistent
@SYM: SYM_src_novel_mcp_beat_pipeline_py_beat_turn_begin|beat_turn_begin|fn|src/novel_mcp/beat_pipeline.py|706|def beat_turn_begin(|active|persistent
@SYM: SYM_src_novel_mcp_beat_pipeline_py_beat_turn_finish|beat_turn_finish|fn|src/novel_mcp/beat_pipeline.py|854|def beat_turn_finish(|active|persistent
@SYM: SYM_src_novel_mcp_beat_stage_py_normalize_beat_stage|normalize_beat_stage|fn|src/novel_mcp/beat_stage.py|31|def normalize_beat_stage(stage|active|persistent
@SYM: SYM_src_novel_mcp_beat_stage_py_is_script_law_stage|is_script_law_stage|fn|src/novel_mcp/beat_stage.py|37|def is_script_law_stage(stage|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_hud_keys_from_body_plot|hud_keys_from_body_plot|fn|src/novel_mcp/body_state.py|32|def hud_keys_from_body_plot(usr_value|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_parse_body_fields|parse_body_fields|fn|src/novel_mcp/body_state.py|43|def parse_body_fields(body|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_satiety_guidance|satiety_guidance|fn|src/novel_mcp/body_state.py|57|def satiety_guidance(satiety|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_plr_body_from_update_lines|plr_body_from_update_lines|fn|src/novel_mcp/body_state.py|69|def plr_body_from_update_lines(update_li|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_format_beat_hud|format_beat_hud|fn|src/novel_mcp/body_state.py|106|def format_beat_hud(|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_resolve_beat_hud|resolve_beat_hud|fn|src/novel_mcp/body_state.py|135|def resolve_beat_hud(|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_effective_plr_body|effective_plr_body|fn|src/novel_mcp/body_state.py|155|def effective_plr_body(plr_body|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_satiety_downgrade_body|satiety_downgrade_body|fn|src/novel_mcp/body_state.py|160|def satiety_downgrade_body(body|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_plr_update_downgrade_satiety|plr_update_downgrade_satiety|fn|src/novel_mcp/body_state.py|170|def plr_update_downgrade_satiety(plr_par|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_vitality_satiety_conflict|vitality_satiety_conflict|fn|src/novel_mcp/body_state.py|182|def vitality_satiety_conflict(|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_vitality_block|vitality_block|fn|src/novel_mcp/body_state.py|219|def vitality_block(plr_body|active|persistent
@SYM: SYM_src_novel_mcp_body_state_py_hud_config_from_presentation|hud_config_from_presentation|fn|src/novel_mcp/body_state.py|240|def hud_config_from_presentation(present|active|persistent
@SYM: SYM_src_novel_mcp_bootstrap_py_fence_lines|fence_lines|fn|src/novel_mcp/bootstrap.py|11|def fence_lines(text|active|persistent
@SYM: SYM_src_novel_mcp_bootstrap_py_seed_lines_from_md|seed_lines_from_md|fn|src/novel_mcp/bootstrap.py|22|def seed_lines_from_md(text|active|persistent
@SYM: SYM_src_novel_mcp_bootstrap_py_catalog_lines_from_md|catalog_lines_from_md|fn|src/novel_mcp/bootstrap.py|33|def catalog_lines_from_md(|active|persistent
@SYM: SYM_src_novel_mcp_bootstrap_py_ingest_lines|ingest_lines|fn|src/novel_mcp/bootstrap.py|56|def ingest_lines(session|active|persistent
@SYM: SYM_src_novel_mcp_bootstrap_py_catalog_path_from_seed_md|catalog_path_from_seed_md|fn|src/novel_mcp/bootstrap.py|71|def catalog_path_from_seed_md(seed_md|active|persistent
@SYM: SYM_src_novel_mcp_bootstrap_py_bootstrap_from_md|bootstrap_from_md|fn|src/novel_mcp/bootstrap.py|82|def bootstrap_from_md(md_path|active|persistent
@SYM: SYM_src_novel_mcp_calendars_chongzhen_shichen_py_format_chon|format_chongzhen_shichen|fn|src/novel_mcp/calendars/chongzhen_shichen.py|48|def format_chongzhen_shichen(gt|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_ActionTemplate|ActionTemplate|class|src/novel_mcp/catalog_schema.py|18|class ActionTemplate|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_ItemActionsConfig|ItemActionsConfig|class|src/novel_mcp/catalog_schema.py|36|class ItemActionsConfig|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_MartialActionsConfig|MartialActionsConfig|class|src/novel_mcp/catalog_schema.py|62|class MartialActionsConfig|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_ProductionConfig|ProductionConfig|class|src/novel_mcp/catalog_schema.py|74|class ProductionConfig|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_BusinessConfig|BusinessConfig|class|src/novel_mcp/catalog_schema.py|128|class BusinessConfig|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_UiConfig|UiConfig|class|src/novel_mcp/catalog_schema.py|194|class UiConfig|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_LoadoutConfig|LoadoutConfig|class|src/novel_mcp/catalog_schema.py|205|class LoadoutConfig|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_CatalogSchema|CatalogSchema|class|src/novel_mcp/catalog_schema.py|254|class CatalogSchema|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_read_catalog_schema|read_catalog_schema|fn|src/novel_mcp/catalog_schema.py|344|def read_catalog_schema(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_art_from_parts|art_from_parts|fn|src/novel_mcp/catalog_schema.py|360|def art_from_parts(parts|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_art_to_wire|art_to_wire|fn|src/novel_mcp/catalog_schema.py|370|def art_to_wire(art|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_slot_for_kind|slot_for_kind|fn|src/novel_mcp/catalog_schema.py|380|def slot_for_kind(kind|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_art_display_name|art_display_name|fn|src/novel_mcp/catalog_schema.py|384|def art_display_name(art|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_default_burn_for_art|default_burn_for_art|fn|src/novel_mcp/catalog_schema.py|393|def default_burn_for_art(art|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_slot_order|slot_order|fn|src/novel_mcp/catalog_schema.py|406|def slot_order(schema|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_setup_scene_usr_key|setup_scene_usr_key|fn|src/novel_mcp/catalog_schema.py|417|def setup_scene_usr_key(slot|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_opening_offer_usr_key|opening_offer_usr_key|fn|src/novel_mcp/catalog_schema.py|421|def opening_offer_usr_key(slot|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_opening_offer_roll_usr_k|opening_offer_roll_usr_key|fn|src/novel_mcp/catalog_schema.py|425|def opening_offer_roll_usr_key(slot|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_slot_label|slot_label|fn|src/novel_mcp/catalog_schema.py|429|def slot_label(schema|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_opening_rank|opening_rank|fn|src/novel_mcp/catalog_schema.py|433|def opening_rank(schema|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_resolve_item_actions|resolve_item_actions|fn|src/novel_mcp/catalog_schema.py|437|def resolve_item_actions(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_resolve_martial_actions|resolve_martial_actions|fn|src/novel_mcp/catalog_schema.py|450|def resolve_martial_actions(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_schema_py_resolve_item_kind|resolve_item_kind|fn|src/novel_mcp/catalog_schema.py|469|def resolve_item_kind(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_catalog_schema_key|catalog_schema_key|fn|src/novel_mcp/catalog_session.py|35|def catalog_schema_key(schema_path|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_catalog_store_dir|catalog_store_dir|fn|src/novel_mcp/catalog_session.py|39|def catalog_store_dir(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_catalog_session_id_file|catalog_session_id_file|fn|src/novel_mcp/catalog_session.py|48|def catalog_session_id_file(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_catalog_snapshot_file|catalog_snapshot_file|fn|src/novel_mcp/catalog_session.py|56|def catalog_snapshot_file(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_catalog_tag_map_lines|catalog_tag_map_lines|fn|src/novel_mcp/catalog_session.py|64|def catalog_tag_map_lines(schema|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_session_is_live|session_is_live|fn|src/novel_mcp/catalog_session.py|81|def session_is_live(session_id|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_read_catalog_session_id|read_catalog_session_id_file|fn|src/novel_mcp/catalog_session.py|86|def read_catalog_session_id_file(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_resolve_catalog_session|resolve_catalog_session_id|fn|src/novel_mcp/catalog_session.py|101|def resolve_catalog_session_id(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_link_skill_catalog_sess|link_skill_catalog_session|fn|src/novel_mcp/catalog_session.py|127|def link_skill_catalog_session(story_ses|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_link_martial_catalog_se|link_martial_catalog_session|fn|src/novel_mcp/catalog_session.py|144|def link_martial_catalog_session(story_s|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_bootstrap_catalog_sessi|bootstrap_catalog_session|fn|src/novel_mcp/catalog_session.py|159|def bootstrap_catalog_session(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_ensure_catalog_session|ensure_catalog_session|fn|src/novel_mcp/catalog_session.py|216|def ensure_catalog_session(|active|persistent
@SYM: SYM_src_novel_mcp_catalog_session_py_resolve_catalog_md_for_|resolve_catalog_md_for_story|fn|src/novel_mcp/catalog_session.py|256|def resolve_catalog_md_for_story(|active|persistent
@SYM: SYM_src_novel_mcp_chapter_io_py_zh_chapter_label|zh_chapter_label|fn|src/novel_mcp/chapter_io.py|15|def zh_chapter_label(chp_num|active|persistent
@SYM: SYM_src_novel_mcp_chapter_io_py_chapter_heading|chapter_heading|fn|src/novel_mcp/chapter_io.py|31|def chapter_heading(chp_num|active|persistent
@SYM: SYM_src_novel_mcp_chapter_io_py_chapter_file_path|chapter_file_path|fn|src/novel_mcp/chapter_io.py|35|def chapter_file_path(workspace_root|active|persistent
@SYM: SYM_src_novel_mcp_chapter_io_py_last_committed_paragraph|last_committed_paragraph|fn|src/novel_mcp/chapter_io.py|59|def last_committed_paragraph(path|active|persistent
@SYM: SYM_src_novel_mcp_chapter_io_py_file_char_total|file_char_total|fn|src/novel_mcp/chapter_io.py|67|def file_char_total(paragraphs|active|persistent
@SYM: SYM_src_novel_mcp_chapter_io_py_chapter_prose_gate|chapter_prose_gate|fn|src/novel_mcp/chapter_io.py|71|def chapter_prose_gate(|active|persistent
@SYM: SYM_src_novel_mcp_chapter_io_py_chapter_prose_append|chapter_prose_append|fn|src/novel_mcp/chapter_io.py|146|def chapter_prose_append(|active|persistent
@SYM: SYM_src_novel_mcp_chapter_io_py_beat_prose_finalize|beat_prose_finalize|fn|src/novel_mcp/chapter_io.py|168|def beat_prose_finalize(|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_strip_gender_from_body|strip_gender_from_body|fn|src/novel_mcp/character_gender.py|64|def strip_gender_from_body(body_state|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_gender_from_body|gender_from_body|fn|src/novel_mcp/character_gender.py|72|def gender_from_body(body_state|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_split_traits_gender|split_traits_gender|fn|src/novel_mcp/character_gender.py|82|def split_traits_gender(traits|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_split_npc_trait_blob|split_npc_trait_blob|fn|src/novel_mcp/character_gender.py|96|def split_npc_trait_blob(blob|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_normalise_plr_parts|normalise_plr_parts|fn|src/novel_mcp/character_gender.py|122|def normalise_plr_parts(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_normalise_npc_parts|normalise_npc_parts|fn|src/novel_mcp/character_gender.py|146|def normalise_npc_parts(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_plr_body_index|plr_body_index|fn|src/novel_mcp/character_gender.py|194|def plr_body_index(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_plr_gender|plr_gender|fn|src/novel_mcp/character_gender.py|198|def plr_gender(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_npc_gender|npc_gender|fn|src/novel_mcp/character_gender.py|207|def npc_gender(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_npc_appearance|npc_appearance|fn|src/novel_mcp/character_gender.py|221|def npc_appearance(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_npc_personality|npc_personality|fn|src/novel_mcp/character_gender.py|225|def npc_personality(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_npc_voice|npc_voice|fn|src/novel_mcp/character_gender.py|229|def npc_voice(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_npc_traits|npc_traits|fn|src/novel_mcp/character_gender.py|233|def npc_traits(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_npc_profile|npc_profile|fn|src/novel_mcp/character_gender.py|237|def npc_profile(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_npc_presentation_entry|npc_presentation_entry|fn|src/novel_mcp/character_gender.py|247|def npc_presentation_entry(parts|active|persistent
@SYM: SYM_src_novel_mcp_character_gender_py_format_plr_wire|format_plr_wire|fn|src/novel_mcp/character_gender.py|259|def format_plr_wire(parts|active|persistent
@SYM: SYM_src_novel_mcp_edg_time_py_edg_requires_at|edg_requires_at|fn|src/novel_mcp/edg_time.py|23|def edg_requires_at(relation|active|persistent
@SYM: SYM_src_novel_mcp_edg_time_py_normalize_edg_parts|normalize_edg_parts|fn|src/novel_mcp/edg_time.py|27|def normalize_edg_parts(parts|active|persistent
@SYM: SYM_src_novel_mcp_edg_time_py_parse_edg_parts|parse_edg_parts|fn|src/novel_mcp/edg_time.py|35|def parse_edg_parts(line|active|persistent
@SYM: SYM_src_novel_mcp_edg_time_py_format_edg_line|format_edg_line|fn|src/novel_mcp/edg_time.py|42|def format_edg_line(parts|active|persistent
@SYM: SYM_src_novel_mcp_edg_time_py_law_requires_edg_at|law_requires_edg_at|fn|src/novel_mcp/edg_time.py|46|def law_requires_edg_at(warm_stdout|active|persistent
@SYM: SYM_src_novel_mcp_edg_time_py_stamp_edg_parts|stamp_edg_parts|fn|src/novel_mcp/edg_time.py|57|def stamp_edg_parts(parts|active|persistent
@SYM: SYM_src_novel_mcp_edg_time_py_prepare_edg_add_lines|prepare_edg_add_lines|fn|src/novel_mcp/edg_time.py|67|def prepare_edg_add_lines(|active|persistent
@SYM: SYM_src_novel_mcp_edg_time_py_validate_edg_at_add_lines|validate_edg_at_add_lines|fn|src/novel_mcp/edg_time.py|89|def validate_edg_at_add_lines(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_depth_rank|depth_rank|fn|src/novel_mcp/entity_knowledge.py|38|def depth_rank(depth|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_can_speak_about|can_speak_about|fn|src/novel_mcp/entity_knowledge.py|42|def can_speak_about(depth|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_load_holder_knowledge|load_holder_knowledge|fn|src/novel_mcp/entity_knowledge.py|47|def load_holder_knowledge(session|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_load_holder_knowledge_|load_holder_knowledge_from_warm|fn|src/novel_mcp/entity_knowledge.py|57|def load_holder_knowledge_from_warm(stdo|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_merge_knowledge_index|merge_knowledge_index|fn|src/novel_mcp/entity_knowledge.py|68|def merge_knowledge_index(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_holder_knows_entity|holder_knows_entity|fn|src/novel_mcp/entity_knowledge.py|89|def holder_knows_entity(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_knowledge_record|knowledge_record|fn|src/novel_mcp/entity_knowledge.py|108|def knowledge_record(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_depth_from_attrs|depth_from_attrs|fn|src/novel_mcp/entity_knowledge.py|132|def depth_from_attrs(attrs|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_entity_kind|entity_kind|fn|src/novel_mcp/entity_knowledge.py|146|def entity_kind(entity_id|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_can_show_canonical_nam|can_show_canonical_name|fn|src/novel_mcp/entity_knowledge.py|164|def can_show_canonical_name(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_can_show_precise_locat|can_show_precise_location|fn|src/novel_mcp/entity_knowledge.py|184|def can_show_precise_location(rec|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_entity_labels_from_war|entity_labels_from_warm|fn|src/novel_mcp/entity_knowledge.py|190|def entity_labels_from_warm(stdout|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_holder_labels_from_war|holder_labels_from_warm|fn|src/novel_mcp/entity_knowledge.py|206|def holder_labels_from_warm(stdout|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_knowledge_meta|knowledge_meta|fn|src/novel_mcp/entity_knowledge.py|221|def knowledge_meta(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_npc_anonymous_label|npc_anonymous_label|fn|src/novel_mcp/entity_knowledge.py|251|def npc_anonymous_label(parts|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_resolve_npc_display_na|resolve_npc_display_name|fn|src/novel_mcp/entity_knowledge.py|266|def resolve_npc_display_name(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_resolve_biz_display|resolve_biz_display|fn|src/novel_mcp/entity_knowledge.py|286|def resolve_biz_display(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_resolve_place_display_|resolve_place_display_name|fn|src/novel_mcp/entity_knowledge.py|322|def resolve_place_display_name(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_can_speak_entity_name|can_speak_entity_name|fn|src/novel_mcp/entity_knowledge.py|342|def can_speak_entity_name(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_build_knowledge_view|build_knowledge_view|fn|src/novel_mcp/entity_knowledge.py|359|def build_knowledge_view(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_format_knowledge_hud|format_knowledge_hud|fn|src/novel_mcp/entity_knowledge.py|406|def format_knowledge_hud(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_knowledge_gate_hint|knowledge_gate_hint|fn|src/novel_mcp/entity_knowledge.py|430|def knowledge_gate_hint(|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_entity_refs_missing_fr|entity_refs_missing_from_warm|fn|src/novel_mcp/entity_knowledge.py|450|def entity_refs_missing_from_warm(warm_s|active|persistent
@SYM: SYM_src_novel_mcp_entity_knowledge_py_merge_warm_catalog_lin|merge_warm_catalog_lines|fn|src/novel_mcp/entity_knowledge.py|467|def merge_warm_catalog_lines(warm_stdout|active|persistent
@SYM: SYM_src_novel_mcp_game_time_py_GameTime|GameTime|class|src/novel_mcp/game_time.py|16|class GameTime|active|persistent
@SYM: SYM_src_novel_mcp_game_time_py_parse_game_time|parse_game_time|fn|src/novel_mcp/game_time.py|35|def parse_game_time(value|active|persistent
@SYM: SYM_src_novel_mcp_game_time_py_year_from_sys_time|year_from_sys_time|fn|src/novel_mcp/game_time.py|55|def year_from_sys_time(value|active|persistent
@SYM: SYM_src_novel_mcp_game_time_py_advance_sys_time|advance_sys_time|fn|src/novel_mcp/game_time.py|60|def advance_sys_time(value|active|persistent
@SYM: SYM_src_novel_mcp_game_time_py_is_canonical_time|is_canonical_time|fn|src/novel_mcp/game_time.py|68|def is_canonical_time(value|active|persistent
@SYM: SYM_src_novel_mcp_game_time_py_sys_time_field_from_wire|sys_time_field_from_wire|fn|src/novel_mcp/game_time.py|72|def sys_time_field_from_wire(line|active|persistent
@SYM: SYM_src_novel_mcp_game_time_py_check_sys_time_update|check_sys_time_update|fn|src/novel_mcp/game_time.py|81|def check_sys_time_update(old|active|persistent
@SYM: SYM_src_novel_mcp_library_contracts_py_latest_oln_body|latest_oln_body|fn|src/novel_mcp/library_contracts.py|13|def latest_oln_body(index|active|persistent
@SYM: SYM_src_novel_mcp_library_contracts_py_oln_context_text|oln_context_text|fn|src/novel_mcp/library_contracts.py|30|def oln_context_text(oln_body|active|persistent
@SYM: SYM_src_novel_mcp_library_contracts_py_lib_match_keys|lib_match_keys|fn|src/novel_mcp/library_contracts.py|42|def lib_match_keys(index|active|persistent
@SYM: SYM_src_novel_mcp_library_contracts_py_parse_lib_rows|parse_lib_rows|fn|src/novel_mcp/library_contracts.py|49|def parse_lib_rows(index|active|persistent
@SYM: SYM_src_novel_mcp_library_contracts_py_match_lib_rows|match_lib_rows|fn|src/novel_mcp/library_contracts.py|53|def match_lib_rows(index|active|persistent
@SYM: SYM_src_novel_mcp_library_contracts_py_compile_library_contr|compile_library_contracts|fn|src/novel_mcp/library_contracts.py|196|def compile_library_contracts(|active|persistent
@SYM: SYM_src_novel_mcp_martial_catalog_expand_py_validate_art_nam|validate_art_name|fn|src/novel_mcp/martial_catalog_expand.py|39|def validate_art_name(name|active|persistent
@SYM: SYM_src_novel_mcp_martial_catalog_expand_py_validate_art_dic|validate_art_dict|fn|src/novel_mcp/martial_catalog_expand.py|53|def validate_art_dict(art|active|persistent
@SYM: SYM_src_novel_mcp_martial_catalog_expand_py_merge_arts|merge_arts|fn|src/novel_mcp/martial_catalog_expand.py|84|def merge_arts(|active|persistent
@SYM: SYM_src_novel_mcp_martial_catalog_expand_py_slot_counts|slot_counts|fn|src/novel_mcp/martial_catalog_expand.py|110|def slot_counts(arts|active|persistent
@SYM: SYM_src_novel_mcp_martial_catalog_expand_py_build_usr_burn_u|build_usr_burn_update|fn|src/novel_mcp/martial_catalog_expand.py|116|def build_usr_burn_update(|active|persistent
@SYM: SYM_src_novel_mcp_martial_catalog_expand_py_sync_art_neili_b|sync_art_neili_burn|fn|src/novel_mcp/martial_catalog_expand.py|141|def sync_art_neili_burn(|active|persistent
@SYM: SYM_src_novel_mcp_martial_catalog_expand_py_build_expand_pro|build_expand_prompt|fn|src/novel_mcp/martial_catalog_expand.py|181|def build_expand_prompt(|active|persistent
@SYM: SYM_src_novel_mcp_martial_catalog_expand_py_expand_martial_c|expand_martial_catalog|fn|src/novel_mcp/martial_catalog_expand.py|234|def expand_martial_catalog(|active|persistent
@SYM: SYM_src_novel_mcp_martial_catalog_expand_py_parse_llm_catalo|parse_llm_catalog_text|fn|src/novel_mcp/martial_catalog_expand.py|309|def parse_llm_catalog_text(text|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_parse_catalog_md|parse_catalog_md|fn|src/novel_mcp/opening_loadout.py|70|def parse_catalog_md(text|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_load_catalog_from_path|load_catalog_from_path|fn|src/novel_mcp/opening_loadout.py|89|def load_catalog_from_path(path|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_arts_from_session|arts_from_session|fn|src/novel_mcp/opening_loadout.py|93|def arts_from_session(|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_slot_for_art|slot_for_art|fn|src/novel_mcp/opening_loadout.py|154|def slot_for_art(art|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_catalog_slots|catalog_slots|fn|src/novel_mcp/opening_loadout.py|177|def catalog_slots(arts|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_parse_pick_offer_count|parse_pick_offer_count|fn|src/novel_mcp/opening_loadout.py|199|def parse_pick_offer_count(raw|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_reroll_opening_offers|reroll_opening_offers|fn|src/novel_mcp/opening_loadout.py|279|def reroll_opening_offers(|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_roll_slot_offers|roll_slot_offers|fn|src/novel_mcp/opening_loadout.py|349|def roll_slot_offers(|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_ensure_slot_offers|ensure_slot_offers|fn|src/novel_mcp/opening_loadout.py|370|def ensure_slot_offers(|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_read_opening_catalog|read_opening_catalog|fn|src/novel_mcp/opening_loadout.py|444|def read_opening_catalog(|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_validate_slot_pick|validate_slot_pick|fn|src/novel_mcp/opening_loadout.py|526|def validate_slot_pick(|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_validate_opening_picks|validate_opening_picks|fn|src/novel_mcp/opening_loadout.py|542|def validate_opening_picks(|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_read_opening_loadout|read_opening_loadout|fn|src/novel_mcp/opening_loadout.py|559|def read_opening_loadout(|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_commit_opening_pick|commit_opening_pick|fn|src/novel_mcp/opening_loadout.py|767|def commit_opening_pick(|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_commit_opening_loadout|commit_opening_loadout|fn|src/novel_mcp/opening_loadout.py|843|def commit_opening_loadout(|active|persistent
@SYM: SYM_src_novel_mcp_opening_loadout_py_has_proficiency_edges|has_proficiency_edges|fn|src/novel_mcp/opening_loadout.py|880|def has_proficiency_edges(|active|persistent
@SYM: SYM_src_novel_mcp_party_sheet_py_read_party_panel|read_party_panel|fn|src/novel_mcp/party_sheet.py|173|def read_party_panel(|active|persistent
@SYM: SYM_src_novel_mcp_paths_py_workspace_root|workspace_root|fn|src/novel_mcp/paths.py|12|def workspace_root(explicit|active|persistent
@SYM: SYM_src_novel_mcp_play_context_py_read_beat_stage|read_beat_stage|fn|src/novel_mcp/play_context.py|18|def read_beat_stage(session|active|persistent
@SYM: SYM_src_novel_mcp_play_context_py_best_continuation_anchor|best_continuation_anchor|fn|src/novel_mcp/play_context.py|31|def best_continuation_anchor(|active|persistent
@SYM: SYM_src_novel_mcp_play_context_py_script_beat_prepare|script_beat_prepare|fn|src/novel_mcp/play_context.py|116|def script_beat_prepare(|active|persistent
@SYM: SYM_src_novel_mcp_play_context_py_prose_beat_prepare|prose_beat_prepare|fn|src/novel_mcp/play_context.py|207|def prose_beat_prepare(|active|persistent
@SYM: SYM_src_novel_mcp_play_context_py_player_beat_prepare|player_beat_prepare|fn|src/novel_mcp/play_context.py|253|def player_beat_prepare(|active|persistent
@SYM: SYM_src_novel_mcp_player_profile_py_read_pc_display_name|read_pc_display_name|fn|src/novel_mcp/player_profile.py|31|def read_pc_display_name(session|active|persistent
@SYM: SYM_src_novel_mcp_player_profile_py_validate_profile|validate_profile|fn|src/novel_mcp/player_profile.py|39|def validate_profile(|active|persistent
@SYM: SYM_src_novel_mcp_player_profile_py_read_profile|read_profile|fn|src/novel_mcp/player_profile.py|56|def read_profile(session|active|persistent
@SYM: SYM_src_novel_mcp_player_profile_py_commit_profile|commit_profile|fn|src/novel_mcp/player_profile.py|82|def commit_profile(|active|persistent
@SYM: SYM_src_novel_mcp_player_setup_py_read_player_setup|read_player_setup|fn|src/novel_mcp/player_setup.py|244|def read_player_setup(|active|persistent
@SYM: SYM_src_novel_mcp_player_setup_py_player_setup_gate_payload|player_setup_gate_payload|fn|src/novel_mcp/player_setup.py|292|def player_setup_gate_payload(session|active|persistent
@SYM: SYM_src_novel_mcp_player_sheet_py_read_production_nodes|read_production_nodes|fn|src/novel_mcp/player_sheet.py|147|def read_production_nodes(|active|persistent
@SYM: SYM_src_novel_mcp_player_sheet_py_read_business_industries|read_business_industries|fn|src/novel_mcp/player_sheet.py|399|def read_business_industries(|active|persistent
@SYM: SYM_src_novel_mcp_player_sheet_py_read_items_for_owner|read_items_for_owner|fn|src/novel_mcp/player_sheet.py|487|def read_items_for_owner(|active|persistent
@SYM: SYM_src_novel_mcp_player_sheet_py_read_skills_for_owner|read_skills_for_owner|fn|src/novel_mcp/player_sheet.py|584|def read_skills_for_owner(|active|persistent
@SYM: SYM_src_novel_mcp_player_sheet_py_read_player_sheet|read_player_sheet|fn|src/novel_mcp/player_sheet.py|643|def read_player_sheet(|active|persistent
@SYM: SYM_src_novel_mcp_presentation_py_compile_presentation|compile_presentation|fn|src/novel_mcp/presentation.py|234|def compile_presentation(|active|persistent
@SYM: SYM_src_novel_mcp_presentation_py_compile_writing_contract|compile_writing_contract|fn|src/novel_mcp/presentation.py|289|def compile_writing_contract(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_beat_turn_begin|beat_turn_begin|fn|src/novel_mcp/server.py|44|async def beat_turn_begin(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_beat_turn_finish|beat_turn_finish|fn|src/novel_mcp/server.py|76|async def beat_turn_finish(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_player_beat_prepare|player_beat_prepare|fn|src/novel_mcp/server.py|137|async def player_beat_prepare(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_script_beat_prepare|script_beat_prepare|fn|src/novel_mcp/server.py|162|async def script_beat_prepare(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_prose_beat_prepare|prose_beat_prepare|fn|src/novel_mcp/server.py|187|async def prose_beat_prepare(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_read_player_profile|read_player_profile|fn|src/novel_mcp/server.py|206|async def read_player_profile(session|active|persistent
@SYM: SYM_src_novel_mcp_server_py_commit_player_profile|commit_player_profile|fn|src/novel_mcp/server.py|213|async def commit_player_profile(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_read_martial_catalog|read_martial_catalog|fn|src/novel_mcp/server.py|233|async def read_martial_catalog(session|active|persistent
@SYM: SYM_src_novel_mcp_server_py_read_opening_catalog|read_opening_catalog|fn|src/novel_mcp/server.py|242|async def read_opening_catalog(session|active|persistent
@SYM: SYM_src_novel_mcp_server_py_read_opening_loadout|read_opening_loadout|fn|src/novel_mcp/server.py|251|async def read_opening_loadout(session|active|persistent
@SYM: SYM_src_novel_mcp_server_py_commit_opening_pick|commit_opening_pick|fn|src/novel_mcp/server.py|260|async def commit_opening_pick(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_reroll_opening_offers|reroll_opening_offers|fn|src/novel_mcp/server.py|280|async def reroll_opening_offers(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_commit_opening_loadout|commit_opening_loadout|fn|src/novel_mcp/server.py|292|async def commit_opening_loadout(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_read_player_setup|read_player_setup|fn|src/novel_mcp/server.py|315|async def read_player_setup(session|active|persistent
@SYM: SYM_src_novel_mcp_server_py_bootstrap_from_seed|bootstrap_from_seed|fn|src/novel_mcp/server.py|324|async def bootstrap_from_seed(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_prose_metrics|prose_metrics|fn|src/novel_mcp/server.py|333|async def prose_metrics(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_beat_prose_finalize|beat_prose_finalize|fn|src/novel_mcp/server.py|354|async def beat_prose_finalize(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_chapter_prose_gate|chapter_prose_gate|fn|src/novel_mcp/server.py|380|async def chapter_prose_gate(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_chapter_prose_append|chapter_prose_append|fn|src/novel_mcp/server.py|406|async def chapter_prose_append(|active|persistent
@SYM: SYM_src_novel_mcp_server_py_main|main|fn|src/novel_mcp/server.py|427|def main() -> None|active|persistent
@SYM: SYM_src_novel_mcp_session_contract_py_session_contract_block|session_contract_block|fn|src/novel_mcp/session_contract.py|28|def session_contract_block() -> dict[str|active|persistent
@SYM: SYM_src_novel_mcp_session_meta_py_fetch_session_modified|fetch_session_modified|fn|src/novel_mcp/session_meta.py|12|def fetch_session_modified(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_ack_py_is_setup_acked|is_setup_acked|fn|src/novel_mcp/setup_ack.py|23|def is_setup_acked(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_ack_py_commit_setup_ack|commit_setup_ack|fn|src/novel_mcp/setup_ack.py|29|def commit_setup_ack(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_ack_py_seed_cli_setup_acks|seed_cli_setup_acks|fn|src/novel_mcp/setup_ack.py|57|def seed_cli_setup_acks(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_read_get_body|read_get_body|fn|src/novel_mcp/setup_graph.py|26|def read_get_body(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_read_usr_by_key|read_usr_by_key|fn|src/novel_mcp/setup_graph.py|39|def read_usr_by_key(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_usr_id_for_key|usr_id_for_key|fn|src/novel_mcp/setup_graph.py|57|def usr_id_for_key(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_read_usr_record|read_usr_record|fn|src/novel_mcp/setup_graph.py|76|def read_usr_record(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_list_tag_data_rows|list_tag_data_rows|fn|src/novel_mcp/setup_graph.py|83|def list_tag_data_rows(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_first_plr_id|first_plr_id|fn|src/novel_mcp/setup_graph.py|100|def first_plr_id(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_ensure_usr_row|ensure_usr_row|fn|src/novel_mcp/setup_graph.py|107|def ensure_usr_row(|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_graph_sync_output_paths|graph_sync_output_paths|fn|src/novel_mcp/setup_graph.py|139|def graph_sync_output_paths(|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_graph_update|graph_update|fn|src/novel_mcp/setup_graph.py|155|def graph_update(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_graph_apply_setup_lines|graph_apply_setup_lines|fn|src/novel_mcp/setup_graph.py|170|def graph_apply_setup_lines(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_is_setup_locked|is_setup_locked|fn|src/novel_mcp/setup_graph.py|188|def is_setup_locked(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_setup_commit_errors|setup_commit_errors|fn|src/novel_mcp/setup_graph.py|206|def setup_commit_errors(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_resolve_catalog_path|resolve_catalog_path|fn|src/novel_mcp/setup_graph.py|214|def resolve_catalog_path(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_graph_py_merge_plr_gender|merge_plr_gender|fn|src/novel_mcp/setup_graph.py|224|def merge_plr_gender(body_state|active|persistent
@SYM: SYM_src_novel_mcp_setup_profile_rules_py_read_profile_rules|read_profile_rules|fn|src/novel_mcp/setup_profile_rules.py|22|def read_profile_rules(session|active|persistent
@SYM: SYM_src_novel_mcp_setup_profile_rules_py_validate_profile_fi|validate_profile_fields|fn|src/novel_mcp/setup_profile_rules.py|41|def validate_profile_fields(|active|persistent
@SYM: SYM_src_novel_mcp_skill_catalog_keys_py_read_skill_catalog_m|read_skill_catalog_md_rel|fn|src/novel_mcp/skill_catalog_keys.py|24|def read_skill_catalog_md_rel(session|active|persistent
@SYM: SYM_src_novel_mcp_skill_catalog_keys_py_read_skill_catalog_s|read_skill_catalog_session_from_story|fn|src/novel_mcp/skill_catalog_keys.py|35|def read_skill_catalog_session_from_stor|active|persistent
@SYM: SYM_src_novel_mcp_stage_wire_validate_py_validate_stage_wire|validate_stage_wires|fn|src/novel_mcp/stage_wire_validate.py|26|def validate_stage_wires(|active|persistent
@SYM: SYM_src_novel_mcp_stage_wire_validate_py_validate_script_dra|validate_script_draft_bundle|fn|src/novel_mcp/stage_wire_validate.py|37|def validate_script_draft_bundle(|active|persistent
@SYM: SYM_src_novel_mcp_stage_wire_validate_py_collect_audit_findi|collect_audit_findings|fn|src/novel_mcp/stage_wire_validate.py|104|def collect_audit_findings(|active|persistent
@SYM: SYM_src_novel_mcp_time_display_py_register_formatter|register_formatter|fn|src/novel_mcp/time_display.py|14|def register_formatter(name|active|persistent
@SYM: SYM_src_novel_mcp_time_display_py_parse_time_spec|parse_time_spec|fn|src/novel_mcp/time_display.py|18|def parse_time_spec(value|active|persistent
@SYM: SYM_src_novel_mcp_time_display_py_format_time_display|format_time_display|fn|src/novel_mcp/time_display.py|35|def format_time_display(gt|active|persistent
@SYM: SYM_src_novel_mcp_validators_py_validate_option_lines|validate_option_lines|fn|src/novel_mcp/validators.py|61|def validate_option_lines(|active|persistent
@SYM: SYM_src_novel_mcp_warm_index_py_LawRow|LawRow|class|src/novel_mcp/warm_index.py|15|class LawRow|active|persistent
@SYM: SYM_src_novel_mcp_warm_index_py_WarmIndex|WarmIndex|class|src/novel_mcp/warm_index.py|30|class WarmIndex|active|persistent
@SYM: SYM_src_novel_mcp_warm_index_py_index_warm|index_warm|fn|src/novel_mcp/warm_index.py|42|def index_warm(stdout|active|persistent
@SYM: SYM_src_novel_mcp_warm_index_py_usr_value|usr_value|fn|src/novel_mcp/warm_index.py|75|def usr_value(index|active|persistent
@SYM: SYM_src_novel_mcp_warm_index_py_law_constraint_tokens|law_constraint_tokens|fn|src/novel_mcp/warm_index.py|80|def law_constraint_tokens(index|active|persistent
@SYM: SYM_src_novel_mcp_warm_index_py_pipeline_no_bundle|pipeline_no_bundle|fn|src/novel_mcp/warm_index.py|93|def pipeline_no_bundle(index|active|persistent
@SYM: SYM_src_novel_mcp_warm_index_py_laws_for_stage|laws_for_stage|fn|src/novel_mcp/warm_index.py|103|def laws_for_stage(index|active|persistent
@SYM: SYM_src_novel_mcp_warm_supplement_py_enrich_warm_stdout|enrich_warm_stdout|fn|src/novel_mcp/warm_supplement.py|210|def enrich_warm_stdout(|active|persistent
@SYM: SYM_src_novel_mcp_warm_walk_py_hops_from_wire|hops_from_wire|fn|src/novel_mcp/warm_walk.py|15|def hops_from_wire(stdout|active|persistent
@SYM: SYM_src_novel_mcp_warm_walk_py_walk_stdout_from_wire|walk_stdout_from_wire|fn|src/novel_mcp/warm_walk.py|38|def walk_stdout_from_wire(stdout|active|persistent
@SYM: SYM_src_novel_mcp_warm_walk_py_fetch_warm_walk|fetch_warm_walk|fn|src/novel_mcp/warm_walk.py|43|def fetch_warm_walk(|active|persistent
@SYM: SYM_src_novel_mcp_warm_walk_py_hops_from_walk_stdout|hops_from_walk_stdout|fn|src/novel_mcp/warm_walk.py|78|def hops_from_walk_stdout(stdout|active|persistent
@SYM: SYM_src_novel_mcp_warm_walk_py_curated_walk_lines|curated_walk_lines|fn|src/novel_mcp/warm_walk.py|87|def curated_walk_lines(|active|persistent
@SYM: SYM_src_novel_mcp_writing_contract_py_compile_writing_contra|compile_writing_contract|fn|src/novel_mcp/writing_contract.py|15|def compile_writing_contract(|active|persistent
@SYM: SYM_src_novel_mcp_zh_text_py_count_zh_chars|count_zh_chars|fn|src/novel_mcp/zh_text.py|10|def count_zh_chars(text|active|persistent
@SYM: SYM_src_novel_mcp_zh_text_py_parse_scene_band|parse_scene_band|fn|src/novel_mcp/zh_text.py|15|def parse_scene_band(usr05|active|persistent
@SYM: SYM_src_novel_mcp_zh_text_py_prose_status|prose_status|fn|src/novel_mcp/zh_text.py|23|def prose_status(|active|persistent
@SYM: SYM_applications_novel_cursor_app_config_py_repo_root|repo_root|fn|applications/novel_cursor/app_config.py|26|def repo_root() -> Path|active|persistent
@SYM: SYM_applications_novel_cursor_app_config_py_NovelAppConfig|NovelAppConfig|class|applications/novel_cursor/app_config.py|31|class NovelAppConfig|active|persistent
@SYM: SYM_applications_novel_cursor_app_config_py_list_story_insta|list_story_instances|fn|applications/novel_cursor/app_config.py|171|def list_story_instances() -> list[dict[|active|persistent
@SYM: SYM_applications_novel_cursor_app_config_py_load_config|load_config|fn|applications/novel_cursor/app_config.py|194|def load_config(|active|persistent
@SYM: SYM_applications_novel_cursor_beat_orchestrator_py_run_scrip|run_script_stage|fn|applications/novel_cursor/beat_orchestrator.py|71|def run_script_stage(|active|persistent
@SYM: SYM_applications_novel_cursor_beat_orchestrator_py_r_479|run_script_phase|fn|applications/novel_cursor/beat_orchestrator.py|163|def run_script_phase(|active|persistent
@SYM: SYM_applications_novel_cursor_beat_orchestrator_py_run_prose|run_prose_phase|fn|applications/novel_cursor/beat_orchestrator.py|204|def run_prose_phase(|active|persistent
@SYM: SYM_applications_novel_cursor_beat_prompt_py_build_script_pr|build_script_primer|fn|applications/novel_cursor/beat_prompt.py|15|def build_script_primer(config|active|persistent
@SYM: SYM_applications_novel_cursor_beat_prompt_py_build_script_tu|build_script_turn|fn|applications/novel_cursor/beat_prompt.py|36|def build_script_turn(config|active|persistent
@SYM: SYM_applications_novel_cursor_beat_prompt_py_build_prose_pri|build_prose_primer|fn|applications/novel_cursor/beat_prompt.py|83|def build_prose_primer(config|active|persistent
@SYM: SYM_applications_novel_cursor_beat_prompt_py_build_prose_tur|build_prose_turn|fn|applications/novel_cursor/beat_prompt.py|126|def build_prose_turn(config|active|persistent
@SYM: SYM_applications_novel_cursor_beat_prompt_py_build_script_st|build_script_stage_system|fn|applications/novel_cursor/beat_prompt.py|243|def build_script_stage_system(config|active|persistent
@SYM: SYM_applications_novel_cursor_beat_prompt_py_build_s_487|build_script_stage_user|fn|applications/novel_cursor/beat_prompt.py|265|def build_script_stage_user(|active|persistent
@SYM: SYM_applications_novel_cursor_beat_prompt_py_build_prose_sys|build_prose_system|fn|applications/novel_cursor/beat_prompt.py|389|def build_prose_system(config|active|persistent
@SYM: SYM_applications_novel_cursor_beat_prompt_py_build_prose_use|build_prose_user|fn|applications/novel_cursor/beat_prompt.py|440|def build_prose_user(prep|active|persistent
@SYM: SYM_applications_novel_cursor_catalog_expand_py_llm_complete|llm_complete|fn|applications/novel_cursor/catalog_expand.py|14|def llm_complete(system|active|persistent
@SYM: SYM_applications_novel_cursor_catalog_expand_py_load_schema|load_schema|fn|applications/novel_cursor/catalog_expand.py|25|def load_schema(config|active|persistent
@SYM: SYM_applications_novel_cursor_catalog_expand_py_run_catalog_|run_catalog_expand|fn|applications/novel_cursor/catalog_expand.py|34|def run_catalog_expand(|active|persistent
@SYM: SYM_applications_novel_cursor_chat_thread_py_thread_path|thread_path|fn|applications/novel_cursor/chat_thread.py|17|def thread_path(config|active|persistent
@SYM: SYM_applications_novel_cursor_chat_thread_py_reset_threads|reset_threads|fn|applications/novel_cursor/chat_thread.py|21|def reset_threads(config|active|persistent
@SYM: SYM_applications_novel_cursor_chat_thread_py_reset_role_thre|reset_role_thread|fn|applications/novel_cursor/chat_thread.py|29|def reset_role_thread(config|active|persistent
@SYM: SYM_applications_novel_cursor_chat_thread_py_ChatThread|ChatThread|class|applications/novel_cursor/chat_thread.py|35|class ChatThread|active|persistent
@SYM: SYM_applications_novel_cursor_cursor_beat_py_main|main|fn|applications/novel_cursor/cursor_beat.py|89|def main(argv|active|persistent
@SYM: SYM_applications_novel_cursor_env_load_py_repo_root|repo_root|fn|applications/novel_cursor/env_load.py|9|def repo_root() -> Path|active|persistent
@SYM: SYM_applications_novel_cursor_env_load_py_load_dotenv|load_dotenv|fn|applications/novel_cursor/env_load.py|13|def load_dotenv(path|active|persistent
@SYM: SYM_applications_novel_cursor_llm_client_py_model_for_role|model_for_role|fn|applications/novel_cursor/llm_client.py|104|def model_for_role(role|active|persistent
@SYM: SYM_applications_novel_cursor_llm_client_py_complete|complete|fn|applications/novel_cursor/llm_client.py|108|def complete(|active|persistent
@SYM: SYM_applications_novel_cursor_llm_client_py_complete_message|complete_messages|fn|applications/novel_cursor/llm_client.py|126|def complete_messages(|active|persistent
@SYM: SYM_applications_novel_cursor_mcp_config_py_memnet_env|memnet_env|fn|applications/novel_cursor/mcp_config.py|16|def memnet_env(session_id|active|persistent
@SYM: SYM_applications_novel_cursor_mcp_config_py_inline_mcp_serve|inline_mcp_servers|fn|applications/novel_cursor/mcp_config.py|28|def inline_mcp_servers(session_id|active|persistent
@SYM: SYM_applications_novel_cursor_play_service_py_probe_serve|probe_serve|fn|applications/novel_cursor/play_service.py|53|def probe_serve() -> bool|active|persistent
@SYM: SYM_applications_novel_cursor_play_service_py_read_session_i|read_session_id|fn|applications/novel_cursor/play_service.py|61|def read_session_id(config|active|persistent
@SYM: SYM_applications_novel_cursor_play_service_py_preflight_sess|preflight_session|fn|applications/novel_cursor/play_service.py|72|def preflight_session(config|active|persistent
@SYM: SYM_applications_novel_cursor_play_service_py_write_last_bea|write_last_beat|fn|applications/novel_cursor/play_service.py|96|def write_last_beat(config|active|persistent
@SYM: SYM_applications_novel_cursor_play_service_py_read_last_beat|read_last_beat|fn|applications/novel_cursor/play_service.py|105|def read_last_beat(config|active|persistent
@SYM: SYM_applications_novel_cursor_play_service_py_fail_result|fail_result|fn|applications/novel_cursor/play_service.py|115|def fail_result(|active|persistent
@SYM: SYM_applications_novel_cursor_play_service_py_ensure_slot_gr|ensure_slot_graph_paths|fn|applications/novel_cursor/play_service.py|137|def ensure_slot_graph_paths(config|active|persistent
@SYM: SYM_applications_novel_cursor_play_service_py_run_beat|run_beat|fn|applications/novel_cursor/play_service.py|151|def run_beat(|active|persistent
@SYM: SYM_applications_novel_cursor_session_bootstrap_py_rebootstr|rebootstrap_session|fn|applications/novel_cursor/session_bootstrap.py|26|def rebootstrap_session(|active|persistent
@SYM: SYM_applications_novel_cursor_wire_parse_py_extract_draft_bu|extract_draft_bundle|fn|applications/novel_cursor/wire_parse.py|23|def extract_draft_bundle(text|active|persistent
@SYM: SYM_applications_novel_cursor_wire_parse_py_extract_scr_line|extract_scr_lines|fn|applications/novel_cursor/wire_parse.py|32|def extract_scr_lines(text|active|persistent
@SYM: SYM_applications_novel_cursor_wire_parse_py_extract_wire_lin|extract_wire_lines|fn|applications/novel_cursor/wire_parse.py|37|def extract_wire_lines(text|active|persistent
@SYM: SYM_applications_novel_cursor_wire_parse_py_parse_prose_payl|parse_prose_payload|fn|applications/novel_cursor/wire_parse.py|52|def parse_prose_payload(text|active|persistent
@SYM: SYM_applications_novel_cursor_wire_parse_py_normalise_option|normalise_options|fn|applications/novel_cursor/wire_parse.py|73|def normalise_options(raw|active|persistent
@SYM: SYM_applications_novel_mobile_auth_py_AuthConfig|AuthConfig|class|applications/novel_mobile/auth.py|19|class AuthConfig|active|persistent
@SYM: SYM_applications_novel_mobile_auth_py_AuthContext|AuthContext|class|applications/novel_mobile/auth.py|29|class AuthContext|active|persistent
@SYM: SYM_applications_novel_mobile_auth_py_load_auth_config|load_auth_config|fn|applications/novel_mobile/auth.py|34|def load_auth_config(|active|persistent
@SYM: SYM_applications_novel_mobile_auth_py_user_id_from_google_su|user_id_from_google_sub|fn|applications/novel_mobile/auth.py|68|def user_id_from_google_sub(sub|active|persistent
@SYM: SYM_applications_novel_mobile_auth_py_verify_google_credenti|verify_google_credential|fn|applications/novel_mobile/auth.py|79|def verify_google_credential(credential|active|persistent
@SYM: SYM_applications_novel_mobile_auth_py_issue_app_token|issue_app_token|fn|applications/novel_mobile/auth.py|91|def issue_app_token(|active|persistent
@SYM: SYM_applications_novel_mobile_auth_py_verify_app_token|verify_app_token|fn|applications/novel_mobile/auth.py|113|def verify_app_token(config|active|persistent
@SYM: SYM_applications_novel_mobile_auth_py_authenticate_request|authenticate_request|fn|applications/novel_mobile/auth.py|128|def authenticate_request(|active|persistent
@SYM: SYM_applications_novel_mobile_auth_py_resolve_user_id|resolve_user_id|fn|applications/novel_mobile/auth.py|146|def resolve_user_id(|active|persistent
@SYM: SYM_applications_novel_mobile_auth_py_exchange_google_login|exchange_google_login|fn|applications/novel_mobile/auth.py|162|def exchange_google_login(|active|persistent
@SYM: SYM_applications_novel_mobile_jobs_py_world_job_slot|world_job_slot|fn|applications/novel_mobile/jobs.py|17|def world_job_slot(world_id|active|persistent
@SYM: SYM_applications_novel_mobile_jobs_py_BeatJob|BeatJob|class|applications/novel_mobile/jobs.py|26|class BeatJob|active|persistent
@SYM: SYM_applications_novel_mobile_jobs_py_BeatJobStore|BeatJobStore|class|applications/novel_mobile/jobs.py|45|class BeatJobStore|active|persistent
@SYM: SYM_applications_novel_mobile_server_py_ProfileBody|ProfileBody|class|applications/novel_mobile/server.py|77|class ProfileBody(BaseModel)|active|persistent
@SYM: SYM_applications_novel_mobile_server_py_PickBody|PickBody|class|applications/novel_mobile/server.py|82|class PickBody(BaseModel)|active|persistent
@SYM: SYM_applications_novel_mobile_server_py_RerollBody|RerollBody|class|applications/novel_mobile/server.py|87|class RerollBody(BaseModel)|active|persistent
@SYM: SYM_applications_novel_mobile_server_py_AckBody|AckBody|class|applications/novel_mobile/server.py|91|class AckBody(BaseModel)|active|persistent
@SYM: SYM_applications_novel_mobile_server_py_BeatBody|BeatBody|class|applications/novel_mobile/server.py|95|class BeatBody(BaseModel)|active|persistent
@SYM: SYM_applications_novel_mobile_server_py_GoogleLoginBody|GoogleLoginBody|class|applications/novel_mobile/server.py|101|class GoogleLoginBody(BaseModel)|active|persistent
@SYM: SYM_applications_novel_mobile_server_py_WorldCreateBody|WorldCreateBody|class|applications/novel_mobile/server.py|105|class WorldCreateBody(BaseModel)|active|persistent
@SYM: SYM_applications_novel_mobile_server_py_get_config|get_config|fn|applications/novel_mobile/server.py|123|def get_config() -> NovelAppConfig|active|persistent
@SYM: SYM_applications_novel_mobile_server_py_create_app|create_app|fn|applications/novel_mobile/server.py|234|def create_app(|active|persistent
@SYM: SYM_applications_novel_mobile_server_py_main|main|fn|applications/novel_mobile/server.py|793|def main(argv|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_WorldMeta|WorldMeta|class|applications/novel_mobile/world_registry.py|19|class WorldMeta|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_new_world_id|new_world_id|fn|applications/novel_mobile/world_registry.py|28|def new_world_id() -> str|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_write_meta|write_meta|fn|applications/novel_mobile/world_registry.py|36|def write_meta(wcfg|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_read_meta|read_meta|fn|applications/novel_mobile/world_registry.py|44|def read_meta(base|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_app_config_f|app_config_for_meta|fn|applications/novel_mobile/world_registry.py|69|def app_config_for_meta(meta|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_locate_world|locate_world|fn|applications/novel_mobile/world_registry.py|76|def locate_world(default_base|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_resolve_worl|resolve_world_config|fn|applications/novel_mobile/world_registry.py|97|def resolve_world_config(default_base|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_list_worlds_|list_worlds_for_owner|fn|applications/novel_mobile/world_registry.py|144|def list_worlds_for_owner(default_base|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_create_world|create_world_record|fn|applications/novel_mobile/world_registry.py|164|def create_world_record(|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_require_worl|require_world_owner|fn|applications/novel_mobile/world_registry.py|186|def require_world_owner(default_base|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_update_meta_|update_meta_session|fn|applications/novel_mobile/world_registry.py|193|def update_meta_session(default_base|active|persistent
@SYM: SYM_applications_novel_mobile_world_registry_py_delete_world|delete_world_record|fn|applications/novel_mobile/world_registry.py|199|def delete_world_record(default_base|active|persistent
@SYM: SYM_applications_novel_mobile_world_slot_py_normalise_world_|normalise_world_id|fn|applications/novel_mobile/world_slot.py|19|def normalise_world_id(raw|active|persistent
@SYM: SYM_applications_novel_mobile_world_slot_py_normalise_user_i|normalise_user_id|fn|applications/novel_mobile/world_slot.py|30|def normalise_user_id(raw|active|persistent
@SYM: SYM_applications_novel_mobile_world_slot_py_worlds_base_dir|worlds_base_dir|fn|applications/novel_mobile/world_slot.py|41|def worlds_base_dir(base|active|persistent
@SYM: SYM_applications_novel_mobile_world_slot_py_world_root|world_root|fn|applications/novel_mobile/world_slot.py|45|def world_root(base|active|persistent
@SYM: SYM_applications_novel_mobile_world_slot_py_resolve_config|resolve_config|fn|applications/novel_mobile/world_slot.py|59|def resolve_config(base|active|persistent
@EDG: E_tsk_root|TSK_codebase_snap_memnet|owns|MOD_repo_root|scope|persistent
@EDG: E_tsk_usr|TSK_codebase_snap_memnet|constrained_by|USR_snap_scope|light_snap|persistent
@EDG: E_own_1|TSK_codebase_snap_memnet|owns|MOD_src_memnet___init___py|scope|persistent
@EDG: E_own_2|TSK_codebase_snap_memnet|owns|MOD_src_memnet___main___py|scope|persistent
@EDG: E_own_3|TSK_codebase_snap_memnet|owns|MOD_src_memnet_cli_py|scope|persistent
@EDG: E_def_4|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_emit_del|entry|persistent
@EDG: E_def_5|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_emit_stat|entry|persistent
@EDG: E_def_6|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_emit_stderr|entry|persistent
@EDG: E_def_7|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_emit_stderr_summary|entry|persistent
@EDG: E_def_8|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_version|entry|persistent
@EDG: E_def_9|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_serve|entry|persistent
@EDG: E_def_10|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_guide|entry|persistent
@EDG: E_def_11|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_examples_list|entry|persistent
@EDG: E_def_12|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_examples_map|entry|persistent
@EDG: E_def_13|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_examples_workflow|entry|persistent
@EDG: E_def_14|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_examples_add|entry|persistent
@EDG: E_def_15|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_examples_path|entry|persistent
@EDG: E_def_16|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_examples_agent_guide|entry|persistent
@EDG: E_def_17|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_tagmap_fields|entry|persistent
@EDG: E_def_18|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_tagmap_show|entry|persistent
@EDG: E_def_19|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_session_open|entry|persistent
@EDG: E_def_20|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_session_resume|entry|persistent
@EDG: E_def_21|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_session_current|entry|persistent
@EDG: E_def_22|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_session_list|entry|persistent
@EDG: E_def_23|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_session_save|entry|persistent
@EDG: E_def_24|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_session_load|entry|persistent
@EDG: E_def_25|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_session_close|entry|persistent
@EDG: E_def_26|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_relations_list|entry|persistent
@EDG: E_def_27|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_add_cmd|entry|persistent
@EDG: E_def_28|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_update_cmd|entry|persistent
@EDG: E_def_29|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_delete_cmd|entry|persistent
@EDG: E_def_30|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_read_list|entry|persistent
@EDG: E_def_31|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_read_get|entry|persistent
@EDG: E_def_32|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_query_neighbors|entry|persistent
@EDG: E_def_33|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_query_path|entry|persistent
@EDG: E_def_34|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_query_context|entry|persistent
@EDG: E_def_35|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_query_warm|entry|persistent
@EDG: E_def_36|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_query_walk|entry|persistent
@EDG: E_def_37|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_housekeep_stats|entry|persistent
@EDG: E_def_38|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_housekeep_stale|entry|persistent
@EDG: E_def_39|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_housekeep_orphans|entry|persistent
@EDG: E_def_40|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_housekeep_dangling|entry|persistent
@EDG: E_def_41|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_housekeep_recyclable|entry|persistent
@EDG: E_def_42|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_prune_help|entry|persistent
@EDG: E_def_43|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_prune_stale_cmd|entry|persistent
@EDG: E_def_44|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_prune_orphans|entry|persistent
@EDG: E_def_45|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_prune_dangling|entry|persistent
@EDG: E_def_46|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_prune_recyclable|entry|persistent
@EDG: E_def_47|MOD_src_memnet_cli_py|defines|SYM_src_memnet_cli_py_main|entry|persistent
@EDG: E_own_48|TSK_codebase_snap_memnet|owns|MOD_src_memnet_config_py|scope|persistent
@EDG: E_def_49|MOD_src_memnet_config_py|defines|SYM_src_memnet_config_py_Caps|entry|persistent
@EDG: E_def_50|MOD_src_memnet_config_py|defines|SYM_src_memnet_config_py_serve_host|entry|persistent
@EDG: E_def_51|MOD_src_memnet_config_py|defines|SYM_src_memnet_config_py_serve_port|entry|persistent
@EDG: E_def_52|MOD_src_memnet_config_py|defines|SYM_src_memnet_config_py_examples_dir|entry|persistent
@EDG: E_def_53|MOD_src_memnet_config_py|defines|SYM_src_memnet_config_py_default_ttl_minutes|entry|persistent
@EDG: E_own_54|TSK_codebase_snap_memnet|owns|MOD_src_memnet_context_view_py|scope|persistent
@EDG: E_def_55|MOD_src_memnet_context_view_py|defines|SYM_src_memnet_context_view_py_format_walk_hop|entry|persistent
@EDG: E_own_56|TSK_codebase_snap_memnet|owns|MOD_src_memnet_exceptions_py|scope|persistent
@EDG: E_def_57|MOD_src_memnet_exceptions_py|defines|SYM_src_memnet_exceptions_py_MemNetError|entry|persistent
@EDG: E_own_58|TSK_codebase_snap_memnet|owns|MOD_src_memnet_filter_py|scope|persistent
@EDG: E_def_59|MOD_src_memnet_filter_py|defines|SYM_src_memnet_filter_py_parse_where|entry|persistent
@EDG: E_def_60|MOD_src_memnet_filter_py|defines|SYM_src_memnet_filter_py_parse_wheres|entry|persistent
@EDG: E_def_61|MOD_src_memnet_filter_py|defines|SYM_src_memnet_filter_py_field_matches|entry|persistent
@EDG: E_def_62|MOD_src_memnet_filter_py|defines|SYM_src_memnet_filter_py_record_matches|entry|persistent
@EDG: E_own_63|TSK_codebase_snap_memnet|owns|MOD_src_memnet_fixed_tags_py|scope|persistent
@EDG: E_def_64|MOD_src_memnet_fixed_tags_py|defines|SYM_src_memnet_fixed_tags_py_fixed_tag_map|entry|persistent
@EDG: E_own_65|TSK_codebase_snap_memnet|owns|MOD_src_memnet_help_text_py|scope|persistent
@EDG: E_def_66|MOD_src_memnet_help_text_py|defines|SYM_src_memnet_help_text_py_guide_text|entry|persistent
@EDG: E_def_67|MOD_src_memnet_help_text_py|defines|SYM_src_memnet_help_text_py_examples_map_text|entry|persistent
@EDG: E_def_68|MOD_src_memnet_help_text_py|defines|SYM_src_memnet_help_text_py_examples_workflow_text|entry|persistent
@EDG: E_def_69|MOD_src_memnet_help_text_py|defines|SYM_src_memnet_help_text_py_examples_path_text|entry|persistent
@EDG: E_def_70|MOD_src_memnet_help_text_py|defines|SYM_src_memnet_help_text_py_fields_text|entry|persistent
@EDG: E_def_71|MOD_src_memnet_help_text_py|defines|SYM_src_memnet_help_text_py_add_example_text|entry|persistent
@EDG: E_own_72|TSK_codebase_snap_memnet|owns|MOD_src_memnet_housekeep_py|scope|persistent
@EDG: E_def_73|MOD_src_memnet_housekeep_py|defines|SYM_src_memnet_housekeep_py_recyclable_rows|entry|persistent
@EDG: E_def_74|MOD_src_memnet_housekeep_py|defines|SYM_src_memnet_housekeep_py_dangling_rows|entry|persistent
@EDG: E_def_75|MOD_src_memnet_housekeep_py|defines|SYM_src_memnet_housekeep_py_orphan_rows|entry|persistent
@EDG: E_def_76|MOD_src_memnet_housekeep_py|defines|SYM_src_memnet_housekeep_py_stale_rows|entry|persistent
@EDG: E_def_77|MOD_src_memnet_housekeep_py|defines|SYM_src_memnet_housekeep_py_stats|entry|persistent
@EDG: E_def_78|MOD_src_memnet_housekeep_py|defines|SYM_src_memnet_housekeep_py_prune_rows|entry|persistent
@EDG: E_def_79|MOD_src_memnet_housekeep_py|defines|SYM_src_memnet_housekeep_py_prune_stale|entry|persistent
@EDG: E_own_80|TSK_codebase_snap_memnet|owns|MOD_src_memnet_mem_store_py|scope|persistent
@EDG: E_def_81|MOD_src_memnet_mem_store_py|defines|SYM_src_memnet_mem_store_py_MemStore|entry|persistent
@EDG: E_own_82|TSK_codebase_snap_memnet|owns|MOD_src_memnet_models_py|scope|persistent
@EDG: E_def_83|MOD_src_memnet_models_py|defines|SYM_src_memnet_models_py_TagDef|entry|persistent
@EDG: E_def_84|MOD_src_memnet_models_py|defines|SYM_src_memnet_models_py_TagMap|entry|persistent
@EDG: E_def_85|MOD_src_memnet_models_py|defines|SYM_src_memnet_models_py_Record|entry|persistent
@EDG: E_def_86|MOD_src_memnet_models_py|defines|SYM_src_memnet_models_py_SessionMeta|entry|persistent
@EDG: E_own_87|TSK_codebase_snap_memnet|owns|MOD_src_memnet_output_py|scope|persistent
@EDG: E_def_88|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_reset_warn_budget|entry|persistent
@EDG: E_def_89|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_emit_stdout|entry|persistent
@EDG: E_def_90|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_emit_stderr|entry|persistent
@EDG: E_def_91|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_format_err|entry|persistent
@EDG: E_def_92|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_format_wrn|entry|persistent
@EDG: E_def_93|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_emit_err|entry|persistent
@EDG: E_def_94|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_emit_wrn|entry|persistent
@EDG: E_def_95|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_emit_session|entry|persistent
@EDG: E_def_96|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_emit_record_line|entry|persistent
@EDG: E_def_97|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_emit_record|entry|persistent
@EDG: E_def_98|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_parse_err_line|entry|persistent
@EDG: E_def_99|MOD_src_memnet_output_py|defines|SYM_src_memnet_output_py_values_from_record|entry|persistent
@EDG: E_own_100|TSK_codebase_snap_memnet|owns|MOD_src_memnet_registry_py|scope|persistent
@EDG: E_def_101|MOD_src_memnet_registry_py|defines|SYM_src_memnet_registry_py_SessionEntry|entry|persistent
@EDG: E_def_102|MOD_src_memnet_registry_py|defines|SYM_src_memnet_registry_py_register|entry|persistent
@EDG: E_def_103|MOD_src_memnet_registry_py|defines|SYM_src_memnet_registry_py_get|entry|persistent
@EDG: E_def_104|MOD_src_memnet_registry_py|defines|SYM_src_memnet_registry_py_remove|entry|persistent
@EDG: E_def_105|MOD_src_memnet_registry_py|defines|SYM_src_memnet_registry_py_contains|entry|persistent
@EDG: E_def_106|MOD_src_memnet_registry_py|defines|SYM_src_memnet_registry_py_count|entry|persistent
@EDG: E_def_107|MOD_src_memnet_registry_py|defines|SYM_src_memnet_registry_py_list_entries|entry|persistent
@EDG: E_def_108|MOD_src_memnet_registry_py|defines|SYM_src_memnet_registry_py_clear_all|entry|persistent
@EDG: E_def_109|MOD_src_memnet_registry_py|defines|SYM_src_memnet_registry_py_purge_before|entry|persistent
@EDG: E_own_110|TSK_codebase_snap_memnet|owns|MOD_src_memnet_sanitiser_py|scope|persistent
@EDG: E_def_111|MOD_src_memnet_sanitiser_py|defines|SYM_src_memnet_sanitiser_py_sanitise_line|entry|persistent
@EDG: E_def_112|MOD_src_memnet_sanitiser_py|defines|SYM_src_memnet_sanitiser_py_sanitise_batch|entry|persistent
@EDG: E_own_113|TSK_codebase_snap_memnet|owns|MOD_src_memnet_serve_py|scope|persistent
@EDG: E_def_114|MOD_src_memnet_serve_py|defines|SYM_src_memnet_serve_py_run_serve|entry|persistent
@EDG: E_def_115|MOD_src_memnet_serve_py|defines|SYM_src_memnet_serve_py_send_command|entry|persistent
@EDG: E_def_116|MOD_src_memnet_serve_py|defines|SYM_src_memnet_serve_py_probe|entry|persistent
@EDG: E_own_117|TSK_codebase_snap_memnet|owns|MOD_src_memnet_serve_client_py|scope|persistent
@EDG: E_def_118|MOD_src_memnet_serve_client_py|defines|SYM_src_memnet_serve_client_py_dispatch|entry|persistent
@EDG: E_own_119|TSK_codebase_snap_memnet|owns|MOD_src_memnet_session_py|scope|persistent
@EDG: E_def_120|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_set_now_override|entry|persistent
@EDG: E_def_121|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_utc_now|entry|persistent
@EDG: E_def_122|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_iso_timestamp|entry|persistent
@EDG: E_def_123|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_SessionStore|entry|persistent
@EDG: E_def_124|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_purge_expired|entry|persistent
@EDG: E_def_125|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_count_sessions|entry|persistent
@EDG: E_def_126|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_open_session|entry|persistent
@EDG: E_def_127|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_get_session|entry|persistent
@EDG: E_def_128|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_list_sessions|entry|persistent
@EDG: E_def_129|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_close_session|entry|persistent
@EDG: E_def_130|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_resolve_session_id|entry|persistent
@EDG: E_def_131|MOD_src_memnet_session_py|defines|SYM_src_memnet_session_py_reset_registry|entry|persistent
@EDG: E_own_132|TSK_codebase_snap_memnet|owns|MOD_src_memnet_snapshot_py|scope|persistent
@EDG: E_def_133|MOD_src_memnet_snapshot_py|defines|SYM_src_memnet_snapshot_py_snapshot_text|entry|persistent
@EDG: E_def_134|MOD_src_memnet_snapshot_py|defines|SYM_src_memnet_snapshot_py_write_snapshot|entry|persistent
@EDG: E_def_135|MOD_src_memnet_snapshot_py|defines|SYM_src_memnet_snapshot_py_load_snapshot|entry|persistent
@EDG: E_def_136|MOD_src_memnet_snapshot_py|defines|SYM_src_memnet_snapshot_py_load_snapshot_text|entry|persistent
@EDG: E_own_137|TSK_codebase_snap_memnet|owns|MOD_src_memnet_tag_map_py|scope|persistent
@EDG: E_def_138|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_parse_map_line|entry|persistent
@EDG: E_def_139|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_load_user_map|entry|persistent
@EDG: E_def_140|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_merge_fixed|entry|persistent
@EDG: E_def_141|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_load_persisted_map_from_lines|entry|persistent
@EDG: E_def_142|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_load_map_from_lines|entry|persistent
@EDG: E_def_143|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_load_map_from_file|entry|persistent
@EDG: E_def_144|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_tag_map_to_lines|entry|persistent
@EDG: E_def_145|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_validate_id|entry|persistent
@EDG: E_def_146|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_validate_values|entry|persistent
@EDG: E_def_147|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_parse_line|entry|persistent
@EDG: E_def_148|MOD_src_memnet_tag_map_py|defines|SYM_src_memnet_tag_map_py_example_ingest_line|entry|persistent
@EDG: E_own_149|TSK_codebase_snap_memnet|owns|MOD_src_memnet_warnings_py|scope|persistent
@EDG: E_def_150|MOD_src_memnet_warnings_py|defines|SYM_src_memnet_warnings_py_emit_cap_warnings|entry|persistent
@EDG: E_def_151|MOD_src_memnet_warnings_py|defines|SYM_src_memnet_warnings_py_emit_ttl_warning|entry|persistent
@EDG: E_def_152|MOD_src_memnet_warnings_py|defines|SYM_src_memnet_warnings_py_emit_stale_warnings|entry|persistent
@EDG: E_def_153|MOD_src_memnet_warnings_py|defines|SYM_src_memnet_warnings_py_emit_session_warnings|entry|persistent
@EDG: E_own_154|TSK_codebase_snap_memnet|owns|MOD_src_memnet_wire_py|scope|persistent
@EDG: E_def_155|MOD_src_memnet_wire_py|defines|SYM_src_memnet_wire_py_split_payload|entry|persistent
@EDG: E_def_156|MOD_src_memnet_wire_py|defines|SYM_src_memnet_wire_py_join_payload|entry|persistent
@EDG: E_def_157|MOD_src_memnet_wire_py|defines|SYM_src_memnet_wire_py_parse_tag_line|entry|persistent
@EDG: E_def_158|MOD_src_memnet_wire_py|defines|SYM_src_memnet_wire_py_emit_record_line|entry|persistent
@EDG: E_own_159|TSK_codebase_snap_memnet|owns|MOD_src_memnet_mcp___init___py|scope|persistent
@EDG: E_own_160|TSK_codebase_snap_memnet|owns|MOD_src_memnet_mcp___main___py|scope|persistent
@EDG: E_own_161|TSK_codebase_snap_memnet|owns|MOD_src_memnet_mcp_client_py|scope|persistent
@EDG: E_def_162|MOD_src_memnet_mcp_client_py|defines|SYM_src_memnet_mcp_client_py_MemNetResponse|entry|persistent
@EDG: E_def_163|MOD_src_memnet_mcp_client_py|defines|SYM_src_memnet_mcp_client_py_run_memnet|entry|persistent
@EDG: E_own_164|TSK_codebase_snap_memnet|owns|MOD_src_memnet_mcp_parse_py|scope|persistent
@EDG: E_def_165|MOD_src_memnet_mcp_parse_py|defines|SYM_src_memnet_mcp_parse_py_extract_session_id|entry|persistent
@EDG: E_def_166|MOD_src_memnet_mcp_parse_py|defines|SYM_src_memnet_mcp_parse_py_extract_errors|entry|persistent
@EDG: E_own_167|TSK_codebase_snap_memnet|owns|MOD_src_memnet_mcp_seed_py|scope|persistent
@EDG: E_def_168|MOD_src_memnet_mcp_seed_py|defines|SYM_src_memnet_mcp_seed_py_supplement_seed_lines|entry|persistent
@EDG: E_own_169|TSK_codebase_snap_memnet|owns|MOD_src_memnet_mcp_server_py|scope|persistent
@EDG: E_def_170|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_serve_status|entry|persistent
@EDG: E_def_171|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_session_open|entry|persistent
@EDG: E_def_172|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_session_current|entry|persistent
@EDG: E_def_173|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_session_load|entry|persistent
@EDG: E_def_174|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_session_save|entry|persistent
@EDG: E_def_175|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_query_warm|entry|persistent
@EDG: E_def_176|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_query_walk|entry|persistent
@EDG: E_def_177|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_add|entry|persistent
@EDG: E_def_178|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_update|entry|persistent
@EDG: E_def_179|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_read_get|entry|persistent
@EDG: E_def_180|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_housekeep_stats|entry|persistent
@EDG: E_def_181|MOD_src_memnet_mcp_server_py|defines|SYM_src_memnet_mcp_server_py_main|entry|persistent
@EDG: E_own_182|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp___init___py|scope|persistent
@EDG: E_own_183|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp___main___py|scope|persistent
@EDG: E_own_184|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_affinity_edges_py|scope|persistent
@EDG: E_def_185|MOD_src_novel_mcp_affinity_edges_py|defines|SYM_src_novel_mcp_affinity_edges_py_format_affinity_attrs|entry|persistent
@EDG: E_def_186|MOD_src_novel_mcp_affinity_edges_py|defines|SYM_src_novel_mcp_affinity_edges_py_parse_affinity_attrs|entry|persistent
@EDG: E_def_187|MOD_src_novel_mcp_affinity_edges_py|defines|SYM_src_novel_mcp_affinity_edges_py_read_directed_affinity|entry|persistent
@EDG: E_own_188|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_beat_pipeline_py|scope|persistent
@EDG: E_def_189|MOD_src_novel_mcp_beat_pipeline_py|defines|SYM_src_novel_mcp_beat_pipeline_py_parse_warm_stdout|entry|persistent
@EDG: E_def_190|MOD_src_novel_mcp_beat_pipeline_py|defines|SYM_src_novel_mcp_beat_pipeline_py_pipeline_next_action|entry|persistent
@EDG: E_def_191|MOD_src_novel_mcp_beat_pipeline_py|defines|SYM_src_novel_mcp_beat_pipeline_py_beat_turn_begin|entry|persistent
@EDG: E_def_192|MOD_src_novel_mcp_beat_pipeline_py|defines|SYM_src_novel_mcp_beat_pipeline_py_beat_turn_finish|entry|persistent
@EDG: E_own_193|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_beat_stage_py|scope|persistent
@EDG: E_def_194|MOD_src_novel_mcp_beat_stage_py|defines|SYM_src_novel_mcp_beat_stage_py_normalize_beat_stage|entry|persistent
@EDG: E_def_195|MOD_src_novel_mcp_beat_stage_py|defines|SYM_src_novel_mcp_beat_stage_py_is_script_law_stage|entry|persistent
@EDG: E_own_196|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_body_state_py|scope|persistent
@EDG: E_def_197|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_hud_keys_from_body_plot|entry|persistent
@EDG: E_def_198|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_parse_body_fields|entry|persistent
@EDG: E_def_199|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_satiety_guidance|entry|persistent
@EDG: E_def_200|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_plr_body_from_update_lines|entry|persistent
@EDG: E_def_201|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_format_beat_hud|entry|persistent
@EDG: E_def_202|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_resolve_beat_hud|entry|persistent
@EDG: E_def_203|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_effective_plr_body|entry|persistent
@EDG: E_def_204|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_satiety_downgrade_body|entry|persistent
@EDG: E_def_205|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_plr_update_downgrade_satiety|entry|persistent
@EDG: E_def_206|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_vitality_satiety_conflict|entry|persistent
@EDG: E_def_207|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_vitality_block|entry|persistent
@EDG: E_def_208|MOD_src_novel_mcp_body_state_py|defines|SYM_src_novel_mcp_body_state_py_hud_config_from_presentation|entry|persistent
@EDG: E_own_209|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_bootstrap_py|scope|persistent
@EDG: E_def_210|MOD_src_novel_mcp_bootstrap_py|defines|SYM_src_novel_mcp_bootstrap_py_fence_lines|entry|persistent
@EDG: E_def_211|MOD_src_novel_mcp_bootstrap_py|defines|SYM_src_novel_mcp_bootstrap_py_seed_lines_from_md|entry|persistent
@EDG: E_def_212|MOD_src_novel_mcp_bootstrap_py|defines|SYM_src_novel_mcp_bootstrap_py_catalog_lines_from_md|entry|persistent
@EDG: E_def_213|MOD_src_novel_mcp_bootstrap_py|defines|SYM_src_novel_mcp_bootstrap_py_ingest_lines|entry|persistent
@EDG: E_def_214|MOD_src_novel_mcp_bootstrap_py|defines|SYM_src_novel_mcp_bootstrap_py_catalog_path_from_seed_md|entry|persistent
@EDG: E_def_215|MOD_src_novel_mcp_bootstrap_py|defines|SYM_src_novel_mcp_bootstrap_py_bootstrap_from_md|entry|persistent
@EDG: E_own_216|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_calendars___init___py|scope|persistent
@EDG: E_own_217|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_calendars_chongzhen_shichen_py|scope|persistent
@EDG: E_def_218|MOD_src_novel_mcp_calendars_chongzhen_shichen_py|defines|SYM_src_novel_mcp_calendars_chongzhen_shichen_py_format_chon|entry|persistent
@EDG: E_own_219|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_catalog_schema_py|scope|persistent
@EDG: E_def_220|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_ActionTemplate|entry|persistent
@EDG: E_def_221|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_ItemActionsConfig|entry|persistent
@EDG: E_def_222|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_MartialActionsConfig|entry|persistent
@EDG: E_def_223|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_ProductionConfig|entry|persistent
@EDG: E_def_224|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_BusinessConfig|entry|persistent
@EDG: E_def_225|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_UiConfig|entry|persistent
@EDG: E_def_226|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_LoadoutConfig|entry|persistent
@EDG: E_def_227|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_CatalogSchema|entry|persistent
@EDG: E_def_228|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_read_catalog_schema|entry|persistent
@EDG: E_def_229|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_art_from_parts|entry|persistent
@EDG: E_def_230|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_art_to_wire|entry|persistent
@EDG: E_def_231|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_slot_for_kind|entry|persistent
@EDG: E_def_232|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_art_display_name|entry|persistent
@EDG: E_def_233|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_default_burn_for_art|entry|persistent
@EDG: E_def_234|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_slot_order|entry|persistent
@EDG: E_def_235|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_setup_scene_usr_key|entry|persistent
@EDG: E_def_236|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_opening_offer_usr_key|entry|persistent
@EDG: E_def_237|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_opening_offer_roll_usr_k|entry|persistent
@EDG: E_def_238|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_slot_label|entry|persistent
@EDG: E_def_239|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_opening_rank|entry|persistent
@EDG: E_def_240|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_resolve_item_actions|entry|persistent
@EDG: E_def_241|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_resolve_martial_actions|entry|persistent
@EDG: E_def_242|MOD_src_novel_mcp_catalog_schema_py|defines|SYM_src_novel_mcp_catalog_schema_py_resolve_item_kind|entry|persistent
@EDG: E_own_243|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_catalog_session_py|scope|persistent
@EDG: E_def_244|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_catalog_schema_key|entry|persistent
@EDG: E_def_245|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_catalog_store_dir|entry|persistent
@EDG: E_def_246|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_catalog_session_id_file|entry|persistent
@EDG: E_def_247|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_catalog_snapshot_file|entry|persistent
@EDG: E_def_248|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_catalog_tag_map_lines|entry|persistent
@EDG: E_def_249|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_session_is_live|entry|persistent
@EDG: E_def_250|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_read_catalog_session_id|entry|persistent
@EDG: E_def_251|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_resolve_catalog_session|entry|persistent
@EDG: E_def_252|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_link_skill_catalog_sess|entry|persistent
@EDG: E_def_253|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_link_martial_catalog_se|entry|persistent
@EDG: E_def_254|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_bootstrap_catalog_sessi|entry|persistent
@EDG: E_def_255|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_ensure_catalog_session|entry|persistent
@EDG: E_def_256|MOD_src_novel_mcp_catalog_session_py|defines|SYM_src_novel_mcp_catalog_session_py_resolve_catalog_md_for_|entry|persistent
@EDG: E_own_257|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_chapter_io_py|scope|persistent
@EDG: E_def_258|MOD_src_novel_mcp_chapter_io_py|defines|SYM_src_novel_mcp_chapter_io_py_zh_chapter_label|entry|persistent
@EDG: E_def_259|MOD_src_novel_mcp_chapter_io_py|defines|SYM_src_novel_mcp_chapter_io_py_chapter_heading|entry|persistent
@EDG: E_def_260|MOD_src_novel_mcp_chapter_io_py|defines|SYM_src_novel_mcp_chapter_io_py_chapter_file_path|entry|persistent
@EDG: E_def_261|MOD_src_novel_mcp_chapter_io_py|defines|SYM_src_novel_mcp_chapter_io_py_last_committed_paragraph|entry|persistent
@EDG: E_def_262|MOD_src_novel_mcp_chapter_io_py|defines|SYM_src_novel_mcp_chapter_io_py_file_char_total|entry|persistent
@EDG: E_def_263|MOD_src_novel_mcp_chapter_io_py|defines|SYM_src_novel_mcp_chapter_io_py_chapter_prose_gate|entry|persistent
@EDG: E_def_264|MOD_src_novel_mcp_chapter_io_py|defines|SYM_src_novel_mcp_chapter_io_py_chapter_prose_append|entry|persistent
@EDG: E_def_265|MOD_src_novel_mcp_chapter_io_py|defines|SYM_src_novel_mcp_chapter_io_py_beat_prose_finalize|entry|persistent
@EDG: E_own_266|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_character_gender_py|scope|persistent
@EDG: E_def_267|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_strip_gender_from_body|entry|persistent
@EDG: E_def_268|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_gender_from_body|entry|persistent
@EDG: E_def_269|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_split_traits_gender|entry|persistent
@EDG: E_def_270|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_split_npc_trait_blob|entry|persistent
@EDG: E_def_271|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_normalise_plr_parts|entry|persistent
@EDG: E_def_272|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_normalise_npc_parts|entry|persistent
@EDG: E_def_273|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_plr_body_index|entry|persistent
@EDG: E_def_274|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_plr_gender|entry|persistent
@EDG: E_def_275|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_npc_gender|entry|persistent
@EDG: E_def_276|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_npc_appearance|entry|persistent
@EDG: E_def_277|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_npc_personality|entry|persistent
@EDG: E_def_278|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_npc_voice|entry|persistent
@EDG: E_def_279|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_npc_traits|entry|persistent
@EDG: E_def_280|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_npc_profile|entry|persistent
@EDG: E_def_281|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_npc_presentation_entry|entry|persistent
@EDG: E_def_282|MOD_src_novel_mcp_character_gender_py|defines|SYM_src_novel_mcp_character_gender_py_format_plr_wire|entry|persistent
@EDG: E_own_283|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_character_knowledge_py|scope|persistent
@EDG: E_own_284|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_constants_py|scope|persistent
@EDG: E_own_285|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_edg_time_py|scope|persistent
@EDG: E_def_286|MOD_src_novel_mcp_edg_time_py|defines|SYM_src_novel_mcp_edg_time_py_edg_requires_at|entry|persistent
@EDG: E_def_287|MOD_src_novel_mcp_edg_time_py|defines|SYM_src_novel_mcp_edg_time_py_normalize_edg_parts|entry|persistent
@EDG: E_def_288|MOD_src_novel_mcp_edg_time_py|defines|SYM_src_novel_mcp_edg_time_py_parse_edg_parts|entry|persistent
@EDG: E_def_289|MOD_src_novel_mcp_edg_time_py|defines|SYM_src_novel_mcp_edg_time_py_format_edg_line|entry|persistent
@EDG: E_def_290|MOD_src_novel_mcp_edg_time_py|defines|SYM_src_novel_mcp_edg_time_py_law_requires_edg_at|entry|persistent
@EDG: E_def_291|MOD_src_novel_mcp_edg_time_py|defines|SYM_src_novel_mcp_edg_time_py_stamp_edg_parts|entry|persistent
@EDG: E_def_292|MOD_src_novel_mcp_edg_time_py|defines|SYM_src_novel_mcp_edg_time_py_prepare_edg_add_lines|entry|persistent
@EDG: E_def_293|MOD_src_novel_mcp_edg_time_py|defines|SYM_src_novel_mcp_edg_time_py_validate_edg_at_add_lines|entry|persistent
@EDG: E_own_294|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_entity_knowledge_py|scope|persistent
@EDG: E_def_295|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_depth_rank|entry|persistent
@EDG: E_def_296|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_can_speak_about|entry|persistent
@EDG: E_def_297|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_load_holder_knowledge|entry|persistent
@EDG: E_def_298|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_load_holder_knowledge_|entry|persistent
@EDG: E_def_299|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_merge_knowledge_index|entry|persistent
@EDG: E_def_300|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_holder_knows_entity|entry|persistent
@EDG: E_def_301|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_knowledge_record|entry|persistent
@EDG: E_def_302|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_depth_from_attrs|entry|persistent
@EDG: E_def_303|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_entity_kind|entry|persistent
@EDG: E_def_304|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_can_show_canonical_nam|entry|persistent
@EDG: E_def_305|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_can_show_precise_locat|entry|persistent
@EDG: E_def_306|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_entity_labels_from_war|entry|persistent
@EDG: E_def_307|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_holder_labels_from_war|entry|persistent
@EDG: E_def_308|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_knowledge_meta|entry|persistent
@EDG: E_def_309|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_npc_anonymous_label|entry|persistent
@EDG: E_def_310|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_resolve_npc_display_na|entry|persistent
@EDG: E_def_311|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_resolve_biz_display|entry|persistent
@EDG: E_def_312|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_resolve_place_display_|entry|persistent
@EDG: E_def_313|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_can_speak_entity_name|entry|persistent
@EDG: E_def_314|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_build_knowledge_view|entry|persistent
@EDG: E_def_315|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_format_knowledge_hud|entry|persistent
@EDG: E_def_316|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_knowledge_gate_hint|entry|persistent
@EDG: E_def_317|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_entity_refs_missing_fr|entry|persistent
@EDG: E_def_318|MOD_src_novel_mcp_entity_knowledge_py|defines|SYM_src_novel_mcp_entity_knowledge_py_merge_warm_catalog_lin|entry|persistent
@EDG: E_own_319|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_game_time_py|scope|persistent
@EDG: E_def_320|MOD_src_novel_mcp_game_time_py|defines|SYM_src_novel_mcp_game_time_py_GameTime|entry|persistent
@EDG: E_def_321|MOD_src_novel_mcp_game_time_py|defines|SYM_src_novel_mcp_game_time_py_parse_game_time|entry|persistent
@EDG: E_def_322|MOD_src_novel_mcp_game_time_py|defines|SYM_src_novel_mcp_game_time_py_year_from_sys_time|entry|persistent
@EDG: E_def_323|MOD_src_novel_mcp_game_time_py|defines|SYM_src_novel_mcp_game_time_py_advance_sys_time|entry|persistent
@EDG: E_def_324|MOD_src_novel_mcp_game_time_py|defines|SYM_src_novel_mcp_game_time_py_is_canonical_time|entry|persistent
@EDG: E_def_325|MOD_src_novel_mcp_game_time_py|defines|SYM_src_novel_mcp_game_time_py_sys_time_field_from_wire|entry|persistent
@EDG: E_def_326|MOD_src_novel_mcp_game_time_py|defines|SYM_src_novel_mcp_game_time_py_check_sys_time_update|entry|persistent
@EDG: E_own_327|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_knowledge_graph_py|scope|persistent
@EDG: E_own_328|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_library_contracts_py|scope|persistent
@EDG: E_def_329|MOD_src_novel_mcp_library_contracts_py|defines|SYM_src_novel_mcp_library_contracts_py_latest_oln_body|entry|persistent
@EDG: E_def_330|MOD_src_novel_mcp_library_contracts_py|defines|SYM_src_novel_mcp_library_contracts_py_oln_context_text|entry|persistent
@EDG: E_def_331|MOD_src_novel_mcp_library_contracts_py|defines|SYM_src_novel_mcp_library_contracts_py_lib_match_keys|entry|persistent
@EDG: E_def_332|MOD_src_novel_mcp_library_contracts_py|defines|SYM_src_novel_mcp_library_contracts_py_parse_lib_rows|entry|persistent
@EDG: E_def_333|MOD_src_novel_mcp_library_contracts_py|defines|SYM_src_novel_mcp_library_contracts_py_match_lib_rows|entry|persistent
@EDG: E_def_334|MOD_src_novel_mcp_library_contracts_py|defines|SYM_src_novel_mcp_library_contracts_py_compile_library_contr|entry|persistent
@EDG: E_own_335|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_martial_catalog_expand_py|scope|persistent
@EDG: E_def_336|MOD_src_novel_mcp_martial_catalog_expand_py|defines|SYM_src_novel_mcp_martial_catalog_expand_py_validate_art_nam|entry|persistent
@EDG: E_def_337|MOD_src_novel_mcp_martial_catalog_expand_py|defines|SYM_src_novel_mcp_martial_catalog_expand_py_validate_art_dic|entry|persistent
@EDG: E_def_338|MOD_src_novel_mcp_martial_catalog_expand_py|defines|SYM_src_novel_mcp_martial_catalog_expand_py_merge_arts|entry|persistent
@EDG: E_def_339|MOD_src_novel_mcp_martial_catalog_expand_py|defines|SYM_src_novel_mcp_martial_catalog_expand_py_slot_counts|entry|persistent
@EDG: E_def_340|MOD_src_novel_mcp_martial_catalog_expand_py|defines|SYM_src_novel_mcp_martial_catalog_expand_py_build_usr_burn_u|entry|persistent
@EDG: E_def_341|MOD_src_novel_mcp_martial_catalog_expand_py|defines|SYM_src_novel_mcp_martial_catalog_expand_py_sync_art_neili_b|entry|persistent
@EDG: E_def_342|MOD_src_novel_mcp_martial_catalog_expand_py|defines|SYM_src_novel_mcp_martial_catalog_expand_py_build_expand_pro|entry|persistent
@EDG: E_def_343|MOD_src_novel_mcp_martial_catalog_expand_py|defines|SYM_src_novel_mcp_martial_catalog_expand_py_expand_martial_c|entry|persistent
@EDG: E_def_344|MOD_src_novel_mcp_martial_catalog_expand_py|defines|SYM_src_novel_mcp_martial_catalog_expand_py_parse_llm_catalo|entry|persistent
@EDG: E_own_345|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_opening_loadout_py|scope|persistent
@EDG: E_def_346|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_parse_catalog_md|entry|persistent
@EDG: E_def_347|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_load_catalog_from_path|entry|persistent
@EDG: E_def_348|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_arts_from_session|entry|persistent
@EDG: E_def_349|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_slot_for_art|entry|persistent
@EDG: E_def_350|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_catalog_slots|entry|persistent
@EDG: E_def_351|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_parse_pick_offer_count|entry|persistent
@EDG: E_def_352|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_reroll_opening_offers|entry|persistent
@EDG: E_def_353|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_roll_slot_offers|entry|persistent
@EDG: E_def_354|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_ensure_slot_offers|entry|persistent
@EDG: E_def_355|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_read_opening_catalog|entry|persistent
@EDG: E_def_356|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_validate_slot_pick|entry|persistent
@EDG: E_def_357|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_validate_opening_picks|entry|persistent
@EDG: E_def_358|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_read_opening_loadout|entry|persistent
@EDG: E_def_359|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_commit_opening_pick|entry|persistent
@EDG: E_def_360|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_commit_opening_loadout|entry|persistent
@EDG: E_def_361|MOD_src_novel_mcp_opening_loadout_py|defines|SYM_src_novel_mcp_opening_loadout_py_has_proficiency_edges|entry|persistent
@EDG: E_own_362|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_party_sheet_py|scope|persistent
@EDG: E_def_363|MOD_src_novel_mcp_party_sheet_py|defines|SYM_src_novel_mcp_party_sheet_py_read_party_panel|entry|persistent
@EDG: E_own_364|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_paths_py|scope|persistent
@EDG: E_def_365|MOD_src_novel_mcp_paths_py|defines|SYM_src_novel_mcp_paths_py_workspace_root|entry|persistent
@EDG: E_own_366|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_play_context_py|scope|persistent
@EDG: E_def_367|MOD_src_novel_mcp_play_context_py|defines|SYM_src_novel_mcp_play_context_py_read_beat_stage|entry|persistent
@EDG: E_def_368|MOD_src_novel_mcp_play_context_py|defines|SYM_src_novel_mcp_play_context_py_best_continuation_anchor|entry|persistent
@EDG: E_def_369|MOD_src_novel_mcp_play_context_py|defines|SYM_src_novel_mcp_play_context_py_script_beat_prepare|entry|persistent
@EDG: E_def_370|MOD_src_novel_mcp_play_context_py|defines|SYM_src_novel_mcp_play_context_py_prose_beat_prepare|entry|persistent
@EDG: E_def_371|MOD_src_novel_mcp_play_context_py|defines|SYM_src_novel_mcp_play_context_py_player_beat_prepare|entry|persistent
@EDG: E_own_372|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_player_profile_py|scope|persistent
@EDG: E_def_373|MOD_src_novel_mcp_player_profile_py|defines|SYM_src_novel_mcp_player_profile_py_read_pc_display_name|entry|persistent
@EDG: E_def_374|MOD_src_novel_mcp_player_profile_py|defines|SYM_src_novel_mcp_player_profile_py_validate_profile|entry|persistent
@EDG: E_def_375|MOD_src_novel_mcp_player_profile_py|defines|SYM_src_novel_mcp_player_profile_py_read_profile|entry|persistent
@EDG: E_def_376|MOD_src_novel_mcp_player_profile_py|defines|SYM_src_novel_mcp_player_profile_py_commit_profile|entry|persistent
@EDG: E_own_377|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_player_setup_py|scope|persistent
@EDG: E_def_378|MOD_src_novel_mcp_player_setup_py|defines|SYM_src_novel_mcp_player_setup_py_read_player_setup|entry|persistent
@EDG: E_def_379|MOD_src_novel_mcp_player_setup_py|defines|SYM_src_novel_mcp_player_setup_py_player_setup_gate_payload|entry|persistent
@EDG: E_own_380|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_player_sheet_py|scope|persistent
@EDG: E_def_381|MOD_src_novel_mcp_player_sheet_py|defines|SYM_src_novel_mcp_player_sheet_py_read_production_nodes|entry|persistent
@EDG: E_def_382|MOD_src_novel_mcp_player_sheet_py|defines|SYM_src_novel_mcp_player_sheet_py_read_business_industries|entry|persistent
@EDG: E_def_383|MOD_src_novel_mcp_player_sheet_py|defines|SYM_src_novel_mcp_player_sheet_py_read_items_for_owner|entry|persistent
@EDG: E_def_384|MOD_src_novel_mcp_player_sheet_py|defines|SYM_src_novel_mcp_player_sheet_py_read_skills_for_owner|entry|persistent
@EDG: E_def_385|MOD_src_novel_mcp_player_sheet_py|defines|SYM_src_novel_mcp_player_sheet_py_read_player_sheet|entry|persistent
@EDG: E_own_386|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_presentation_py|scope|persistent
@EDG: E_def_387|MOD_src_novel_mcp_presentation_py|defines|SYM_src_novel_mcp_presentation_py_compile_presentation|entry|persistent
@EDG: E_def_388|MOD_src_novel_mcp_presentation_py|defines|SYM_src_novel_mcp_presentation_py_compile_writing_contract|entry|persistent
@EDG: E_own_389|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_server_py|scope|persistent
@EDG: E_def_390|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_beat_turn_begin|entry|persistent
@EDG: E_def_391|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_beat_turn_finish|entry|persistent
@EDG: E_def_392|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_player_beat_prepare|entry|persistent
@EDG: E_def_393|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_script_beat_prepare|entry|persistent
@EDG: E_def_394|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_prose_beat_prepare|entry|persistent
@EDG: E_def_395|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_read_player_profile|entry|persistent
@EDG: E_def_396|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_commit_player_profile|entry|persistent
@EDG: E_def_397|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_read_martial_catalog|entry|persistent
@EDG: E_def_398|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_read_opening_catalog|entry|persistent
@EDG: E_def_399|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_read_opening_loadout|entry|persistent
@EDG: E_def_400|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_commit_opening_pick|entry|persistent
@EDG: E_def_401|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_reroll_opening_offers|entry|persistent
@EDG: E_def_402|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_commit_opening_loadout|entry|persistent
@EDG: E_def_403|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_read_player_setup|entry|persistent
@EDG: E_def_404|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_bootstrap_from_seed|entry|persistent
@EDG: E_def_405|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_prose_metrics|entry|persistent
@EDG: E_def_406|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_beat_prose_finalize|entry|persistent
@EDG: E_def_407|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_chapter_prose_gate|entry|persistent
@EDG: E_def_408|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_chapter_prose_append|entry|persistent
@EDG: E_def_409|MOD_src_novel_mcp_server_py|defines|SYM_src_novel_mcp_server_py_main|entry|persistent
@EDG: E_own_410|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_session_contract_py|scope|persistent
@EDG: E_def_411|MOD_src_novel_mcp_session_contract_py|defines|SYM_src_novel_mcp_session_contract_py_session_contract_block|entry|persistent
@EDG: E_own_412|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_session_meta_py|scope|persistent
@EDG: E_def_413|MOD_src_novel_mcp_session_meta_py|defines|SYM_src_novel_mcp_session_meta_py_fetch_session_modified|entry|persistent
@EDG: E_own_414|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_setup_ack_py|scope|persistent
@EDG: E_def_415|MOD_src_novel_mcp_setup_ack_py|defines|SYM_src_novel_mcp_setup_ack_py_is_setup_acked|entry|persistent
@EDG: E_def_416|MOD_src_novel_mcp_setup_ack_py|defines|SYM_src_novel_mcp_setup_ack_py_commit_setup_ack|entry|persistent
@EDG: E_def_417|MOD_src_novel_mcp_setup_ack_py|defines|SYM_src_novel_mcp_setup_ack_py_seed_cli_setup_acks|entry|persistent
@EDG: E_own_418|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_setup_constants_py|scope|persistent
@EDG: E_own_419|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_setup_graph_py|scope|persistent
@EDG: E_def_420|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_read_get_body|entry|persistent
@EDG: E_def_421|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_read_usr_by_key|entry|persistent
@EDG: E_def_422|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_usr_id_for_key|entry|persistent
@EDG: E_def_423|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_read_usr_record|entry|persistent
@EDG: E_def_424|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_list_tag_data_rows|entry|persistent
@EDG: E_def_425|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_first_plr_id|entry|persistent
@EDG: E_def_426|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_ensure_usr_row|entry|persistent
@EDG: E_def_427|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_graph_sync_output_paths|entry|persistent
@EDG: E_def_428|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_graph_update|entry|persistent
@EDG: E_def_429|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_graph_apply_setup_lines|entry|persistent
@EDG: E_def_430|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_is_setup_locked|entry|persistent
@EDG: E_def_431|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_setup_commit_errors|entry|persistent
@EDG: E_def_432|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_resolve_catalog_path|entry|persistent
@EDG: E_def_433|MOD_src_novel_mcp_setup_graph_py|defines|SYM_src_novel_mcp_setup_graph_py_merge_plr_gender|entry|persistent
@EDG: E_own_434|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_setup_profile_rules_py|scope|persistent
@EDG: E_def_435|MOD_src_novel_mcp_setup_profile_rules_py|defines|SYM_src_novel_mcp_setup_profile_rules_py_read_profile_rules|entry|persistent
@EDG: E_def_436|MOD_src_novel_mcp_setup_profile_rules_py|defines|SYM_src_novel_mcp_setup_profile_rules_py_validate_profile_fi|entry|persistent
@EDG: E_own_437|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_skill_catalog_keys_py|scope|persistent
@EDG: E_def_438|MOD_src_novel_mcp_skill_catalog_keys_py|defines|SYM_src_novel_mcp_skill_catalog_keys_py_read_skill_catalog_m|entry|persistent
@EDG: E_def_439|MOD_src_novel_mcp_skill_catalog_keys_py|defines|SYM_src_novel_mcp_skill_catalog_keys_py_read_skill_catalog_s|entry|persistent
@EDG: E_own_440|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_stage_wire_validate_py|scope|persistent
@EDG: E_def_441|MOD_src_novel_mcp_stage_wire_validate_py|defines|SYM_src_novel_mcp_stage_wire_validate_py_validate_stage_wire|entry|persistent
@EDG: E_def_442|MOD_src_novel_mcp_stage_wire_validate_py|defines|SYM_src_novel_mcp_stage_wire_validate_py_validate_script_dra|entry|persistent
@EDG: E_def_443|MOD_src_novel_mcp_stage_wire_validate_py|defines|SYM_src_novel_mcp_stage_wire_validate_py_collect_audit_findi|entry|persistent
@EDG: E_own_444|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_time_display_py|scope|persistent
@EDG: E_def_445|MOD_src_novel_mcp_time_display_py|defines|SYM_src_novel_mcp_time_display_py_register_formatter|entry|persistent
@EDG: E_def_446|MOD_src_novel_mcp_time_display_py|defines|SYM_src_novel_mcp_time_display_py_parse_time_spec|entry|persistent
@EDG: E_def_447|MOD_src_novel_mcp_time_display_py|defines|SYM_src_novel_mcp_time_display_py_format_time_display|entry|persistent
@EDG: E_own_448|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_validators_py|scope|persistent
@EDG: E_def_449|MOD_src_novel_mcp_validators_py|defines|SYM_src_novel_mcp_validators_py_validate_option_lines|entry|persistent
@EDG: E_own_450|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_warm_index_py|scope|persistent
@EDG: E_def_451|MOD_src_novel_mcp_warm_index_py|defines|SYM_src_novel_mcp_warm_index_py_LawRow|entry|persistent
@EDG: E_def_452|MOD_src_novel_mcp_warm_index_py|defines|SYM_src_novel_mcp_warm_index_py_WarmIndex|entry|persistent
@EDG: E_def_453|MOD_src_novel_mcp_warm_index_py|defines|SYM_src_novel_mcp_warm_index_py_index_warm|entry|persistent
@EDG: E_def_454|MOD_src_novel_mcp_warm_index_py|defines|SYM_src_novel_mcp_warm_index_py_usr_value|entry|persistent
@EDG: E_def_455|MOD_src_novel_mcp_warm_index_py|defines|SYM_src_novel_mcp_warm_index_py_law_constraint_tokens|entry|persistent
@EDG: E_def_456|MOD_src_novel_mcp_warm_index_py|defines|SYM_src_novel_mcp_warm_index_py_pipeline_no_bundle|entry|persistent
@EDG: E_def_457|MOD_src_novel_mcp_warm_index_py|defines|SYM_src_novel_mcp_warm_index_py_laws_for_stage|entry|persistent
@EDG: E_own_458|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_warm_supplement_py|scope|persistent
@EDG: E_def_459|MOD_src_novel_mcp_warm_supplement_py|defines|SYM_src_novel_mcp_warm_supplement_py_enrich_warm_stdout|entry|persistent
@EDG: E_own_460|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_warm_walk_py|scope|persistent
@EDG: E_def_461|MOD_src_novel_mcp_warm_walk_py|defines|SYM_src_novel_mcp_warm_walk_py_hops_from_wire|entry|persistent
@EDG: E_def_462|MOD_src_novel_mcp_warm_walk_py|defines|SYM_src_novel_mcp_warm_walk_py_walk_stdout_from_wire|entry|persistent
@EDG: E_def_463|MOD_src_novel_mcp_warm_walk_py|defines|SYM_src_novel_mcp_warm_walk_py_fetch_warm_walk|entry|persistent
@EDG: E_def_464|MOD_src_novel_mcp_warm_walk_py|defines|SYM_src_novel_mcp_warm_walk_py_hops_from_walk_stdout|entry|persistent
@EDG: E_def_465|MOD_src_novel_mcp_warm_walk_py|defines|SYM_src_novel_mcp_warm_walk_py_curated_walk_lines|entry|persistent
@EDG: E_own_466|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_writing_contract_py|scope|persistent
@EDG: E_def_467|MOD_src_novel_mcp_writing_contract_py|defines|SYM_src_novel_mcp_writing_contract_py_compile_writing_contra|entry|persistent
@EDG: E_own_468|TSK_codebase_snap_memnet|owns|MOD_src_novel_mcp_zh_text_py|scope|persistent
@EDG: E_def_469|MOD_src_novel_mcp_zh_text_py|defines|SYM_src_novel_mcp_zh_text_py_count_zh_chars|entry|persistent
@EDG: E_def_470|MOD_src_novel_mcp_zh_text_py|defines|SYM_src_novel_mcp_zh_text_py_parse_scene_band|entry|persistent
@EDG: E_def_471|MOD_src_novel_mcp_zh_text_py|defines|SYM_src_novel_mcp_zh_text_py_prose_status|entry|persistent
@EDG: E_own_472|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_app_config_py|scope|persistent
@EDG: E_def_473|MOD_applications_novel_cursor_app_config_py|defines|SYM_applications_novel_cursor_app_config_py_repo_root|entry|persistent
@EDG: E_def_474|MOD_applications_novel_cursor_app_config_py|defines|SYM_applications_novel_cursor_app_config_py_NovelAppConfig|entry|persistent
@EDG: E_def_475|MOD_applications_novel_cursor_app_config_py|defines|SYM_applications_novel_cursor_app_config_py_list_story_insta|entry|persistent
@EDG: E_def_476|MOD_applications_novel_cursor_app_config_py|defines|SYM_applications_novel_cursor_app_config_py_load_config|entry|persistent
@EDG: E_own_477|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_beat_orchestrator_py|scope|persistent
@EDG: E_def_478|MOD_applications_novel_cursor_beat_orchestrator_py|defines|SYM_applications_novel_cursor_beat_orchestrator_py_run_scrip|entry|persistent
@EDG: E_def_479|MOD_applications_novel_cursor_beat_orchestrator_py|defines|SYM_applications_novel_cursor_beat_orchestrator_py_r_479|entry|persistent
@EDG: E_def_480|MOD_applications_novel_cursor_beat_orchestrator_py|defines|SYM_applications_novel_cursor_beat_orchestrator_py_run_prose|entry|persistent
@EDG: E_own_481|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_beat_prompt_py|scope|persistent
@EDG: E_def_482|MOD_applications_novel_cursor_beat_prompt_py|defines|SYM_applications_novel_cursor_beat_prompt_py_build_script_pr|entry|persistent
@EDG: E_def_483|MOD_applications_novel_cursor_beat_prompt_py|defines|SYM_applications_novel_cursor_beat_prompt_py_build_script_tu|entry|persistent
@EDG: E_def_484|MOD_applications_novel_cursor_beat_prompt_py|defines|SYM_applications_novel_cursor_beat_prompt_py_build_prose_pri|entry|persistent
@EDG: E_def_485|MOD_applications_novel_cursor_beat_prompt_py|defines|SYM_applications_novel_cursor_beat_prompt_py_build_prose_tur|entry|persistent
@EDG: E_def_486|MOD_applications_novel_cursor_beat_prompt_py|defines|SYM_applications_novel_cursor_beat_prompt_py_build_script_st|entry|persistent
@EDG: E_def_487|MOD_applications_novel_cursor_beat_prompt_py|defines|SYM_applications_novel_cursor_beat_prompt_py_build_s_487|entry|persistent
@EDG: E_def_488|MOD_applications_novel_cursor_beat_prompt_py|defines|SYM_applications_novel_cursor_beat_prompt_py_build_prose_sys|entry|persistent
@EDG: E_def_489|MOD_applications_novel_cursor_beat_prompt_py|defines|SYM_applications_novel_cursor_beat_prompt_py_build_prose_use|entry|persistent
@EDG: E_own_490|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_catalog_expand_py|scope|persistent
@EDG: E_def_491|MOD_applications_novel_cursor_catalog_expand_py|defines|SYM_applications_novel_cursor_catalog_expand_py_llm_complete|entry|persistent
@EDG: E_def_492|MOD_applications_novel_cursor_catalog_expand_py|defines|SYM_applications_novel_cursor_catalog_expand_py_load_schema|entry|persistent
@EDG: E_def_493|MOD_applications_novel_cursor_catalog_expand_py|defines|SYM_applications_novel_cursor_catalog_expand_py_run_catalog_|entry|persistent
@EDG: E_own_494|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_chat_thread_py|scope|persistent
@EDG: E_def_495|MOD_applications_novel_cursor_chat_thread_py|defines|SYM_applications_novel_cursor_chat_thread_py_thread_path|entry|persistent
@EDG: E_def_496|MOD_applications_novel_cursor_chat_thread_py|defines|SYM_applications_novel_cursor_chat_thread_py_reset_threads|entry|persistent
@EDG: E_def_497|MOD_applications_novel_cursor_chat_thread_py|defines|SYM_applications_novel_cursor_chat_thread_py_reset_role_thre|entry|persistent
@EDG: E_def_498|MOD_applications_novel_cursor_chat_thread_py|defines|SYM_applications_novel_cursor_chat_thread_py_ChatThread|entry|persistent
@EDG: E_own_499|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_cursor_beat_py|scope|persistent
@EDG: E_def_500|MOD_applications_novel_cursor_cursor_beat_py|defines|SYM_applications_novel_cursor_cursor_beat_py_main|entry|persistent
@EDG: E_own_501|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_env_load_py|scope|persistent
@EDG: E_def_502|MOD_applications_novel_cursor_env_load_py|defines|SYM_applications_novel_cursor_env_load_py_repo_root|entry|persistent
@EDG: E_def_503|MOD_applications_novel_cursor_env_load_py|defines|SYM_applications_novel_cursor_env_load_py_load_dotenv|entry|persistent
@EDG: E_own_504|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_llm_client_py|scope|persistent
@EDG: E_def_505|MOD_applications_novel_cursor_llm_client_py|defines|SYM_applications_novel_cursor_llm_client_py_model_for_role|entry|persistent
@EDG: E_def_506|MOD_applications_novel_cursor_llm_client_py|defines|SYM_applications_novel_cursor_llm_client_py_complete|entry|persistent
@EDG: E_def_507|MOD_applications_novel_cursor_llm_client_py|defines|SYM_applications_novel_cursor_llm_client_py_complete_message|entry|persistent
@EDG: E_own_508|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_mcp_config_py|scope|persistent
@EDG: E_def_509|MOD_applications_novel_cursor_mcp_config_py|defines|SYM_applications_novel_cursor_mcp_config_py_memnet_env|entry|persistent
@EDG: E_def_510|MOD_applications_novel_cursor_mcp_config_py|defines|SYM_applications_novel_cursor_mcp_config_py_inline_mcp_serve|entry|persistent
@EDG: E_own_511|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_play_service_py|scope|persistent
@EDG: E_def_512|MOD_applications_novel_cursor_play_service_py|defines|SYM_applications_novel_cursor_play_service_py_probe_serve|entry|persistent
@EDG: E_def_513|MOD_applications_novel_cursor_play_service_py|defines|SYM_applications_novel_cursor_play_service_py_read_session_i|entry|persistent
@EDG: E_def_514|MOD_applications_novel_cursor_play_service_py|defines|SYM_applications_novel_cursor_play_service_py_preflight_sess|entry|persistent
@EDG: E_def_515|MOD_applications_novel_cursor_play_service_py|defines|SYM_applications_novel_cursor_play_service_py_write_last_bea|entry|persistent
@EDG: E_def_516|MOD_applications_novel_cursor_play_service_py|defines|SYM_applications_novel_cursor_play_service_py_read_last_beat|entry|persistent
@EDG: E_def_517|MOD_applications_novel_cursor_play_service_py|defines|SYM_applications_novel_cursor_play_service_py_fail_result|entry|persistent
@EDG: E_def_518|MOD_applications_novel_cursor_play_service_py|defines|SYM_applications_novel_cursor_play_service_py_ensure_slot_gr|entry|persistent
@EDG: E_def_519|MOD_applications_novel_cursor_play_service_py|defines|SYM_applications_novel_cursor_play_service_py_run_beat|entry|persistent
@EDG: E_own_520|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_session_bootstrap_py|scope|persistent
@EDG: E_def_521|MOD_applications_novel_cursor_session_bootstrap_py|defines|SYM_applications_novel_cursor_session_bootstrap_py_rebootstr|entry|persistent
@EDG: E_own_522|TSK_codebase_snap_memnet|owns|MOD_applications_novel_cursor_wire_parse_py|scope|persistent
@EDG: E_def_523|MOD_applications_novel_cursor_wire_parse_py|defines|SYM_applications_novel_cursor_wire_parse_py_extract_draft_bu|entry|persistent
@EDG: E_def_524|MOD_applications_novel_cursor_wire_parse_py|defines|SYM_applications_novel_cursor_wire_parse_py_extract_scr_line|entry|persistent
@EDG: E_def_525|MOD_applications_novel_cursor_wire_parse_py|defines|SYM_applications_novel_cursor_wire_parse_py_extract_wire_lin|entry|persistent
@EDG: E_def_526|MOD_applications_novel_cursor_wire_parse_py|defines|SYM_applications_novel_cursor_wire_parse_py_parse_prose_payl|entry|persistent
@EDG: E_def_527|MOD_applications_novel_cursor_wire_parse_py|defines|SYM_applications_novel_cursor_wire_parse_py_normalise_option|entry|persistent
@EDG: E_own_528|TSK_codebase_snap_memnet|owns|MOD_applications_novel_mobile___init___py|scope|persistent
@EDG: E_own_529|TSK_codebase_snap_memnet|owns|MOD_applications_novel_mobile_auth_py|scope|persistent
@EDG: E_def_530|MOD_applications_novel_mobile_auth_py|defines|SYM_applications_novel_mobile_auth_py_AuthConfig|entry|persistent
@EDG: E_def_531|MOD_applications_novel_mobile_auth_py|defines|SYM_applications_novel_mobile_auth_py_AuthContext|entry|persistent
@EDG: E_def_532|MOD_applications_novel_mobile_auth_py|defines|SYM_applications_novel_mobile_auth_py_load_auth_config|entry|persistent
@EDG: E_def_533|MOD_applications_novel_mobile_auth_py|defines|SYM_applications_novel_mobile_auth_py_user_id_from_google_su|entry|persistent
@EDG: E_def_534|MOD_applications_novel_mobile_auth_py|defines|SYM_applications_novel_mobile_auth_py_verify_google_credenti|entry|persistent
@EDG: E_def_535|MOD_applications_novel_mobile_auth_py|defines|SYM_applications_novel_mobile_auth_py_issue_app_token|entry|persistent
@EDG: E_def_536|MOD_applications_novel_mobile_auth_py|defines|SYM_applications_novel_mobile_auth_py_verify_app_token|entry|persistent
@EDG: E_def_537|MOD_applications_novel_mobile_auth_py|defines|SYM_applications_novel_mobile_auth_py_authenticate_request|entry|persistent
@EDG: E_def_538|MOD_applications_novel_mobile_auth_py|defines|SYM_applications_novel_mobile_auth_py_resolve_user_id|entry|persistent
@EDG: E_def_539|MOD_applications_novel_mobile_auth_py|defines|SYM_applications_novel_mobile_auth_py_exchange_google_login|entry|persistent
@EDG: E_own_540|TSK_codebase_snap_memnet|owns|MOD_applications_novel_mobile_jobs_py|scope|persistent
@EDG: E_def_541|MOD_applications_novel_mobile_jobs_py|defines|SYM_applications_novel_mobile_jobs_py_world_job_slot|entry|persistent
@EDG: E_def_542|MOD_applications_novel_mobile_jobs_py|defines|SYM_applications_novel_mobile_jobs_py_BeatJob|entry|persistent
@EDG: E_def_543|MOD_applications_novel_mobile_jobs_py|defines|SYM_applications_novel_mobile_jobs_py_BeatJobStore|entry|persistent
@EDG: E_own_544|TSK_codebase_snap_memnet|owns|MOD_applications_novel_mobile_server_py|scope|persistent
@EDG: E_def_545|MOD_applications_novel_mobile_server_py|defines|SYM_applications_novel_mobile_server_py_ProfileBody|entry|persistent
@EDG: E_def_546|MOD_applications_novel_mobile_server_py|defines|SYM_applications_novel_mobile_server_py_PickBody|entry|persistent
@EDG: E_def_547|MOD_applications_novel_mobile_server_py|defines|SYM_applications_novel_mobile_server_py_RerollBody|entry|persistent
@EDG: E_def_548|MOD_applications_novel_mobile_server_py|defines|SYM_applications_novel_mobile_server_py_AckBody|entry|persistent
@EDG: E_def_549|MOD_applications_novel_mobile_server_py|defines|SYM_applications_novel_mobile_server_py_BeatBody|entry|persistent
@EDG: E_def_550|MOD_applications_novel_mobile_server_py|defines|SYM_applications_novel_mobile_server_py_GoogleLoginBody|entry|persistent
@EDG: E_def_551|MOD_applications_novel_mobile_server_py|defines|SYM_applications_novel_mobile_server_py_WorldCreateBody|entry|persistent
@EDG: E_def_552|MOD_applications_novel_mobile_server_py|defines|SYM_applications_novel_mobile_server_py_get_config|entry|persistent
@EDG: E_def_553|MOD_applications_novel_mobile_server_py|defines|SYM_applications_novel_mobile_server_py_create_app|entry|persistent
@EDG: E_def_554|MOD_applications_novel_mobile_server_py|defines|SYM_applications_novel_mobile_server_py_main|entry|persistent
@EDG: E_own_555|TSK_codebase_snap_memnet|owns|MOD_applications_novel_mobile_world_registry_py|scope|persistent
@EDG: E_def_556|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_WorldMeta|entry|persistent
@EDG: E_def_557|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_new_world_id|entry|persistent
@EDG: E_def_558|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_write_meta|entry|persistent
@EDG: E_def_559|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_read_meta|entry|persistent
@EDG: E_def_560|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_app_config_f|entry|persistent
@EDG: E_def_561|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_locate_world|entry|persistent
@EDG: E_def_562|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_resolve_worl|entry|persistent
@EDG: E_def_563|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_list_worlds_|entry|persistent
@EDG: E_def_564|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_create_world|entry|persistent
@EDG: E_def_565|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_require_worl|entry|persistent
@EDG: E_def_566|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_update_meta_|entry|persistent
@EDG: E_def_567|MOD_applications_novel_mobile_world_registry_py|defines|SYM_applications_novel_mobile_world_registry_py_delete_world|entry|persistent
@EDG: E_own_568|TSK_codebase_snap_memnet|owns|MOD_applications_novel_mobile_world_slot_py|scope|persistent
@EDG: E_def_569|MOD_applications_novel_mobile_world_slot_py|defines|SYM_applications_novel_mobile_world_slot_py_normalise_world_|entry|persistent
@EDG: E_def_570|MOD_applications_novel_mobile_world_slot_py|defines|SYM_applications_novel_mobile_world_slot_py_normalise_user_i|entry|persistent
@EDG: E_def_571|MOD_applications_novel_mobile_world_slot_py|defines|SYM_applications_novel_mobile_world_slot_py_worlds_base_dir|entry|persistent
@EDG: E_def_572|MOD_applications_novel_mobile_world_slot_py|defines|SYM_applications_novel_mobile_world_slot_py_world_root|entry|persistent
@EDG: E_def_573|MOD_applications_novel_mobile_world_slot_py|defines|SYM_applications_novel_mobile_world_slot_py_resolve_config|entry|persistent
