VIS · GPT-5.6-Terra · C3

IEEE VIS author-community analysis — C3 · ATWL + library

C3

Raw session log. Atwl spec + example + 54-workflow library (atwl form).

4 turns (2 user · 2 assistant) json raw log

1 Researcher

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.

Please read all three carefully before we proceed.

The 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.

The 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.

In 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.

Before 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?

2 Model

Confirming understanding

I 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.

Confirmed. I have reviewed the ATWL specification, the HITL example workflow, and the curated workflow library.

I 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.

I have no questions at this stage and am ready for the design task.

3 Researcher

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).

A 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.

The 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?

The analyst will need to inspect intermediate results visually and use domain knowledge to interpret patterns and make judgements at each stage.

Design an analytical workflow for this problem.

4 Model

Recommended analytical workflow

The workflow treats the corpus as a dynamic, overlapping co-authorship network enriched with paper-level topical content. It deliberately distinguishes:

  • Communities: groups inferred from recurring collaboration structure, with authors allowed to belong to multiple communities.
  • Core and leaders: authors with persistent, central membership within a community—not merely highly cited or prolific authors.
  • Research foci: topic distributions derived from titles, abstracts, and keywords, then aggregated for each community and time period.
  • Evolution: continuity, overlap, membership flows, and structural events such as merges, splits, emergence, and dissolution.

The 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.

In 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.

The central visual interface combines:

  1. Temporal community evolution view: alluvial/lineage view showing communities over time, member retention, merges, splits, emergence, and dissolution.
  2. Community network view: node-link or NodeTrix-style view of selected community members and inter-community overlaps.
  3. Membership and leadership view: ranked persistent-core members, bridge authors, centrality, productivity, citations, and membership strengths.
  4. Topic evolution view: topic-by-community heatmaps and temporal profiles, linked to representative papers.
  5. Evidence view: selected papers, abstracts, keywords, citation links, and author histories supporting interpretation.

The 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.

This design draws particularly on:

  • Dynamic Network Exploration / “Reducing Snapshots to Points” for snapshot-based dynamic-network representations and temporal structural exploration.
  • NodeTrix / “Hybrid Network Community Analysis” for inspecting dense communities while retaining inter-community links and bridge actors.
  • Human-Steered Topic Modelling / “Interactive Topic Modeling” for iterative evaluation and refinement of interpretable research topics.
  • EventThread Analysis for representing branching, merging, and evolving group structures over time.
  • Cluster-calendar workflow for analyst-guided refinement of clustering parameters and interpretability assessment.

ATWL representation

workflow ieee-vis-community-evolution-analysis

  template: define-unit (authors and temporal networks) →
            characterise (network and text features) →
            loop(build-model (overlapping communities) →
                 define-unit (infer communities) →
                 build-model (topics) →
                 characterise (community profiles) →
                 contextualise → visualise →
                 abstract → assess →
                 generate-knowledge (refine specifications)) →
            contextualise → visualise →
            loop(abstract → define-unit (select transition) →
                 visualise → abstract → assess) →
            generate-knowledge

  description: "Identify, characterise, validate, and explain the evolution
    of overlapping research communities in IEEE VIS publications from
    1990–2024. Communities are inferred from dynamic co-authorship
    structure, linked to research topics derived from paper text, and
    interpreted through coordinated visual exploration."

# ============================================================================
# INPUT
# ============================================================================

artifact D_papers : entities
  origin: given
  internal structure: elementary
  embedment: time
  features:
    - id: f_paper_id
      value structure: atomic
      value type: reference
      description: "Unique paper identifier"
    - id: f_year
      value structure: atomic
      value type: temporal
      description: "Publication year, 1990–2024"
    - id: f_authors
      value structure: list
      value type: reference
      description: "Disambiguated DBLP author identifiers with raw name strings"
    - id: f_title
      value structure: atomic
      value type: text
      description: "Paper title"
    - id: f_abstract
      value structure: atomic
      value type: text
      description: "Paper abstract"
    - id: f_keywords
      value structure: list
      value type: text
      description: "Author- and venue-provided keywords"
    - id: f_citations
      value structure: list
      value type: reference
      description: "Cited paper identifiers"
  description: "IEEE VIS, InfoVis, VAST, and SciVis papers published between
    1990 and 2024, with disambiguated author identities, bibliographic text,
    keywords, and citation information"

artifact S_temporal_network : specification
  origin: given
  representation form: "temporal-network construction parameters"
  description: "Initial choice of annual or rolling multi-year windows,
    edge weighting rule (e.g., co-authored-paper count with recency decay),
    minimum activity threshold, and inclusion of citation-derived relations"

artifact S_community_model : specification
  origin: given
  representation form: "dynamic overlapping-community model parameters"
  description: "Initial settings for number or resolution of communities,
    overlap regularisation, temporal persistence regularisation, minimum
    membership strength, lineage matching threshold, and core-member
    persistence threshold"

artifact S_topic_model : specification
  origin: given
  representation form: "topic-model parameters"
  description: "Initial topic count, text preprocessing, term weighting,
    use of title/abstract/keywords, and topic-coherence criteria"

artifact K_domain_context : knowledge(D_papers)
  origin: given
  representation form: "domain annotations and interpretation notes"
  description: "Analyst knowledge about visualization research areas,
    historically important venues, known research programs, institutions,
    and potentially meaningful author or topic changes"

# ============================================================================
# STEP 1: DEFINE AUTHORS AND TEMPORAL CO-AUTHORSHIP NETWORKS
# ============================================================================

transform T_define_authors :
  intent: define-unit
  manner: "group papers by disambiguated author identifier"
  input: D_papers
  output: D_authors
  actor: machine
  description: "Create one author entity per DBLP-disambiguated identifier,
    retaining links to authored papers and activity history"

artifact D_authors : entities
  internal structure: elementary
  embedment: set
  features:
    - id: f_author_id
      value structure: atomic
      value type: reference
      description: "Disambiguated DBLP author identifier"
    - id: f_raw_names
      value structure: list
      value type: text
      description: "Observed raw author-name strings"
    - id: f_authored_papers
      value structure: list
      value type: reference
      description: "Papers authored by this researcher"
    - id: f_active_years
      value structure: list
      value type: temporal
      description: "Publication years in the IEEE VIS corpus"
  description: "Unique visualization-community researchers identified through
    DBLP-based author disambiguation"

transform T_construct_networks :
  intent: define-unit
  manner: "time-partitioning and co-authorship-network aggregation"
  input: D_papers, D_authors, S_temporal_network
  output: D_network_snapshots
  actor: machine
  description: "Construct annual or rolling-window weighted co-authorship
    network snapshots; nodes are active authors and edges represent
    collaboration strength"

artifact D_network_snapshots : entities
  internal structure: formation
  embedment: time
  features:
    - id: f_coauthor_edges
      value structure: relational configuration
      value type: {reference, numeric}
      description: "Weighted co-authorship graph for each temporal snapshot"
    - id: f_active_authors
      value structure: list
      value type: reference
      description: "Authors active in the snapshot window"
    - id: f_snapshot_period
      value structure: atomic
      value type: temporal
      description: "Year or rolling time-window interval"
  description: "Temporal sequence of weighted co-authorship-network snapshots
    representing evolving collaboration structure"

# ============================================================================
# STEP 2: DERIVE NETWORK AND TEXTUAL FEATURES
# ============================================================================

transform T_characterise_network :
  intent: characterise
  manner: "compute graph statistics and inter-author relations"
  input: D_network_snapshots, D_authors
  output: F_network_structure, F_author_centrality
  actor: machine
  description: "Compute node centrality, weighted degree, brokerage,
    collaboration persistence, pairwise collaboration similarity, and
    temporal author-activity descriptors"

artifact F_network_structure : feature(D_network_snapshots)
  value structure: relational configuration
  value type: {reference, numeric}
  representation form: "weighted dynamic co-authorship graph descriptors"
  description: "Structural descriptors of author relationships, including
    edge strength, persistence, neighbourhood similarity, and temporal
    continuity between snapshots"

artifact F_author_centrality : feature(D_authors)
  value structure: vector
  value type: numeric
  description: "Per-author, per-time-window structural measures including
    weighted degree, betweenness, eigenvector centrality, brokerage,
    publication count, and collaboration persistence"

transform T_encode_documents :
  intent: characterise
  manner: "text encoding and term-document representation"
  input: D_papers, S_topic_model
  output: F_paper_text
  actor: machine
  description: "Preprocess titles, abstracts, and keywords and create
    weighted document representations for topic discovery"

artifact F_paper_text : feature(D_papers)
  value structure: matrix
  value type: numeric
  representation form: "weighted term-document matrix"
  description: "Textual representation of each paper based on title,
    abstract, and keywords"

# ============================================================================
# STEP 3: ITERATIVE MODEL CALIBRATION AND COMMUNITY DISCOVERY
# ============================================================================

loop L_model_refinement:
  purpose: "Refine dynamic overlapping community and topic models until
    communities are structurally coherent, temporally plausible, and
    interpretable, while topics are semantically coherent and useful for
    characterising community research foci"
  until: "Community boundaries, overlaps, cores, lineage events, and topic
    descriptions are judged interpretable, stable enough for the research
    questions, and supported by visual and domain evidence"
  body:

    transform T_build_community_model :
      intent: build-model
      manner: "fit dynamic overlapping community model"
      input: D_network_snapshots, F_network_structure, S_community_model
      output: M_community_model
      actor: machine
      description: "Fit a temporally regularised overlapping-community model
        so authors may have multiple membership strengths while recurring
        collaboration structure is encouraged to persist across time"

    artifact M_community_model : model(D_network_snapshots,
        F_network_structure)
      model type: "dynamic overlapping community model"
      representation form: "time-indexed author-community membership matrix
        with temporal regularisation and community lineage correspondences"
      description: "Model of evolving collaboration communities allowing
        partial and simultaneous membership in multiple communities"

    transform T_infer_communities :
      intent: define-unit
      manner: "infer overlapping dynamic communities"
      input: D_network_snapshots, M_community_model, S_community_model
      output: D_communities, F_membership_strength, F_lineage_links
      actor: machine
      description: "Infer communities in each time period, author membership
        strengths, and correspondence links between communities in adjacent
        periods"

    artifact D_communities : entities
      internal structure: group/cluster
      embedment: time
      features:
        - id: f_community_id
          value structure: atomic
          value type: categorical
          description: "Persistent or period-specific community identifier"
        - id: f_member_authors
          value structure: list
          value type: reference
          description: "Authors associated with the community"
        - id: f_time_period
          value structure: atomic
          value type: temporal
          description: "Snapshot window in which the community exists"
      description: "Time-indexed collaboration communities whose memberships
        may overlap"

    artifact F_membership_strength : feature(D_authors)
      value structure: matrix
      value type: numeric
      description: "Author-by-community membership strengths over time;
        authors may hold substantial membership in several communities"

    artifact F_lineage_links : feature(D_communities)
      value structure: relational configuration
      value type: numeric
      representation form: "weighted community correspondence graph"
      description: "Continuity, split, merge, emergence, and disappearance
        links between communities in consecutive temporal windows"

    transform T_build_topic_model :
      intent: build-model
      manner: "fit topic model"
      input: F_paper_text, S_topic_model
      output: M_topic_model
      actor: machine
      description: "Build a topic model identifying research themes from
        paper titles, abstracts, and keywords"

    artifact M_topic_model : model(F_paper_text)
      model type: "topic model"
      representation form: "topic-term and paper-topic weight matrices"
      description: "Model of latent research topics in IEEE VIS publications"

    transform T_characterise_topics :
      intent: characterise
      manner: "compute paper-topic, community-topic, and temporal topic profiles"
      input: D_papers, D_communities, F_membership_strength, M_topic_model
      output: F_paper_topics, F_community_topics, F_topic_trends
      actor: machine
      description: "Assign topic weights to papers and aggregate them by
        community and time, weighted by authors' community memberships"

    artifact F_paper_topics : feature(D_papers)
      value structure: vector
      value type: numeric
      description: "Topic-weight vector for each paper"

    artifact F_community_topics : feature(D_communities)
      value structure: vector
      value type: numeric
      description: "Topic distribution for each community in each temporal
        window, calculated from associated papers and membership strengths"

    artifact F_topic_trends : feature(D_communities)
      value structure: matrix
      value type: numeric
      description: "Temporal topic-prevalence trajectories for each
        community"

    transform T_characterise_community_roles :
      intent: characterise
      manner: "derive cores, leaders, bridges, overlap, and stability measures"
      input: D_communities, F_membership_strength, F_author_centrality,
             F_lineage_links, F_community_topics
      output: F_community_roles, F_community_stability, F_overlap
      actor: machine
      description: "Compute persistent core membership, leadership rankings,
        bridge roles, community retention, topic stability, and pairwise
        community overlap"

    artifact F_community_roles : feature(D_authors)
      value structure: vector
      value type: numeric
      description: "Per-author community-role measures: persistent core
        score, within-community centrality, leadership rank, bridge score,
        number of concurrent communities, and membership trajectory"

    artifact F_community_stability : feature(D_communities)
      value structure: vector
      value type: numeric
      description: "Community-level retention, member turnover, core
        persistence, cohesion, temporal continuity, size change, and
        topic-change measures"

    artifact F_overlap : feature(D_communities)
      value structure: matrix
      value type: numeric
      description: "Pairwise community overlap through shared or
        multi-membership authors, calculated per time period"

    transform T_arrange_community_projection :
      intent: contextualise
      manner: "projection-based community and author similarity layout"
      input: D_communities, F_membership_strength, F_community_topics,
             F_overlap
      output: D_community_projection_space, A_community_projection
      actor: machine
      description: "Create a 2D similarity space where proximity reflects
        similarity in collaboration membership, topical focus, and overlap"

    artifact D_community_projection_space : entities
      internal structure: elementary
      features:
        - id: f_dimensions
          value structure: atomic
          value type: numeric
          description: "Two projection dimensions"
      description: "Computed 2D similarity space for communities and authors"

    artifact A_community_projection : arrangement(D_communities)
      context: D_community_projection_space
      principle: "projection preserving similarity in membership, overlap,
        and topic-profile structure"
      description: "2D arrangement exposing related, overlapping, or
        separated communities"

    transform T_arrange_evolution :
      intent: contextualise
      manner: "time-based lineage arrangement"
      input: D_communities, F_lineage_links, F_community_stability
      output: A_evolution
      actor: machine
      description: "Arrange communities by time and connect them through
        weighted lineage links to expose continuity, splits, merges,
        emergence, and dissolution"

    artifact A_evolution : arrangement(D_communities)
      context: D_network_snapshots
      principle: "horizontal time axis; vertically ordered communities;
        ribbon links encode membership continuity and lineage relations"
      description: "Temporal lineage arrangement of evolving overlapping
        communities"

    transform T_visualise_model_results :
      intent: visualise
      manner: "coordinated community, evolution, membership, and topic views"
      input: A_community_projection, A_evolution, D_communities,
             F_membership_strength, F_community_roles,
             F_community_stability, F_community_topics, F_topic_trends,
             F_overlap
      output: V_community_overview
      actor: machine
      description: "Display a coordinated dashboard: community projection,
        temporal lineage ribbons, membership-overlap matrix, leader/core
        ranking, stability plots, and topic evolution profiles"

    artifact V_community_overview : visualisation(A_community_projection,
        A_evolution, F_community_roles, F_community_stability,
        F_community_topics, F_overlap)
      layout: "coordinated dashboard with similarity projection, temporal
        alluvial lineage view, overlap matrix, ranked role table, and
        topic-profile panels"
      form: "points and hulls, alluvial ribbons, matrices, ranked bars,
        line charts, and topic heatmaps"
      encoding: "community position from projection; ribbon width from
        retained membership; ribbon branching/convergence from split/merge;
        colour from persistent community identity; node size from active
        member count; rank bars from core and leadership scores; heatmap
        intensity from topic prevalence; matrix intensity from overlap"
      description: "Interactive visualisation for evaluating communities,
        membership overlap, core stability, leadership, topical focus,
        and temporal change"

    transform T_interpret_model_results :
      intent: abstract
      manner: "perception-and-interpretation of community structure"
      input: V_community_overview, K_domain_context
      output: P_community_structure, P_topic_structure
      actor: human
      description: "Interpret candidate communities, their stable cores,
        bridge authors, topical identities, suspicious model artifacts,
        and candidate merge or split events"

    artifact P_community_structure : pattern(D_communities,
        F_community_stability)
      representation form: "interpreted community and evolution descriptions"
      description: "Tentative descriptions of major communities, stable
        cores, leaders, overlap structures, bridge authors, and lineage
        events"

    artifact P_topic_structure : pattern(F_community_topics,
        F_topic_trends)
      representation form: "named research-topic descriptions"
      description: "Tentative semantic descriptions of recurring research
        foci and their evolution across communities"

    transform T_assess_models :
      intent: assess
      manner: "evaluate structural validity, temporal plausibility, and topic coherence"
      input: V_community_overview, P_community_structure, P_topic_structure,
             S_community_model, S_topic_model, K_domain_context
      output: K_model_assessment
      actor: human
      description: "Judge whether community boundaries, overlap levels,
        lineage events, core definitions, and topic descriptions are
        meaningful enough for substantive analysis"

    artifact K_model_assessment : knowledge(D_communities, M_topic_model)
      representation form: "quality judgment"
      description: "Assessment of community coherence, temporal stability,
        interpretability of overlap and leadership, and semantic coherence
        of research topics; identifies required model refinements"

    if K_model_assessment indicates model refinement needed:
      then:

        transform T_refine_models :
          intent: generate-knowledge
          manner: "adjust temporal, community, and topic-model specifications"
          input: K_model_assessment, V_community_overview,
                 S_temporal_network, S_community_model, S_topic_model
          output: S_temporal_network_r, S_community_model_r,
                  S_topic_model_r
          actor: human
          description: "Revise time-window size, edge weighting, community
            overlap and persistence settings, lineage thresholds, topic
            count, or text preprocessing based on visual assessment"

        artifact S_temporal_network_r : specification
          representation form: "revised temporal-network construction parameters"
          description: "Updated snapshot resolution, window width, edge
            weighting, or inclusion criteria"

        artifact S_community_model_r : specification
          representation form: "revised dynamic overlapping-community parameters"
          description: "Updated overlap, persistence, resolution, core,
            and lineage-matching settings"

        artifact S_topic_model_r : specification
          representation form: "revised topic-model parameters"
          description: "Updated topic count, preprocessing, or coherence
            settings"

        assign:
          S_temporal_network := S_temporal_network_r
          S_community_model := S_community_model_r
          S_topic_model := S_topic_model_r

      else:
        exit loop L_model_refinement

end loop L_model_refinement

# ============================================================================
# STEP 4: DETAILED EXPLORATION OF EVOLUTION EVENTS
# ============================================================================

artifact P_evolution_findings : pattern(D_communities)
  representation form: "accumulated community-evolution interpretations"
  description: "Initially empty; accumulates interpreted community
    transitions, causes, leadership changes, topical shifts, and evidence
    from selected papers"

loop L_evolution_investigation:
  purpose: "Investigate consequential community transitions and membership
    changes to explain how communities evolved and why merges, splits,
    emergence, or dissolution occurred"
  until: "Major communities, their cores and leaders, membership overlaps,
    topical trajectories, and consequential evolution events have been
    sufficiently explained for the analyst's research questions"
  body:

    transform T_identify_transition :
      intent: abstract
      manner: "identify salient evolution events and anomalous changes"
      input: V_community_overview, P_community_structure,
             P_topic_structure, P_evolution_findings
      output: P_transition_candidates
      actor: human
      description: "Identify a significant merge, split, emergence,
        dissolution, leadership transition, unusually high overlap, or
        topical shift for detailed investigation"

    artifact P_transition_candidates : pattern(D_communities,
        F_lineage_links)
      representation form: "candidate evolution-event descriptions"
      description: "Candidate events requiring explanation, including their
        time interval, involved communities, and preliminary structural or
        topical interpretation"

    transform T_select_transition :
      intent: define-unit
      manner: "interactive selection of communities, authors, and time interval"
      input: P_transition_candidates, V_community_overview
      output: D_transition_focus
      actor: human
      description: "Select communities, involved authors, and time windows
        for detailed analysis of a particular evolution event"

    artifact D_transition_focus : entities
      internal structure: group/cluster
      embedment: time
      description: "Focused subset of communities, authors, papers, and
        temporal windows implicated in a selected evolution event"

    transform T_characterise_transition_evidence :
      intent: characterise
      manner: "derive membership-flow, publication, citation, and topic-shift evidence"
      input: D_transition_focus, D_papers, D_authors, D_communities,
             F_membership_strength, F_community_roles, F_community_topics,
             F_topic_trends, F_lineage_links
      output: F_transition_evidence
      actor: machine
      description: "Compute member inflow and outflow, retained core,
        leadership change, shared-author bridges, representative papers,
        citation links, and topic-distribution differences before and after
        the selected event"

    artifact F_transition_evidence : feature(D_transition_focus)
      value structure: vector
      value type: {numeric, categorical, temporal, reference}
      description: "Evidence for explaining a selected event: author flows,
        core retention, leadership changes, topic shifts, representative
        publications, and citation relations"

    transform T_visualise_transition :
      intent: visualise
      manner: "linked event-detail views"
      input: D_transition_focus, F_transition_evidence, D_papers,
             F_paper_topics, F_community_roles
      output: V_transition_detail
      actor: machine
      description: "Show selected communities as linked NodeTrix or
        node-link detail, author membership trajectories, before-after
        topic profiles, membership-flow ribbons, and representative-paper
        evidence"

    artifact V_transition_detail : visualisation(D_transition_focus,
        F_transition_evidence, D_papers, F_paper_topics)
      layout: "coordinated event-detail views: community network, author
        membership trajectories, before-after topic profiles, flow ribbons,
        and representative-paper list"
      form: "NodeTrix matrices and node-link links, alluvial ribbons,
        ranked lists, line charts, topic bars, and paper cards"
      encoding: "matrix cells and links from co-authorship strength;
        author line thickness from membership strength; colour from
        community identity; topic bar length from prevalence; paper cards
        show title, keywords, abstract excerpt, citations, and authors"
      description: "Detailed visual evidence supporting explanation of why
        a community changed"

    transform T_interpret_transition :
      intent: abstract
      manner: "explain merge, split, dissolution, or topic shift"
      input: V_transition_detail, K_domain_context, P_evolution_findings
      output: P_evolution_findings_r
      actor: human
      description: "Interpret the selected event using structural and
        topical evidence; distinguish substantive reorientation from a
        methodological artifact or short-lived collaboration fluctuation"

    artifact P_evolution_findings_r : pattern(D_communities, D_papers)
      representation form: "accumulated evidence-grounded evolution explanations"
      description: "Accumulated explanations of community emergence,
        persistence, merging, splitting, dissolution, leadership change,
        bridge roles, and changing research foci"

    transform T_assess_evolution_coverage :
      intent: assess
      manner: "evaluate completeness of community-evolution understanding"
      input: P_evolution_findings_r, V_community_overview,
             V_transition_detail
      output: K_evolution_assessment
      actor: human
      description: "Judge whether enough major communities and evolution
        events have been examined, or whether another event, period, or
        community requires investigation"

    artifact K_evolution_assessment : knowledge(P_evolution_findings_r)
      representation form: "quality judgment"
      description: "Assessment of whether the analyst has sufficient
        evidence to answer questions about community count, stable cores,
        leaders, overlap, research foci, and evolution"

    if K_evolution_assessment indicates sufficient understanding:
      then:
        assign:
          P_evolution_findings := P_evolution_findings_r
        exit loop L_evolution_investigation
      else:
        assign:
          P_evolution_findings := P_evolution_findings_r

end loop L_evolution_investigation

# ============================================================================
# STEP 5: SYNTHESIS
# ============================================================================

transform T_synthesise_findings :
  intent: generate-knowledge
  manner: "formulate statements and evidence-backed community profiles"
  input: P_community_structure, P_topic_structure, P_evolution_findings,
         F_community_stability, F_community_roles, F_overlap,
         K_model_assessment, K_evolution_assessment
  output: K_community_knowledge
  actor: human
  description: "Produce an evidence-backed account of the intellectual
    structure and evolution of the IEEE VIS community"

artifact K_community_knowledge : knowledge(P_community_structure,
    P_topic_structure, P_evolution_findings)
  representation form: "community profiles, evolution narratives, and
    methodological provenance"
  description: "Final analytical knowledge: number and identity of major
    collaborating communities; stable cores and leaders; bridge authors and
    overlapping memberships; research foci and their temporal evolution;
    merges, splits, emergence, and dissolution events with supporting paper,
    citation, membership, and topic evidence; plus documented modeling
    choices and assessment rationale"