VAST · GPT-5.6-Terra · C6

Vastopolis outbreak investigation — C6 · faithful translation

C6

Raw session log. Continues c4; faithful atwl translation of the prose design.

10 turns (5 user · 5 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

You have designed a visual analytics workflow for a specific task, expressing it in natural language. In this second stage, I am now uploading the ATWL specification and one example workflow expressed in ATWL. Your task is to produce an ATWL representation of the workflow you designed in the previous stage.

This is not a mechanical translation. Please express your workflow in the ATWL vocabulary using its artifact types, transform intents, actor designations, loop constructs, and specification artifacts in the way that most faithfully captures the analytical process you described in your natural-language recommendation. Where your natural-language description implied structure that is naturally expressed as an ATWL construct (for example, an iterative refinement step that is naturally expressed as a loop with an assess transform and a specification artifact), please make this structure explicit in the ATWL representation.

At the same time, please be honest about what your original recommendation supports. If a phase of your workflow was described only as a linear sequence of steps without explicit iteration, without human-machine actor distinctions, or without specifications being updated, please do not fabricate these elements to make the ATWL representation appear more sophisticated. The goal is to represent, in ATWL, the workflow you actually designed, not a hypothetically enhanced version of it.

After you produce the ATWL representation, please briefly note any structural elements you added that were implicit in your original recommendation. This helps me understand the difference between what your original design communicated explicitly and what your ATWL representation makes explicit. If some structural elements in the ATWL are new additions rather than translations of what was already there, please say so.

Please read the ATWL specification and the example carefully before proceeding. Do you have any questions about the language or the syntax before you produce the ATWL representation?

8 Model

No questions. The ATWL specification and example are clear. Please proceed when ready.

9 Researcher

Please proceed with representing the designed workflow in ATWL.

10 Model

Exploring exposure predictors

I'm focusing on identifying candidate predictors like prior rates and adjacency to highways, considering downwind factors too. My aim is to gather multiple sources for mapping and weather data. It seems like I could potentially create alternative models, which might all output something like M_contact. I'm thinking that "T_build_alternative_models" could produce four different models to consider. It's interesting to think about how these various models will interact with the data I’m collecting!

Considering data loop design

I think I shouldn’t include a loop due to static data. It seems external operational recurrence isn’t represented as an analytic loop. But I remember that the previous natural language indicated it should re-run on arrival with explicit iteration. I need to make that clear. Maybe I can create a loop after the pipeline to handle body transformations that characterize fresh risk with models? Still, new cases could lead to reclassification, especially with incoming data.

workflow vastopolis-outbreak-origin-and-transmission
  template: define-unit -> loop(build-model -> characterise -> visualise ->
            abstract -> assess -> build-model) -> define-unit ->
            characterise -> contextualise -> visualise -> assess ->
            define-unit -> characterise -> contextualise -> visualise ->
            abstract -> generate-knowledge -> generate-knowledge ->
            characterise -> build-model ->
            loop(characterise -> contextualise -> visualise -> abstract ->
                 assess -> build-model) ->
            visualise -> generate-knowledge -> characterise -> visualise ->
            generate-knowledge
  description: "Visual analytics workflow for identifying likely outbreak-origin
    areas, comparing possible transmission mechanisms, and prioritising public
    health deployment using geolocated microblog reports, geographic context,
    population statistics, and weather observations."

# ============================================================================
# INPUT DATA AND INITIAL SPECIFICATIONS
# ============================================================================

artifact D_posts : entities
  origin: given
  internal structure: elementary
  embedment: {space, time}
  features:
    - id: timestamp
      value structure: atomic
      value type: temporal
      description: "Posting time"
    - id: gps_location
      value structure: atomic
      value type: spatial
      description: "GPS coordinate recorded by the mobile device"
    - id: text
      value structure: atomic
      value type: text
      description: "Microblog message text"
    - id: account_id
      value structure: atomic
      value type: reference
      description: "Pseudonymous account identifier, used only for duplicate
        and probable-bot detection"
  description: "Geolocated microblog messages collected during several days
    of the suspected outbreak"

artifact D_city_features : entities
  origin: given
  internal structure: elementary
  embedment: space
  features:
    - id: feature_type
      value structure: atomic
      value type: categorical
      description: "Highway, hospital, landmark, water body, or other map feature"
    - id: geometry
      value structure: atomic
      value type: spatial
      description: "Geographic geometry"
    - id: name
      value structure: atomic
      value type: text
      description: "Map feature name, where available"
  description: "Metropolitan geographic context including highways, hospitals,
    landmarks, and water bodies"

artifact D_zones : entities
  origin: given
  internal structure: region
  embedment: space
  features:
    - id: population
      value structure: atomic
      value type: numeric
      description: "Resident population of the city zone"
    - id: zone_name
      value structure: atomic
      value type: text
      description: "Zone identifier or name"
  description: "Thirteen city zones with population statistics"

artifact D_weather : entities
  origin: given
  internal structure: elementary
  embedment: time
  features:
    - id: wind_speed
      value structure: atomic
      value type: numeric
      description: "Observed wind speed"
    - id: wind_direction
      value structure: atomic
      value type: numeric
      description: "Observed wind direction"
  description: "Daily weather observations for Vastopolis"

artifact K_epidemiology : knowledge(D_posts, D_city_features, D_weather)
  origin: given
  representation form: "domain assumptions and interpretation guidance"
  description: "Public-health knowledge concerning flu-like symptoms,
    plausible reporting biases, plausible transmission mechanisms, expected
    temporal lags, and limitations of social-media data as a proxy for cases"

artifact S_cleaning : specification
  origin: given
  representation form: "filtering rules and uncertainty criteria"
  description: "Rules for duplicate removal, bot detection, timestamp and
    coordinate validation, and retention of uncertainty flags"

artifact S_content_initial : specification
  origin: given
  representation form: "initial text-classification configuration"
  description: "Initial symptom vocabulary, topic-model settings, content
    categories, confidence thresholds, and rules for identifying probable
    self-reported illness"

artifact S_spatiotemporal_units : specification
  origin: given
  representation form: "spatiotemporal aggregation settings"
  description: "Zone, fine-grid, and adaptive-cell resolutions; one-, three-,
    and six-hour temporal bins; population normalization; and low-volume
    uncertainty rules"

artifact S_origin_detection : specification
  origin: given
  representation form: "cluster and origin-ranking criteria"
  description: "Space-time clustering settings, persistence requirement,
    independent-account requirement where possible, onset definition, and
    sensitivity-analysis settings"

artifact S_model_initial : specification
  origin: given
  representation form: "candidate-model configuration"
  description: "Initial lag ranges, candidate source locations, covariates,
    comparison criteria, and transparent count/rate regression forms for
    contact-propagation, airborne, water-exposure, point-source, and mixed
    hypotheses"

assign:
  S_content_current := S_content_initial
  S_model_current := S_model_initial

# ============================================================================
# STEP 1: CLEAN POSTS AND ITERATIVELY REFINE CONTENT CLASSIFICATION
# ============================================================================

transform T_clean_posts :
  intent: define-unit
  manner: "filter and quality-control"
  input: D_posts, S_cleaning
  output: D_clean_posts
  actor: machine
  description: "Remove duplicate posts, obvious automated activity, and posts
    with invalid timestamps or coordinates while retaining quality and
    uncertainty indicators"

artifact D_clean_posts : entities
  internal structure: elementary
  embedment: {space, time}
  features:
    - id: text
      value structure: atomic
      value type: text
      description: "Post text"
    - id: location
      value structure: atomic
      value type: spatial
      description: "Validated GPS coordinate"
    - id: timestamp
      value structure: atomic
      value type: temporal
      description: "Validated posting time"
    - id: data_quality_flag
      value structure: atomic
      value type: categorical
      description: "Reliability and uncertainty flag"
  description: "Quality-controlled microblog posts"

transform T_train_initial_content_model :
  intent: build-model
  manner: "train text classifier and topic model"
  input: D_clean_posts, S_content_current, K_epidemiology
  output: M_content_model_initial
  actor: hybrid
  description: "Construct an initial content model using rules, topic
    modelling, and public-health terminology to distinguish symptom reports
    from news, concern, misinformation, and unrelated posts"

artifact M_content_model_initial : model(D_clean_posts, K_epidemiology)
  model type: "text classifier and topic model"
  representation form: "keyword rules plus topic-model parameters"
  description: "Initial model for classifying illness-related microblog posts"

assign:
  M_content_model := M_content_model_initial

loop L_content_refinement:
  purpose: "Refine illness-report classification until categories and
    confidence judgements are adequate for outbreak analysis"
  until: "Public-health analysts judge that sampled classifications, topic
    interpretations, and uncertainty flags are sufficiently credible"
  body:

    transform T_classify_posts :
      intent: characterise
      manner: "classify text content"
      input: D_clean_posts, M_content_model, S_content_current
      output: F_content_class
      actor: machine
      description: "Assign content categories and confidence values, including
        self-reported symptoms, reports about others, severe illness or death,
        healthcare seeking, news or concern, and unrelated content"

    artifact F_content_class : feature(D_clean_posts)
      value structure: vector
      value type: {categorical, numeric}
      representation form: "content category and confidence per post"
      description: "Probabilistic content labels for cleaned posts"

    transform T_visualise_content_review :
      intent: visualise
      manner: "linked text-map-time review"
      input: D_clean_posts, F_content_class
      output: V_content_review
      actor: machine
      description: "Display sampled original posts, topic/category summaries,
        message locations, and posting times for analyst inspection"

    artifact V_content_review : visualisation(D_clean_posts, F_content_class)
      layout: "linked document list, topic summary, map, and timeline"
      form: "text excerpts, coloured points, bars, and time series"
      encoding: "colour represents content category; map position represents
        GPS location; timeline position represents posting time; text panel
        exposes original messages"
      description: "Evidence view for reviewing text-classification results"

    transform T_interpret_content :
      intent: abstract
      manner: "perception-and-interpretation"
      input: V_content_review, F_content_class, K_epidemiology
      output: P_content_interpretation
      actor: human
      description: "Identify misleading terms, sarcasm, news reposting,
        non-flu conditions, category ambiguities, and meaningful illness-
        related themes"

    artifact P_content_interpretation : pattern(D_clean_posts, F_content_class)
      representation form: "annotated topic and classification issues"
      description: "Observed semantic patterns and classification problems in
        microblog content"

    transform T_assess_content :
      intent: assess
      manner: "assess text-classification adequacy"
      input: V_content_review, P_content_interpretation, F_content_class
      output: K_content_quality, S_content_refined
      actor: human
      description: "Judge whether content categories and confidence thresholds
        are adequate for use as illness indicators; formulate revised settings
        when they are not"

    artifact K_content_quality : knowledge(F_content_class, V_content_review)
      representation form: "quality judgment"
      description: "Analyst judgment about credibility, ambiguity, and
        suitability of classified posts for outbreak analysis"

    artifact S_content_refined : specification
      representation form: "revised text-classification configuration"
      description: "Updated symptom terms, topic interpretation, category
        definitions, thresholds, and exclusion rules"

    if K_content_quality indicates classification refinement needed:
      then:
        transform T_refine_content_model :
          intent: build-model
          manner: "retrain with analyst-guided vocabulary and topic changes"
          input: D_clean_posts, M_content_model, S_content_refined,
                 P_content_interpretation
          output: M_content_model_refined
          actor: hybrid
          description: "Retrain or adjust the content model using analyst-
            identified semantic issues and revised classification settings"

        artifact M_content_model_refined : model(D_clean_posts,
            P_content_interpretation)
          model type: "refined text classifier and topic model"
          representation form: "updated keyword rules and topic-model parameters"
          description: "Revised model for identifying credible illness reports"

        assign:
          M_content_model := M_content_model_refined
          S_content_current := S_content_refined
      else:
        exit loop L_content_refinement

end loop L_content_refinement

transform T_extract_place_mentions :
  intent: characterise
  manner: "named-entity and place-reference extraction"
  input: D_clean_posts, F_content_class, D_city_features
  output: F_place_mentions
  actor: hybrid
  description: "Extract and contextually validate references to landmarks,
    hospitals, events, workplaces, water locations, and travel locations"

artifact F_place_mentions : feature(D_clean_posts)
  value structure: list
  value type: reference
  representation form: "linked map-feature references and unresolved place names"
  description: "Place and facility references found in microblog text"

# ============================================================================
# STEP 2: CONSTRUCT AND VALIDATE SPATIOTEMPORAL OUTBREAK SIGNALS
# ============================================================================

transform T_select_health_reports :
  intent: define-unit
  manner: "filter by classified health-report category"
  input: D_clean_posts, F_content_class, K_content_quality
  output: D_symptom_reports, D_severe_reports
  actor: machine
  description: "Select high-confidence symptom reports and separately retain
    severe-illness or death-associated reports"

artifact D_symptom_reports : entities
  internal structure: elementary
  embedment: {space, time}
  features:
    - id: symptom_confidence
      value structure: atomic
      value type: numeric
      description: "Confidence that the post reports flu-like illness"
    - id: report_type
      value structure: atomic
      value type: categorical
      description: "Self-report or report about another person"
  description: "High-confidence flu-like symptom-report posts"

artifact D_severe_reports : entities
  internal structure: elementary
  embedment: {space, time}
  features:
    - id: severity_type
      value structure: atomic
      value type: categorical
      description: "Severe illness, death, or hospital-related report category"
  description: "Posts associated with severe illness, deaths, or healthcare seeking"

transform T_construct_signal_units :
  intent: define-unit
  manner: "spatiotemporal aggregation"
  input: D_symptom_reports, D_severe_reports, D_zones, S_spatiotemporal_units
  output: D_analysis_areas, D_signal_units
  actor: machine
  description: "Create city-zone, fine-grid, or adaptive spatial units and
    time-binned units for comparing outbreak signals across resolutions"

artifact D_analysis_areas : entities
  internal structure: region
  embedment: space
  features:
    - id: area_type
      value structure: atomic
      value type: categorical
      description: "Zone, grid cell, or adaptive area"
    - id: population
      value structure: atomic
      value type: numeric
      description: "Population estimate for the analysis area"
  description: "Spatial analysis areas at multiple resolutions"

artifact D_signal_units : entities
  internal structure: group/cluster
  embedment: {space, time}
  features:
    - id: temporal_bin
      value structure: atomic
      value type: temporal
      description: "Time interval represented by the unit"
    - id: spatial_area
      value structure: atomic
      value type: reference
      description: "Associated analysis area"
  description: "Aggregated symptom and severe-report observations by area and time"

transform T_compute_outbreak_indicators :
  intent: characterise
  manner: "aggregate and normalise"
  input: D_signal_units, D_clean_posts, D_analysis_areas
  output: F_outbreak_indicators
  actor: machine
  description: "Compute symptom counts, population-normalised rates, symptom
    share of local posting volume, severe-report counts, growth measures, and
    uncertainty indicators"

artifact F_outbreak_indicators : feature(D_signal_units)
  value structure: vector
  value type: numeric
  representation form: "time-binned outbreak indicator vector"
  description: "Counts, rates, posting-volume-adjusted measures, severe-report
    signals, growth estimates, and uncertainty values"

transform T_arrange_signals_on_map :
  intent: contextualise
  manner: "map-based"
  input: D_signal_units, D_analysis_areas
  output: A_signal_map
  actor: machine
  description: "Arrange aggregated signal units in their corresponding
    geographic analysis areas"

artifact A_signal_map : arrangement(D_signal_units)
  context: D_analysis_areas
  principle: "spatial-area membership"
  description: "Map arrangement of outbreak signal units"

transform T_visualise_outbreak_signals :
  intent: visualise
  manner: "coordinated map and temporal views"
  input: A_signal_map, F_outbreak_indicators, D_city_features, D_severe_reports
  output: V_signal_overview
  actor: machine
  description: "Show animated maps, area time series, temporal heatmaps,
    severe-report signals, and uncertainty indicators"

artifact V_signal_overview : visualisation(A_signal_map, F_outbreak_indicators,
    D_city_features, D_severe_reports)
  layout: "linked map, space-time heatmap, and zone time-series views"
  form: "coloured areas, points, lines, and uncertainty bands"
  encoding: "map position from arrangement; colour and height from symptom
    rate; point overlays from severe reports; bands represent uncertainty"
  description: "Visual overview for checking whether apparent peaks are
    credible illness signals rather than posting or media artifacts"

transform T_assess_signal_validity :
  intent: assess
  manner: "judge social-media signal credibility"
  input: V_signal_overview, D_symptom_reports, D_severe_reports,
         K_content_quality, K_epidemiology
  output: K_signal_validity
  actor: human
  description: "Inspect supporting posts and assess whether observed peaks
    plausibly reflect illness reporting rather than news amplification,
    hospital-reporting effects, or a viral-post cascade"

artifact K_signal_validity : knowledge(V_signal_overview, D_symptom_reports)
  representation form: "quality judgment and caveats"
  description: "Analyst assessment of credible, uncertain, and likely
    artifact-driven outbreak signals"

# ============================================================================
# STEP 3: DETECT PERSISTENT EARLY CLUSTERS AND RANK ORIGIN CANDIDATES
# ============================================================================

transform T_cluster_outbreak_events :
  intent: define-unit
  manner: "space-time density clustering"
  input: D_symptom_reports, F_outbreak_indicators, S_origin_detection
  output: D_outbreak_clusters, F_cluster_membership
  actor: machine
  description: "Identify persistent space-time concentrations of independent
    symptom reports and distinguish them from isolated bursts"

artifact D_outbreak_clusters : entities
  internal structure: group/cluster
  embedment: {space, time}
  features:
    - id: cluster_extent
      value structure: vector
      value type: {spatial, temporal}
      description: "Spatial and temporal extent of the cluster"
  description: "Persistent candidate outbreak clusters"

artifact F_cluster_membership : feature(D_symptom_reports)
  value structure: atomic
  value type: reference
  description: "Outbreak-cluster identifier for each symptom report"

transform T_characterise_clusters :
  intent: characterise
  manner: "compute onset, persistence, and robustness descriptors"
  input: D_outbreak_clusters, D_signal_units, F_outbreak_indicators,
         D_analysis_areas, S_origin_detection
  output: F_cluster_descriptors
  actor: machine
  description: "Compute sustained onset time, intensity, persistence,
    population-normalised severity, subsequent expansion, and sensitivity to
    classification thresholds and spatial-temporal resolutions"

artifact F_cluster_descriptors : feature(D_outbreak_clusters)
  value structure: vector
  value type: {numeric, temporal}
  representation form: "origin-evidence descriptor vector"
  description: "Features used to compare candidate origin areas"

transform T_arrange_clusters_on_map :
  intent: contextualise
  manner: "map-based"
  input: D_outbreak_clusters, D_analysis_areas
  output: A_cluster_map
  actor: machine
  description: "Place outbreak clusters on the geographic analysis map"

artifact A_cluster_map : arrangement(D_outbreak_clusters)
  context: D_analysis_areas
  principle: "cluster centroid and spatial extent"
  description: "Geographic arrangement of outbreak clusters"

transform T_visualise_onset_and_expansion :
  intent: visualise
  manner: "animated onset and expansion map"
  input: A_cluster_map, F_cluster_descriptors, D_city_features,
         F_outbreak_indicators
  output: V_origin_evidence
  actor: machine
  description: "Show onset times, expansion contours, candidate clusters,
    nearby hospitals, landmarks, highways, and water bodies"

artifact V_origin_evidence : visualisation(A_cluster_map, F_cluster_descriptors,
    D_city_features, F_outbreak_indicators)
  layout: "time-enabled geographic map with linked cluster ranking"
  form: "coloured cluster regions, contours, points, and ranked bars"
  encoding: "colour represents onset time; size represents intensity;
    contours represent later expansion; map overlays show city features"
  description: "Evidence view for identifying early sustained outbreak areas"

transform T_interpret_origin_patterns :
  intent: abstract
  manner: "rank persistent early clusters"
  input: V_origin_evidence, F_cluster_descriptors, K_signal_validity
  output: P_origin_candidates
  actor: hybrid
  description: "Rank candidate origin areas by early sustained onset,
    persistence, intensity, downstream temporal ordering, and robustness,
    while retaining the distinction between reporting origin and infection origin"

artifact P_origin_candidates : pattern(D_outbreak_clusters,
    F_cluster_descriptors)
  representation form: "ranked candidate-origin patterns"
  description: "Persistent early outbreak clusters and their observed
    expansion relationships"

transform T_formulate_origin_assessment :
  intent: generate-knowledge
  manner: "formulate-statements"
  input: P_origin_candidates, V_origin_evidence, K_signal_validity,
         K_epidemiology
  output: K_origin_assessment
  actor: human
  description: "Formulate a ranked, uncertainty-aware assessment of candidate
    source areas, including supporting evidence, contradictory evidence, and
    reporting-bias caveats"

artifact K_origin_assessment : knowledge(P_origin_candidates,
    V_origin_evidence)
  representation form: "ranked evidence statements"
  description: "Candidate outbreak-origin areas with confidence, supporting
    observations, contradictions, and caveats"

# ============================================================================
# STEP 4: FORMULATE COMPETING TRANSMISSION HYPOTHESES AND PREDICTORS
# ============================================================================

transform T_formulate_hypotheses :
  intent: generate-knowledge
  manner: "formulate-statements and modelling strategy"
  input: K_origin_assessment, K_epidemiology, D_city_features, D_weather
  output: K_transmission_hypotheses, S_hypothesis_models
  actor: human
  description: "Define testable person-to-person, airborne, waterborne,
    common-point-source, reporting-artifact, and mixed-mechanism hypotheses,
    with expected observable patterns and comparison requirements"

artifact K_transmission_hypotheses : knowledge(K_origin_assessment,
    D_city_features, D_weather)
  representation form: "competing explanatory hypotheses"
  description: "Explicit statements of expected spatial and temporal patterns
    for alternative transmission mechanisms"

artifact S_hypothesis_models : specification
  representation form: "model structure and comparison constraints"
  description: "Hypothesis-specific predictors, lags, candidate-source
    handling, validation periods, matched-area comparisons, and complexity
    constraints"

transform T_compute_exposure_predictors :
  intent: characterise
  manner: "derive spatiotemporal explanatory features"
  input: D_signal_units, F_outbreak_indicators, D_analysis_areas,
         D_city_features, D_weather, K_origin_assessment,
         S_hypothesis_models
  output: F_exposure_predictors
  actor: machine
  description: "Compute prior local rates, adjacent-zone and highway-connected
    rates, source distance, downwind alignment, wind speed, water proximity,
    reporting volume, hospital proximity, and population-related predictors"

artifact F_exposure_predictors : feature(D_signal_units)
  value structure: vector
  value type: numeric
  representation form: "lagged spatial-exposure predictor vector"
  description: "Predictors for contrasting transmission mechanisms"

transform T_build_initial_models :
  intent: build-model
  manner: "fit alternative transparent spatiotemporal regressions"
  input: D_signal_units, F_outbreak_indicators, F_exposure_predictors,
         K_transmission_hypotheses, S_model_current
  output: M_contact_initial, M_airborne_initial, M_water_initial,
          M_point_source_initial, M_mixed_initial
  actor: machine
  description: "Fit initial explanatory models for contact propagation,
    airborne spread, water exposure, common point source, and mixed mechanisms"

artifact M_contact_initial : model(F_outbreak_indicators,
    F_exposure_predictors)
  model type: "spatiotemporal count or rate regression model"
  representation form: "lagged local, adjacent-zone, and highway-connectivity terms"
  description: "Model of person-to-person or mobility-mediated propagation"

artifact M_airborne_initial : model(F_outbreak_indicators,
    F_exposure_predictors)
  model type: "spatiotemporal count or rate regression model"
  representation form: "source-distance, downwind-alignment, wind-speed, and lag terms"
  description: "Model of airborne or aerosol-mediated spread"

artifact M_water_initial : model(F_outbreak_indicators,
    F_exposure_predictors)
  model type: "spatiotemporal count or rate regression model"
  representation form: "water-proximity or service-area exposure terms"
  description: "Model of water-related exposure"

artifact M_point_source_initial : model(F_outbreak_indicators,
    F_exposure_predictors)
  model type: "spatiotemporal count or rate regression model"
  representation form: "candidate-event or candidate-location exposure terms"
  description: "Model of common-event or local point-source exposure"

artifact M_mixed_initial : model(F_outbreak_indicators,
    F_exposure_predictors)
  model type: "spatiotemporal count or rate regression model"
  representation form: "penalised combination of mechanism-specific predictors"
  description: "Model allowing more than one transmission mechanism"

assign:
  M_contact := M_contact_initial
  M_airborne := M_airborne_initial
  M_water := M_water_initial
  M_point_source := M_point_source_initial
  M_mixed := M_mixed_initial

# ============================================================================
# STEP 5: RESIDUAL-DRIVEN HYPOTHESIS COMPARISON AND MODEL REFINEMENT
# ============================================================================

loop L_hypothesis_refinement:
  purpose: "Compare competing transmission explanations and refine models only
    when visual residual evidence identifies a meaningful missing factor"
  until: "Model performance, residual patterns, validation results, and
    epidemiological interpretability are adequate for operational comparison"
  body:

    transform T_apply_hypothesis_models :
      intent: characterise
      manner: "predict and compute residuals"
      input: D_signal_units, F_outbreak_indicators, F_exposure_predictors,
             M_contact, M_airborne, M_water, M_point_source, M_mixed
      output: F_model_outputs
      actor: machine
      description: "Generate model-specific predicted rates, residuals,
        uncertainty estimates, fit statistics, and held-out location/time
        validation measures"

    artifact F_model_outputs : feature(D_signal_units)
      value structure: vector
      value type: numeric
      representation form: "observed, predicted, residual, and validation values per model"
      description: "Comparative outputs of the candidate transmission models"

    transform T_arrange_model_outputs :
      intent: contextualise
      manner: "map-based"
      input: D_signal_units, D_analysis_areas
      output: A_model_map
      actor: machine
      description: "Arrange model predictions and residuals by analysis area"

    artifact A_model_map : arrangement(D_signal_units)
      context: D_analysis_areas
      principle: "spatial-area membership"
      description: "Geographic arrangement for model diagnostics"

    transform T_visualise_model_diagnostics :
      intent: visualise
      manner: "comparative residual and validation display"
      input: A_model_map, F_model_outputs, D_weather, D_city_features,
             K_transmission_hypotheses
      output: V_model_diagnostics
      actor: machine
      description: "Display observed-versus-predicted rates, residual maps,
        uncertainty intervals, model comparisons, lag plots, wind vectors,
        and downwind/upwind contrasts"

    artifact V_model_diagnostics : visualisation(A_model_map, F_model_outputs,
        D_weather, D_city_features)
      layout: "linked maps, time series, observed-predicted plots, residual
        panels, and model-comparison charts"
      form: "coloured areas, lines, arrows, scatterplots, and uncertainty bands"
      encoding: "map colour represents residual or predicted rate; wind arrows
        represent direction and speed; line plots show lagged changes;
        panels compare alternative models"
      description: "Visual diagnostic environment for evaluating competing
        transmission explanations"

    transform T_interpret_residual_patterns :
      intent: abstract
      manner: "perception-and-interpretation"
      input: V_model_diagnostics, F_model_outputs, K_transmission_hypotheses
      output: P_model_residual_patterns
      actor: human
      description: "Identify coherent unexplained residual hotspots, stable
        lagged wind effects, spatial propagation waves, water-aligned
        concentrations, or model-specific failure patterns"

    artifact P_model_residual_patterns : pattern(F_model_outputs,
        V_model_diagnostics)
      representation form: "annotated residual and cross-impact patterns"
      description: "Observed explanatory successes, failures, and possible
        missing factors in the transmission models"

    transform T_assess_hypothesis_models :
      intent: assess
      manner: "assess model adequacy and comparative support"
      input: V_model_diagnostics, P_model_residual_patterns,
             K_transmission_hypotheses, S_model_current
      output: K_model_assessment, S_model_refined
      actor: human
      description: "Assess predictive performance, residual structure,
        robustness across wind changes and resolutions, plausibility, and
        whether model refinement is justified"

    artifact K_model_assessment : knowledge(F_model_outputs,
        P_model_residual_patterns)
      representation form: "comparative quality judgment"
      description: "Assessment of each transmission model's adequacy,
        limitations, residual anomalies, and relative operational support"

    artifact S_model_refined : specification
      representation form: "revised model configuration"
      description: "Revised predictors, lag choices, interaction terms,
        thresholds, validation settings, or feature exclusions justified by
        residual analysis"

    if K_model_assessment indicates refinement needed:
      then:
        transform T_refine_hypothesis_models :
          intent: build-model
          manner: "residual-driven regression refinement"
          input: D_signal_units, F_outbreak_indicators, F_exposure_predictors,
                 P_model_residual_patterns, S_model_refined,
                 M_contact, M_airborne, M_water, M_point_source, M_mixed
          output: M_contact_refined, M_airborne_refined, M_water_refined,
                  M_point_source_refined, M_mixed_refined
          actor: hybrid
          description: "Refit candidate models after adding, removing, or
            reconfiguring factors only where diagnostic evidence supports it"

        artifact M_contact_refined : model(F_outbreak_indicators,
            F_exposure_predictors)
          model type: "refined spatiotemporal regression model"
          description: "Refined contact-propagation explanation"

        artifact M_airborne_refined : model(F_outbreak_indicators,
            F_exposure_predictors)
          model type: "refined spatiotemporal regression model"
          description: "Refined airborne-spread explanation"

        artifact M_water_refined : model(F_outbreak_indicators,
            F_exposure_predictors)
          model type: "refined spatiotemporal regression model"
          description: "Refined water-exposure explanation"

        artifact M_point_source_refined : model(F_outbreak_indicators,
            F_exposure_predictors)
          model type: "refined spatiotemporal regression model"
          description: "Refined common-point-source explanation"

        artifact M_mixed_refined : model(F_outbreak_indicators,
            F_exposure_predictors)
          model type: "refined spatiotemporal regression model"
          description: "Refined mixed-mechanism explanation"

        assign:
          M_contact := M_contact_refined
          M_airborne := M_airborne_refined
          M_water := M_water_refined
          M_point_source := M_point_source_refined
          M_mixed := M_mixed_refined
          S_model_current := S_model_refined
      else:
        exit loop L_hypothesis_refinement

end loop L_hypothesis_refinement

# ============================================================================
# STEP 6: INVESTIGATE CANDIDATE SOURCES AND SYNTHESISE EVIDENCE
# ============================================================================

transform T_visualise_source_evidence :
  intent: visualise
  manner: "linked evidence investigation"
  input: D_symptom_reports, D_severe_reports, F_place_mentions,
         P_origin_candidates, F_model_outputs, D_city_features,
         V_model_diagnostics
  output: V_source_investigation
  actor: machine
  description: "Support inspection of candidate-source messages in temporal
    order, linked landmarks and facilities, backward tracing from later
    hotspots, matched comparison areas, and conflicting evidence"

artifact V_source_investigation : visualisation(D_symptom_reports,
    D_severe_reports, F_place_mentions, P_origin_candidates,
    F_model_outputs, D_city_features)
  layout: "linked map, message timeline, candidate-source panel, and
    comparison-area views"
  form: "points, trajectories, text excerpts, ranked lists, and maps"
  encoding: "message positions derive from GPS coordinates; temporal order
    derives from timestamps; overlays show candidate origins, facilities,
    water bodies, highways, and model-supported exposure relationships"
  description: "Detailed evidence view for field investigation of possible
    source locations and exposure mechanisms"

transform T_investigate_candidate_sources :
  intent: generate-knowledge
  manner: "formulate evidence statements"
  input: V_source_investigation, K_origin_assessment, K_model_assessment,
         K_transmission_hypotheses, K_epidemiology
  output: K_source_investigation
  actor: human
  description: "Record source-specific supporting and contradictory evidence,
    compare matched non-outbreak areas, distinguish infection-source evidence
    from care-seeking/reporting effects, and identify field-investigation needs"

artifact K_source_investigation : knowledge(V_source_investigation,
    K_origin_assessment, K_model_assessment)
  representation form: "candidate-source evidence log"
  description: "Documented interpretation of likely sources, possible
    mechanisms, uncertainties, contradictions, and recommended validation
    actions"

transform T_synthesise_transmission_assessment :
  intent: generate-knowledge
  manner: "formulate-statements"
  input: K_origin_assessment, K_model_assessment, K_source_investigation,
         K_transmission_hypotheses, K_signal_validity
  output: K_transmission_assessment
  actor: human
  description: "Synthesize the relative support for person-to-person,
    airborne, waterborne, point-source, reporting-artifact, and mixed
    explanations without claiming definitive causation from microblog data"

artifact K_transmission_assessment : knowledge(K_origin_assessment,
    K_model_assessment, K_source_investigation)
  representation form: "uncertainty-aware explanatory assessment"
  description: "Ranked transmission hypotheses, supporting and contradictory
    evidence, uncertainty, and requirements for clinical or environmental
    confirmation"

# ============================================================================
# STEP 7: PRIORITISE DEPLOYMENT AND COMMUNICATE RESULTS
# ============================================================================

transform T_compute_resource_priority :
  intent: characterise
  manner: "risk and deployment prioritisation"
  input: D_signal_units, F_outbreak_indicators, F_model_outputs,
         D_analysis_areas, K_transmission_assessment
  output: F_resource_priority
  actor: machine
  description: "Compute area priority from current intensity, growth rate,
    severe-report signal, population exposure, hospital context, model support,
    and uncertainty"

artifact F_resource_priority : feature(D_analysis_areas)
  value structure: vector
  value type: {numeric, ordinal}
  representation form: "priority score with explanatory components"
  description: "Emergency-management priority and contributing risk factors
    for each analysis area"

transform T_visualise_operational_dashboard :
  intent: visualise
  manner: "linked emergency-management dashboard"
  input: A_signal_map, F_outbreak_indicators, P_origin_candidates,
         K_transmission_assessment, F_resource_priority, D_city_features
  output: V_operational_dashboard
  actor: machine
  description: "Provide current risk, origin candidates, transmission evidence,
    uncertainty, and resource-priority views in one linked dashboard"

artifact V_operational_dashboard : visualisation(A_signal_map,
    F_outbreak_indicators, P_origin_candidates, K_transmission_assessment,
    F_resource_priority, D_city_features)
  layout: "linked current-risk map, origin-ranking panel, transmission-evidence
    panel, and resource-priority map"
  form: "coloured areas, ranked lists, time series, symbols, and uncertainty bands"
  encoding: "area colour and size encode current risk and priority; panels
    show ranked origin candidates and relative hypothesis support; symbols
    identify hospitals, highways, landmarks, and water bodies"
  description: "Operational dashboard for public-health and emergency managers"

transform T_formulate_deployment_recommendations :
  intent: generate-knowledge
  manner: "derive-rules and write-summary"
  input: V_operational_dashboard, K_transmission_assessment,
         K_source_investigation, K_epidemiology
  output: K_deployment_recommendations, K_update_protocol
  actor: human
  description: "Recommend immediate resource deployment, targeted field
    investigations, clinical and environmental validation, public communication,
    and documented re-analysis as new posts and weather observations arrive"

artifact K_deployment_recommendations : knowledge(V_operational_dashboard,
    K_transmission_assessment)
  representation form: "prioritised recommendations"
  description: "Recommended deployment of testing, clinical outreach,
    communications, environmental inspection, and emergency resources, with
    uncertainty-aware rationale"

artifact K_update_protocol : knowledge(V_operational_dashboard,
    K_deployment_recommendations)
  representation form: "operational update protocol"
  description: "Instructions to preserve the analysis log and rerun the
    workflow when new microblogs, weather data, clinical surveillance, or
    environmental evidence become available"

Structural elements made explicit

  • I represented the original iterative text-review process as L_content_refinement, because the recommendation explicitly called for analysts to inspect classifications, adjust terms/categories, and retrain.
  • I represented residual-driven transmission-model refinement as L_hypothesis_refinement, reflecting the stated sequence of fitting models, mapping residuals, and adding factors only when residual structure justified it.
  • I made the narrative visual checkpoints explicit as assess transforms producing quality judgments. These checkpoints were stated in the original workflow, but ATWL requires their inputs and outputs to be formalized.
  • I represented the hypothesis table as both substantive knowledge (K_transmission_hypotheses) and a modelling specification (S_hypothesis_models): the former expresses epidemiological expectations, while the latter controls model construction.
  • I did not add a full data-stream loop for new incoming posts. The original workflow said to rerun the analysis as data arrive, but did not specify a distinct incremental-analysis procedure. This is therefore captured as K_update_protocol, rather than as a new ATWL loop with additional unmentioned update mechanics.