{
  "schema_version": 1,
  "status": "Inventory of what the v1 memory and workspace could become in v2. Every row is a proposal; agent-catalog.json and frequent-operations.json remain the authoritative definitions of what is designed.",
  "census": {
    "total": 119,
    "by_kind": {
      "skill": 30,
      "tool": 68,
      "article": 20,
      "agent": 1
    },
    "by_status": {
      "existing": 39,
      "candidate": 60,
      "article": 20
    },
    "by_domain": {
      "support-root": 10,
      "data-transfers": 14,
      "data-pricing": 8,
      "data-printing": 6,
      "data-access": 9,
      "data-health": 7,
      "data-master": 8,
      "data-operations": 6,
      "configuration": 12,
      "source": 9,
      "commercial": 4,
      "common": 16,
      "workspace": 10
    },
    "seed_files_cited": 515
  },
  "capabilities": [
    {
      "id": "support.skill.classification",
      "kind": "skill",
      "label": "Classify a request against the contract",
      "one_line": "Decide §1 Standard severity or §2 Personalization priority, detect a CR trigger and set the clocks.",
      "owner": "support.root",
      "domain": "support-root",
      "status": "existing",
      "existing_ref": "support.skill.classification",
      "seeds": [
        ".claude/skills/classify-ticket/skill.md",
        "knowledge/support_contract_bg.md",
        "knowledge/support_procedures.md",
        "memory/reference/support_contract_custom_bg.md",
        "memory/reference/support_contract_custom_en.md",
        "memory/feedback/config_toggle_vs_cr_classification.md"
      ],
      "evidence": "A classification block was written on 322 of the 332 analysed tickets of the 02.09 run (§1 296 · §2 19).",
      "evidence_row": null
    },
    {
      "id": "support.tool.sla-clock",
      "kind": "tool",
      "label": "SLA clock and breach calculator",
      "one_line": "Turn severity, contract section and calendar into response/resolution deadlines, applying the §1.5.3 workaround downgrade.",
      "owner": "support.root",
      "domain": "support-root",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "knowledge/support_contract_bg.md",
        "knowledge/support_procedures.md",
        "memory/reference/support_contract_custom_en.md",
        ".claude/skills/classify-ticket/skill.md"
      ],
      "evidence": "Severity distribution over the same 322 classified analyses: Sev 3 151 · Sev 4 43 · Sev 2 16 · Sev 1 3.",
      "evidence_row": null
    },
    {
      "id": "common.skill.communication",
      "kind": "skill",
      "label": "Prepare and deliver the customer outcome",
      "one_line": "Draft the Bulgarian customer reply and the internal note, then deliver them through the gated send.",
      "owner": "common.communicator",
      "domain": "support-root",
      "status": "existing",
      "existing_ref": "common.skill.communication",
      "seeds": [
        "memory/feedback/customer_reply_on_point.md",
        "memory/feedback/customer_reply_after_applied_fix.md",
        "memory/feedback/outbound_technical_reply_summary_then_details.md",
        "memory/feedback/ticket_closure_via_pending.md",
        "memory/feedback/aisa_internal_comment_single_per_ticket.md"
      ],
      "evidence": "The desk's skill #1: 330 tickets carry a customer conversation phase; 4 holders.",
      "evidence_row": 1
    },
    {
      "id": "support.skill.channel-access",
      "kind": "skill",
      "label": "Diagnose a ticket-portal access problem",
      "one_line": "Read-only sweep of the ticket system's account, groups, product access and portal reachability, ending in fix steps for an org admin.",
      "owner": "support.root",
      "domain": "support-root",
      "status": "existing",
      "existing_ref": "support.skill.channel-access",
      "seeds": [
        ".claude/skills/jira-access/skill.md",
        "knowledge/atlassian_jira_admin.md",
        "memory/reference/jira_customer_portal_no_access.md",
        "memory/reference/jsm_portal_no_access_wrong_group.md",
        "memory/reference/chrome_devtools_mcp.md"
      ],
      "evidence": "3 memory/knowledge files plus one v1 skill; no independent ticket count was measured.",
      "evidence_row": null
    },
    {
      "id": "support.tool.origin-dedup",
      "kind": "tool",
      "label": "Deduplicate one request across the three arrival channels",
      "one_line": "Match a ticket, an OTRS ticket and a mail thread onto one origin key and report which of them is the freshest.",
      "owner": "support.root",
      "domain": "support-root",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/cross_channel_correlation.md",
        "memory/feedback/duplicate_request_verify_prior_residuals.md",
        "memory/reference/hdesk_jira_provenance_staleness_check.md",
        "memory/feedback/scan_mailbox_and_microservice_logs_per_subject.md",
        "hdesk/scripts/gen_status.ps1"
      ],
      "evidence": "4 memory files plus the queue-status generator; the desk's dedup-on-origin-key skill has no catalogue entry.",
      "evidence_row": null
    },
    {
      "id": "support.tool.hdesk-transfer",
      "kind": "tool",
      "label": "OTRS ticket to ServiceDesk transfer and refresh",
      "one_line": "Resolve the OTRS id, fetch the ticket, find or create its ServiceDesk counterpart and re-post only the new articles.",
      "owner": "support.root",
      "domain": "support-root",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        ".claude/skills/transfer-hdesk/skill.md",
        "hdesk/scripts/gen_status.ps1",
        "hdesk/scripts/gen_cached_views.ps1",
        "memory/reference/aisa_hdesk_cli.md",
        "memory/feedback/hdesk_refresh_show_summary_table.md",
        "memory/project/hdesk_pending_jira_updates_backlog.md"
      ],
      "evidence": "The most mechanical of the 20 v1 skills — end to end already CLI-driven; 39 of the 52 OTRS-queue configuration tickets arrive this way (D59).",
      "evidence_row": null
    },
    {
      "id": "support.tool.pattern-match",
      "kind": "tool",
      "label": "Match a symptom against the known-pattern catalogue",
      "one_line": "Score a new request's symptom text against the recorded symptom-cause-fix patterns and the open known-issue register, and return ranked candidates with their evidence.",
      "owner": "support.root",
      "domain": "support-root",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "knowledge/common_patterns.md",
        "KNOWN_ISSUES.md",
        "memory/feedback/maintain_known_issues_register.md",
        "scripts/triage_baseline.py",
        "memory/reference/kb_memory_vs_rediscovery_cost.md"
      ],
      "evidence": "56 open known issues and a symptom-cause-fix table; the v1 grep baseline for this retrieval is measured in Measurements § TB.",
      "evidence_row": null
    },
    {
      "id": "support.skill.queue-sweep",
      "kind": "skill",
      "label": "Periodic re-read of the open case set",
      "one_line": "Walk the open cases, detect what changed since the last pass and raise the ones that need a decision.",
      "owner": "support.root",
      "domain": "support-root",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        ".claude/skills/sd-monitor/skill.md",
        "memory/feedback/monitor_jira.md",
        "memory/feedback/pre_post_status_refresh.md",
        "scripts/build_jira_summary.py"
      ],
      "evidence": "v2 replaces the polling half with platform.intake; the change-detection half of /sd-monitor has no catalogue entry.",
      "evidence_row": null
    },
    {
      "id": "support.article.desk-practice",
      "kind": "article",
      "label": "Desk practice: statuses, transitions, tags, closure",
      "one_line": "How this desk moves a case through its statuses, who is named on it and how it is closed back to the customer.",
      "owner": "support",
      "domain": "support-root",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/ticket_closure_via_pending.md",
        "memory/feedback/monitor_jira.md",
        "memory/feedback/jira_via_aisa_jira_cli.md",
        "memory/feedback/sd_prefix_jira_only_not_sr_policy_id.md",
        "memory/reference/jira_adf_media_embedding.md",
        "memory/feedback/jira_adf_date_node_invisible_in_list.md",
        "knowledge/persons.md"
      ],
      "evidence": "7 memory/knowledge files describe the desk's own ticket handling.",
      "evidence_row": null
    },
    {
      "id": "support.article.scope-and-cr",
      "kind": "article",
      "label": "Scope, change requests and what the contract excludes",
      "one_line": "When a request stops being covered support and becomes a change request, a personalization or someone else's system.",
      "owner": "support",
      "domain": "support-root",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/insis_change_request.md",
        "memory/feedback/config_toggle_vs_cr_classification.md",
        "memory/feedback/check_test_db_before_cr.md",
        "memory/feedback/find_the_requirement_before_proposing_change.md",
        "memory/feedback/external_regulators_no_action_offers.md",
        "memory/feedback/offticket_policy_changes_need_approval.md",
        "memory/feedback/recurring_manual_fix_escalate_to_config.md"
      ],
      "evidence": "7 feedback files; 22 of 485 tickets were classified CR candidate / new feature with a 0 % DB-write rate.",
      "evidence_row": null
    },
    {
      "id": "data.skill.transfer-diagnosis",
      "kind": "skill",
      "label": "Diagnose transfers and families",
      "one_line": "Classify a stuck or wrong transfer into blocked validation, mapping, duplicate or zombie transaction and emit the bounded fix.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "existing",
      "existing_ref": "data.skill.transfer-diagnosis",
      "seeds": [
        ".claude/skills/check-transfer/skill.md",
        "memory/reference/ipal_transfer_paths.md",
        "memory/reference/transfer_already_started_idempotency_guard.md",
        "knowledge/transfer_pipeline.md",
        "memory/feedback/prefer_return_to_application_for_dual_system_corrections.md"
      ],
      "evidence": "112 tickets asked / 160 analyses used; 171 → 108 h; 4 holders.",
      "evidence_row": 2
    },
    {
      "id": "helper.transfer-trace",
      "kind": "tool",
      "label": "Transfer trace: pipeline log, notes and the log window in one read",
      "one_line": "Read the migration log, the user notes and the environment's log stack for one policy or window and return the ordered failure chain.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "existing",
      "existing_ref": "helper.transfer-trace",
      "seeds": [
        "memory/reference/kibana_log_access.md",
        "memory/reference/transfer_already_started_idempotency_guard.md",
        "knowledge/transfer_pipeline.md",
        "memory/reference/int_trnsf_pend_bulk_triage.md"
      ],
      "evidence": "Serves 6 operations in the inventory; the trace shape itself is 45 tickets asked / 45 analyses used.",
      "evidence_row": 4
    },
    {
      "id": "helper.policy-family-compare",
      "kind": "tool",
      "label": "Both-administration policy and family comparator",
      "one_line": "Compare one policy or one multi-year family field by field across both administrations and return the ordered differences.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "existing",
      "existing_ref": "helper.policy-family-compare",
      "seeds": [
        "sql/ref/srd_integr_compare_ipal_insis_car.sql",
        "memory/reference/policy_sync_compare_checklist.md",
        "memory/reference/multiyear_policy_verification_checklist.md",
        "memory/reference/multiyear_policy.md",
        "memory/feedback/policy_sync_checklist_living.md"
      ],
      "evidence": "Serves 13 operations; the compare shape is 42 / 31 and the multi-year repair 25 / 39.",
      "evidence_row": 7
    },
    {
      "id": "data.skill.policy-compare",
      "kind": "skill",
      "label": "Compare one policy across both administrations",
      "one_line": "Run the living sync checklist over a policy and produce the ordered correction set with a post-fix difference of zero.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "existing",
      "existing_ref": "data.skill.policy-compare",
      "seeds": [
        ".claude/skills/analyze-policy/skill.md",
        "memory/reference/policy_sync_compare_checklist.md",
        "memory/reference/insis_policy_states.md",
        "memory/reference/c_policies_status_semantics.md",
        "memory/reference/ipal_insis_status_desync.md"
      ],
      "evidence": "42 tickets asked / 31 analyses used; 62 → 43 h; 4 holders.",
      "evidence_row": 7
    },
    {
      "id": "data.skill.framework-sync",
      "kind": "skill",
      "label": "Synchronise a cargo framework for child issuance",
      "one_line": "Walk the framework's seven layers across both administrations and emit the ordered SQL that lets the child policy issue.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "existing",
      "existing_ref": "data.skill.framework-sync",
      "seeds": [
        ".claude/skills/sync-framework/skill.md",
        "memory/reference/cargo_1101_family_sync.md",
        "memory/reference/cargo_framework_extension_workflow.md",
        "memory/reference/cargo_products.md",
        "memory/reference/cargo_1100_single_policy_sync_footprint.md",
        "memory/reference/average_agent_flow.md"
      ],
      "evidence": "Framework sync 13 / 9 and framework extension 14 / 13; 3 holders each.",
      "evidence_row": 20
    },
    {
      "id": "data.tool.id-resolver",
      "kind": "tool",
      "label": "Resolve any estate identifier to its object",
      "one_line": "Take a 12-digit id, policy number or mapping id and return what it is and its counterpart in the other administration.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/decode_id_before_assuming_policy_no.md",
        "memory/reference/ipal_insis_id_mapping_tables.md",
        "memory/reference/policy_no_eq_sr_policy_id_post_transfer.md",
        "memory/reference/policy_no_composition.md",
        "memory/reference/ipal_id_sequence_prefix_convention.md",
        "memory/reference/source_id_vs_client_id_distinction.md",
        "memory/reference/insis_ipal_object_mapping.md",
        "memory/reference/crossed_insis_mapping_without_chain_contamination.md",
        "memory/reference/policy_no_extended_fleet_format.md"
      ],
      "evidence": "9 memory files; 'id decoding' is one of the 13 rows of the inherited v1 methodology catalog.",
      "evidence_row": null
    },
    {
      "id": "data.tool.chain-walk",
      "kind": "tool",
      "label": "Object and annex version-chain dump",
      "one_line": "Dump a whole object or annex version chain with its counterpart pairing and policy bindings as one table.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/ipal_chain_walk_connect_by.md",
        "memory/reference/sr_objects_chain_semantics.md",
        "memory/reference/parallel_sr_objects_trees.md",
        "memory/reference/ipal_annex_model.md",
        "memory/reference/annex_transfer.md",
        "sql/proposed/sd1599_reconcile_obj_car.sql"
      ],
      "evidence": "6 memory/SQL seeds; the query template is already written out verbatim in memory.",
      "evidence_row": null
    },
    {
      "id": "data.tool.participant-compare",
      "kind": "tool",
      "label": "Participant comparator across both administrations",
      "one_line": "Compare owner, lessee, beneficiary and policyholder rows for one policy and return the missing propagation.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/insis_object_participant_tables.md",
        "memory/reference/leasing_policy_data_model.md",
        "memory/reference/pholder_swap_ipal_only_propagation_gap.md",
        "memory/reference/ipal_non_vehicle_object_owner_transfer_gap.md",
        "memory/reference/object_credited_partial_amount_cr.md",
        "memory/feedback/verify_participant_org_from_live_header.md",
        "sql/proposed/SD-1967_owner_correction_insis.sql",
        "sql/proposed/SD-1997_fix_active_4800_train_owners.sql"
      ],
      "evidence": "Participant repair 31 / 25 and policyholder swap 10 / 26 (the swap shape is thin: 2 holders).",
      "evidence_row": 9
    },
    {
      "id": "data.tool.history-audit-walk",
      "kind": "tool",
      "label": "History-table walk with writer attribution",
      "one_line": "Read the audit history of one object over a window and attribute every change to the account and transaction that made it.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/hist_o_car_audit_pattern.md",
        "memory/reference/hist_p_people_audit.md",
        "memory/feedback/short_name_check_hist_first.md",
        "memory/project/serdica_access_cross_row_mutation_open.md",
        "memory/reference/abc_polpr_log.md"
      ],
      "evidence": "5 memory files; the cross-row mutation signature it detects is an open project item.",
      "evidence_row": null
    },
    {
      "id": "data.tool.cancel-propagation-check",
      "kind": "tool",
      "label": "Cancellation propagation check",
      "one_line": "Confirm a cancellation or termination reached the counterpart administration and the regulator, and name the layer that did not move.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/ipal_cancel_confirm_double_transfer_gap.md",
        "memory/reference/ipal_cancel_transfer_timeout_insis_live.md",
        "memory/reference/ipal_cancel_annex_begin_date_default.md",
        "memory/reference/cancelled_policy_restoration_paths.md",
        "memory/reference/gc_period_insis_gf_desync.md",
        "sql/proposed/301001168834_01_finish_cancellation_from_ipal.sql"
      ],
      "evidence": "Cancel not propagated 16 / 74 and restore after mistaken cancel 12 / 25.",
      "evidence_row": 15
    },
    {
      "id": "data.tool.sync-policy-enddate",
      "kind": "tool",
      "label": "Policy end-date and duration sync",
      "one_line": "Push a corrected policy end date and its duration dimension to the counterpart administration for one policy number.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "sql/proposed/SD-1998_sync_cpolicy_to_insis_enddate_duration.sql",
        "sql/ref/sync_cpolicy_to_insis_enddate_prod_20260730.sql",
        "memory/reference/insis_period_desync_convert_application.md",
        "memory/reference/ipal_policy_period_month_end_clamp.md"
      ],
      "evidence": "A deployable parameterised procedure already exists in the checkout, awaiting promotion; period reconciliation is one of the inventory's transfer operations.",
      "evidence_row": null
    },
    {
      "id": "data.skill.beth-triage",
      "kind": "skill",
      "label": "Triage an assistant-driven action failure",
      "one_line": "Separate an outage, a validation refusal and a data defect behind a failed assistant action, and reconcile whatever it half-applied.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/beth_assistant.md",
        "memory/reference/beth_chat_assistant.md",
        "memory/reference/beth_processbatch_distributed_tx_blocking.md",
        "memory/reference/beth_change_vehicle_application_gap.md",
        "memory/reference/beth_changeown_manual_prem_zero.md",
        "memory/reference/beth_vehicle_object_chain_loop.md",
        "memory/reference/bethgpt_changeown_workflow.md",
        "memory/reference/beth_annex_print_regen.md"
      ],
      "evidence": "14 tickets asked / 24 analyses used; 18 → 12 h; 3 holders; 8 memory files. No catalogue entry.",
      "evidence_row": 19
    },
    {
      "id": "data.tool.process-instance-probe",
      "kind": "tool",
      "label": "Process definition and instance probe",
      "one_line": "List the process definitions registered for a product and the live instances for one policy, and classify each as running, halted or completed late.",
      "owner": "support.investigator.transfers",
      "domain": "data-transfers",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/ipal_camunda_midflow_halt.md",
        "memory/reference/camunda_engine_getusertasks_persistence_400.md",
        "memory/reference/core_camunda_in_process_bottleneck.md",
        "memory/reference/bpmn_endevent_id_to_handler_switch.md",
        "memory/reference/ipal_completed_process_late_completion.md"
      ],
      "evidence": "1 ticket asked / 34 analyses used — the widest gap between asked and used in the catalogue; 3 holders.",
      "evidence_row": 35
    },
    {
      "id": "data.skill.fresh-investigation",
      "kind": "skill",
      "label": "Investigate from fresh evidence",
      "one_line": "Establish the mechanism from current observations when no experience matches, and return an explicit unknown with the next separating evidence.",
      "owner": "support.investigator",
      "domain": "data-transfers",
      "status": "existing",
      "existing_ref": "data.skill.fresh-investigation",
      "seeds": [
        ".claude/skills/investigate-ticket/skill.md",
        "memory/feedback/verify_dont_guess.md",
        "memory/feedback/cross_check_and_reanalysis.md",
        "memory/feedback/db_investigation_discipline.md",
        "memory/feedback/failed_probe_is_not_a_finding.md"
      ],
      "evidence": "81 of 485 tickets are incident/defect, the class with no matching prior shape.",
      "evidence_row": null
    },
    {
      "id": "data.skill.pricing-diagnosis",
      "kind": "skill",
      "label": "Diagnose pricing and installments",
      "one_line": "Explain or correct a premium component, a discount, a loading or an installment plan on an issued policy.",
      "owner": "support.investigator.pricing",
      "domain": "data-pricing",
      "status": "existing",
      "existing_ref": "data.skill.pricing-diagnosis",
      "seeds": [
        "memory/feedback/premium_ld_applied_vs_fed_factor.md",
        "memory/reference/insprem_premium_spec.md",
        "memory/reference/billing_and_installments.md",
        "memory/reference/casco_discount_cap_pfrdisc.md"
      ],
      "evidence": "Discount/loading/deductible fix 40 / 77 and installment plan 30 / 75; 4 holders each.",
      "evidence_row": 5
    },
    {
      "id": "helper.rating-replay",
      "kind": "tool",
      "label": "Rating request-versus-result comparator",
      "one_line": "Replay the rating call for a selected cover set and compare base premium, every loading and tax row and the roll-up against the stored result.",
      "owner": "configuration.abacus.validator",
      "domain": "data-pricing",
      "status": "existing",
      "existing_ref": "helper.rating-replay",
      "seeds": [
        "memory/reference/abacus_getrates_direct_call.md",
        "memory/feedback/abacus_rates_presentation.md",
        "memory/feedback/premium_ld_applied_vs_fed_factor.md",
        "memory/reference/abacus_validation_pipeline.md"
      ],
      "evidence": "27 tickets asked / 62 analyses used; shared with the configuration stage test; 4 holders.",
      "evidence_row": 12
    },
    {
      "id": "configuration.tool.getrates-client",
      "kind": "tool",
      "label": "Rating-engine call builder and response normaliser",
      "one_line": "Build the rating request from what the product declares, call the engine and normalise the offers catalogue it returns.",
      "owner": "configuration.abacus.builder",
      "domain": "data-pricing",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/abacus_getrates_direct_call.md",
        "memory/reference/getrates_request_builder_ownership.md",
        "memory/feedback/getrates_response_is_offers_catalog.md",
        "memory/reference/graphql_prpricingfactorvalues.md",
        "memory/reference/abc_cfg_pricing_factors_mapping.md"
      ],
      "evidence": "5 memory files; the engine computes and stores nothing, so the call itself is the safe inner loop of the stage test.",
      "evidence_row": null
    },
    {
      "id": "data.tool.premium-reconcile",
      "kind": "tool",
      "label": "Stored-premium reconciliation across both administrations",
      "one_line": "Compare the per-cover premium, loading and discount rows of the two administrations for one policy and return the reconciling difference.",
      "owner": "support.investigator.pricing",
      "domain": "data-pricing",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/premium_ld_applied_vs_fed_factor.md",
        "memory/reference/insprem_premium_spec.md",
        "memory/reference/declared_but_unrated_ld_pattern.md",
        "memory/feedback/pol_prem_rate_manually_corrected_ambiguity.md",
        "memory/feedback/systemic_premium_scan_hygiene.md",
        "memory/reference/abacus_ipal_ld_catalogue_mismatch.md",
        "memory/reference/ppa_bpshift_manual_premium.md"
      ],
      "evidence": "40 tickets asked / 77 analyses used; 64 → 44 h; distinct from the rating replay, which questions the engine rather than the stored rows.",
      "evidence_row": 5
    },
    {
      "id": "data.tool.installment-plan-recompute",
      "kind": "tool",
      "label": "Installment plan recompute and comparator",
      "one_line": "Recompute the installment plan from the premium and frequency, compare both administrations' plans and emit the correction that keeps paid instalments untouched.",
      "owner": "support.investigator.pricing",
      "domain": "data-pricing",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/change_installments_procedure.md",
        "memory/reference/billing_and_installments.md",
        "memory/reference/installment_rounding.md",
        "memory/feedback/pol_pplan_not_a_mirror.md",
        "memory/reference/calculate_installments_endpoint.md",
        "memory/reference/premium_floor_and_installment_ceiling_surfaces.md",
        "memory/reference/insis_first_month_due_premium_reversal.md",
        "knowledge/insis_premium_reversal_first_month.md",
        "sql/ref/preminst_prod.sql"
      ],
      "evidence": "30 tickets asked / 75 analyses used; 32 → 12 h — the largest proportional saving in the catalogue; 4 holders.",
      "evidence_row": 10
    },
    {
      "id": "data.tool.commission-compare",
      "kind": "tool",
      "label": "Commission and self-retention comparator",
      "one_line": "Compare the participant commission rows of both administrations against the effective rule set and emit the correction.",
      "owner": "support.investigator.pricing",
      "domain": "data-pricing",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/ipal_agent_commission_prefill.md",
        "memory/reference/cfg_agent_gen_commission_rules_gap.md",
        "memory/reference/commission_hold_transfer_comparator_gap.md",
        "memory/reference/renewal_same_account_agent_drift_report.md",
        "memory/reference/insis_broker_linked_discount_config.md",
        "memory/reference/insis_broker_on_direct_ipal_renewal.md"
      ],
      "evidence": "16 tickets asked / 45 analyses used; 4 holders; one memory file names the missing comparator explicitly.",
      "evidence_row": 17
    },
    {
      "id": "data.tool.fx-recompute",
      "kind": "tool",
      "label": "Currency and rate recomputation",
      "one_line": "Recompute a policy's amounts against the rate that applied on its rate date and report every row that does not reconcile.",
      "owner": "support.investigator.pricing",
      "domain": "data-pricing",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "knowledge/currency_and_rates.md",
        "memory/reference/bgn2eur_policy_conversion.md",
        "memory/reference/bgn_eur_conversion.md",
        "memory/reference/insis_currency_rate_lookup.md",
        "memory/reference/cargo_1102_historical_fx_rate_override.md",
        "memory/reference/cargo_products_foreign_currency_native.md",
        "memory/reference/myr_euro_conversion_repair_miss.md",
        "memory/reference/sPPlan_currency_unconditional_insert.md"
      ],
      "evidence": "9 tickets asked / 19 analyses used; 8 seeds. The currency changeover is separately an assessment-and-referral operation.",
      "evidence_row": 28
    },
    {
      "id": "data.tool.cargo-statement-correct",
      "kind": "tool",
      "label": "Cargo statement and certificate corrector",
      "one_line": "Apply a corrected value or text to a monthly cargo statement across both administrations and re-total it.",
      "owner": "support.investigator.transfers",
      "domain": "data-pricing",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/cargo_products.md",
        "memory/reference/cargo_policy_update.md",
        "memory/reference/cargo_recalc_alternative_to_unk0103.md",
        "memory/reference/cargo_1103_expired_parent_with_renewal_discriminator.md",
        "memory/feedback/customer_text_apply_verbatim.md",
        "knowledge/insis_ul_cargo_object_edit.md",
        "memory/reference/cargo_iv_1100_1102_maxv_10m.md"
      ],
      "evidence": "1103 statement correction 13 / 21 and cargo text correction 12 / 5 — the text shape is thin at 2 holders.",
      "evidence_row": 21
    },
    {
      "id": "data.skill.print-diagnosis",
      "kind": "skill",
      "label": "Diagnose document production",
      "one_line": "Separate wrong source data from wrong print configuration from a failed invocation, and name which of the three it is.",
      "owner": "support.investigator.printing",
      "domain": "data-printing",
      "status": "existing",
      "existing_ref": "data.skill.print-diagnosis",
      "seeds": [
        "memory/reference/document_generation.md",
        "memory/reference/cfg_print_docs_template_configuration.md",
        "memory/feedback/dont_fallback_on_template_error.md",
        "memory/reference/insis_print_configuration.md"
      ],
      "evidence": "50 tickets asked / 87 analyses used; 124 → 96 h; 4 holders.",
      "evidence_row": 3
    },
    {
      "id": "data.skill.document-production",
      "kind": "skill",
      "label": "Produce or retrieve a policy document",
      "one_line": "Resolve the template and every parameter from the database, evaluate the print gates and produce the document.",
      "owner": "support.investigator.printing",
      "domain": "data-printing",
      "status": "existing",
      "existing_ref": "data.skill.document-production",
      "seeds": [
        ".claude/skills/print-policy/skill.md",
        "knowledge/policy_print_recipe.md",
        "memory/reference/bipublisher_direct_runreport_probe.md",
        "memory/reference/sr_docs_chain.md"
      ],
      "evidence": "Same shape as the diagnosis row: 50 / 87.",
      "evidence_row": 3
    },
    {
      "id": "helper.print-probe",
      "kind": "tool",
      "label": "Invocation, registration, data-readiness and artefact-age probe",
      "one_line": "Answer 'did it run at all, is it registered, is the data ready, how old is the artefact' for one policy and document type.",
      "owner": "support.investigator.printing",
      "domain": "data-printing",
      "status": "existing",
      "existing_ref": "helper.print-probe",
      "seeds": [
        "memory/reference/document_generation.md",
        "memory/reference/cfg_print_docs_template_configuration.md",
        "tools/aisa-blob/README.md",
        "knowledge/policy_print_recipe.md",
        "memory/reference/pr_basic_product_documents_lov.md",
        "memory/reference/gen_risk_documents_validity_change_enddate_gap.md"
      ],
      "evidence": "Serves 6 operations in the inventory; 'invocation before configuration' is one of the 13 inherited methodology rows.",
      "evidence_row": 3
    },
    {
      "id": "data.tool.bipublisher-runreport",
      "kind": "tool",
      "label": "Direct report-server call",
      "one_line": "Call the report server directly with resolved parameters and return the document, bypassing the application entirely.",
      "owner": "support.investigator.printing",
      "domain": "data-printing",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/bipublisher_direct_runreport_probe.md",
        "knowledge/policy_print_recipe.md",
        ".claude/skills/print-policy/skill.md",
        "memory/reference/serdica_print_service_layout_divergence.md"
      ],
      "evidence": "An implementation already exists outside this repository as a local desktop tool with self-test verbs; the recipe here is complete enough to reimplement it.",
      "evidence_row": 3
    },
    {
      "id": "common.tool.aisa-blob",
      "kind": "tool",
      "label": "Stored-document extractor",
      "one_line": "Pull a stored document or large object out of the database by policy, document or blob id and write it to a file.",
      "owner": "support.investigator.printing",
      "domain": "data-printing",
      "status": "existing",
      "existing_ref": "common.tool.aisa-blob",
      "seeds": [
        "tools/aisa-blob/README.md",
        "memory/reference/ipal_blob_extraction_via_mcp.md",
        "memory/reference/fileserver_identifiers_and_store.md",
        "memory/reference/bulk_document_extraction_windows.md"
      ],
      "evidence": "Replaces a batch workaround the memory records as roughly eighty times slower.",
      "evidence_row": null
    },
    {
      "id": "data.article.print-surfaces",
      "kind": "article",
      "label": "The print surfaces and where they diverge",
      "one_line": "Which service renders which document, and where the layouts and field sources of the three print paths disagree.",
      "owner": "support/investigators/printing",
      "domain": "data-printing",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/reference/serdica_print_service_layout_divergence.md",
        "memory/reference/serdica_pdfgeneration_docx_templates.md",
        "memory/reference/bulstrad_online_print_templates.md",
        "memory/reference/multitrip_print_reads_latin_byclient_address_phone.md",
        "memory/reference/insis_property_pdf_inverted_mapping.md",
        "memory/reference/mtpl_doc_attach_flow.md"
      ],
      "evidence": "6 memory files describe divergent print paths for the same nominal document.",
      "evidence_row": null
    },
    {
      "id": "data.skill.access-diagnosis",
      "kind": "skill",
      "label": "Diagnose account and access layers",
      "one_line": "Walk identity, account, office and role for one person and name the layer that blocks them.",
      "owner": "support.investigator.access",
      "domain": "data-access",
      "status": "existing",
      "existing_ref": "data.skill.access-diagnosis",
      "seeds": [
        "memory/reference/bulstrad_employee_account.md",
        "memory/feedback/ipal_user_layer_separation.md",
        "memory/reference/identity_server_ldap_authentication.md",
        "memory/feedback/no_forgotten_password.md",
        "memory/feedback/access_login_pair_db_with_kibana.md"
      ],
      "evidence": "38 tickets asked / 62 analyses used; 72 → 42 h; access/account is 8 % of tickets with the highest DB-write rate at 86 %.",
      "evidence_row": 6
    },
    {
      "id": "helper.access-inventory",
      "kind": "tool",
      "label": "Identity, account, office and role inventory",
      "one_line": "Return the whole access tree for one identity and expand the effective audience of a role or route.",
      "owner": "support.investigator.access",
      "domain": "data-access",
      "status": "existing",
      "existing_ref": "helper.access-inventory",
      "seeds": [
        "memory/reference/identity_server_ldap_authentication.md",
        "memory/reference/ipal_routes_product_access.md",
        "memory/feedback/ipal_user_layer_separation.md",
        ".claude/skills/add-agent/skill.md",
        "memory/feedback/account_tree.md",
        "knowledge/roles_and_authorization.md"
      ],
      "evidence": "Serves 4 operations; the account and the agent/office shapes together are 73 tickets asked.",
      "evidence_row": 6
    },
    {
      "id": "data.skill.agent-office",
      "kind": "skill",
      "label": "Provision an agent, broker or office",
      "one_line": "Compare the counterpart administration's office and people against the estate's branches, accounts, roles and numbering counters, then fill the gaps.",
      "owner": "support.investigator.access",
      "domain": "data-access",
      "status": "existing",
      "existing_ref": "data.skill.agent-office",
      "seeds": [
        ".claude/skills/add-agent/skill.md",
        "memory/reference/ipal_new_office_provisioning_checklist.md",
        "memory/reference/exclusive_agents.md",
        "memory/reference/broker_per_office_agent_pattern.md",
        "memory/reference/bulstrad_office_individual_agent_activation.md",
        "memory/reference/seq_polno_office_script_superset.md",
        "memory/reference/ipal_offices_table.md",
        "sql/proposed/ip_office_branch_user_provisioning_17614_17313_17254.sql",
        "sql/proposed/provision_ip_18310_kalisto_2016.sql",
        "memory/project/ip_office_sequence_grants_blocked_backlog.md"
      ],
      "evidence": "35 tickets asked / 38 analyses used; 70 → 46 h; 7 one-off provisioning scripts in the checkout repeat one pattern. No catalogue entry, although its two siblings add-bso and add-car have one.",
      "evidence_row": 8
    },
    {
      "id": "data.tool.role-grant-diff",
      "kind": "tool",
      "label": "Bulk role grant and revoke difference",
      "one_line": "Expand a target audience rule to the accounts it selects, diff it against the current grants and emit the idempotent delta with counts.",
      "owner": "support.investigator.access",
      "domain": "data-access",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/ipal_routes_product_access.md",
        "memory/reference/ipal_role_usage_inventory.md",
        "memory/feedback/ur_user_role.md",
        "memory/reference/ur_12_installments_role.md",
        "memory/reference/accs_policies_visibility_model.md",
        "sql/proposed/sd1353_makso_prod_ur_makso_grants.sql",
        "sql/proposed/sd1954_grant_ur_commercial_property_to_empl.sql",
        "sql/proposed/sd1353_makso_archive_broad_grants_and_restrict.sql"
      ],
      "evidence": "6 tickets asked / 47 analyses used; the one-off scripts in the checkout grant roles to roughly 790 accounts by criteria.",
      "evidence_row": 30
    },
    {
      "id": "data.tool.person-match",
      "kind": "tool",
      "label": "Person and company matcher across both administrations",
      "one_line": "Match one national or company identifier, or a name, to its records in both administrations and flag the duplicates.",
      "owner": "support.investigator.access",
      "domain": "data-access",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/ipal_insis_person_matching.md",
        "memory/reference/ipal_duplicate_customer_merge.md",
        "memory/reference/insis_p_people_auto3p_duplicate.md",
        "memory/reference/ipal_customer_sync_flow.md",
        "memory/reference/c_cust_type_and_addresses_pick.md",
        "memory/reference/ipal_egn_birthdate_timezone_shift.md",
        "memory/reference/insis_p_address_language_variants.md",
        "knowledge/persons.md"
      ],
      "evidence": "8 memory/knowledge files; duplicate-customer resolution is its own operation in the inventory.",
      "evidence_row": null
    },
    {
      "id": "data.tool.contact-address-dedup",
      "kind": "tool",
      "label": "Duplicate contact and address cleanup",
      "one_line": "Report or merge the duplicate contact and address rows one customer accumulates from delete-and-reinsert churn.",
      "owner": "support.investigator.access",
      "domain": "data-access",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "sql/maintenance/clean_duplicate_contacts_addresses.sql",
        "memory/reference/ipal_customer_sync_flow.md",
        "memory/reference/ipal_insis_id_mapping_tables.md",
        "memory/reference/c_cust_type_and_addresses_pick.md"
      ],
      "evidence": "A parameterised two-phase script already exists in the checkout: statistics first, cleanup second, scopable to one customer.",
      "evidence_row": null
    },
    {
      "id": "data.skill.person-policies",
      "kind": "skill",
      "label": "List a person's or company's policies",
      "one_line": "Sweep the four surfaces a person can appear on and return every policy with the cross-system findings.",
      "owner": "support.resolution",
      "domain": "data-access",
      "status": "existing",
      "existing_ref": "data.skill.person-policies",
      "seeds": [
        ".claude/skills/person-policies/skill.md",
        "sql/templates/person_policies_json.sql",
        "memory/feedback/person_policies_fast_path.md",
        "memory/reference/person_policies_json_template.md"
      ],
      "evidence": "5 tickets asked; thin — 1 holder with two or more tickets.",
      "evidence_row": 33
    },
    {
      "id": "data.tool.person-policies-sql",
      "kind": "tool",
      "label": "Four-surface policy sweep",
      "one_line": "One parameterised query returning every policy for one identifier as a single document, with the mismatch findings inline.",
      "owner": "support.resolution",
      "domain": "data-access",
      "status": "existing",
      "existing_ref": "data.tool.person-policies-sql",
      "seeds": [
        "sql/templates/person_policies_json.sql",
        "memory/reference/person_policies_json_template.md",
        "memory/feedback/person_policies_fast_path.md"
      ],
      "evidence": "Already an executable template; the shape it serves is thin at 1 holder.",
      "evidence_row": 33
    },
    {
      "id": "data.tool.report-extract",
      "kind": "tool",
      "label": "Parameterised customer extract",
      "one_line": "Run a parameterised select for a customer request and hand back a spreadsheet or delimited file.",
      "owner": "support.resolution",
      "domain": "data-access",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/plsql_xlsx_generation_options.md",
        "sql/templates/person_policies_json.sql",
        "memory/feedback/fast_set_based_sql_diagnostics.md",
        "memory/feedback/bulk_loop_output_and_parsing_discipline.md"
      ],
      "evidence": "5 tickets asked; thin — 1 holder. The export format question is already resolved in memory.",
      "evidence_row": 32
    },
    {
      "id": "data.skill.health-diagnosis",
      "kind": "skill",
      "label": "Diagnose health lifecycle and totals",
      "one_line": "Follow a health case from census through claim, evaluation and payment and name the step that produced the wrong total.",
      "owner": "support.investigator.health",
      "domain": "data-health",
      "status": "existing",
      "existing_ref": "data.skill.health-diagnosis",
      "seeds": [
        "bst_health/README.md",
        "knowledge/health_product_8000_anatomy.md",
        "memory/reference/health_claim_pipeline_step14_overwrites_step13.md",
        "memory/reference/health_claims_coinsurance_double_division.md",
        "memory/reference/health_claim_apply_drug_limits_no_drugs_defect.md"
      ],
      "evidence": "No independent ticket count was measured; the health branch is feature-gated to one environment.",
      "evidence_row": null
    },
    {
      "id": "data.skill.health-report-review",
      "kind": "skill",
      "label": "Review a health provider report",
      "one_line": "Read a provider report against the check catalogue: the file, its lines, the card holder, the claim behind it and the decision taken.",
      "owner": "support.investigator.health",
      "domain": "data-health",
      "status": "existing",
      "existing_ref": "data.skill.health-report-review",
      "seeds": [
        ".claude/skills/review-ao-report/skill.md",
        "memory/reference/hlt_report_line_correction_paths.md",
        "memory/reference/hlt_ao_report_discount_vs_balance.md",
        "memory/reference/dzo_group_claims_process.md"
      ],
      "evidence": "Qualitative: an established procedure with a per-round test set, no measured recurrence.",
      "evidence_row": null
    },
    {
      "id": "helper.health-line-compare",
      "kind": "tool",
      "label": "Report line to claim to evaluation to payment comparator",
      "one_line": "Follow one report line through to its payment and show where the amounts stop agreeing.",
      "owner": "support.investigator.health",
      "domain": "data-health",
      "status": "existing",
      "existing_ref": "helper.health-line-compare",
      "seeds": [
        ".claude/skills/review-ao-report/skill.md",
        "memory/reference/hlt_invoice_aggregate_formulas.md",
        "memory/reference/health_claim_pipeline_step14_overwrites_step13.md",
        "memory/reference/hlt_imp_data_columns_dont_mean_their_names.md"
      ],
      "evidence": "Serves 5 health operations in the inventory.",
      "evidence_row": null
    },
    {
      "id": "data.tool.hlt-invoice-recompute",
      "kind": "tool",
      "label": "Health invoice aggregate recompute",
      "one_line": "Recompute the invoice aggregates from their stated formulas and compare them with what is stored, day-boundary drift included.",
      "owner": "support.investigator.health",
      "domain": "data-health",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/hlt_invoice_aggregate_formulas.md",
        "memory/reference/hlt_invoice_period_auto_manual.md",
        "memory/reference/hlt_invoice_date_utc_day_drift.md",
        "memory/reference/hlt_ao_report_discount_vs_balance.md"
      ],
      "evidence": "4 memory files, one of which writes the aggregate formulas out in full.",
      "evidence_row": null
    },
    {
      "id": "data.tool.hlt-import-line-classify",
      "kind": "tool",
      "label": "Health import line classifier",
      "one_line": "Classify every line of an imported provider file as accepted, declined or errored and name the rule that decided it.",
      "owner": "support.investigator.health",
      "domain": "data-health",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/hlt_import_declined_vs_error_line_states.md",
        "memory/reference/hlt_imp_data_columns_dont_mean_their_names.md",
        "memory/reference/hlt_import_cover_binding_and_insis_10char_rule.md",
        "memory/reference/hlt_import_person_name_check.md",
        "memory/reference/hlt_imp_tables_indexes_and_grants.md",
        "memory/reference/hlt_ao_import_abacus_call_amplification.md"
      ],
      "evidence": "6 memory files; one of them is the cause of the repeated-rating-work operation in the inventory.",
      "evidence_row": null
    },
    {
      "id": "data.tool.hlt-payment-packet",
      "kind": "tool",
      "label": "Health payment confirmation and undo packet",
      "one_line": "Build the payment confirmation for a report, and its undo, including the mass-payment file the bank expects.",
      "owner": "support.investigator.health",
      "domain": "data-health",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/hlt_ao_payment_confirm_undo.md",
        "memory/reference/hlt_ao_import_batch_layer_and_payment_gaps.md",
        "memory/reference/eurobank_mass_payment_file_format.md",
        "memory/project/hlt_ao_export_import_directories.md"
      ],
      "evidence": "4 memory files; the file format is a fixed specification and the undo path is documented, which is the teardown a write packet needs.",
      "evidence_row": null
    },
    {
      "id": "data.article.health-8000",
      "kind": "article",
      "label": "The health product and its pipeline",
      "one_line": "What product 8000 is: its packages and covers, the census, the claim pipeline, the provider report and the payout.",
      "owner": "support/investigators/health",
      "domain": "data-health",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "bst_health/README.md",
        "knowledge/health_product_8000_anatomy.md",
        "memory/reference/health_product_8000_cover_modes.md",
        "memory/reference/dzo_group_claims_process.md",
        "memory/reference/bst_health_two_company_model_acta.md",
        "memory/reference/census_member_code_two_provisioning_paths.md",
        "memory/project/health_products_qa_development.md"
      ],
      "evidence": "A self-contained knowledge base of its own plus 20-odd health memory files; five overlapping editions of one domain guide need collapsing on migration.",
      "evidence_row": null
    },
    {
      "id": "data.skill.add-bso",
      "kind": "skill",
      "label": "Blank range and lifecycle check",
      "one_line": "Validate a blank number range against its format and the existing stock, add only the free numbers and verify the count.",
      "owner": "support.investigator.master_data",
      "domain": "data-master",
      "status": "existing",
      "existing_ref": "data.skill.add-bso",
      "seeds": [
        ".claude/skills/add-bso/skill.md",
        "memory/reference/bso_format.md",
        "memory/reference/bso_post_issue_maintenance_sequences.md",
        "memory/reference/insis_blank_registry_rejection.md"
      ],
      "evidence": "5 tickets asked / 32 analyses used; 4 holders — not a thin shape, which corrects an earlier reading.",
      "evidence_row": 31
    },
    {
      "id": "data.tool.bso-range-validate",
      "kind": "tool",
      "label": "Blank range validator",
      "one_line": "Check a range for format, script confusion between the two alphabets, overlap and prior use, and emit only the missing numbers.",
      "owner": "support.investigator.master_data",
      "domain": "data-master",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/bso_format.md",
        "memory/reference/assistance_card_numbers.md",
        "memory/reference/bulstrad_online_sales_bso_pool.md",
        "memory/reference/cfg_blank_numbers_office_extension_proposal.md",
        "memory/reference/insis_blank_registry_rejection.md",
        ".claude/skills/add-bso/skill.md"
      ],
      "evidence": "The mechanical half of a 5 / 32 shape; the validation rules are fully written out in memory.",
      "evidence_row": 31
    },
    {
      "id": "data.skill.add-car",
      "kind": "skill",
      "label": "Vehicle nomenclature alignment",
      "one_line": "Look a make and model up in all three nomenclatures, decide which of them must change and emit the insert set.",
      "owner": "support.investigator.master_data",
      "domain": "data-master",
      "status": "existing",
      "existing_ref": "data.skill.add-car",
      "seeds": [
        ".claude/skills/add-car/skill.md",
        "memory/reference/eisoukr_brand_nomenclature.md",
        "memory/reference/car_type_mapping.md",
        "memory/reference/fuel_type_mapping.md"
      ],
      "evidence": "2 tickets asked / 2 analyses used; thin — 1 holder.",
      "evidence_row": 34
    },
    {
      "id": "data.tool.car-compare-sql",
      "kind": "tool",
      "label": "Vehicle comparator",
      "one_line": "Field-by-field comparison of a vehicle's record in both administrations by chassis or registration number.",
      "owner": "support.investigator.master_data",
      "domain": "data-master",
      "status": "existing",
      "existing_ref": "data.tool.car-compare-sql",
      "seeds": [
        "sql/ref/srd_integr_compare_ipal_insis_car.sql",
        "sql/proposed/compare_ipal_insis_car_rpad_fix.sql",
        "memory/feedback/insis_ipal_car_sync_invariant.md",
        "memory/reference/oracle_rpad_truncates_silently.md"
      ],
      "evidence": "A deployed procedure today; a patched version fixing its display truncation is in the checkout awaiting promotion.",
      "evidence_row": 16
    },
    {
      "id": "data.tool.vin-chain-update",
      "kind": "tool",
      "label": "Chain-aware vehicle correction packet",
      "one_line": "Emit the correction for a chassis, plate or vehicle type across the object version chain and both administrations, with the comparison as its proof.",
      "owner": "support.investigator.master_data",
      "domain": "data-master",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/vin_update_chain_aware.md",
        "memory/reference/vehicle_change_vin_case_split.md",
        "memory/reference/vehicle_subtype_change_support.md",
        "memory/reference/dkn_plate_transfer_pattern.md",
        "memory/reference/engine_no_null_vs_star_marker.md",
        "memory/feedback/insis_ipal_car_sync_invariant.md",
        "sql/proposed/SD-1950_reconcile_vin_objects_ipal.sql"
      ],
      "evidence": "29 tickets asked once the mail stream is counted / 16 analyses used; moved into build group 1 by D59.",
      "evidence_row": 16
    },
    {
      "id": "data.tool.eisoukr-status-decode",
      "kind": "tool",
      "label": "Regulator status and duplicate-cover decoder",
      "one_line": "Turn a regulator response code and the active-cover check into one named outcome with the blocking policy identified.",
      "owner": "support.investigator.master_data",
      "domain": "data-master",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/eisoukr_response_codes.md",
        "memory/reference/eisoukr_mtpl_status_service.md",
        "memory/reference/duplicate_policy_check_4710.md",
        "memory/reference/mtpl_duplicate_10_off_open_question.md",
        "memory/reference/test_eisoukr_simulator.md",
        "memory/reference/kat_eisoukr_authoritative_car_parameters.md",
        "sql/ref/srd_integr_tr_lib_motor_prod.sql"
      ],
      "evidence": "17 tickets asked / 81 analyses used; 39 → 30 h; 3 holders; the response-code catalogue is already a table.",
      "evidence_row": 14
    },
    {
      "id": "data.tool.vehicle-nomenclature-lookup",
      "kind": "tool",
      "label": "Three-nomenclature vehicle lookup",
      "one_line": "Look one make and model up in all three catalogues at once and report which of them is missing it.",
      "owner": "support.investigator.master_data",
      "domain": "data-master",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        ".claude/skills/add-car/skill.md",
        "memory/reference/eisoukr_brand_nomenclature.md",
        "memory/reference/kat_getkatdata_soap_pull.md",
        "memory/reference/car_type_mapping.md",
        "memory/reference/iis_objects_insis_to_ipal_car_import.md"
      ],
      "evidence": "The mechanical core of the thinnest shape in the catalogue: 2 / 2, 1 holder, 100 % lead share.",
      "evidence_row": 34
    },
    {
      "id": "data.tool.blank-after-issue",
      "kind": "tool",
      "label": "Issued-blank replacement and invalidation",
      "one_line": "Replace, cancel or invalidate an already-issued green card or sticker and keep the registry and the regulator in step.",
      "owner": "support.investigator.master_data",
      "domain": "data-master",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/bso_post_issue_maintenance_sequences.md",
        "memory/reference/gc_period_insis_gf_desync.md",
        "memory/reference/insis_blank_registry_rejection.md",
        "memory/reference/assistance_card_numbers.md"
      ],
      "evidence": "4 memory files; a distinct operation from adding a range, and the only blank operation that touches the regulator.",
      "evidence_row": null
    },
    {
      "id": "data.tool.db-health-probe",
      "kind": "tool",
      "label": "Database estate health probe",
      "one_line": "One read-only sweep of tablespace, archiver, blocking sessions, database-link sessions, library-cache pins and scheduler jobs, returning the named condition.",
      "owner": "support.investigator.operations",
      "domain": "data-operations",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/insis_tablespace_exhaustion_transfer_halt.md",
        "memory/reference/insis_archiver_ora00257_policy_no_halt.md",
        "memory/reference/insis_aud_buffer_busy_outage.md",
        "memory/reference/insis_library_cache_pin_deadlock.md",
        "memory/reference/ora_02049_self_block_via_insis_forms.md",
        "memory/reference/orphaned_dblink_session_transfer_backlog.md",
        "memory/reference/insis_session_caps_serdica_ablera.md",
        "knowledge/db_scheduler_jobs.md",
        "memory/reference/insis_dblink_performance_regression.md"
      ],
      "evidence": "9 memory/knowledge files behind 5 operations that share one profile today and have no helper of their own; each signature presents as a data error.",
      "evidence_row": null
    },
    {
      "id": "data.tool.idcontrol-headroom",
      "kind": "tool",
      "label": "Identifier allocator headroom report",
      "one_line": "Report every identifier allocator approaching its length overflow, with the percentage consumed.",
      "owner": "support.investigator.operations",
      "domain": "data-operations",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "sql/diag/idcontrol_headroom_report.sql",
        "memory/reference/idcontrol_allocate_id_length_overflow.md",
        "sql/ref/idcontrol.sql",
        "memory/reference/insis_sequences_per_table.md"
      ],
      "evidence": "A runnable whole-estate report exists in the checkout today; it is preventive rather than reactive, so it has no ticket count.",
      "evidence_row": null
    },
    {
      "id": "data.tool.transfer-backlog-partition",
      "kind": "tool",
      "label": "Transfer backlog partitioner",
      "one_line": "Split a pending-transfer backlog into steady state, retryable and genuinely stuck, and give each class its action.",
      "owner": "support.investigator.operations",
      "domain": "data-operations",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/int_trnsf_pend_bulk_triage.md",
        "memory/feedback/int_trnsf_pend_steady_state_not_outage.md",
        "memory/reference/orphaned_dblink_session_transfer_backlog.md",
        "memory/project/db_transfer_timeouts.md",
        "memory/feedback/kgas_pileup_not_proof_of_degradation.md"
      ],
      "evidence": "5 memory files; two of them exist precisely because a backlog was misread as an outage.",
      "evidence_row": null
    },
    {
      "id": "data.tool.mq-probe",
      "kind": "tool",
      "label": "Message-bus queue and latency probe",
      "one_line": "Read queue depth, consumers and per-request latency for the message bus and identify a killed or unbounded channel.",
      "owner": "support.investigator.operations",
      "domain": "data-operations",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/rabbitmq_qa_management_access.md",
        "memory/reference/rabbitmq_per_rid_latency_trace.md",
        "memory/reference/serdica_rabbit_manual_command_publish.md",
        "memory/reference/pas_notes_unbounded_reply_amqp_channel_kill.md",
        "knowledge/microservice_topology.md"
      ],
      "evidence": "5 memory/knowledge files; the bus sits between every microservice pair in the topology.",
      "evidence_row": null
    },
    {
      "id": "data.article.outage-signatures",
      "kind": "article",
      "label": "Infrastructure signatures that look like data errors",
      "one_line": "The catalogue of platform conditions whose user-visible symptom is a wrong business message.",
      "owner": "support/investigators/operations",
      "domain": "data-operations",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/kgas_pileup_not_proof_of_degradation.md",
        "memory/reference/anl_risk_model_cold_load_rpc_timeout.md",
        "memory/project/abacus_morning_rush_60s_timeouts.md",
        "memory/reference/car_price_ws_getpricebyvin_timeout.md",
        "memory/reference/kuha_polica_gfirm_timeout.md",
        "memory/reference/apigateway_endpoints_timeout_architecture.md",
        "memory/reference/insis_p_agents_replica_sync.md",
        "memory/reference/core_camunda_in_process_bottleneck.md"
      ],
      "evidence": "8 memory files; 'a data-shaped error is not proof of a data cause' recurs across all five recovery operations.",
      "evidence_row": null
    },
    {
      "id": "configuration.skill.normalization",
      "kind": "skill",
      "label": "Understand and reconcile product sources",
      "one_line": "Turn a specification into a validated product model, with the baselines and the blocking questions named.",
      "owner": "configuration.normalizer",
      "domain": "configuration",
      "status": "existing",
      "existing_ref": "configuration.skill.normalization",
      "seeds": [
        "knowledge/product_config_new_product.md",
        "knowledge/product_configuration.md",
        ".claude/skills/configure-product/skill.md",
        "memory/feedback/find_the_requirement_before_proposing_change.md"
      ],
      "evidence": "Configuration changes close in a median 9 days against 1 for a correction.",
      "evidence_row": null
    },
    {
      "id": "configuration.tool.product-validator",
      "kind": "tool",
      "label": "Product-model consistency checker",
      "one_line": "Check an authored product model against its schema, recount its members and resolve its cross-references.",
      "owner": "configuration.normalizer",
      "domain": "configuration",
      "status": "existing",
      "existing_ref": "configuration.tool.product-validator",
      "seeds": [
        "aisa-next/10 Architecture/20 Configuration/contracts/validate_product.py",
        "knowledge/product_config_new_product.md"
      ],
      "evidence": "Already an executable in the wiki's own contracts folder; it cannot confirm the source's meaning, only the model's self-consistency.",
      "evidence_row": null
    },
    {
      "id": "configuration.skill.product-build",
      "kind": "skill",
      "label": "Build a product from its specification",
      "one_line": "Propose the configuration parts a specification implies, agree the scope, then emit the ordered set, the acceptance script and the rollback.",
      "owner": "configuration.root",
      "domain": "configuration",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        ".claude/skills/configure-product/skill.md",
        "knowledge/product_config_new_product.md",
        "knowledge/product_configuration.md",
        "memory/reference/config_key_uniqueness_map.md",
        "memory/reference/dev_product_landscape.md"
      ],
      "evidence": "The v1 twelve-part build is the single largest skill in the workspace; v2 splits it across the five configuration stages, so this row records the seed rather than a new capability.",
      "evidence_row": null
    },
    {
      "id": "helper.config-diff",
      "kind": "tool",
      "label": "Target-aware configuration diff",
      "one_line": "Diff schema, rows, effective versions and consuming code for one configuration area between two targets.",
      "owner": "configuration.ipal.builder",
      "domain": "configuration",
      "status": "existing",
      "existing_ref": "helper.config-diff",
      "seeds": [
        "memory/feedback/note_incidental_config_diffs_dont_normalize.md",
        "memory/reference/config_key_uniqueness_map.md",
        "memory/reference/null_semantics_per_config_table.md",
        "memory/reference/config_surface_liveness_test.md",
        "knowledge/product_configuration.md"
      ],
      "evidence": "Serves 7 configuration operations in the inventory.",
      "evidence_row": null
    },
    {
      "id": "helper.numbering-preflight",
      "kind": "tool",
      "label": "Non-consuming numbering preflight",
      "one_line": "Check rows, sequence, grant, synonym, principal and collisions for a numbering configuration without consuming a number.",
      "owner": "configuration.serdica.builder",
      "domain": "configuration",
      "status": "existing",
      "existing_ref": "helper.numbering-preflight",
      "seeds": [
        "memory/reference/policy_no_generation.md",
        "memory/reference/manual_policy_no_preconsumes_sequence_collision.md",
        "memory/reference/seq_polno_office_script_superset.md",
        "memory/reference/policy_no_composition.md",
        "memory/reference/policy_no_office_frozen_at_first_transfer.md",
        "memory/reference/cargo_child_number_shared_series_collision.md"
      ],
      "evidence": "6 tickets asked / 14 analyses used; serves the numbering and the number-collision operations.",
      "evidence_row": 29
    },
    {
      "id": "configuration.tool.validation-cell-toggle",
      "kind": "tool",
      "label": "Validation threshold relax and revert",
      "one_line": "Capture the baseline of a validation cell, relax it for one bounded operation and revert it to the captured baseline.",
      "owner": "configuration.ipal.builder",
      "domain": "configuration",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/validation_threshold_temporary_relaxation.md",
        "memory/reference/field_validation_frameworks.md",
        "memory/feedback/validation_config_freshness.md",
        "memory/reference/cfg_manual_premium_control.md",
        "memory/feedback/check_abacus_layer_for_validations.md",
        "memory/reference/abacus_validation_pipeline.md",
        "memory/feedback/never_promote_config_ahead_of_evaluator.md"
      ],
      "evidence": "18 tickets asked / 41 analyses used; 4 holders. It is the clearest write-with-teardown in the corpus.",
      "evidence_row": 13
    },
    {
      "id": "configuration.tool.label-locate",
      "kind": "tool",
      "label": "Label, message and translation locator",
      "one_line": "Find which of the three text surfaces owns a displayed string and emit the per-language update for it.",
      "owner": "configuration.serdica.builder",
      "domain": "configuration",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/ipal_descr_link_chain.md",
        "memory/reference/ui_i18n_vs_sr_messages.md",
        "memory/reference/sr_messages_before_lt_doc_codes.md",
        "memory/reference/pricing_factor_dependent_display_label.md",
        "memory/reference/insys_messages_reins_79.md"
      ],
      "evidence": "12 tickets asked / 27 analyses used; 4 holders; shared with the configuration label sweep.",
      "evidence_row": 25
    },
    {
      "id": "configuration.tool.factor-value-add",
      "kind": "tool",
      "label": "Pricing factor and dependent-choice add",
      "one_line": "Add a factor value, and its dependency key where the factor is dependent, to every product that needs it, from the counterpart's source row.",
      "owner": "configuration.ipal.builder",
      "domain": "configuration",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/ipal_pricing_factor_framework.md",
        "memory/reference/abc_cfg_pricing_factors_mapping.md",
        "memory/reference/graphql_prpricingfactorvalues.md",
        "memory/reference/2215_home_add_dependent_lov_ui_gap.md",
        "memory/reference/pricing_factor_dependent_display_label.md"
      ],
      "evidence": "11 tickets asked / 42 analyses used; 4 holders; the flat-versus-dependent trap has its own memory file.",
      "evidence_row": 26
    },
    {
      "id": "configuration.tool.tariff-table-check",
      "kind": "tool",
      "label": "Official tariff table check",
      "one_line": "Check a computed premium against the transcribed official tariff matrix for the product, band by band.",
      "owner": "configuration.source_analyst",
      "domain": "configuration",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "knowledge/motor_tariff_2026.md",
        "memory/reference/4710_abacus_factor_defaults.md",
        "memory/reference/4704_casco_covers_factors.md",
        "memory/reference/4710_electric_vehicle_tariff_band_gap.md",
        "memory/reference/casco_no_claims_discount_years_based.md"
      ],
      "evidence": "The 2026 motor matrices are already transcribed as fixed tables; the source analyst is a profile denied a database, so a table it can read locally is exactly its instrument.",
      "evidence_row": null
    },
    {
      "id": "configuration.tool.print-doc-register",
      "kind": "tool",
      "label": "Registered document-set change",
      "one_line": "Add, remove or re-point a document registration for a product and prove the registration is what the print gate reads.",
      "owner": "configuration.serdica.builder",
      "domain": "configuration",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/cfg_print_docs_template_configuration.md",
        "memory/reference/pr_basic_product_documents_lov.md",
        "memory/reference/insis_print_configuration.md",
        "memory/reference/sr_docs_chain.md"
      ],
      "evidence": "4 memory files; the diagnostic side is covered by the print probe, the registration side is not.",
      "evidence_row": null
    },
    {
      "id": "configuration.article.config-surfaces",
      "kind": "article",
      "label": "Where product behaviour is configured",
      "one_line": "Every configuration surface across the three systems that decides how a product behaves, and which key is unique where.",
      "owner": "configuration",
      "domain": "configuration",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "knowledge/product_configuration.md",
        "knowledge/product_config_new_product.md",
        "memory/reference/config_key_uniqueness_map.md",
        "memory/reference/null_semantics_per_config_table.md",
        "memory/reference/config_surface_liveness_test.md",
        "knowledge/abacus_schema.md",
        "knowledge/abacus_engine_vs_abc_access_schema.md"
      ],
      "evidence": "7 knowledge/memory files; two of them exist only to stop the pricing engine and its resident schema being confused.",
      "evidence_row": null
    },
    {
      "id": "configuration.article.product-catalogue",
      "kind": "article",
      "label": "The products and what each one is made of",
      "one_line": "Per-product cover sets, factors, packages and known configuration gaps, product family by product family.",
      "owner": "configuration",
      "domain": "configuration",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/reference/4704_casco_covers_factors.md",
        "memory/reference/cargo_products.md",
        "memory/reference/product_1126.md",
        "memory/reference/marsh_3618_packages.md",
        "memory/reference/lb_offers_and_cover_rules.md",
        "memory/reference/dev_product_landscape.md",
        "memory/reference/travel_3618_iv_authority_ladder.md",
        "memory/reference/vessel_object_model_1126.md"
      ],
      "evidence": "Roughly 40 product-specific memory files; 8 are cited here as the shape of the node.",
      "evidence_row": null
    },
    {
      "id": "source.skill.plsql-change",
      "kind": "skill",
      "label": "Prepare a stored-code change",
      "one_line": "Snapshot the live body, take its content signature, merge three ways and make the signature a precondition of the apply.",
      "owner": "source.implementer.db-plsql",
      "domain": "source",
      "status": "existing",
      "existing_ref": "source.skill.plsql-change",
      "seeds": [
        "memory/feedback/db_resident_procedure_fix_workflow.md",
        "memory/reference/odp_net_plsql_bindbyname.md",
        "memory/feedback/db_comments_in_english.md",
        "memory/feedback/db_change_5step_commit_last.md"
      ],
      "evidence": "One of the three worked skill samples in the wiki; the workflow is written out in memory.",
      "evidence_row": null
    },
    {
      "id": "source.skill.release-audit",
      "kind": "skill",
      "label": "Check the serving release",
      "one_line": "Prove which revision is actually serving on a target, separating deploy noise from a stale build.",
      "owner": "source.deployer",
      "domain": "source",
      "status": "existing",
      "existing_ref": "source.skill.release-audit",
      "seeds": [
        "memory/reference/test_prod_release_audit.md",
        "memory/feedback/stack_line_numbers_prove_stale_build.md",
        "memory/reference/serdica_deploy_restart_noise_patterns.md",
        "memory/reference/serdica_backend_branch_per_env.md"
      ],
      "evidence": "4 memory files; the stale-build signature is a recurring false diagnosis.",
      "evidence_row": null
    },
    {
      "id": "source.skill.port",
      "kind": "skill",
      "label": "Port only the real delta",
      "one_line": "Compute the genuine difference between two branch heads and carry only that, checking the base commit first.",
      "owner": "source.deployer",
      "domain": "source",
      "status": "existing",
      "existing_ref": "source.skill.port",
      "seeds": [
        "memory/feedback/cross_branch_port_check_base_commit.md",
        "memory/feedback/merge_to_ancestor_branch_is_fast_forward.md",
        "memory/reference/serdica_branches.md",
        "memory/feedback/head_moved_under_you_recheck_source.md"
      ],
      "evidence": "4 memory files; the branch-per-environment flow makes this a step of every change.",
      "evidence_row": null
    },
    {
      "id": "source.tool.plsql-unwrap",
      "kind": "tool",
      "label": "Wrapped package source recovery",
      "one_line": "Return readable source for a stored package whose body is wrapped in the database, from the captured clear copies.",
      "owner": "common.db-extractor",
      "domain": "source",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/policyg_unwrapped_source.md",
        "memory/reference/gen_appl_pkg_unwrapped.md",
        "sql/ref/policyg.sql",
        "sql/ref/gen_appl_pkg.sql",
        "sql/ref/preminst_prod.sql",
        "sql/ref/gen_install_prod.sql"
      ],
      "evidence": "6 seeds; 11 further package bodies are spooled in the health knowledge base's own PL/SQL folder.",
      "evidence_row": null
    },
    {
      "id": "source.tool.error-to-throwsite",
      "kind": "tool",
      "label": "Error text to throw site",
      "one_line": "Map a displayed error string to its message id and from there to the exact throw site in stored code or backend source.",
      "owner": "source.planner",
      "domain": "source",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/ipal_error_message_to_throw_site.md",
        "memory/feedback/source_attribution_for_db_call_sites.md",
        "memory/feedback/disjunctive_error_template_third_source.md",
        "memory/reference/generic_error_check_object_values_first.md",
        "knowledge/transfer_pipeline.md",
        "memory/feedback/db_error_contract.md"
      ],
      "evidence": "6 seeds; the transfer pipeline document already carries line-numbered throw sites, which is the lookup table this tool needs.",
      "evidence_row": null
    },
    {
      "id": "source.tool.branch-delta",
      "kind": "tool",
      "label": "Branch delta and base-commit check",
      "one_line": "Compute the true delta between two branch heads, verify the base commit and refuse a port whose head moved.",
      "owner": "source.deployer",
      "domain": "source",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/cross_branch_port_check_base_commit.md",
        "memory/feedback/merge_to_ancestor_branch_is_fast_forward.md",
        "memory/feedback/head_moved_under_you_recheck_source.md",
        "memory/reference/gitlab_mr_creation_limits.md",
        "memory/reference/serdica_backend_branch_per_env.md"
      ],
      "evidence": "5 memory files; the mechanical half of the existing port skill.",
      "evidence_row": null
    },
    {
      "id": "source.article.backend-shape",
      "kind": "article",
      "label": "The backend's shape and its traps",
      "one_line": "The microservice topology, the authoritative compiled model, the mapping profiles and the construction traps.",
      "owner": "source/serdica-backend",
      "domain": "source",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "knowledge/microservice_topology.md",
        "memory/reference/ipal_service_topology.md",
        "memory/reference/serdica_compiled_ef_model_is_authoritative.md",
        "memory/reference/bstintegration_automapper_profiles.md",
        "memory/feedback/no_cross_microservice_references.md",
        "memory/reference/baseresult_exception_semantics.md",
        "memory/reference/activator_createinstance_exact_arity.md",
        "memory/reference/apigateway_endpoints_timeout_architecture.md"
      ],
      "evidence": "8 knowledge/memory files; the per-microservice child nodes are auto-created by the summarizer.",
      "evidence_row": null
    },
    {
      "id": "source.article.build-and-test",
      "kind": "article",
      "label": "Building, testing and running it locally",
      "one_line": "What it takes to build, seed, run and debug the estate's code on a developer machine, and where the toolchain breaks.",
      "owner": "source",
      "domain": "source",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/reference/serdica_scaffold_optimize_pipeline.md",
        "memory/reference/claims_local_run_pluginbinaries.md",
        "memory/reference/claims_plugin_host_service_exposure.md",
        "memory/feedback/serdica_inmemory_ef_test_seeding.md",
        "memory/feedback/lsp_diagnostics_unreliable_in_serdica_backend.md",
        "memory/reference/debian11_eol_breaks_riskmodel_docker_build.md",
        "memory/reference/gitlab_mr_creation_limits.md"
      ],
      "evidence": "7 memory files; one operation in the inventory is exactly 'repair a customer build or deployment dependency'.",
      "evidence_row": null
    },
    {
      "id": "source.article.db-estate",
      "kind": "article",
      "label": "The database estate and its packages",
      "one_line": "The schemas, tables and stored packages of both administrations, with the comment-versus-reality defects called out.",
      "owner": "source",
      "domain": "source",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "knowledge/ipal_schema.md",
        "knowledge/insis_schema.md",
        "knowledge/db_overview_and_improvements.md",
        "knowledge/db_packages.md",
        "knowledge/abacus_schema.md",
        "memory/reference/oracle_sql_gotchas.md",
        "memory/reference/sqlcl_cross_db_sql_quirks.md",
        "memory/reference/insis_sequences_per_table.md"
      ],
      "evidence": "8 knowledge/memory files covering 7 schemas, 210 tables and 95 packages.",
      "evidence_row": null
    },
    {
      "id": "commercial.skill.assess-effort",
      "kind": "skill",
      "label": "Assess required work and effort",
      "one_line": "Investigate what a request would take through read-only evidence and record the range, dependencies, exclusions and uncertainty.",
      "owner": "commercial.assessor",
      "domain": "commercial",
      "status": "existing",
      "existing_ref": "commercial.skill.assess-effort",
      "seeds": [
        "knowledge/support_contract_bg.md",
        "memory/reference/support_contract_custom_en.md",
        "memory/feedback/insis_change_request.md"
      ],
      "evidence": "22 of 485 tickets are CR candidates; three operations in the inventory route to assessment rather than delivery.",
      "evidence_row": null
    },
    {
      "id": "commercial.tool.effort-comparable",
      "kind": "tool",
      "label": "Comparable-work lookup for an estimate",
      "one_line": "Find past cases of the same shape and return their recorded effort and outcome as the comparables behind an estimate.",
      "owner": "commercial.assessor",
      "domain": "commercial",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "scripts/mine_tickets_classify.py",
        "scripts/mine_tickets_timing.py",
        "memory/reference/kb_memory_vs_rediscovery_cost.md",
        "aisa-next/10 Architecture/40 Support/Operational Method Evidence.md"
      ],
      "evidence": "The mining scripts that produced the measured catalogue already exist; 185 reliable timings against 230 human estimates.",
      "evidence_row": null
    },
    {
      "id": "commercial.tool.integration-sample-pack",
      "kind": "tool",
      "label": "Partner integration sample pack",
      "one_line": "Emit a partner-ready request and response set for one product from what the product declares, with the pricing factors listed.",
      "owner": "commercial.assessor",
      "domain": "commercial",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/register_policy_dto.md",
        "memory/reference/register_policy_one_shot_from_db.md",
        "memory/reference/graphql_prpricingfactorvalues.md",
        ".claude/skills/bulsi/skill.md",
        "memory/reference/4710_abacus_factor_defaults.md",
        "memory/reference/bul_si_integration_partner.md"
      ],
      "evidence": "6 seeds; one live partner engagement drove all of them and the one-shot builder is already written out.",
      "evidence_row": null
    },
    {
      "id": "commercial.article.partner-engagement",
      "kind": "article",
      "label": "How a partner integration is run",
      "one_line": "What a third-party developer needs, what may be shared, and the discipline of answering a partner's question.",
      "owner": "commercial",
      "domain": "commercial",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        ".claude/skills/bulsi/skill.md",
        "memory/reference/bul_si_integration_partner.md",
        "memory/feedback/bulsi_engagement_workflow.md",
        "memory/feedback/partner_engagement_discipline.md",
        "memory/feedback/verify_bulsi_mechanics_before_asserting.md",
        "memory/feedback/no_modify_partner_shared_content.md",
        "memory/reference/bulsi_3636_premium_rounding_363626001199130.md"
      ],
      "evidence": "7 memory files and one v1 skill from a single partner engagement.",
      "evidence_row": null
    },
    {
      "id": "common.tool.aisa-jira",
      "kind": "tool",
      "label": "Ticket-system client",
      "one_line": "Fetch, search, comment, attach, tag and transition tickets from the command line, with a double-post guard on internal notes.",
      "owner": "common.communicator",
      "domain": "common",
      "status": "existing",
      "existing_ref": "common.tool.aisa-jira",
      "seeds": [
        "tools/aisa-jira/README.md",
        "memory/feedback/jira_via_aisa_jira_cli.md",
        "memory/feedback/aisa_internal_comment_single_per_ticket.md",
        "memory/reference/jira_attachment_fetch.md"
      ],
      "evidence": "Source and a Release build exist; no build is present at the publish path every skill names.",
      "evidence_row": null
    },
    {
      "id": "common.tool.aisa-mail",
      "kind": "tool",
      "label": "Mailbox archival client",
      "one_line": "Sync, slice and extract mail threads from the shared mailbox with a body slicer and inline-answer detection.",
      "owner": "common.communicator",
      "domain": "common",
      "status": "existing",
      "existing_ref": "common.tool.aisa-mail",
      "seeds": [
        "tools/aisa-mail/README.md",
        "memory/reference/aisa_mail_cli.md",
        "memory/feedback/email_analysis_aisa_mail_first.md",
        "memory/reference/ms_graph_cli_email_fetch_workflow.md"
      ],
      "evidence": "Recorded as roughly a 95 % token reduction against the connector for bulk archival.",
      "evidence_row": null
    },
    {
      "id": "common.tool.aisa-hdesk",
      "kind": "tool",
      "label": "Customer helpdesk client",
      "one_line": "Authenticate, fetch and sync tickets from the customer's own helpdesk and hand them to the ticket system.",
      "owner": "support.root",
      "domain": "common",
      "status": "existing",
      "existing_ref": "common.tool.aisa-hdesk",
      "seeds": [
        "tools/aisa-hdesk/README.md",
        "memory/reference/aisa_hdesk_cli.md",
        "memory/reference/windows_dpapi_credential_cache.md"
      ],
      "evidence": "Source only; no build output exists in the checkout at all.",
      "evidence_row": null
    },
    {
      "id": "common.tool.kibana-trace",
      "kind": "tool",
      "label": "Log trace by request, policy or user",
      "one_line": "Query the environment's log stack for one request id, policy or user and return the ordered error chain as evidence.",
      "owner": "common.db-prober",
      "domain": "common",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/kibana_log_access.md",
        "memory/feedback/kibana_guid_to_operator_via_requestid.md",
        "memory/feedback/kibana_batch_response_printdocs_array.md",
        "memory/feedback/access_login_pair_db_with_kibana.md",
        "memory/feedback/db_trace_authoritative_over_net_log.md"
      ],
      "evidence": "45 tickets asked / 45 analyses used; 162 → 131 h; the thinnest large shape, 2 holders and an 87 % lead share.",
      "evidence_row": 4
    },
    {
      "id": "common.tool.attachment-fetch",
      "kind": "tool",
      "label": "Attachment normaliser",
      "one_line": "Take an attachment from any arrival channel and return its text, its metadata and its embedded images as case papers.",
      "owner": "common.communicator",
      "domain": "common",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/jira_attachment_fetch.md",
        "memory/reference/outlook_attachment_fetch.md",
        "memory/reference/local_msg_extraction.md",
        "memory/reference/jira_video_attachment_frame_extraction.md",
        "memory/reference/office_docs_read_and_render.md",
        "memory/reference/bulk_document_extraction_windows.md",
        "tools/email-extractor/README.md"
      ],
      "evidence": "7 seeds across three channels; the legacy extractor is retained precisely because no single normaliser exists.",
      "evidence_row": null
    },
    {
      "id": "common.tool.case-corpus-mine",
      "kind": "tool",
      "label": "Case-archive miner",
      "one_line": "Walk the case archive and emit the per-shape counts, effort classes, holders and timings that rank the capability list.",
      "owner": "common.experience-curator",
      "domain": "common",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "scripts/mine_tickets_extract.py",
        "scripts/mine_tickets_classify.py",
        "scripts/mine_tickets_holders.py",
        "scripts/mine_tickets_timing.py",
        "scripts/analyze_tickets.py"
      ],
      "evidence": "Five working scripts; they produced every measured number the capability catalogues rank on.",
      "evidence_row": null
    },
    {
      "id": "common.tool.memory-index-check",
      "kind": "tool",
      "label": "Memory index integrity check",
      "one_line": "Verify that every index entry resolves to a node, every node is indexed and no description contradicts its file.",
      "owner": "common.experience-curator",
      "domain": "common",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "scripts/audit-knowledge.ps1",
        "memory/feedback/memory_system_maintenance.md",
        "memory/feedback/one_description_per_thing.md",
        "memory/feedback/name_pattern_with_plain_description.md"
      ],
      "evidence": "A link-integrity gate already exists for the file-based corpus; 565 memory files and 27 knowledge files depend on it.",
      "evidence_row": null
    },
    {
      "id": "common.tool.bg-style-lint",
      "kind": "tool",
      "label": "Outbound Bulgarian text lint",
      "one_line": "Check a drafted reply against the recorded terminology, currency, date and enumeration rules before it is sent.",
      "owner": "common.communicator",
      "domain": "common",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/bg_prose_style.md",
        "memory/feedback/bg_made_up_words.md",
        "memory/feedback/polica_vs_policy_terminology.md",
        "memory/feedback/product_4710_terminology.md",
        "memory/feedback/latin_letters_for_enumerations.md",
        "memory/feedback/currency_display.md",
        "memory/feedback/date_format_convention.md",
        "memory/feedback/bulstrad_life_full_name.md",
        "memory/feedback/product_names_from_insis.md",
        "memory/feedback/joro_zhoro_disambiguation.md"
      ],
      "evidence": "10 feedback files, each recording a correction the customer or the user made to outbound text.",
      "evidence_row": null
    },
    {
      "id": "common.skill.experience",
      "kind": "skill",
      "label": "Retrieve and judge experience for this task",
      "one_line": "Select compatible past cases and knowledge for the task at hand and decide whether they still apply.",
      "owner": "common.experience-curator",
      "domain": "common",
      "status": "existing",
      "existing_ref": "common.skill.experience",
      "seeds": [
        "memory/reference/kb_memory_vs_rediscovery_cost.md",
        "memory/feedback/cross_check_and_reanalysis.md",
        "KNOWN_ISSUES.md",
        "scripts/triage_baseline.py"
      ],
      "evidence": "Cached knowledge measured at 10-60x cheaper and 30-300x faster than rediscovery.",
      "evidence_row": null
    },
    {
      "id": "common.skill.retained-learning",
      "kind": "skill",
      "label": "Retain and improve a capability",
      "one_line": "Turn what a case taught into the memory entry, the amended procedure and the executable that stops the next case relearning it.",
      "owner": "common.experience-curator",
      "domain": "common",
      "status": "existing",
      "existing_ref": "common.skill.retained-learning",
      "seeds": [
        "memory/feedback/propagate_learnings_after_ticket.md",
        "memory/feedback/auto_update_knowledge.md",
        "memory/feedback/memory_system_maintenance.md",
        "memory/feedback/recurring_manual_fix_escalate_to_config.md",
        "memory/feedback/durable_fix_over_comment.md"
      ],
      "evidence": "5 feedback files; the pain point this addresses is stated as the reason for the whole precipitation stage.",
      "evidence_row": null
    },
    {
      "id": "common.article.evidence-discipline",
      "kind": "article",
      "label": "Evidence discipline",
      "one_line": "Verify rather than infer: what counts as a finding, what a failed probe means and how a baseline is chosen.",
      "owner": "support/methodologies",
      "domain": "common",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/verify_dont_guess.md",
        "memory/feedback/failed_probe_is_not_a_finding.md",
        "memory/feedback/cross_check_and_reanalysis.md",
        "memory/feedback/db_investigation_discipline.md",
        "memory/feedback/baseline_same_state_peer_not_end_state.md",
        "memory/feedback/ui_panel_zero_not_evidence_of_absence.md",
        "memory/feedback/dont_infer_clobber_from_snapshot_delta.md",
        "memory/feedback/dont_infer_staleness_from_format.md",
        "memory/feedback/no_endpoint_is_not_no_writer.md",
        "memory/feedback/dont_over_interpret_warning_level_retry_noise.md"
      ],
      "evidence": "Roughly 25 feedback files; 6 of the 13 rows of the inherited methodology catalog belong to this family.",
      "evidence_row": null
    },
    {
      "id": "common.article.write-discipline",
      "kind": "article",
      "label": "Write and remedy discipline",
      "one_line": "How a change to live data is shown, applied, verified and committed, and when a workaround is preferred to a repair.",
      "owner": "support/methodologies",
      "domain": "common",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/db_change_5step_commit_last.md",
        "memory/feedback/strict_read_only_no_rollback.md",
        "memory/feedback/confirm_before_destructive_actions.md",
        "memory/feedback/operator_sql_complete_first_pass.md",
        "memory/feedback/offticket_policy_changes_need_approval.md",
        "memory/feedback/insis_dml_executor_and_username.md",
        "memory/feedback/transient_vs_structural_fix.md",
        "memory/feedback/prefer_return_to_application_for_dual_system_corrections.md",
        "memory/feedback/prefer_path_a_when_no_regulatory_tie.md",
        "memory/feedback/decouple_over_delete.md",
        "memory/feedback/temp_tables.md"
      ],
      "evidence": "Roughly 20 feedback files; 220 of 333 analyses end in a database write, which is what this family governs.",
      "evidence_row": null
    },
    {
      "id": "common.article.precipitation-discipline",
      "kind": "article",
      "label": "Precipitation discipline",
      "one_line": "When a finding becomes a memory entry, a register row or an escalation, and how the closing walk is reconciled.",
      "owner": "support/methodologies",
      "domain": "common",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/propagate_learnings_after_ticket.md",
        "memory/feedback/auto_update_knowledge.md",
        "memory/feedback/maintain_known_issues_register.md",
        "memory/feedback/memory_system_maintenance.md",
        "memory/feedback/one_description_per_thing.md",
        "memory/reference/kb_memory_vs_rediscovery_cost.md",
        "memory/feedback/aisa_self_discipline_at_write_time.md"
      ],
      "evidence": "7 feedback files; the 20.05.2026 audit measured these very rules failing at author time.",
      "evidence_row": null
    },
    {
      "id": "common.article.channel-practice",
      "kind": "article",
      "label": "Channel practice",
      "one_line": "How each arrival channel behaves, what it hides and what must be scanned before a cause is proposed.",
      "owner": "platform/connectors",
      "domain": "common",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/scan_mailbox_and_microservice_logs_per_subject.md",
        "memory/feedback/cross_channel_correlation.md",
        "memory/reference/email_archive_convention.md",
        "memory/feedback/jira_adf_date_node_invisible_in_list.md",
        "memory/reference/hdesk_jira_provenance_staleness_check.md",
        "memory/feedback/non_bulsi_emails_archive_to_emails_dir.md"
      ],
      "evidence": "6 memory files; the step-zero cross-channel scan is one of the 13 inherited methodology rows.",
      "evidence_row": null
    },
    {
      "id": "platform.article.environment-registry",
      "kind": "article",
      "label": "The environments and how they are addressed",
      "one_line": "Which target is which, the two addresses every database host answers on, and the default environment per kind of work.",
      "owner": "platform",
      "domain": "common",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/reference/db_host_dual_address.md",
        "memory/project/sqlcl_connections_state.md",
        "memory/reference/serdica_backend_branch_per_env.md",
        "memory/reference/bst_dev_env_and_product_8000_generation.md",
        "memory/feedback/verify_prod_object_state_on_prod_connection.md",
        "memory/feedback/work_directly_on_bulstrad_qa.md",
        "memory/feedback/qa_data_volatile_not_ground_truth.md",
        ".claude/skills/workspace-initialize/skill.md"
      ],
      "evidence": "8 seeds; 'environment defaults' is one of the 13 inherited methodology rows and the dual address has its own file.",
      "evidence_row": null
    },
    {
      "id": "platform.article.data-protection",
      "kind": "article",
      "label": "Personal data and secrets",
      "one_line": "What may not enter a stored note, how credentials are held and how a synthetic identifier is made for a test.",
      "owner": "platform",
      "domain": "common",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/gdpr_no_customer_pii_in_memory.md",
        "memory/feedback/secrets_discipline.md",
        "memory/reference/windows_dpapi_credential_cache.md",
        "memory/reference/egn_synthetic_generation_rules.md",
        "memory/reference/ablera_test_accounts.md",
        "memory/feedback/anthropic_api_call_credential_path.md"
      ],
      "evidence": "6 memory files; the synthetic-identifier rules are precise enough to be an executable generator on their own.",
      "evidence_row": null
    },
    {
      "id": "support.investigator.operations",
      "kind": "agent",
      "label": "Operations and infrastructure investigator",
      "one_line": "Investigate a symptom whose cause is the platform rather than the data: exhausted storage, blocked sessions, a halted process, a frozen replica.",
      "owner": "support.investigator.operations",
      "domain": "data-operations",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "memory/reference/insis_tablespace_exhaustion_transfer_halt.md",
        "memory/reference/orphaned_dblink_session_transfer_backlog.md",
        "memory/reference/ssh_mcp_cli.md",
        "memory/reference/insis_session_caps_serdica_ablera.md",
        "memory/reference/rabbitmq_qa_management_access.md",
        "memory/feedback/shared_infra_attribution.md",
        "memory/project/db_transfer_timeouts.md"
      ],
      "evidence": "5 operations in the inventory carry the operational-recovery domain and are all assigned to the transfer investigator today; the shell connector they need is not read-only.",
      "evidence_row": null
    },
    {
      "id": "workspace.tool.analysis-render",
      "kind": "tool",
      "label": "Ticket analysis HTML renderer",
      "one_line": "Inline the shared stylesheet, script and clause library into a written analysis page and compute its asset depth.",
      "owner": "workspace",
      "domain": "workspace",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "scripts/finalize_analysis.ps1",
        "memory/feedback/ticket_analysis.md",
        "memory/feedback/html_ticket_style.md",
        "tools/analysis-assets/aisa_analysis.css",
        ".claude/skills/_shared/ticket_analysis_template.html"
      ],
      "evidence": "The v2 case record replaces the artefact this renders; the renderer serves the file-based workspace only.",
      "evidence_row": null
    },
    {
      "id": "workspace.skill.archive-discussion",
      "kind": "skill",
      "label": "Archive a discussion thread",
      "one_line": "Turn a non-incident thread into a self-contained browsable archive with every source file cited and openable.",
      "owner": "workspace",
      "domain": "workspace",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        ".claude/skills/archive-discussion/skill.md",
        "memory/reference/others_archive_convention.md",
        "memory/reference/email_archive_convention.md",
        "memory/feedback/discussion_vs_issue_analysis_format.md",
        "memory/reference/analysis_format_parity_jira_email_others.md"
      ],
      "evidence": "In v2 a thread is a case paper, so the archive format itself is not a runtime capability.",
      "evidence_row": null
    },
    {
      "id": "workspace.skill.design-docs",
      "kind": "skill",
      "label": "Produce a design or specification suite",
      "one_line": "Run an approval-gated build of a numbered specification suite or a combined design document with a running log.",
      "owner": "workspace",
      "domain": "workspace",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        ".claude/skills/design-docs/skill.md",
        "memory/reference/design_document_suite_convention.md",
        "memory/reference/readme_html_ceo_doc_trio.md",
        "memory/reference/mermaid_offline_inline_svg.md"
      ],
      "evidence": "Authoring, not operating; the estate's own change documents are Development module outputs.",
      "evidence_row": null
    },
    {
      "id": "workspace.tool.token-audit",
      "kind": "tool",
      "label": "Assistant configuration token audit",
      "one_line": "Measure prompt load, tool surface, model switches and the cache split of an assistant configuration and rank the waste.",
      "owner": "workspace",
      "domain": "workspace",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        ".claude/skills/token-audit/skill.md",
        "memory/user/optimization_philosophy.md",
        "memory/feedback/aisa_disconnect_idle_mcp_sessions.md",
        "memory/feedback/subagent_session_limit_check_disk_first.md"
      ],
      "evidence": "Superseded in v2 by the ledger, which records provider usage as a fact rather than a measured audit.",
      "evidence_row": null
    },
    {
      "id": "workspace.tool.wiki-gate",
      "kind": "tool",
      "label": "Documentation convention gate",
      "one_line": "Check the design wiki's links, tags, sources and reachability and regenerate its open-item register.",
      "owner": "workspace",
      "domain": "workspace",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "scripts/wiki_check.ps1",
        "scripts/wiki_challenges.ps1",
        "memory/feedback/aisa_next_documentation_style.md",
        "memory/feedback/md_heading_anchors_no_emoji.md"
      ],
      "evidence": "Serves this wiki, not the runtime; its memory-tree cousin is listed as a runtime candidate separately.",
      "evidence_row": null
    },
    {
      "id": "workspace.tool.hdesk-offline-viewer",
      "kind": "tool",
      "label": "Offline helpdesk ticket viewer",
      "one_line": "Generate a dependency-free local viewer and a dated queue report for the cached helpdesk tickets.",
      "owner": "workspace",
      "domain": "workspace",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        "hdesk/scripts/gen_cached_views.ps1",
        "hdesk/scripts/gen_status.ps1",
        "memory/feedback/hdesk_current_status_html.md",
        "memory/reference/offline_local_html_viewer.md"
      ],
      "evidence": "A cache-browsing convenience; in v2 the helpdesk is a connector and its tickets are cases.",
      "evidence_row": null
    },
    {
      "id": "workspace.skill.workspace-initialize",
      "kind": "skill",
      "label": "Set the workspace up",
      "one_line": "Check the runtime prerequisites, install the database client, register the named connections and prebuild the channel clients.",
      "owner": "workspace",
      "domain": "workspace",
      "status": "candidate",
      "existing_ref": null,
      "seeds": [
        ".claude/skills/workspace-initialize/skill.md",
        "memory/project/workspace_tooling_state_2026_06.md",
        "memory/project/sqlcl_connections_state.md",
        "memory/reference/claude_settings_layout.md"
      ],
      "evidence": "Deterministic provisioning of one operator's machine; v2 provisions connectors centrally.",
      "evidence_row": null
    },
    {
      "id": "workspace.article.authoring-conventions",
      "kind": "article",
      "label": "Authoring conventions",
      "one_line": "How this workspace's own documents, diagrams, citations and commits are written.",
      "owner": "workspace",
      "domain": "workspace",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/aisa_next_documentation_style.md",
        "memory/reference/mermaid_er_sequence_label_rules.md",
        "memory/reference/mermaid_class_name_collisions.md",
        "memory/reference/mermaid_gantt_syntax.md",
        "memory/feedback/cite_source_document_small_text.md",
        "memory/feedback/cite_attachments_with_filesystem_link.md",
        "memory/feedback/commit_messages_no_wrap.md",
        "memory/feedback/git_commit_only_on_request.md",
        "memory/feedback/docs_folder_for_on_request_documentation.md"
      ],
      "evidence": "Roughly 25 feedback and reference files about writing, diagramming and committing in this repository.",
      "evidence_row": null
    },
    {
      "id": "workspace.article.host-platform",
      "kind": "article",
      "label": "The host platform's quirks",
      "one_line": "Shell, encoding, path and tooling behaviour of the machine this workspace runs on.",
      "owner": "workspace",
      "domain": "workspace",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/feedback/no_python_for_text_on_windows.md",
        "memory/feedback/console_utf8_codepage.md",
        "memory/reference/git_bash_windows_path_conversion.md",
        "memory/feedback/transient_files_in_tmp.md",
        "memory/feedback/cli_diagnostics_to_stdout.md",
        "memory/feedback/tools_dir_matches_binary_name.md",
        "memory/feedback/script_and_naming_discipline.md",
        "memory/reference/winforms_layout_traps_and_offscreen_check.md"
      ],
      "evidence": "8 feedback and reference files that exist only because the operator machine is a Windows box.",
      "evidence_row": null
    },
    {
      "id": "workspace.article.assistant-operation",
      "kind": "article",
      "label": "Operating the assistant itself",
      "one_line": "How this assistant's own configuration, sessions, connectors and identity are handled.",
      "owner": "workspace",
      "domain": "workspace",
      "status": "article",
      "existing_ref": null,
      "seeds": [
        "memory/user/aisa_agent_identity.md",
        "memory/user/profile.md",
        "memory/user/optimization_philosophy.md",
        "memory/feedback/claude_md_import_syntax.md",
        "memory/reference/claude_settings_layout.md",
        "memory/reference/claude_session_url_to_local_transcript.md",
        "memory/feedback/sqlcl_mcp_run_sql_silent_failure.md",
        "memory/reference/sqlcl_cli_batch_mining.md"
      ],
      "evidence": "The three user files plus 10-odd assistant-operation files; superseded by the platform's own profile and runtime.",
      "evidence_row": null
    }
  ]
}
