C2
Designed by GPT-5.6-Terra. ATWL specification + one worked example (HITL); no library. ↓ download raw .atwl
Workflow header & template
workflow vastopolis-flu-outbreak-investigation
template: loop(characterise → visualise → abstract → assess) →
define-unit → define-unit → characterise →
contextualise → visualise → abstract →
loop(build-model → characterise → visualise → abstract → assess) →
generate-knowledge
description: "Human-in-the-loop investigation of a suspected flu-like
outbreak using geolocated microblogs as a syndromic surveillance proxy.
The workflow identifies candidate origins and compares person-to-person,
airborne, water-associated, and other local-source explanations while
preserving uncertainty."
Input Data, Context, And Prior Knowledge
artifact D_posts : entities
origin: given
internal structure: elementary
embedment: {space, time}
features:
- id: timestamp
value structure: atomic
value type: temporal
description: "Time at which the message was posted"
- id: location
value structure: atomic
value type: spatial
description: "GPS coordinate associated with the mobile device"
- id: text
value structure: atomic
value type: text
description: "Microblog message content"
description: "Geolocated microblog messages posted during the suspected
outbreak period"
artifact D_zones : entities
origin: given
internal structure: region
embedment: space
features:
- id: zone_id
value structure: atomic
value type: reference
description: "Identifier of one of the 13 metropolitan zones"
- id: population
value structure: atomic
value type: numeric
description: "Resident population of the zone"
- id: geometry
value structure: atomic
value type: spatial
description: "Zone boundary geometry"
description: "Metropolitan zones used for population-normalised
aggregation and emergency-resource planning"
artifact D_geography : entities
origin: given
internal structure: elementary
embedment: space
features:
- id: geographic_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: "Spatial geometry of the geographic feature"
description: "Reference map features, including highways, hospitals,
landmarks, and water bodies"
artifact D_weather : entities
origin: given
internal structure: elementary
embedment: time
features:
- id: wind_speed
value structure: atomic
value type: numeric
description: "Observed daily wind speed"
- id: wind_direction
value structure: atomic
value type: spatial
description: "Observed daily wind direction"
description: "Daily weather observations during the investigation period"
artifact K_epidemiology : knowledge(D_posts, D_zones, D_weather)
origin: given
representation form: "domain rules and expected signatures"
description: "Public-health knowledge about flu-like symptom language,
plausible reporting biases, plausible transmission signatures, and the
distinction between syndromic signals and confirmed infections"
artifact S_relevance : specification
origin: given
representation form: "method choice and thresholds"
description: "Initial rules and model settings for identifying posts likely
to describe flu-like illness, including symptom terms, negation handling,
language variants, confidence threshold, and exclusion criteria"
artifact S_hypothesis : specification
origin: given
representation form: "comparative modelling configuration"
description: "Initial temporal lags, spatial neighbourhood definitions,
candidate transmission mechanisms, uncertainty treatment, and criteria
for comparing person-to-person, airborne, water-associated, and
local-source explanations"
Step 1: Iteratively Identify Illness-Related Microblog Posts
loop L_relevance_refinement:
purpose: "Develop an interpretable and sufficiently reliable syndromic
signal from unstructured microblog text"
until: "The analyst judges that illness-related messages are adequately
distinguished from unrelated, historical, sarcastic, and non-local posts"
body:
transform T_score_posts :
intent: characterise
manner: "text encoding and illness relevance scoring"
input: D_posts, K_epidemiology, S_relevance
output: F_illness_score
actor: hybrid
description: "Extract symptom expressions, illness mentions, negation,
severity language, and relevance confidence from post text"
artifact F_illness_score : feature(D_posts)
value structure: vector
value type: {numeric, categorical}
representation form: "illness relevance score and linguistic indicators"
description: "Per-post probability of describing a current local
flu-like illness and associated symptom-language indicators"
transform T_visualise_posts :
intent: visualise
manner: "linked text and map inspection"
input: D_posts, F_illness_score
output: V_post_relevance
actor: machine
description: "Show sampled messages, relevance scores, locations, and
posting times so the analyst can inspect false positives and omissions"
artifact V_post_relevance : visualisation(D_posts, F_illness_score)
layout: "linked message list, map, and time histogram"
form: "text records, coloured map points, and bars"
encoding: "colour indicates illness relevance score; map position comes
from GPS coordinates; time histogram shows posting volume"
description: "Interactive inspection view for validating the syndromic
message-identification process"
transform T_interpret_language :
intent: abstract
manner: "perception-and-interpretation"
input: V_post_relevance, F_illness_score, K_epidemiology
output: P_language_patterns
actor: human
description: "Identify meaningful symptom vocabulary, ambiguous phrases,
reporting artefacts, and systematic false-positive message types"
artifact P_language_patterns : pattern(D_posts, F_illness_score)
representation form: "annotated linguistic categories"
description: "Observed illness-language patterns and misleading message
categories relevant to flu-like syndromic surveillance"
transform T_assess_relevance :
intent: assess
manner: "judge classification adequacy"
input: V_post_relevance, P_language_patterns, F_illness_score
output: K_relevance_quality, S_relevance_r
actor: human
description: "Assess whether the relevance signal is sufficiently
credible for aggregate surveillance and, if needed, formulate
revised scoring rules or thresholds"
artifact K_relevance_quality : knowledge(F_illness_score, V_post_relevance)
representation form: "quality judgment"
description: "Analyst judgment about the adequacy, bias, and limitations
of the illness-message relevance classification"
artifact S_relevance_r : specification
representation form: "revised method choice and thresholds"
description: "Updated linguistic rules, confidence threshold, or
exclusion criteria for illness-message identification"
if K_relevance_quality indicates refinement needed:
then:
assign:
S_relevance := S_relevance_r
else:
exit loop L_relevance_refinement
end loop L_relevance_refinement
Step 2: Define Outbreak Units And Compute Spatiotemporal Indicators
transform T_select_illness_posts :
intent: define-unit
manner: "filter by illness relevance"
input: D_posts, F_illness_score, S_relevance
output: D_illness_posts
actor: hybrid
description: "Retain posts judged sufficiently likely to describe a
current flu-like illness"
artifact D_illness_posts : entities
internal structure: elementary
embedment: {space, time}
features:
- id: illness_confidence
value structure: atomic
value type: numeric
description: "Confidence that the post describes flu-like illness"
- id: symptom_terms
value structure: list
value type: text
description: "Extracted symptom and illness expressions"
description: "Filtered geolocated posts forming the syndromic surveillance
signal for the outbreak investigation"
transform T_aggregate_zone_days :
intent: define-unit
manner: "space-time aggregation by zone and day"
input: D_illness_posts, D_zones
output: D_zone_days
actor: machine
description: "Aggregate illness-related posts into daily episodes for each
city zone, retaining constituent messages for drill-down inspection"
artifact D_zone_days : entities
internal structure: episode
embedment: {space, time}
features:
- id: zone_id
value structure: atomic
value type: reference
description: "Zone represented by the zone-day episode"
- id: date
value structure: atomic
value type: temporal
description: "Calendar day represented by the episode"
description: "Zone-by-day syndromic surveillance episodes containing
illness-related microblog messages"
transform T_characterise_outbreak :
intent: characterise
manner: "population-normalised outbreak profiling"
input: D_zone_days, D_zones
output: F_outbreak_signal
actor: machine
description: "Compute illness-post counts, population-normalised rates,
temporal changes, excess activity, and uncertainty caused by low volume"
artifact F_outbreak_signal : feature(D_zone_days)
value structure: vector
value type: numeric
representation form: "daily syndromic incidence profile"
description: "Counts, rates per population, growth measures, anomaly scores,
and uncertainty indicators for each zone-day"
transform T_characterise_context :
intent: characterise
manner: "derive environmental and propagation relations"
input: D_zone_days, D_zones, D_geography, D_weather
output: F_exposure_context, F_propagation_relations
actor: machine
description: "Derive zone-day descriptors and lagged relations involving
population density, spatial adjacency, highways, hospitals, water
proximity, wind direction, and wind speed"
artifact F_exposure_context : feature(D_zone_days)
value structure: vector
value type: {numeric, categorical}
description: "Population, geographic, weather, and infrastructure context
associated with each zone-day"
artifact F_propagation_relations : feature(D_zone_days)
value structure: relational configuration
representation form: "directed lagged zone-day relation graph"
description: "Candidate propagation relations between zone-days based on
adjacency, transport connectivity, wind alignment, and water proximity"
Step 3: Visually Identify Candidate Origin Areas And Diffusion Patterns
transform T_arrange_zone_days :
intent: contextualise
manner: "map-based"
input: D_zone_days, D_zones
output: A_zone_map
actor: machine
description: "Place each zone-day episode in its corresponding metropolitan
zone so time-filtered outbreak maps can be inspected"
artifact A_zone_map : arrangement(D_zone_days)
context: D_zones
principle: "zone identifier mapped to zone geometry"
description: "Map arrangement of zone-day outbreak episodes"
transform T_visualise_situation :
intent: visualise
manner: "coordinated spatiotemporal outbreak display"
input: A_zone_map, F_outbreak_signal, F_exposure_context,
D_geography, D_weather
output: V_outbreak_situation
actor: machine
description: "Display animated and time-linked maps, zone time series,
wind vectors, population-normalised rates, highways, hospitals, and
water bodies"
artifact V_outbreak_situation : visualisation(A_zone_map, F_outbreak_signal,
F_exposure_context, D_geography, D_weather)
layout: "linked metropolitan map, zone time series, and temporal overview"
form: "choropleth regions, proportional symbols, line graphs, and wind vectors"
encoding: "zone colour and symbol size show population-normalised illness
activity; time controls select dates; overlays show geographic features
and observed wind direction"
description: "Interactive situational-awareness display for locating early
sustained activity and visually inspecting possible spread pathways"
transform T_abstract_observed_patterns :
intent: abstract
manner: "perception-and-interpretation"
input: V_outbreak_situation, F_outbreak_signal, F_propagation_relations
output: P_observed_diffusion
actor: human
description: "Identify candidate source zones, timing of sustained excess,
wave-like spread, spatial clusters, anomalies, and patterns inconsistent
with a single simple outbreak explanation"
artifact P_observed_diffusion : pattern(D_zone_days, F_outbreak_signal)
representation form: "candidate foci and spatiotemporal pattern descriptions"
description: "Analyst-identified candidate origin areas and observed
diffusion structures, explicitly distinguished from confirmed sources"
Step 4: Iteratively Compare Transmission Explanations
loop L_hypothesis_comparison:
purpose: "Compare plausible transmission mechanisms and determine whether
the available evidence supports a defensible operational conclusion"
until: "A best-supported explanation, or a justified conclusion that the
data cannot distinguish mechanisms, has been reached with documented
uncertainty"
body:
transform T_build_mechanism_models :
intent: build-model
manner: "fit competing spatiotemporal transmission models"
input: F_outbreak_signal, F_exposure_context, F_propagation_relations,
P_observed_diffusion, K_epidemiology, S_hypothesis
output: M_mechanism_models
actor: hybrid
description: "Fit and compare models representing person-to-person
diffusion, wind-associated airborne spread, water-associated
clustering, and localized or other point-source mechanisms"
artifact M_mechanism_models : model(F_outbreak_signal,
F_exposure_context, F_propagation_relations)
model type: "comparative spatiotemporal explanatory models"
representation form: "set of competing lagged diffusion and source models"
description: "Alternative formal explanations of observed zone-day
illness activity; model comparison measures evidence rather than
proving a causal transmission route"
transform T_characterise_model_evidence :
intent: characterise
manner: "compute model fit and diagnostic evidence"
input: D_zone_days, F_outbreak_signal, F_exposure_context,
F_propagation_relations, M_mechanism_models
output: F_hypothesis_evidence
actor: machine
description: "Calculate comparative fit, residuals, uncertainty,
predicted propagation, and local evidence for each transmission
hypothesis"
artifact F_hypothesis_evidence : feature(D_zone_days)
value structure: vector
value type: numeric
representation form: "hypothesis fit, residual, and uncertainty profiles"
description: "Zone-day evidence indicating how well competing
explanations account for observed syndromic activity"
transform T_visualise_hypothesis_evidence :
intent: visualise
manner: "comparative model diagnostics display"
input: A_zone_map, F_outbreak_signal, F_hypothesis_evidence,
M_mechanism_models, D_geography, D_weather
output: V_hypothesis_evidence
actor: machine
description: "Compare observed and predicted spread, residual maps,
temporal lags, downwind alignment, water proximity, and transport
connectivity in coordinated views"
artifact V_hypothesis_evidence : visualisation(A_zone_map,
F_outbreak_signal, F_hypothesis_evidence, M_mechanism_models,
D_geography, D_weather)
layout: "linked observed-versus-predicted maps, timelines, and
hypothesis comparison panels"
form: "choropleths, flow arrows, residual marks, line graphs, and
comparative score plots"
encoding: "map panels show observed and model-predicted zone activity;
arrows show candidate propagation relations; colour and residual
marks show local model agreement or disagreement"
description: "Interactive evidence display used to inspect whether
apparent transmission signatures are coherent, robust, and plausible"
transform T_interpret_mechanism_evidence :
intent: abstract
manner: "perception-and-interpretation"
input: V_hypothesis_evidence, F_hypothesis_evidence,
K_epidemiology
output: P_mechanism_evidence
actor: human
description: "Interpret model evidence in public-health context;
identify support, contradictions, confounding, and uncertainty for
each candidate transmission mechanism"
artifact P_mechanism_evidence : pattern(M_mechanism_models,
F_hypothesis_evidence)
representation form: "ranked mechanism evidence statements"
description: "Interpreted regularities supporting or weakening
person-to-person, airborne, water-associated, or local-source
explanations"
transform T_assess_hypotheses :
intent: assess
manner: "evaluate explanatory adequacy and operational usefulness"
input: V_hypothesis_evidence, P_mechanism_evidence,
M_mechanism_models, K_epidemiology
output: K_hypothesis_assessment, S_hypothesis_r
actor: human
description: "Judge whether model assumptions, evidence, uncertainty,
and visual explanations are adequate for a response decision;
formulate revised lags, constraints, or comparison settings if needed"
artifact K_hypothesis_assessment : knowledge(M_mechanism_models,
P_mechanism_evidence)
representation form: "quality judgment and uncertainty assessment"
description: "Assessment of whether the evidence adequately distinguishes
mechanisms, identifies a plausible candidate source, and supports
emergency action"
artifact S_hypothesis_r : specification
representation form: "revised comparative modelling configuration"
description: "Updated temporal lags, spatial relations, constraints,
or robustness checks required for another hypothesis-comparison cycle"
if K_hypothesis_assessment indicates further comparison needed:
then:
assign:
S_hypothesis := S_hypothesis_r
else:
exit loop L_hypothesis_comparison
end loop L_hypothesis_comparison
Step 5: Produce Operational Findings And Data-Request Recommendations
transform T_generate_response_knowledge :
intent: generate-knowledge
manner: "formulate-statements and recommendations"
input: P_observed_diffusion, P_mechanism_evidence,
K_hypothesis_assessment, K_relevance_quality,
M_mechanism_models, D_zones, D_geography
output: K_outbreak_assessment, K_response_recommendations,
K_confirmation_data_needs
actor: human
description: "Formulate a public-health assessment that states candidate
origin zones, ranked transmission explanations, confidence and caveats,
recommended deployment actions, and the additional evidence needed to
validate the conclusions"
artifact K_outbreak_assessment : knowledge(P_observed_diffusion,
P_mechanism_evidence, M_mechanism_models)
representation form: "qualified situational assessment"
description: "Candidate outbreak origin area or areas, timing of emergence,
ranked transmission explanations, supporting evidence, contradictory
evidence, and explicit uncertainty"
artifact K_response_recommendations : knowledge(K_outbreak_assessment,
D_zones, D_geography)
representation form: "prioritised emergency-response recommendations"
description: "Recommended deployment of testing, clinical capacity,
communications, environmental investigation, and surveillance resources
conditional on the best-supported mechanism and affected zones"
artifact K_confirmation_data_needs : knowledge(K_outbreak_assessment)
representation form: "data-collection recommendations"
description: "Required confirmation data, such as confirmed case and death
line lists, laboratory results, contact information, mobility data,
water-quality samples, water-network information, and environmental
sampling results"