VAST · GPT-5.6-Terra · C7

Vastopolis outbreak investigation — C7 · fresh redesign

C7

Raw session log. Continues c4; fresh atwl redesign, not a translation.

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

1 Researcher

You have received a document titled Workflow Library: Titles and Summaries. This document contains natural-language summaries of 53 visual analytics workflows drawn from the published research literature. Each summary describes the analytical goal, the workflow structure, and the methodological approach of a specific published workflow. The summaries were extracted from a public workflow library curated by our research group.

Please read the summaries carefully before we proceed. 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, drawing on the workflows in the library where relevant. The library is a resource — you may consult it to identify workflow structures, analytical strategies, or methodological approaches that could inform your recommendation for the target task. You are not obliged to use the library workflows, and you may combine elements from multiple workflows, adapt them, or design new steps as the task requires.

Please describe your recommended workflow in natural language, in sufficient detail that a research analyst could use it as a design template. Where you draw on specific library workflows, please cite them by name so the analyst can trace the sources of your recommendation.

Before we proceed, could you briefly confirm that you have absorbed the library, and let me know if you have any questions before the task is described? Please reply in English only.

2 Model

Clarifying language use

I need to confirm that we’re using English only. Should I mention that there might not be any questions, possibly referring to document 53? It seems like counting isn’t necessary here. I’m leaning towards keeping things concise to aid clarity. Let's ensure everything is straightforward without unnecessary complexity. I want to make sure I’m doing this right to be helpful!

I have absorbed the workflow library and its range of analytical strategies, including temporal, spatial, network, event-sequence, cohort, simulation, embedding, and explainable-ML workflows.

I will use relevant workflows as design references and cite them by name where applicable. I have no questions at this stage; please describe the visual analytics design task.

3 Researcher

A public health team in Vastopolis, a metropolitan area of about two million residents, has observed a sharp increase in flu-like illnesses over the past few days, with several deaths believed to be associated with the current outbreak. The team wants to understand where the outbreak started and how the infection is being transmitted (person-to-person, airborne, waterborne, or something else) so that emergency management resources can be deployed appropriately.

The available data consists of: geolocated microblog messages posted from mobile devices over a period of several days, each with a timestamp, GPS coordinates, and text content; a map of the metropolitan area showing highways, hospitals, landmarks, and water bodies; population statistics for 13 city zones; and daily weather observations including wind speed and direction.

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

Distinguishing transmission modes

I need to think through different transmission modes. For point sources, there’s a rapid initial spread that might be influenced by water sources and their boundaries, whereas airborne transmission is more about wind and weather affecting how plumes move. Person-to-person spread focuses on crowded areas, but simple connectivity doesn’t prove much.

I should also address bias in hospitals and ensure I’m building strong signals from symptom reports versus confirmed cases, considering temporal onset and geolocation. I’ll outline some data steps for processing this information effectively.

Analyzing transmission and clustering

I’m looking at a significant places approach to identify high-density clusters, particularly focusing on early onset episodes. I want to explore five origin hypotheses to locate the earliest persistent clusters and consider travel constraints that may not accurately represent movement.

For causal transmission hypotheses, I think about creating candidate predictors based on population density, distance to sources, highway access, and water proximity. I'll also look into partition regression and compare different statistical models, using public tweets as a proxy for data.

Clarifying documentation needs

I need to make sure there are no false facts in the library, which seems to have 53, but some are irrelevant. I think the analyst should inspect intermediate results visually, especially highlighting decision gates. I want to write clearly in natural language with headings and maybe a table to organize thoughts. I'll make sure to use titles for citations, and I prefer to bold names for emphasis. It's important for the summary to be concise.

Recommended workflow: outbreak-origin and transmission-hypothesis analysis

Important limitation: microblog data are a proxy for illness and public concern, not confirmed cases. This workflow should identify and rank operational hypotheses for deployment, not claim a definitive epidemiological cause. Confirm findings with clinical surveillance, environmental sampling, and field investigation.

1. Prepare trusted spatiotemporal signals

  1. Clean the posts - Remove duplicates, obvious bots, repost cascades, and posts with unreliable coordinates or timestamps. - Retain uncertainty flags for low GPS accuracy, ambiguous text, and potentially automated accounts. - Aggregate data into several spatial resolutions: city zones for population-normalized reporting, plus a fine grid or adaptive hexagons for local hotspot detection. - Use several temporal bins, such as 1-, 3-, and 6-hour intervals, to check that conclusions do not depend on one bin size.

  2. Classify message content with analyst review - Create categories such as:

    • self-reported flu-like symptoms;
    • reports about another ill person;
    • death or severe-illness reports;
    • healthcare-seeking or hospital mentions;
    • concern, news, or misinformation;
    • references to locations, events, water, ventilation, or travel.
    • Begin with keyword rules and a topic model, then have public-health analysts inspect representative messages and correct misleading terms, sarcasm, news reposts, and non-flu conditions.
    • Use the iterative pattern from Human-Steered Topic Modelling: inspect topics and documents, merge or split categories, adjust terms, retrain, and review the changed results.
    • Extract named places, landmarks, hospitals, and organizations from text and verify them in context, following the evidence-grounding approach of Jigsaw.
  3. Construct outbreak indicators - For each spatial unit and time bin, calculate:

    • high-confidence symptom-post count;
    • symptom-post rate per population;
    • symptom posts as a share of all local posts, to reduce bias from variation in platform activity;
    • severe/death-associated post counts, kept separate from symptom counts;
    • uncertainty intervals reflecting classification confidence and low message volume.
    • Treat hospital mentions primarily as a possible care-seeking/reporting effect, not immediate evidence that hospitals are infection sources.

Visual checkpoint: Show linked maps, temporal heatmaps, zone time series, and sampled original posts. The analyst should confirm that apparent peaks represent plausible illness reports rather than news amplification or a single viral post.


2. Detect the first sustained outbreak locations

  1. Map onset and excess activity - Visualize symptom intensity over time as an animated map and space–time cube. - For each cell or zone, estimate its onset time: the first time when symptom activity becomes elevated and remains elevated for a defined duration. - Show both raw counts and normalized rates. Dense central areas may have more posts but not necessarily higher illness prevalence.

  2. Identify persistent spatiotemporal clusters - Extract high-confidence symptom events and apply density-based clustering in space and time. - Require a cluster to be persistent across adjacent time bins and supported by multiple independent accounts where possible. - Adapt the logic of From Movement Tracks through Events to Places: identify meaningful event concentrations first, then turn recurring concentrations into candidate outbreak places rather than relying only on predefined city zones.

  3. Rank candidate origin areas - Rank clusters by:

    • earliest sustained onset;
    • intensity after normalization;
    • persistence;
    • evidence that later hotspots emerge after the candidate;
    • robustness across text-classification thresholds and spatial/temporal resolutions.
    • Display temporal expansion contours from each candidate area and inspect nearby landmarks, water bodies, highway access, and hospitals.

Decision rule: distinguish the origin of the observed social-media signal from the true infection origin. A hospital-area cluster may be the first visible signal because sick people seek care there, even if transmission began elsewhere.


3. Build explicit competing transmission hypotheses

Create a small set of testable hypotheses rather than searching for one pattern without a comparison baseline.

Hypothesis Expected observable pattern Main visual and analytical tests Operational implication if supported
Person-to-person spread Serial local growth; neighboring zones rise after earlier hotspots; spread may follow dense population and major travel corridors Compare lagged symptom rates among adjacent zones and highway-connected zones; inspect spatial waves and residual maps Deploy testing, clinical outreach, public messaging, and crowd-reduction measures in expanding hotspot zones
Airborne or aerosol transport New cases occur preferentially downwind of a candidate source; direction changes with wind changes; distance and wind strength matter Overlay wind vectors and downwind exposure plumes on onset maps; compare upwind and downwind zones at plausible lags Inspect candidate emission sites, ventilation systems, industrial sites, and enclosed venues; issue targeted exposure guidance
Waterborne exposure Elevated activity near the same water body, catchment, distribution area, or downstream corridor; less dependence on wind or road adjacency Compare zones by proximity to water bodies and—if available—water-service boundaries; inspect local text references Collect water samples, inspect treatment and distribution infrastructure, consider targeted boil-water or avoidance guidance
Common event or point source Abrupt, near-simultaneous onset among people associated with one place or event; limited serial spatial progression initially Inspect landmark/event mentions, early temporal synchrony, and co-occurring place references Investigate venue, event, food source, workplace, or institution; identify and notify exposed groups
Reporting or media artifact Sharp message volume without corresponding self-reported symptoms, spatial consistency, or persistence Compare symptom reports with news/concern posts and total posting volume; inspect source accounts Avoid misallocating emergency resources based on social-media amplification

4. Test the hypotheses with linked visual models

For each zone and time period, construct explanatory variables:

  • prior symptom intensity in the same zone;
  • prior intensity in adjacent or highway-connected zones;
  • distance from candidate origin locations;
  • downwind exposure, using wind direction converted to the direction of air transport;
  • wind speed;
  • distance to or relationship with water bodies;
  • population and total microblog activity;
  • proximity to hospitals and landmarks, as potential reporting confounders.

Fit several transparent spatiotemporal models, for example count or rate models with alternative transmission terms:

  1. Contact-propagation model: local prior rate plus lagged neighboring/highway-connected rates.
  2. Airborne model: source strength plus downwind alignment, wind speed, distance, and lag.
  3. Water-exposure model: water proximity or service-area term, adjusted for population and posting activity.
  4. Mixed model: combines plausible mechanisms, but penalizes unnecessary complexity.

Use the residual-driven process from Partition-based Regression Modelling: - inspect how symptom rates vary against each candidate factor; - fit an initial model; - map and plot its residuals; - add a factor only when residual structure suggests a meaningful unexplained pattern; - compare models using held-out periods or locations, not only in-sample fit.

Use the grouping-and-residual logic of Spatio-temporal Analysis and Modelling to: - cluster zones with similar outbreak trajectories; - map those groups; - determine whether trajectory groups align with wind exposure, water proximity, or road-connected spatial propagation; - inspect whether residual hotspots remain after accounting for each proposed mechanism.

For wind-related claims, compare multiple periods with different wind direction. A genuine airborne pattern should move or strengthen in the new downwind direction. The time–lag calibration concepts from Detecting Stable Cross-Impact Patterns in Bivariate Time Series can help visually inspect whether wind changes consistently precede changes in downwind symptom activity.

Visual checkpoint: For every model, show: - observed versus predicted zone-time rates; - a map of residuals; - uncertainty/confidence intervals; - example messages and locations underlying key anomalies.

A model that predicts well but leaves concentrated residual hotspots is insufficient; those hotspots may reveal another source, a reporting bias, or a mixed transmission mechanism.


5. Investigate candidate sources in detail

For the top-ranked origin candidates:

  1. Select the earliest local cluster and inspect all associated messages in temporal order.
  2. Review referenced landmarks, facilities, events, workplaces, water locations, and travel mentions.
  3. Compare early candidate areas with matched areas that had similar population and posting volume but did not develop high symptom activity.
  4. Trace later hotspots backward: - Did they arise after nearby hotspots? - Were they downwind at the relevant time? - Do they share a water feature or service boundary? - Are they connected by highways or major mobility corridors?
  5. Record each judgement, supporting evidence, contradictory evidence, and confidence level.

If user identifiers and multiple posts per user become available, derive anonymized aggregate origin–destination flows. At that point, the spatial- and temporal-aggregation strategy of MobilityGraphs can help assess whether mobility flows plausibly explain the observed zone-to-zone progression. Without user linkage, do not infer person-level movement or contact chains from individual posts.


6. Produce an emergency-management dashboard and update loop

Deliver four linked outputs:

  1. Current risk map: population-normalized symptom activity, severe-report signal, uncertainty, and emerging hotspots.
  2. Origin candidates panel: ranked locations with onset time, evidence, contradictory evidence, and sensitivity results.
  3. Transmission evidence panel: comparative support for person-to-person, airborne, waterborne, point-source, and mixed explanations.
  4. Resource-priority map: zones prioritized by current intensity, growth rate, vulnerable population count, proximity to hospitals, and uncertainty.

Re-run the workflow as new posts and weather observations arrive. Preserve an analysis log recording text-model changes, thresholds, cluster settings, selected hypotheses, and analyst interpretations.


Essential external data to request immediately

The current data can generate strong leads, but these additional data are needed to validate them:

  • de-identified confirmed-case line lists, including symptom onset date and approximate residence or exposure area;
  • emergency-department visits, lab test positivity, ambulance calls, and death records;
  • water distribution, sewer, treatment, and sampling data;
  • higher-resolution wind and air-quality observations;
  • major-event, school, workplace, and transit information;
  • anonymized aggregate mobility data, if legally and ethically available.

The recommended decision posture is therefore: deploy resources to high-confidence, rapidly growing hotspots immediately; investigate the leading transmission hypotheses in parallel; and update interventions as clinical and environmental evidence confirms or rejects the social-media-derived patterns.

5 Researcher

Make a list of papers from which you have taken relevant approaches.

6 Model

Identifying relevant papers

I need to compile a list of papers that discuss relevant approaches from prior workflows. It's important to include correct citations, but I should only name some of them. I’ll highlight relevant ones like Human-Steered Topic Modeling, Jigsaw, Partition-based methods, and Detecting Stable Cross-Impact. There might be others too, but it seems I need to focus on clarity. I'll also consider creating a concise table to illustrate the relationships among these approaches.

The relevant workflow-library papers I drew on were:

Paper / workflow Relevant approach used in the recommended outbreak workflow
Human-Steered Topic Modelling — Choo et al. (2013), UTOPIAN: User-Driven Topic Modeling Based on Interactive Nonnegative Matrix Factorization Iteratively classify and refine microblog topics with analyst input; inspect documents, correct misleading terms, merge/split themes, and retrain.
Jigsaw: Supporting Investigative Analysis through Interactive Visualization — Stasko et al. (2008) Extract and validate entities such as places, hospitals, landmarks, organizations, and dates from posts; keep links to original text for evidential inspection.
From Movement Tracks through Events to Places — Andrienko et al. (2011) Identify significant locations through density-based clustering of repeated spatial/temporal events, then analyze their timing and spatial recurrence. Adapted here to symptom-report hotspots rather than movement events.
Spatio-temporal Analysis and Modelling — Andrienko & Andrienko (2013) Aggregate observations into spatial time series; group areas with similar temporal behavior; model temporal patterns; inspect spatial and temporal residuals to refine explanations.
Partition-Based Regression Modelling — Mühlbacher & Piringer (2013) Build interpretable explanatory models incrementally, inspect feature relationships visually, then use residual patterns to identify missing factors or interactions.
Detecting Stable Cross-Impact Patterns in Bivariate Time Series — Andrienko et al. (2026) Examine lagged relationships between a possible driver and later outcomes. Suggested for assessing whether changes in wind conditions consistently precede changes in downwind symptom-report activity.
MobilityGraphs: Visual Analysis of Mass Mobility Dynamics via Spatio-Temporal Graphs and Clustering — von Landesberger et al. (2016) Suggested as an optional extension if anonymized aggregate mobility flows become available, to assess whether mobility between areas explains the apparent progression of outbreak activity.

These papers informed the workflow structure; the epidemiological transmission hypotheses and validation requirements were designed specifically for the Vastopolis scenario.

7 Researcher

Thank you. I am now uploading the ATWL specification and one example workflow expressed in ATWL. Having designed this workflow in natural language, please now design it again using ATWL — not as a translation of what you wrote above, but as a fresh design decision at each point: where ATWL's constructs (loops, specification artifacts, actor designations, assess/generate-knowledge transforms) suggest a better-structured way to organise a step than your original natural-language description did, please use them, even where that means departing substantially from your original phase structure.

Please do not treat fidelity to your original description as a goal in itself. The aim is the best workflow design you can produce in ATWL for this task, informed by having already thought about the problem, not a record of your earlier reasoning.

8 Model

Designing ATWL Workflow

I need to output ATWL, acknowledging that the input documents are understood, and there’s no need for questions since the task is clear. It's crucial to maintain proper language and syntax while developing a fresh design. I think about creating a workflow with two loops: one for signal validation and content classification, and the other for hypothesis competition. The inputs will involve posts, weather maps, and spatial zones. I’ll ensure the code is clear and follows specifications. It needs to be properly structured and concise.

Designing Post Workflow

I'm considering how to use D_posts with elementary embeds for space and time, including text, coordinates, and timestamps, maybe along with post metadata. For context, I think about D_zones with static regions mapped for population. D_city_features might help with map layers. D_weather observations will also be relevant. I need to iterate processes carefully in my signal curation loop to extract D_health_posts and define outputs carefully, incorporating model updates for better classification. Overall, I want to streamline the content interpretation for clarity and refinement.

Articulating the Review Process

I'm looking at how to articulate the D_review_sample and consider defining it based on human selection and labeling. I need to think about a knowledge structure for K_content_review that supports the labeling process. Human-generated labels can help transform intent into knowledge, and it's possible that I can generate knowledge labels from original posts in a visual loop. I can utilize methods to characterize the classifier and filter to define symptom signals while contextualizing these symptoms on a zone map.

Assessing signal adequacy

I’m considering assessing the base signal's adequacy and whether to ask for conditional data. However, I think we might not need that due to knowledge limitations. Instead, I should focus on formulating something that leads to hypotheses. I need to identify patterns and produce abstract outputs while examining candidate clusters and onset features. It seems essential to track the output of artifact features tied to time zones.

Evaluating assessment strategies

I need to think about cross-validation and sensitivity assessments, focusing on outputs like T_assess for K_mech quality and S config. It’s important to point out that "support does not establish causality" during this assessment. I also want to check if the current evidence is sufficient. If it isn’t, I may generate knowledge on operational priorities, while keeping resource allocation cautious and suggesting field sampling recommendations. Ultimately, I aim to capture any uncertainties.

workflow vastopolis-outbreak-source-and-transmission-analysis
  template: build-model (content classification) ->
            loop(characterise -> define-unit -> contextualise -> visualise ->
                 assess -> build-model (refine classification)) ->
            define-unit (spatiotemporal aggregation) -> characterise ->
            contextualise -> visualise -> abstract -> generate-knowledge ->
            characterise (mechanism predictors) -> build-model ->
            loop(characterise (model application) -> visualise -> abstract ->
                 assess -> build-model (refine competing hypotheses)) ->
            characterise (deployment priority) -> visualise ->
            generate-knowledge
  description: "Human-centred outbreak analysis workflow that uses geolocated
    microblog posts as uncertain syndromic signals to identify candidate onset
    locations, compare plausible transmission mechanisms, and formulate
    evidence-qualified emergency-response priorities."

# ============================================================================
# INPUTS AND EXTERNAL KNOWLEDGE
# ============================================================================

artifact D_posts : entities
  origin: given
  internal structure: elementary
  embedment: {space, time}
  features:
    - id: f_timestamp
      value structure: atomic
      value type: temporal
      description: "Timestamp of the mobile-device post"
    - id: f_location
      value structure: atomic
      value type: spatial
      description: "GPS coordinate associated with the post"
    - id: f_text
      value structure: atomic
      value type: text
      description: "Microblog message text"
    - id: f_account_reference
      value structure: atomic
      value type: reference
      description: "Pseudonymised source-account reference, where available"
  description: "Geolocated microblog posts collected during the outbreak period"

artifact D_zones : entities
  origin: given
  internal structure: region
  embedment: space
  features:
    - id: f_population
      value structure: atomic
      value type: numeric
      description: "Resident population in the city zone"
    - id: f_zone_name
      value structure: atomic
      value type: categorical
      description: "Zone identifier or name"
  description: "Thirteen metropolitan zones with boundaries and population statistics"

artifact D_city_features : entities
  origin: given
  internal structure: elementary
  embedment: space
  features:
    - id: f_feature_type
      value structure: atomic
      value type: categorical
      description: "Highway, hospital, landmark, water body, or other mapped feature"
    - id: f_geometry
      value structure: atomic
      value type: spatial
      description: "Geographic geometry of the mapped feature"
  description: "Reference map features for interpretation of possible transmission routes"

artifact D_weather : entities
  origin: given
  internal structure: elementary
  embedment: time
  features:
    - id: f_wind_speed
      value structure: atomic
      value type: numeric
      description: "Observed wind speed"
    - id: f_wind_direction
      value structure: atomic
      value type: numeric
      description: "Observed wind direction, converted to air-transport direction"
  description: "Daily weather observations for the metropolitan area"

artifact K_epidemiology_priors : knowledge(D_posts, D_weather, D_city_features)
  origin: given
  representation form: "interpretive rules and expectations"
  description: "Public-health knowledge describing plausible signatures of
    person-to-person, airborne, waterborne, and common-source transmission,
    including plausible delay ranges and known reporting biases"

artifact K_signal_limitations : knowledge(D_posts)
  origin: given
  representation form: "caveats and constraints"
  description: "Microblog reports are not confirmed infections; they can reflect
    news amplification, concern, care-seeking, duplicated content, unequal
    platform use, and inaccurate location or time information"

artifact S_content_initial : specification
  origin: given
  representation form: "classification configuration"
  description: "Initial symptom vocabulary, exclusion terms, confidence threshold,
    duplicate and bot filtering rules, language handling, and privacy constraints"

artifact S_aggregation : specification
  origin: given
  representation form: "aggregation settings"
  description: "Candidate temporal resolutions, spatial assignment rules,
    population normalisation method, and minimum-support thresholds for
    zone-time outbreak indicators"

# ============================================================================
# STEP 1: CREATE AND REFINE A TRUSTED SYNDROMIC SIGNAL
# ============================================================================

transform T_build_content_model :
  intent: build-model
  manner: "train weakly supervised text classifier"
  input: D_posts, K_epidemiology_priors, S_content_initial
  output: M_content_classifier_initial
  actor: hybrid
  description: "Construct an initial classifier that distinguishes likely
    self-reported flu-like symptoms, reports about others, severe illness or
    death, care-seeking, general concern, news reposting, and irrelevant posts"

artifact M_content_classifier_initial : model(D_posts, K_epidemiology_priors)
  model type: "text classification model"
  representation form: "hybrid keyword, entity-extraction, and statistical text model"
  description: "Initial model assigning health-evidence categories and confidence
    scores to microblog posts"

assign:
  M_content_classifier := M_content_classifier_initial
  S_content := S_content_initial

loop L_signal_refinement:
  purpose: "Create a credible, interpretable symptom-report signal before making
    spatial or causal inferences"
  until: "The analyst judges that retained symptom reports are sufficiently
    credible, representative, and distinct from media or concern amplification
    for outbreak exploration"
  body:

    transform T_screen_posts :
      intent: characterise
      manner: "classify and score health-related text"
      input: D_posts, M_content_classifier, S_content
      output: F_health_evidence
      actor: machine
      description: "Assign each post a health-evidence category, symptom severity,
        self-report likelihood, geographic and temporal reliability, and
        classification confidence"

    artifact F_health_evidence : feature(D_posts)
      value structure: vector
      value type: {categorical, ordinal, numeric}
      representation form: "health-evidence category and confidence vector"
      description: "Per-post symptom, severity, reporting-role, reliability, and
        confidence descriptors"

    transform T_select_symptom_signal :
      intent: define-unit
      manner: "filter high-confidence syndromic reports"
      input: D_posts, F_health_evidence, S_content
      output: D_symptom_signals
      actor: machine
      description: "Retain credible, non-duplicated posts indicating flu-like
        symptoms or severe illness while preserving confidence and source-diversity
        information"

    artifact D_symptom_signals : entities
      internal structure: elementary
      embedment: {space, time}
      features:
        - id: f_signal_category
          value structure: atomic
          value type: categorical
          description: "Symptom, severe illness, death-associated, or care-seeking signal"
        - id: f_confidence
          value structure: atomic
          value type: numeric
          description: "Confidence that the post represents a relevant health signal"
      description: "Filtered microblog posts used as uncertain syndromic evidence"

    transform T_contextualise_signal :
      intent: contextualise
      manner: "map-and-time placement"
      input: D_symptom_signals, D_zones
      output: A_signal_map
      actor: machine
      description: "Place symptom signals in their geographic zones while retaining
        timestamps for temporal filtering and inspection"

    artifact A_signal_map : arrangement(D_symptom_signals)
      context: D_zones
      principle: "GPS coordinate assigned to containing zone; timestamps retained"
      description: "Geographic placement of candidate symptom reports in city zones"

    transform T_visualise_signal_quality :
      intent: visualise
      manner: "coordinated evidence inspection"
      input: A_signal_map, D_symptom_signals, F_health_evidence, D_city_features
      output: V_signal_quality
      actor: machine
      description: "Show a linked map, timeline, category distributions, confidence
        distributions, source diversity indicators, and original post text for review"

    artifact V_signal_quality : visualisation(A_signal_map, D_symptom_signals,
        F_health_evidence, D_city_features)
      layout: "linked metropolitan map, temporal histogram, category panels, and text table"
      form: "coloured points, time-series marks, bars, and selectable text records"
      encoding: "map position from A_signal_map; colour from signal category;
        size or opacity from confidence; linked text shows original evidence"
      description: "Interactive display for detecting misclassification, duplicated
        news activity, implausible coordinates, and geographically concentrated
        reporting artifacts"

    transform T_assess_signal_quality :
      intent: assess
      manner: "evaluate evidence credibility and interpretability"
      input: V_signal_quality, D_symptom_signals, K_signal_limitations
      output: K_signal_quality, S_content_revised
      actor: human
      description: "Judge whether the retained signal plausibly represents illness
        reports rather than reporting artifacts; identify ambiguous terms,
        excluded categories, suspect accounts, and inappropriate thresholds"

    artifact K_signal_quality : knowledge(D_symptom_signals, V_signal_quality)
      representation form: "quality judgment"
      description: "Assessment of whether the symptom-report signal is credible
        enough for outbreak analysis and which errors remain important"

    artifact S_content_revised : specification
      representation form: "revised classification configuration"
      description: "Updated vocabulary, exclusions, confidence thresholds, source
        filters, and review priorities derived from signal-quality assessment"

    if K_signal_quality indicates signal refinement needed:
      then:
        transform T_refine_content_model :
          intent: build-model
          manner: "interactive classifier refinement"
          input: D_posts, M_content_classifier, K_signal_quality, S_content_revised
          output: M_content_classifier_revised
          actor: hybrid
          description: "Revise the text-classification model using analyst-reviewed
            examples, corrected category definitions, and revised filtering rules"

        artifact M_content_classifier_revised : model(D_posts, K_signal_quality)
          model type: "refined text classification model"
          representation form: "updated hybrid keyword, entity-extraction, and statistical model"
          description: "Improved health-evidence classifier aligned with reviewed posts"

        assign:
          M_content_classifier := M_content_classifier_revised
          S_content := S_content_revised
      else:
        exit loop L_signal_refinement

end loop L_signal_refinement

# ============================================================================
# STEP 2: CONSTRUCT POPULATION-AWARE SPATIOTEMPORAL OUTBREAK INDICATORS
# ============================================================================

transform T_define_zone_time_units :
  intent: define-unit
  manner: "spatiotemporal aggregation"
  input: D_symptom_signals, D_zones, D_weather, S_aggregation
  output: D_zone_time
  actor: machine
  description: "Aggregate validated symptom signals into multiple candidate
    zone-time units, associating each unit with its population, weather
    observation, and supporting message evidence"

artifact D_zone_time : entities
  internal structure: episode
  embedment: {space, time}
  features:
    - id: f_zone_reference
      value structure: atomic
      value type: reference
      description: "Reference to the represented city zone"
    - id: f_time_interval
      value structure: atomic
      value type: temporal
      description: "Analysis time bin"
    - id: f_population
      value structure: atomic
      value type: numeric
      description: "Population of the represented zone"
  description: "Zone-time episodes containing symptom-report observations and
    matched weather context"

transform T_characterise_outbreak_indicators :
  intent: characterise
  manner: "population-normalised syndromic summarisation"
  input: D_zone_time, D_posts, D_symptom_signals, S_aggregation
  output: F_outbreak_indicators
  actor: machine
  description: "Compute symptom-report count, rate per population, share of local
    posting activity, severe-report count, independent-source support, growth rate,
    and uncertainty indicators for each zone-time unit"

artifact F_outbreak_indicators : feature(D_zone_time)
  value structure: vector
  value type: numeric
  representation form: "multivariate time series per zone"
  description: "Population-aware and platform-activity-aware outbreak indicators,
    including uncertainty due to sparse or low-confidence reports"

transform T_create_outbreak_lattice :
  intent: contextualise
  manner: "space-time lattice construction"
  input: D_zone_time, D_zones
  output: D_outbreak_lattice, A_outbreak_lattice
  actor: machine
  description: "Create a map-time reference lattice with a position for every
    zone and analysis interval, including intervals with low or no signal"

artifact D_outbreak_lattice : entities
  internal structure: elementary
  embedment: {space, time}
  features:
    - id: f_zone_reference
      value structure: atomic
      value type: reference
      description: "Zone represented by the lattice position"
    - id: f_time_interval
      value structure: atomic
      value type: temporal
      description: "Time interval represented by the lattice position"
  description: "Complete zone-by-time context for comparing outbreak evolution"

artifact A_outbreak_lattice : arrangement(D_zone_time)
  context: D_outbreak_lattice
  principle: "zone identity and time interval"
  description: "Placement of each aggregated outbreak unit in the corresponding
    zone-time lattice position"

transform T_visualise_outbreak_evolution :
  intent: visualise
  manner: "linked animated map and temporal profile display"
  input: A_outbreak_lattice, F_outbreak_indicators, D_city_features
  output: V_outbreak_evolution
  actor: machine
  description: "Display outbreak intensity, uncertainty, and growth through time
    on a metropolitan map, linked to zone-rate trajectories and severe-report views"

artifact V_outbreak_evolution : visualisation(A_outbreak_lattice,
    F_outbreak_indicators, D_city_features)
  layout: "animated metropolitan map linked to aligned zone time series"
  form: "coloured zone marks, uncertainty overlays, lines, and event markers"
  encoding: "zone-time position from A_outbreak_lattice; colour from symptom rate;
    saturation from uncertainty; lines show rate and growth; map overlays show
    hospitals, highways, landmarks, and water bodies"
  description: "Visual basis for distinguishing early sustained activity from
    isolated posts, high population density, and care-seeking concentration"

# ============================================================================
# STEP 3: IDENTIFY CANDIDATE ONSET LOCATIONS AND FORMULATE TESTABLE HYPOTHESES
# ============================================================================

transform T_identify_onset_patterns :
  intent: abstract
  manner: "find persistent spatiotemporal clusters and onset order"
  input: D_zone_time, F_outbreak_indicators, V_outbreak_evolution
  output: P_outbreak_patterns, F_onset_characteristics
  actor: hybrid
  description: "Identify sustained excess-activity clusters, their onset order,
    persistence, spatial expansion, and sensitivity to aggregation resolution"

artifact P_outbreak_patterns : pattern(D_zone_time, F_outbreak_indicators)
  representation form: "ranked spatiotemporal cluster descriptions"
  description: "Candidate outbreak clusters characterised by onset time,
    persistence, intensity, spatial extent, and apparent expansion direction"

artifact F_onset_characteristics : feature(D_zone_time)
  value structure: vector
  value type: {temporal, numeric, ordinal}
  description: "Onset time, persistence score, local excess score, and
    candidate-origin ranking components for each zone-time unit"

transform T_formulate_hypotheses :
  intent: generate-knowledge
  manner: "formulate competing epidemiological hypotheses"
  input: P_outbreak_patterns, F_onset_characteristics, V_outbreak_evolution,
         K_epidemiology_priors, K_signal_limitations
  output: K_candidate_origins, S_hypotheses_initial
  actor: human
  description: "Interpret early sustained clusters as candidate observed-signal
    origins, distinguish them from likely infection sources, and define competing
    person-to-person, airborne, waterborne, common-source, reporting-artifact,
    and mixed-mechanism hypotheses"

artifact K_candidate_origins : knowledge(P_outbreak_patterns,
    F_onset_characteristics, V_outbreak_evolution)
  representation form: "ranked evidence statements"
  description: "Ranked candidate origin areas with supporting and contradictory
    evidence; explicitly distinguishes earliest observed reporting signal from
    a confirmed epidemiological source"

artifact S_hypotheses_initial : specification
  representation form: "competing-model configuration"
  description: "Candidate sources, plausible time lags, spatial scales, exposure
    definitions, confounder controls, model comparison criteria, and sensitivity
    scenarios for competing transmission hypotheses"

assign:
  S_hypotheses := S_hypotheses_initial

# ============================================================================
# STEP 4: COMPARE TRANSMISSION EXPLANATIONS THROUGH MODEL AND RESIDUAL ANALYSIS
# ============================================================================

transform T_characterise_mechanism_predictors :
  intent: characterise
  manner: "derive spatiotemporal exposure and connectivity predictors"
  input: D_zone_time, D_weather, D_zones, D_city_features, K_candidate_origins,
         S_hypotheses
  output: F_mechanism_predictors
  actor: machine
  description: "Compute lagged local and neighbouring symptom activity,
    highway-connected exposure, candidate-source distance, downwind alignment,
    wind speed, water proximity, population, hospital proximity, and local
    posting-activity controls"

artifact F_mechanism_predictors : feature(D_zone_time)
  value structure: vector
  value type: numeric
  representation form: "lagged spatial-exposure predictor vector"
  description: "Predictors representing contact propagation, wind-related
    transport, water-related exposure, common-source timing, and reporting
    confounders for each zone-time unit"

transform T_build_mechanism_models :
  intent: build-model
  manner: "fit competing explanatory spatiotemporal models"
  input: D_zone_time, F_outbreak_indicators, F_mechanism_predictors,
         S_hypotheses
  output: M_mechanism_models_initial
  actor: machine
  description: "Fit comparable models for contact propagation, airborne transport,
    water-associated exposure, common-source exposure, reporting artifact, and
    selected mixed mechanisms, using held-out periods or locations where possible"

artifact M_mechanism_models_initial : model(F_outbreak_indicators,
    F_mechanism_predictors)
  model type: "competing spatiotemporal count and rate models"
  representation form: "set of regularised lagged regression models with uncertainty estimates"
  description: "Alternative explanatory models predicting syndromic outbreak
    indicators under different transmission mechanisms"

assign:
  M_mechanism_models := M_mechanism_models_initial

loop L_mechanism_evaluation:
  purpose: "Test whether proposed transmission mechanisms explain observed
    outbreak spread robustly enough to guide emergency action"
  until: "Leading explanations are interpretable, robust across reasonable
    sensitivity settings, and their remaining uncertainty is explicit"
  body:

    transform T_apply_mechanism_models :
      intent: characterise
      manner: "predict, compare, and calculate residuals"
      input: D_zone_time, F_outbreak_indicators, F_mechanism_predictors,
             M_mechanism_models
      output: F_mechanism_results
      actor: machine
      description: "Generate predictions, residuals, uncertainty estimates,
        held-out performance measures, and comparative evidence scores for
        each transmission hypothesis"

    artifact F_mechanism_results : feature(D_zone_time)
      value structure: vector
      value type: numeric
      representation form: "per-hypothesis predictions, residuals, and uncertainty"
      description: "Observed-versus-predicted outbreak indicators and local
        unexplained activity for each competing mechanism"

    transform T_visualise_mechanism_evidence :
      intent: visualise
      manner: "comparative model and residual display"
      input: A_outbreak_lattice, F_outbreak_indicators, F_mechanism_predictors,
             F_mechanism_results, D_city_features, D_weather
      output: V_mechanism_evidence
      actor: machine
      description: "Show linked maps of observed activity, predictions, and
        residuals; downwind and water-exposure overlays; lag plots; and
        held-out model-comparison summaries"

    artifact V_mechanism_evidence : visualisation(A_outbreak_lattice,
        F_outbreak_indicators, F_mechanism_predictors, F_mechanism_results,
        D_city_features, D_weather)
      layout: "coordinated map-time views, residual maps, lag plots, and model score panels"
      form: "coloured zone marks, wind vectors, exposure overlays, lines, and bars"
      encoding: "map and time positions from A_outbreak_lattice; colour shows
        observed rate, predicted rate, or residual; arrows show wind transport;
        panels compare model performance and uncertainty"
      description: "Interactive evidence display for checking whether spatial and
        temporal patterns support a transmission mechanism rather than a
        coincidental association"

    transform T_abstract_mechanism_patterns :
      intent: abstract
      manner: "interpret explanatory and residual structures"
      input: V_mechanism_evidence, F_mechanism_results, K_epidemiology_priors
      output: P_mechanism_patterns
      actor: hybrid
      description: "Identify patterns such as serial local propagation,
        repeatable downwind association, shared water-body association,
        near-simultaneous point-source onset, or persistent unexplained residuals"

    artifact P_mechanism_patterns : pattern(F_mechanism_results,
        V_mechanism_evidence)
      representation form: "mechanism-evidence descriptions"
      description: "Observed explanatory structures and residual anomalies relevant
        to the competing transmission hypotheses"

    transform T_assess_mechanism_evidence :
      intent: assess
      manner: "evaluate robustness, confounding, and actionability"
      input: M_mechanism_models, F_mechanism_results, P_mechanism_patterns,
             V_mechanism_evidence, K_signal_limitations
      output: K_mechanism_quality, S_hypotheses_revised
      actor: hybrid
      description: "Assess predictive performance, residual structure, sensitivity
        to time and spatial resolution, plausibility of lag assumptions, reporting
        confounding, and whether model evidence is adequate for operational use"

    artifact K_mechanism_quality : knowledge(M_mechanism_models,
        F_mechanism_results, P_mechanism_patterns)
      representation form: "quality judgment and uncertainty assessment"
      description: "Assessment of which explanations are supported, weak, or
        indistinguishable; whether candidate sources or model assumptions require
        revision; and whether social-media evidence can support the intended action"

    artifact S_hypotheses_revised : specification
      representation form: "revised competing-model configuration"
      description: "Updated candidate-source set, lag windows, controls, spatial
        scale, exposure definitions, and model-selection choices based on
        robustness and residual assessment"

    if K_mechanism_quality indicates hypothesis or model revision needed:
      then:
        transform T_refine_mechanism_models :
          intent: build-model
          manner: "refit revised competing explanatory models"
          input: D_zone_time, F_outbreak_indicators, F_mechanism_predictors,
                 M_mechanism_models, K_mechanism_quality, S_hypotheses_revised
          output: M_mechanism_models_revised
          actor: hybrid
          description: "Refit or replace competing models after revising candidate
            sources, lag assumptions, controls, or included mechanisms"

        artifact M_mechanism_models_revised : model(F_outbreak_indicators,
            F_mechanism_predictors)
          model type: "refined competing spatiotemporal models"
          representation form: "revised regularised lagged regression model set"
          description: "Updated competing models designed to address identified
            confounding, residual anomalies, or hypothesis deficiencies"

        assign:
          S_hypotheses := S_hypotheses_revised
          M_mechanism_models := M_mechanism_models_revised
      else:
        exit loop L_mechanism_evaluation

end loop L_mechanism_evaluation

# ============================================================================
# STEP 5: TURN EVIDENCE INTO QUALIFIED EMERGENCY-RESPONSE PRIORITIES
# ============================================================================

transform T_characterise_deployment_priority :
  intent: characterise
  manner: "risk and uncertainty prioritisation"
  input: D_zone_time, F_outbreak_indicators, F_onset_characteristics,
         F_mechanism_results, K_mechanism_quality, D_zones, D_city_features
  output: F_deployment_priority
  actor: hybrid
  description: "Calculate zone-time deployment priorities using current outbreak
    intensity, growth, severe-report signal, population exposure, hospital context,
    model-supported spread risk, unexplained residual risk, and uncertainty"

artifact F_deployment_priority : feature(D_zone_time)
  value structure: vector
  value type: {numeric, ordinal}
  representation form: "priority score with contributing factors"
  description: "Emergency-response priority, confidence, and rationale for each
    zone-time unit; uncertainty increases the priority for surveillance and
    validation rather than implying a confirmed mechanism"

transform T_visualise_decision_support :
  intent: visualise
  manner: "operational dashboard"
  input: A_outbreak_lattice, F_outbreak_indicators, F_mechanism_results,
         F_deployment_priority, K_candidate_origins, D_city_features
  output: V_decision_support
  actor: machine
  description: "Provide an operational map of current hotspots, growth, candidate
    sources, mechanism evidence, uncertainty, and recommended investigation areas"

artifact V_decision_support : visualisation(A_outbreak_lattice,
    F_outbreak_indicators, F_mechanism_results, F_deployment_priority,
    K_candidate_origins, D_city_features)
  layout: "linked current-risk map, temporal trend panel, source ranking, and evidence panel"
  form: "priority-coloured zones, uncertainty hatching, trend lines, and ranked annotations"
  encoding: "zone-time placement from A_outbreak_lattice; colour from deployment
    priority; hatching from uncertainty; annotations identify candidate origins
    and leading supported mechanisms"
  description: "Decision-support display for assigning surveillance, clinical,
    environmental-investigation, and communication resources"

transform T_formulate_operational_findings :
  intent: generate-knowledge
  manner: "formulate evidence-qualified recommendations"
  input: K_candidate_origins, P_mechanism_patterns, K_mechanism_quality,
         F_deployment_priority, V_decision_support, K_signal_limitations
  output: K_operational_findings
  actor: human
  description: "State leading origin and transmission hypotheses with confidence
    and contradictory evidence; rank deployment zones; and specify confirmatory
    actions such as clinical surveillance, environmental sampling, facility
    inspection, and targeted public communication"

artifact K_operational_findings : knowledge(K_candidate_origins,
    P_mechanism_patterns, K_mechanism_quality, F_deployment_priority)
  representation form: "ranked recommendations with evidence and uncertainty"
  description: "Emergency-management recommendations that distinguish immediate
    hotspot response from mechanism-specific investigation, explicitly avoid
    treating microblog evidence as confirmation of outbreak origin or cause"