{
  "chat_uuid": "e9b3b980-e339-424f-84f9-451d649de3fa",
  "history": [
    {
      "content": "You have received three files: the ATWL specification, which defines a formal language for representing visual analytics workflows; an example workflow expressed in ATWL; and a document titled ATWL Library: Titles and ATWL Representations, which contains 53 visual analytics workflows drawn from the published research literature, each formalised in ATWL. The library was curated by our research group.\n\nPlease read all three carefully before we proceed.\n\nThe ATWL specification describes the language's artifact types, transform intents, actor designations, loop constructs, and syntax. The example workflow illustrates how these elements are used together to describe a specific visual analytics process. Note that the example represents one type of workflow among many possible; its specific analytical structure reflects its particular task and should not be treated as a template that must be followed for other tasks. What the example illustrates is how the language is used — the syntax, the vocabulary, and the conventions for organising artifacts, transforms, and loops.\n\nThe library is a resource of formalised workflows that you may consult when designing your recommendation. Each library workflow addresses a specific analytical problem in a specific domain. You may draw on the library to identify workflow structures, iteration patterns, artifact typing conventions, or methodological approaches that could inform your recommendation for the target task. You may combine elements from multiple library workflows, adapt them, or design new elements as the task requires. You are not obliged to use the library, but you should treat it as a substantive source of design ideas.\n\nIn the next message I will describe a specific visual analytics design task. Your job will be to design an analytical workflow that addresses the task, and to express your recommendation both in natural language (for readability) and in ATWL (for structural precision). The natural-language description should explain the analytical logic of the workflow; the ATWL representation should formally specify the artifacts, transforms, loops, actors, and control flow. Where you draw on specific library workflows, please cite them by name so the sources of your recommendation are traceable.\n\nBefore we proceed, could you briefly confirm that you have absorbed the specification, the example, and the library, and let me know if you have any questions about the language, the syntax, or the library before the task is described?",
      "role": "user"
    },
    {
      "content": "<think>**Confirming understanding**\n\nI need to confirm that I’ve understood the received text and clarify that there aren’t any questions. The user is asking for a brief confirmation in English. I'll mention that I reviewed the sources, including the 53 libraries, noting that the document content might be truncated. They provided a large amount of content, but I should state that I’m ready to proceed and will cite exact names when necessary.</think>\n\nConfirmed. I have reviewed the ATWL specification, the HITL example workflow, and the curated workflow library.\n\nI understand the artifact types, transform intents, actors, arrangements, visualisations, patterns/models/knowledge/specifications, assignments, loops, and conditionals. I will use the example as a syntax and modelling convention reference—not as a mandatory analytical template—and will draw on and cite named library workflows where relevant.\n\nI have no questions at this stage and am ready for the design task.",
      "role": "assistant"
    },
    {
      "content": "The IEEE VIS conferences (Vis, InfoVis, VAST, SciVis) have accumulated 3596 papers between 1990 and 2024. Each paper record contains the list of authors, publication year, title, abstract, keywords, and citations. Author names have been disambiguated against DBLP (unique author identifiers are provided alongside the raw name strings).\n\nA research analyst studying the intellectual structure of the visualization community wants to identify the major communities of collaborating researchers and characterise how they have evolved. The analyst expects that a community typically has a relatively stable core of leading researchers who continue collaborating across many years, while other members may move between communities over time or contribute to several communities simultaneously. Each community should also be associated with its major research foci — the topics or problem areas that characterise its work.\n\nThe analyst wants to answer questions such as: how many distinct communities can be identified? How stable is each community's core, and who are its leaders? What are its main research foci, and how have they evolved? How does membership overlap between communities, and how does it change over time? Do communities merge, split, or dissolve, and if so, when and why?\n\nThe analyst will need to inspect intermediate results visually and use domain knowledge to interpret patterns and make judgements at each stage.\n\nDesign an analytical workflow for this problem.",
      "role": "user"
    },
    {
      "content": "## Recommended analytical workflow\n\nThe workflow treats the corpus as a **dynamic, overlapping co-authorship network** enriched with paper-level topical content. It deliberately distinguishes:\n\n- **Communities:** groups inferred from recurring collaboration structure, with authors allowed to belong to multiple communities.\n- **Core and leaders:** authors with persistent, central membership within a community—not merely highly cited or prolific authors.\n- **Research foci:** topic distributions derived from titles, abstracts, and keywords, then aggregated for each community and time period.\n- **Evolution:** continuity, overlap, membership flows, and structural events such as merges, splits, emergence, and dissolution.\n\nThe analyst first creates annual or rolling multi-year co-authorship-network snapshots from disambiguated author IDs. A dynamic overlapping-community model then identifies communities while preserving membership strengths across time. The analyst iteratively evaluates whether the detected communities are structurally coherent, temporally plausible, and interpretable; they can adjust temporal resolution, community-resolution settings, overlap thresholds, and persistence regularisation.\n\nIn parallel, a topic model derives paper-level research-focus vectors from textual metadata. The analyst checks topic coherence and revises topic-model settings where necessary. Community-level topic profiles are then obtained by aggregating the papers and authors associated with each community in each time period.\n\nThe central visual interface combines:\n\n1. **Temporal community evolution view:** alluvial/lineage view showing communities over time, member retention, merges, splits, emergence, and dissolution.\n2. **Community network view:** node-link or NodeTrix-style view of selected community members and inter-community overlaps.\n3. **Membership and leadership view:** ranked persistent-core members, bridge authors, centrality, productivity, citations, and membership strengths.\n4. **Topic evolution view:** topic-by-community heatmaps and temporal profiles, linked to representative papers.\n5. **Evidence view:** selected papers, abstracts, keywords, citation links, and author histories supporting interpretation.\n\nThe analyst iteratively selects suspicious or important transitions—such as a split, merger, or loss of a core—and investigates associated author movements and changes in topic distributions. This supports explaining *when* a change occurred, *which authors* drove it, and *why* it may have occurred substantively.\n\nThis design draws particularly on:\n\n- **Dynamic Network Exploration / “Reducing Snapshots to Points”** for snapshot-based dynamic-network representations and temporal structural exploration.\n- **NodeTrix / “Hybrid Network Community Analysis”** for inspecting dense communities while retaining inter-community links and bridge actors.\n- **Human-Steered Topic Modelling / “Interactive Topic Modeling”** for iterative evaluation and refinement of interpretable research topics.\n- **EventThread Analysis** for representing branching, merging, and evolving group structures over time.\n- **Cluster-calendar workflow** for analyst-guided refinement of clustering parameters and interpretability assessment.\n\n---\n\n## ATWL representation\n\n```atwl\nworkflow ieee-vis-community-evolution-analysis\n\n  template: define-unit (authors and temporal networks) →\n            characterise (network and text features) →\n            loop(build-model (overlapping communities) →\n                 define-unit (infer communities) →\n                 build-model (topics) →\n                 characterise (community profiles) →\n                 contextualise → visualise →\n                 abstract → assess →\n                 generate-knowledge (refine specifications)) →\n            contextualise → visualise →\n            loop(abstract → define-unit (select transition) →\n                 visualise → abstract → assess) →\n            generate-knowledge\n\n  description: \"Identify, characterise, validate, and explain the evolution\n    of overlapping research communities in IEEE VIS publications from\n    1990–2024. Communities are inferred from dynamic co-authorship\n    structure, linked to research topics derived from paper text, and\n    interpreted through coordinated visual exploration.\"\n\n# ============================================================================\n# INPUT\n# ============================================================================\n\nartifact D_papers : entities\n  origin: given\n  internal structure: elementary\n  embedment: time\n  features:\n    - id: f_paper_id\n      value structure: atomic\n      value type: reference\n      description: \"Unique paper identifier\"\n    - id: f_year\n      value structure: atomic\n      value type: temporal\n      description: \"Publication year, 1990–2024\"\n    - id: f_authors\n      value structure: list\n      value type: reference\n      description: \"Disambiguated DBLP author identifiers with raw name strings\"\n    - id: f_title\n      value structure: atomic\n      value type: text\n      description: \"Paper title\"\n    - id: f_abstract\n      value structure: atomic\n      value type: text\n      description: \"Paper abstract\"\n    - id: f_keywords\n      value structure: list\n      value type: text\n      description: \"Author- and venue-provided keywords\"\n    - id: f_citations\n      value structure: list\n      value type: reference\n      description: \"Cited paper identifiers\"\n  description: \"IEEE VIS, InfoVis, VAST, and SciVis papers published between\n    1990 and 2024, with disambiguated author identities, bibliographic text,\n    keywords, and citation information\"\n\nartifact S_temporal_network : specification\n  origin: given\n  representation form: \"temporal-network construction parameters\"\n  description: \"Initial choice of annual or rolling multi-year windows,\n    edge weighting rule (e.g., co-authored-paper count with recency decay),\n    minimum activity threshold, and inclusion of citation-derived relations\"\n\nartifact S_community_model : specification\n  origin: given\n  representation form: \"dynamic overlapping-community model parameters\"\n  description: \"Initial settings for number or resolution of communities,\n    overlap regularisation, temporal persistence regularisation, minimum\n    membership strength, lineage matching threshold, and core-member\n    persistence threshold\"\n\nartifact S_topic_model : specification\n  origin: given\n  representation form: \"topic-model parameters\"\n  description: \"Initial topic count, text preprocessing, term weighting,\n    use of title/abstract/keywords, and topic-coherence criteria\"\n\nartifact K_domain_context : knowledge(D_papers)\n  origin: given\n  representation form: \"domain annotations and interpretation notes\"\n  description: \"Analyst knowledge about visualization research areas,\n    historically important venues, known research programs, institutions,\n    and potentially meaningful author or topic changes\"\n\n# ============================================================================\n# STEP 1: DEFINE AUTHORS AND TEMPORAL CO-AUTHORSHIP NETWORKS\n# ============================================================================\n\ntransform T_define_authors :\n  intent: define-unit\n  manner: \"group papers by disambiguated author identifier\"\n  input: D_papers\n  output: D_authors\n  actor: machine\n  description: \"Create one author entity per DBLP-disambiguated identifier,\n    retaining links to authored papers and activity history\"\n\nartifact D_authors : entities\n  internal structure: elementary\n  embedment: set\n  features:\n    - id: f_author_id\n      value structure: atomic\n      value type: reference\n      description: \"Disambiguated DBLP author identifier\"\n    - id: f_raw_names\n      value structure: list\n      value type: text\n      description: \"Observed raw author-name strings\"\n    - id: f_authored_papers\n      value structure: list\n      value type: reference\n      description: \"Papers authored by this researcher\"\n    - id: f_active_years\n      value structure: list\n      value type: temporal\n      description: \"Publication years in the IEEE VIS corpus\"\n  description: \"Unique visualization-community researchers identified through\n    DBLP-based author disambiguation\"\n\ntransform T_construct_networks :\n  intent: define-unit\n  manner: \"time-partitioning and co-authorship-network aggregation\"\n  input: D_papers, D_authors, S_temporal_network\n  output: D_network_snapshots\n  actor: machine\n  description: \"Construct annual or rolling-window weighted co-authorship\n    network snapshots; nodes are active authors and edges represent\n    collaboration strength\"\n\nartifact D_network_snapshots : entities\n  internal structure: formation\n  embedment: time\n  features:\n    - id: f_coauthor_edges\n      value structure: relational configuration\n      value type: {reference, numeric}\n      description: \"Weighted co-authorship graph for each temporal snapshot\"\n    - id: f_active_authors\n      value structure: list\n      value type: reference\n      description: \"Authors active in the snapshot window\"\n    - id: f_snapshot_period\n      value structure: atomic\n      value type: temporal\n      description: \"Year or rolling time-window interval\"\n  description: \"Temporal sequence of weighted co-authorship-network snapshots\n    representing evolving collaboration structure\"\n\n# ============================================================================\n# STEP 2: DERIVE NETWORK AND TEXTUAL FEATURES\n# ============================================================================\n\ntransform T_characterise_network :\n  intent: characterise\n  manner: \"compute graph statistics and inter-author relations\"\n  input: D_network_snapshots, D_authors\n  output: F_network_structure, F_author_centrality\n  actor: machine\n  description: \"Compute node centrality, weighted degree, brokerage,\n    collaboration persistence, pairwise collaboration similarity, and\n    temporal author-activity descriptors\"\n\nartifact F_network_structure : feature(D_network_snapshots)\n  value structure: relational configuration\n  value type: {reference, numeric}\n  representation form: \"weighted dynamic co-authorship graph descriptors\"\n  description: \"Structural descriptors of author relationships, including\n    edge strength, persistence, neighbourhood similarity, and temporal\n    continuity between snapshots\"\n\nartifact F_author_centrality : feature(D_authors)\n  value structure: vector\n  value type: numeric\n  description: \"Per-author, per-time-window structural measures including\n    weighted degree, betweenness, eigenvector centrality, brokerage,\n    publication count, and collaboration persistence\"\n\ntransform T_encode_documents :\n  intent: characterise\n  manner: \"text encoding and term-document representation\"\n  input: D_papers, S_topic_model\n  output: F_paper_text\n  actor: machine\n  description: \"Preprocess titles, abstracts, and keywords and create\n    weighted document representations for topic discovery\"\n\nartifact F_paper_text : feature(D_papers)\n  value structure: matrix\n  value type: numeric\n  representation form: \"weighted term-document matrix\"\n  description: \"Textual representation of each paper based on title,\n    abstract, and keywords\"\n\n# ============================================================================\n# STEP 3: ITERATIVE MODEL CALIBRATION AND COMMUNITY DISCOVERY\n# ============================================================================\n\nloop L_model_refinement:\n  purpose: \"Refine dynamic overlapping community and topic models until\n    communities are structurally coherent, temporally plausible, and\n    interpretable, while topics are semantically coherent and useful for\n    characterising community research foci\"\n  until: \"Community boundaries, overlaps, cores, lineage events, and topic\n    descriptions are judged interpretable, stable enough for the research\n    questions, and supported by visual and domain evidence\"\n  body:\n\n    transform T_build_community_model :\n      intent: build-model\n      manner: \"fit dynamic overlapping community model\"\n      input: D_network_snapshots, F_network_structure, S_community_model\n      output: M_community_model\n      actor: machine\n      description: \"Fit a temporally regularised overlapping-community model\n        so authors may have multiple membership strengths while recurring\n        collaboration structure is encouraged to persist across time\"\n\n    artifact M_community_model : model(D_network_snapshots,\n        F_network_structure)\n      model type: \"dynamic overlapping community model\"\n      representation form: \"time-indexed author-community membership matrix\n        with temporal regularisation and community lineage correspondences\"\n      description: \"Model of evolving collaboration communities allowing\n        partial and simultaneous membership in multiple communities\"\n\n    transform T_infer_communities :\n      intent: define-unit\n      manner: \"infer overlapping dynamic communities\"\n      input: D_network_snapshots, M_community_model, S_community_model\n      output: D_communities, F_membership_strength, F_lineage_links\n      actor: machine\n      description: \"Infer communities in each time period, author membership\n        strengths, and correspondence links between communities in adjacent\n        periods\"\n\n    artifact D_communities : entities\n      internal structure: group/cluster\n      embedment: time\n      features:\n        - id: f_community_id\n          value structure: atomic\n          value type: categorical\n          description: \"Persistent or period-specific community identifier\"\n        - id: f_member_authors\n          value structure: list\n          value type: reference\n          description: \"Authors associated with the community\"\n        - id: f_time_period\n          value structure: atomic\n          value type: temporal\n          description: \"Snapshot window in which the community exists\"\n      description: \"Time-indexed collaboration communities whose memberships\n        may overlap\"\n\n    artifact F_membership_strength : feature(D_authors)\n      value structure: matrix\n      value type: numeric\n      description: \"Author-by-community membership strengths over time;\n        authors may hold substantial membership in several communities\"\n\n    artifact F_lineage_links : feature(D_communities)\n      value structure: relational configuration\n      value type: numeric\n      representation form: \"weighted community correspondence graph\"\n      description: \"Continuity, split, merge, emergence, and disappearance\n        links between communities in consecutive temporal windows\"\n\n    transform T_build_topic_model :\n      intent: build-model\n      manner: \"fit topic model\"\n      input: F_paper_text, S_topic_model\n      output: M_topic_model\n      actor: machine\n      description: \"Build a topic model identifying research themes from\n        paper titles, abstracts, and keywords\"\n\n    artifact M_topic_model : model(F_paper_text)\n      model type: \"topic model\"\n      representation form: \"topic-term and paper-topic weight matrices\"\n      description: \"Model of latent research topics in IEEE VIS publications\"\n\n    transform T_characterise_topics :\n      intent: characterise\n      manner: \"compute paper-topic, community-topic, and temporal topic profiles\"\n      input: D_papers, D_communities, F_membership_strength, M_topic_model\n      output: F_paper_topics, F_community_topics, F_topic_trends\n      actor: machine\n      description: \"Assign topic weights to papers and aggregate them by\n        community and time, weighted by authors' community memberships\"\n\n    artifact F_paper_topics : feature(D_papers)\n      value structure: vector\n      value type: numeric\n      description: \"Topic-weight vector for each paper\"\n\n    artifact F_community_topics : feature(D_communities)\n      value structure: vector\n      value type: numeric\n      description: \"Topic distribution for each community in each temporal\n        window, calculated from associated papers and membership strengths\"\n\n    artifact F_topic_trends : feature(D_communities)\n      value structure: matrix\n      value type: numeric\n      description: \"Temporal topic-prevalence trajectories for each\n        community\"\n\n    transform T_characterise_community_roles :\n      intent: characterise\n      manner: \"derive cores, leaders, bridges, overlap, and stability measures\"\n      input: D_communities, F_membership_strength, F_author_centrality,\n             F_lineage_links, F_community_topics\n      output: F_community_roles, F_community_stability, F_overlap\n      actor: machine\n      description: \"Compute persistent core membership, leadership rankings,\n        bridge roles, community retention, topic stability, and pairwise\n        community overlap\"\n\n    artifact F_community_roles : feature(D_authors)\n      value structure: vector\n      value type: numeric\n      description: \"Per-author community-role measures: persistent core\n        score, within-community centrality, leadership rank, bridge score,\n        number of concurrent communities, and membership trajectory\"\n\n    artifact F_community_stability : feature(D_communities)\n      value structure: vector\n      value type: numeric\n      description: \"Community-level retention, member turnover, core\n        persistence, cohesion, temporal continuity, size change, and\n        topic-change measures\"\n\n    artifact F_overlap : feature(D_communities)\n      value structure: matrix\n      value type: numeric\n      description: \"Pairwise community overlap through shared or\n        multi-membership authors, calculated per time period\"\n\n    transform T_arrange_community_projection :\n      intent: contextualise\n      manner: \"projection-based community and author similarity layout\"\n      input: D_communities, F_membership_strength, F_community_topics,\n             F_overlap\n      output: D_community_projection_space, A_community_projection\n      actor: machine\n      description: \"Create a 2D similarity space where proximity reflects\n        similarity in collaboration membership, topical focus, and overlap\"\n\n    artifact D_community_projection_space : entities\n      internal structure: elementary\n      features:\n        - id: f_dimensions\n          value structure: atomic\n          value type: numeric\n          description: \"Two projection dimensions\"\n      description: \"Computed 2D similarity space for communities and authors\"\n\n    artifact A_community_projection : arrangement(D_communities)\n      context: D_community_projection_space\n      principle: \"projection preserving similarity in membership, overlap,\n        and topic-profile structure\"\n      description: \"2D arrangement exposing related, overlapping, or\n        separated communities\"\n\n    transform T_arrange_evolution :\n      intent: contextualise\n      manner: \"time-based lineage arrangement\"\n      input: D_communities, F_lineage_links, F_community_stability\n      output: A_evolution\n      actor: machine\n      description: \"Arrange communities by time and connect them through\n        weighted lineage links to expose continuity, splits, merges,\n        emergence, and dissolution\"\n\n    artifact A_evolution : arrangement(D_communities)\n      context: D_network_snapshots\n      principle: \"horizontal time axis; vertically ordered communities;\n        ribbon links encode membership continuity and lineage relations\"\n      description: \"Temporal lineage arrangement of evolving overlapping\n        communities\"\n\n    transform T_visualise_model_results :\n      intent: visualise\n      manner: \"coordinated community, evolution, membership, and topic views\"\n      input: A_community_projection, A_evolution, D_communities,\n             F_membership_strength, F_community_roles,\n             F_community_stability, F_community_topics, F_topic_trends,\n             F_overlap\n      output: V_community_overview\n      actor: machine\n      description: \"Display a coordinated dashboard: community projection,\n        temporal lineage ribbons, membership-overlap matrix, leader/core\n        ranking, stability plots, and topic evolution profiles\"\n\n    artifact V_community_overview : visualisation(A_community_projection,\n        A_evolution, F_community_roles, F_community_stability,\n        F_community_topics, F_overlap)\n      layout: \"coordinated dashboard with similarity projection, temporal\n        alluvial lineage view, overlap matrix, ranked role table, and\n        topic-profile panels\"\n      form: \"points and hulls, alluvial ribbons, matrices, ranked bars,\n        line charts, and topic heatmaps\"\n      encoding: \"community position from projection; ribbon width from\n        retained membership; ribbon branching/convergence from split/merge;\n        colour from persistent community identity; node size from active\n        member count; rank bars from core and leadership scores; heatmap\n        intensity from topic prevalence; matrix intensity from overlap\"\n      description: \"Interactive visualisation for evaluating communities,\n        membership overlap, core stability, leadership, topical focus,\n        and temporal change\"\n\n    transform T_interpret_model_results :\n      intent: abstract\n      manner: \"perception-and-interpretation of community structure\"\n      input: V_community_overview, K_domain_context\n      output: P_community_structure, P_topic_structure\n      actor: human\n      description: \"Interpret candidate communities, their stable cores,\n        bridge authors, topical identities, suspicious model artifacts,\n        and candidate merge or split events\"\n\n    artifact P_community_structure : pattern(D_communities,\n        F_community_stability)\n      representation form: \"interpreted community and evolution descriptions\"\n      description: \"Tentative descriptions of major communities, stable\n        cores, leaders, overlap structures, bridge authors, and lineage\n        events\"\n\n    artifact P_topic_structure : pattern(F_community_topics,\n        F_topic_trends)\n      representation form: \"named research-topic descriptions\"\n      description: \"Tentative semantic descriptions of recurring research\n        foci and their evolution across communities\"\n\n    transform T_assess_models :\n      intent: assess\n      manner: \"evaluate structural validity, temporal plausibility, and topic coherence\"\n      input: V_community_overview, P_community_structure, P_topic_structure,\n             S_community_model, S_topic_model, K_domain_context\n      output: K_model_assessment\n      actor: human\n      description: \"Judge whether community boundaries, overlap levels,\n        lineage events, core definitions, and topic descriptions are\n        meaningful enough for substantive analysis\"\n\n    artifact K_model_assessment : knowledge(D_communities, M_topic_model)\n      representation form: \"quality judgment\"\n      description: \"Assessment of community coherence, temporal stability,\n        interpretability of overlap and leadership, and semantic coherence\n        of research topics; identifies required model refinements\"\n\n    if K_model_assessment indicates model refinement needed:\n      then:\n\n        transform T_refine_models :\n          intent: generate-knowledge\n          manner: \"adjust temporal, community, and topic-model specifications\"\n          input: K_model_assessment, V_community_overview,\n                 S_temporal_network, S_community_model, S_topic_model\n          output: S_temporal_network_r, S_community_model_r,\n                  S_topic_model_r\n          actor: human\n          description: \"Revise time-window size, edge weighting, community\n            overlap and persistence settings, lineage thresholds, topic\n            count, or text preprocessing based on visual assessment\"\n\n        artifact S_temporal_network_r : specification\n          representation form: \"revised temporal-network construction parameters\"\n          description: \"Updated snapshot resolution, window width, edge\n            weighting, or inclusion criteria\"\n\n        artifact S_community_model_r : specification\n          representation form: \"revised dynamic overlapping-community parameters\"\n          description: \"Updated overlap, persistence, resolution, core,\n            and lineage-matching settings\"\n\n        artifact S_topic_model_r : specification\n          representation form: \"revised topic-model parameters\"\n          description: \"Updated topic count, preprocessing, or coherence\n            settings\"\n\n        assign:\n          S_temporal_network := S_temporal_network_r\n          S_community_model := S_community_model_r\n          S_topic_model := S_topic_model_r\n\n      else:\n        exit loop L_model_refinement\n\nend loop L_model_refinement\n\n# ============================================================================\n# STEP 4: DETAILED EXPLORATION OF EVOLUTION EVENTS\n# ============================================================================\n\nartifact P_evolution_findings : pattern(D_communities)\n  representation form: \"accumulated community-evolution interpretations\"\n  description: \"Initially empty; accumulates interpreted community\n    transitions, causes, leadership changes, topical shifts, and evidence\n    from selected papers\"\n\nloop L_evolution_investigation:\n  purpose: \"Investigate consequential community transitions and membership\n    changes to explain how communities evolved and why merges, splits,\n    emergence, or dissolution occurred\"\n  until: \"Major communities, their cores and leaders, membership overlaps,\n    topical trajectories, and consequential evolution events have been\n    sufficiently explained for the analyst's research questions\"\n  body:\n\n    transform T_identify_transition :\n      intent: abstract\n      manner: \"identify salient evolution events and anomalous changes\"\n      input: V_community_overview, P_community_structure,\n             P_topic_structure, P_evolution_findings\n      output: P_transition_candidates\n      actor: human\n      description: \"Identify a significant merge, split, emergence,\n        dissolution, leadership transition, unusually high overlap, or\n        topical shift for detailed investigation\"\n\n    artifact P_transition_candidates : pattern(D_communities,\n        F_lineage_links)\n      representation form: \"candidate evolution-event descriptions\"\n      description: \"Candidate events requiring explanation, including their\n        time interval, involved communities, and preliminary structural or\n        topical interpretation\"\n\n    transform T_select_transition :\n      intent: define-unit\n      manner: \"interactive selection of communities, authors, and time interval\"\n      input: P_transition_candidates, V_community_overview\n      output: D_transition_focus\n      actor: human\n      description: \"Select communities, involved authors, and time windows\n        for detailed analysis of a particular evolution event\"\n\n    artifact D_transition_focus : entities\n      internal structure: group/cluster\n      embedment: time\n      description: \"Focused subset of communities, authors, papers, and\n        temporal windows implicated in a selected evolution event\"\n\n    transform T_characterise_transition_evidence :\n      intent: characterise\n      manner: \"derive membership-flow, publication, citation, and topic-shift evidence\"\n      input: D_transition_focus, D_papers, D_authors, D_communities,\n             F_membership_strength, F_community_roles, F_community_topics,\n             F_topic_trends, F_lineage_links\n      output: F_transition_evidence\n      actor: machine\n      description: \"Compute member inflow and outflow, retained core,\n        leadership change, shared-author bridges, representative papers,\n        citation links, and topic-distribution differences before and after\n        the selected event\"\n\n    artifact F_transition_evidence : feature(D_transition_focus)\n      value structure: vector\n      value type: {numeric, categorical, temporal, reference}\n      description: \"Evidence for explaining a selected event: author flows,\n        core retention, leadership changes, topic shifts, representative\n        publications, and citation relations\"\n\n    transform T_visualise_transition :\n      intent: visualise\n      manner: \"linked event-detail views\"\n      input: D_transition_focus, F_transition_evidence, D_papers,\n             F_paper_topics, F_community_roles\n      output: V_transition_detail\n      actor: machine\n      description: \"Show selected communities as linked NodeTrix or\n        node-link detail, author membership trajectories, before-after\n        topic profiles, membership-flow ribbons, and representative-paper\n        evidence\"\n\n    artifact V_transition_detail : visualisation(D_transition_focus,\n        F_transition_evidence, D_papers, F_paper_topics)\n      layout: \"coordinated event-detail views: community network, author\n        membership trajectories, before-after topic profiles, flow ribbons,\n        and representative-paper list\"\n      form: \"NodeTrix matrices and node-link links, alluvial ribbons,\n        ranked lists, line charts, topic bars, and paper cards\"\n      encoding: \"matrix cells and links from co-authorship strength;\n        author line thickness from membership strength; colour from\n        community identity; topic bar length from prevalence; paper cards\n        show title, keywords, abstract excerpt, citations, and authors\"\n      description: \"Detailed visual evidence supporting explanation of why\n        a community changed\"\n\n    transform T_interpret_transition :\n      intent: abstract\n      manner: \"explain merge, split, dissolution, or topic shift\"\n      input: V_transition_detail, K_domain_context, P_evolution_findings\n      output: P_evolution_findings_r\n      actor: human\n      description: \"Interpret the selected event using structural and\n        topical evidence; distinguish substantive reorientation from a\n        methodological artifact or short-lived collaboration fluctuation\"\n\n    artifact P_evolution_findings_r : pattern(D_communities, D_papers)\n      representation form: \"accumulated evidence-grounded evolution explanations\"\n      description: \"Accumulated explanations of community emergence,\n        persistence, merging, splitting, dissolution, leadership change,\n        bridge roles, and changing research foci\"\n\n    transform T_assess_evolution_coverage :\n      intent: assess\n      manner: \"evaluate completeness of community-evolution understanding\"\n      input: P_evolution_findings_r, V_community_overview,\n             V_transition_detail\n      output: K_evolution_assessment\n      actor: human\n      description: \"Judge whether enough major communities and evolution\n        events have been examined, or whether another event, period, or\n        community requires investigation\"\n\n    artifact K_evolution_assessment : knowledge(P_evolution_findings_r)\n      representation form: \"quality judgment\"\n      description: \"Assessment of whether the analyst has sufficient\n        evidence to answer questions about community count, stable cores,\n        leaders, overlap, research foci, and evolution\"\n\n    if K_evolution_assessment indicates sufficient understanding:\n      then:\n        assign:\n          P_evolution_findings := P_evolution_findings_r\n        exit loop L_evolution_investigation\n      else:\n        assign:\n          P_evolution_findings := P_evolution_findings_r\n\nend loop L_evolution_investigation\n\n# ============================================================================\n# STEP 5: SYNTHESIS\n# ============================================================================\n\ntransform T_synthesise_findings :\n  intent: generate-knowledge\n  manner: \"formulate statements and evidence-backed community profiles\"\n  input: P_community_structure, P_topic_structure, P_evolution_findings,\n         F_community_stability, F_community_roles, F_overlap,\n         K_model_assessment, K_evolution_assessment\n  output: K_community_knowledge\n  actor: human\n  description: \"Produce an evidence-backed account of the intellectual\n    structure and evolution of the IEEE VIS community\"\n\nartifact K_community_knowledge : knowledge(P_community_structure,\n    P_topic_structure, P_evolution_findings)\n  representation form: \"community profiles, evolution narratives, and\n    methodological provenance\"\n  description: \"Final analytical knowledge: number and identity of major\n    collaborating communities; stable cores and leaders; bridge authors and\n    overlapping memberships; research foci and their temporal evolution;\n    merges, splits, emergence, and dissolution events with supporting paper,\n    citation, membership, and topic evidence; plus documented modeling\n    choices and assessment rationale\"\n```",
      "role": "assistant"
    }
  ]
}