Raw session log. Continues c4; faithful atwl translation of the prose design.
10 turns (5 user · 5 assistant) json raw log
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.
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.
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.
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
-
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.
-
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.
-
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
-
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.
-
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.
-
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:
- Contact-propagation model: local prior rate plus lagged neighboring/highway-connected rates.
- Airborne model: source strength plus downwind alignment, wind speed, distance, and lag.
- Water-exposure model: water proximity or service-area term, adjusted for population and posting activity.
- 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:
- Select the earliest local cluster and inspect all associated messages in temporal order.
- Review referenced landmarks, facilities, events, workplaces, water locations, and travel mentions.
- Compare early candidate areas with matched areas that had similar population and posting volume but did not develop high symptom activity.
- 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?
- 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:
- Current risk map: population-normalized symptom activity, severe-report signal, uncertainty, and emerging hotspots.
- Origin candidates panel: ranked locations with onset time, evidence, contradictory evidence, and sensitivity results.
- Transmission evidence panel: comparative support for person-to-person, airborne, waterborne, point-source, and mixed explanations.
- 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.
Make a list of papers from which you have taken relevant approaches.
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.
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?
No questions. The ATWL specification and example are clear. Please proceed when ready.
Please proceed with representing the designed workflow in ATWL.
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
assesstransforms 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.