Checking live state…
EG334S Smart Multi-Cloud Project

Hybrid Enterprise Multi-Cloud Architecture

Three connected cloud environments, two explicit Site-to-Site VPNs and a resilient two-Availability-Zone application tier in Ireland—supported by monitored recovery and controlled teardown.

3 cloud cells 2 IPsec paths Non-transitive VGW routing Two-AZ application tier 10-minute recovery objective

School deployment · accepted operating environment

School AWS · integrated live hub ACCEPTED

The authorised school deployment is now operational under the eg334s-team2 project prefix. Its internet-facing Application Load Balancer spans eu-west-1a and eu-west-1b and distributes HTTP traffic across Web Node 1 (10.1.1.119) and Web Node 2 (10.1.2.111).

Open school AWS hub

School AWSLIVE · ACCEPTED · Virginia and Ireland stacks deployed in account 427617722186
School AzureLIVE · CONNECTED · East Asia workload and VPN #2 in eg334s-team2-rg
Load balancingPASS · two healthy targets · one in each Ireland Availability Zone
Hub resilienceACTIVE-ACTIVE · one running instance in each Availability Zone · ASG desired capacity 1
VPN #1available · one AWS tunnel endpoint UP
Last verified1 Aug 2026, 20:26 SGT · Test 9 completed and both targets restored healthy

Claim boundary. Test 9 abruptly stopped the eu-west-1a application target without deregistration or draining. Across 203 one-second requests, 198 returned HTTP 200 and five transient failures were retained while ALB health detection converged in 36.8 seconds. The eu-west-1b target remained healthy and served 129 responses; both targets and private-path pings finished healthy. This proves active-active application resilience, not zero-interruption failover, whole-AZ failure or regional HA.

Decommission deadline
--
Sun 30 Aug 2026, 23:59 SGT · official penalty applies to AWS resources left running
Project week
1 / 5
Plan & set up (ahead: AWS build already live)
Milestones done
4 / 6
M1 + M2 + M3 + M4 · the system works
Programme readiness
AMBER
Engineering proven · people, approval, demo and closure gates remain
1What we are judged onThe standard, first. Nothing further down this page can be judged without it.

Assessment · official weighting (Project Information §4)

Checkpoint
30%
Individual · problem-solving, ownership, attendance
Presentation
30%
Individual · delivery, slides, Q&A
System demo
20%
Technical / team · completeness & troubleshooting
Report
20%
Group · neatness, clarity, logical flow

60% is individual (Checkpoint + Presentation). Build the system as a team; own and defend your own section alone.

Presentation rubric · what assessors score (individual, 30%)

Performance indicatorExcellent (top band)What it takes
Organisation & Content (60)
Organisation & supporting materials; Content
Agenda exists, coherent & interesting sequence; supporting materials used innovatively & explained in context; can explain all details, constraints and work-arounds. Have a clear agenda; every diagram/screenshot explained in context; be able to explain the whole project's details, limits and how you worked around them.
Presentation Skills (40)
Delivery; Q&A
Interesting, eloquent, enthusiastic delivery (not heavily scripted); handles all Q&A well and anticipates questions. Rehearse so you're not reading slides; pre-empt likely assessor questions and prepare answers.

Report rubric · what assessors score (group, 20%)

Performance indicatorExcellent (top band)What it takes
Report Presentation (20)
Writing; Presentation & supporting materials
Exceptionally clear, precise, concise English; few typos; professional layout; all illustrations well formatted. Proofread hard; consistent styles/margins; clean, labelled figures and screenshots.
Technical Content (30)
Organisation & structure; Literature survey; Quality of analysis
Structure entirely correct, all sections placed; exemplary range of references; well-informed, authoritative discussion of a complex problem with depth. Use a logical, complete structure; cite an exemplary range of authoritative references; show reasoned technical analysis, not just description.

Verified on 27 Jul 2026 against the supplied official Presentation Assessment Rubrics and Report Assessment Rubrics PDFs. Presentation is marked out of 100 (60 + 40); the report rubric has 50 rubric marks (20 + 30) and the report contributes 20% of the module assessment.

Report requirements & structure (Project Information §5)

Working section-order proposal PROVISIONAL

    Not yet confirmed by the team. The brief labels its contents page as a sample for reference only, so the order and owner chips shown here are planning placeholders. Use the matrix to develop the proposal; do not treat it as the approved Responsibility Assignment Table. Changes save to the shared planning matrix that every visitor sees.

    Must include

    • start Responsibility Assignment Table (name, admin no., role, topic, section, remarks)
    • evidence Diagrams, screenshots, YAML files & configuration
    • refs Bibliography of all references cited (incl. URLs)
    • format Cover page + content page
    • submit Softcopy uploaded to PoliteMall by due date

    Scope & tasks (Project Information §3) · built with Amazon Q → CloudFormation YAML

    Networks & compute

      IPSec site-to-site VPN

        Bonus marks (only after M4 · core working)

        High availability & load balancing of web servers Auto-scaling + simulated load test CloudWatch + CloudTrail + VPC Flow Logs (Bernard's slice)
        2Where we standWhere we are against that standard, and the system it refers to.

        Operator console · one-click checks

        Plain-spoken console for the assessors. These buttons do not fake the network. They open the exact live-check or evidence path and show the command we use for that scenario.

        Live actions
        Pick a check, show the command, then jump straight to the evidence.
        truthful, low-noise, assessor-friendly

        Live multi-cloud overview

        reading state…
        VPN #1 · Virginia ↔ Ireland Private 10.0.1.55 ↔ 10.1.1.119 · Peers 174.129.120.215 ↔ 34.247.246.9 VPN #2 · Ireland ↔ Azure Private 10.1.1.119 ↔ 10.2.1.4 · Peers 52.51.60.239 ↔ 20.24.123.36 Virginia VIRGINIA · SIMULATED ON-PREMISES AWS us-east-1 · AZ us-east-1a · VPC 10.0.0.0/16 strongSwan router · eg334s-team2-onprem-strongswan Private 10.0.1.55 · Public 174.129.120.215 Test host · eg334s-team2-onprem-server Private 10.0.1.104 · Public 54.226.97.172 Ireland IRELAND · AWS APPLICATION HUB AWS eu-west-1 · VPC 10.1.0.0/16 · internet-facing ALB · 2 AZs eu-west-1a · eg334s-euw1a-web-node-1 Private 10.1.1.119 · Public 3.252.61.201 eu-west-1b · eg334s-euw1b-web-node-2 Private 10.1.2.111 · Public 108.131.136.162 ALB: eg334s-team2-alb · shared target group · both nodes healthy Azure East Asia AZURE · EAST ASIA (HONG KONG) eastasia · VNet 10.2.0.0/16 · subnet 10.2.1.0/24 VM · eg334s-team2-azure-server Private 10.2.1.4 · Public 20.205.122.51 VPN gateway · eg334s-team2-vpngw · VpnGw1AZ Public 20.24.123.36 NORTH PACIFIC OCEAN SOUTH PACIFIC OCEAN NORTH ATLANTIC OCEAN SOUTH ATLANTIC OCEAN INDIAN OCEAN ARCTIC OCEAN SOUTHERN OCEAN

        Live status · current two-VPN topology

        VPN #1 + #2 CURRENT

        VPN #1 · on-prem ↔ AWS public

        Tunnel stateactive · 34.247.246.9 · standby tunnel 176.34.108.143 parked/down
        Accepted data-plane test0% loss to 10.1.1.119, ttl 254, ~69 ms · dated evidence; live tunnel state is shown above
        DesignstrongSwan CGW ↔ AWS VGW, IKEv1
        PathN. Virginia ↔ Ireland (trans-Atlantic)
        Alarm
        Hub route10.0.0.0/16 present in the eu-west-1 route table, learned by propagation, not typed

        VPN #2 · AWS public ↔ Azure

        ConnectionConnected · Azure connection eg334s-team2-vpn2-connection and AWS tunnel 52.51.60.239 are current
        Data planeAzure reports ingress and egress traffic counters; repeat the private ICMP and HTTP commands in the team lab immediately before the assessed demonstration.
        DesignAzure VpnGw1AZ ↔ AWS VGW, IKEv2
        PathIreland ↔ East Asia (Hong Kong), approximately 9,800 km
        Alarm
        Routing boundaryAzure and Virginia are not connected through the Ireland VGW; AWS VGW does not forward traffic between VPN connections.
        Application-layer proof
        VPN #2 only
        curl http://10.1.1.119 from the Azure VM returned the AWS web server page, now served by the template itself · a real workload across clouds. VPN #1 was proven with ICMP, not HTTP, so this row does not apply to it.
        Hub routingeu-west-1 carries 10.0.0.0/16 from VPN #1 and 10.2.0.0/16 from VPN #2. Azure↔Virginia transit is outside scope because the VGW is intentionally non-transitive.

        Known by design: on-prem cannot reach Azure directly (tested: 100% loss). An AWS VGW does not do transitive routing between two VPN connections. Topology is hub-and-spoke with AWS public as the hub, matching the brief. Full mesh would need a Transit Gateway.

        On-prem DC
        AWS VPC 1 · us-east-1
        N. Virginia · 10.0.0.0/16
        HUB
        AWS public
        AWS VPC 2 · eu-west-1
        Ireland · 10.1.0.0/16
        Azure VNet
        East Asia (Hong Kong)
        10.2.0.0/16
        Reading live state…

        AWS public cloud is the hub: its current VGW terminates VPN #1 and VPN #2, each with two AWS-provided tunnel endpoints. Because a VGW is not transitive, Azure↔Virginia routing is intentionally unavailable in the current design. The live banner, map and routing matrix are authoritative for current availability.

        Deployed inventory · query-level completeness

        Loading inventory…

        Nothing on this list is typed by hand. The live-data workflow runs scripts/inventory.sh, which only ever calls describe and list, and refreshes this feed automatically. Every required query records success or failure; a failed table is shown as unknown, never none. Anything here that is not inside a CloudFormation stack or the Azure resource group has to be deleted by hand at teardown, because delete-stack and az group delete will not touch it.

        3The plan to get thereCritical path, milestones, schedule and who owns what.

        Critical path · protect this chain, cut everything else first

        Green = done. Amber = AWS side done, Azure pending. Grey = not started. Anything off this chain (bonus, report polish, slides) is parallel work you sacrifice first if time runs short.

        Technical milestones · evidence-backed status

          This is a technical milestone count, not an overall completion percentage. Status is defined in the shared page source and changes only with reviewed evidence.

          5-week plan · back-planned from teardown

          Week 1
          24 Jul – 2 Aug
          Plan & set up · roles + CIDR + AWS/Azure/Q access. CIDR done AWS build + VPN #1 done (ahead)
          Week 2
          3 – 9 Aug
          Network + compute · CloudFormation for 3 networks. Deploy VPCs + VNet. Web + private servers.
          Week 3
          10 – 16 Aug
          VPN #1: on-prem ↔ AWS · already passing traffic
          Week 4
          17 – 23 Aug
          VPN #2 + integration · Azure ↔ AWS IPSec. End-to-end multi-cloud test. Log problems + fixes.
          Week 5
          24 – 30 Aug
          Bonus, report, demo, TEARDOWN · demo to assessors → decommission all by 30 Aug 23:59.

          Team & responsibilities PROVISIONAL

          Working allocation only. The team has not confirmed the report section order or final ownership. These cards show current preparation areas and must not be read as approved section assignments.

          Casper

          ScrumMaster

          Proposed speaking focus: architecture, executive summary, conclusion and CIDR sign-off.

          PROVISIONAL

          Open shared team deck

          Jeff

          Team Member

          Proposed speaking focus: VPC/VNet build, both VPN connections, VGW Ireland and customer gateway Virginia.

          PROVISIONAL

          Open shared team deck

          Bernard

          Team Member

          Proposed speaking focus: delivery, critical path, risk, monitoring, recovery and teardown.

          PROVISIONAL

          Open shared team deck

          Adelene

          Team Member

          Proposed speaking focus: IP addressing, routing, test evidence and the public-subnet web server.

          PROVISIONAL

          Open shared team deck

          Soo Fern

          Team Member

          Proposed speaking focus: Virginia workloads, DNS/DHCP, constraints and lessons learned.

          PROVISIONAL

          Open shared team deck

          Readiness planning · provisional preparation map

          Preparation guide, not ownership sign-off. The team now has one shared presentation deck. Speaking ownership remains provisional until the team confirms the order and Responsibility Assignment Table. Use the shared TEAM REVIEW deck and the working report.

          Casper · proposed focusArchitecture, objectives, CIDR sign-off and project conclusions. Needs team confirmation.
          Jeff · proposed focusNetwork construction, VGW/customer-gateway roles and both VPN implementations. Needs team confirmation.
          Bernard · proposed focusDelivery, security, monitoring, cost, ALB integration, recovery and teardown. Needs team confirmation.
          Adelene · proposed focusIP addressing, subnet design, routing and test evidence. Needs team confirmation.
          Soo Fern · proposed focusVirginia workloads, strongSwan forwarding, constraints and lessons learned. Needs team confirmation.

          Decision record: report order, accountable section owners and presentation roles are TBD by the full team, coordinated by Casper, target: 7 Aug checkpoint. Confirmation sequence: agree the report order → assign one accountable owner to each section → update the Responsibility Assignment Table and this page → then run the readiness check.

          The test to apply after ownership is confirmed. Have someone outside the team open the assigned material at random and ask one question. If the owner must read from the document to answer, more preparation is needed.

          Interactive access is still a single point of failure. The automated refresh uses short-lived OIDC access and the operator scripts are shared, but the demo sessions, SSH keys and recovery path have not been proven from a second device. Backup operator TBD by the team by 12 Aug. Closure requires one end-to-end rehearsal with Bernard observing but not operating.

          4Evidence we are on trackThe artefacts and the proof, measured against the standard above.

          School deployment · component architecture & verified packet flows

          DEPLOYED SCHOOL ENVIRONMENT · TEAM REVIEW
          The school environment runs under the eg334s-team2 prefix in AWS Virginia and Ireland. The Azure workload is deployed in East Asia (Hong Kong); VPN #1 and VPN #2 each have one AWS tunnel endpoint UP, and the Ireland ALB has one healthy Apache target in each Availability Zone.
          Deployment engineering reference Component-to-component connectivity, addressing, next hops, encrypted paths and verified application flow in one consolidated reference.
          Open full-size engineering view View deployed connection matrix
          Deployed component architecture showing component-level forward and return paths, private and public addresses, route tables, VPN endpoints, gateways and application delivery across Virginia, Ireland and Azure East Asia

          How to read this view. Follow each numbered component and arrow from its source address through the route or gateway to the destination. VPN #1 and VPN #2 terminate on Ireland VGW vgw-02efe604037a218cf. The VGW exchanges routes with each remote network but does not forward traffic from one VPN connection into the other; Virginia–Azure transit remains outside the topology.

          Evidence boundary. The identifiers and addresses below are dated deployment evidence and can change after a rebuild. The live target-health and VPN status must be checked again before a demonstration.

          Deployed connection matrix · source, destination, route and protocol 9 VERIFIED FLOWS / CONTROLS

          The table separates application delivery, internal forwarding, encrypted transit and the management/evidence plane. Provider-generated values are dated school-environment evidence, not portable inputs.

          Connection Source component / address Destination component / address Route or next hop Protocol / ports Return path and observed state
          Public application entry Internet client
          Dynamic public source address
          eg334s-team2-alb-alb-705364735.eu-west-1.elb.amazonaws.com
          AWS-managed ALB node addresses can change.
          Public DNS resolves the internet-facing ALB; listener selects the shared target group. TCP/80
          HTTP
          Selected target → ALB → client.
          Acceptance: listener active and both targets healthy.
          ALB → Web Node 1 ALB service nodes
          ALB security group
          Web Node 1
          Apache EC2 · 10.1.1.119:80
          eu-west-1a
          Target group sends requests to the registered instance in subnet 10.1.1.0/24. TCP/80
          HTTP + health checks
          Target → ALB → client.
          Acceptance: target healthy in eu-west-1a.
          ALB → Web Node 2 ALB service nodes
          ALB security group
          Web Node 2
          Apache EC2 · 10.1.2.111:80
          eu-west-1b
          Same target group sends requests to the ASG-managed instance in subnet 10.1.2.0/24. TCP/80
          HTTP + health checks
          Target → ALB → client.
          Acceptance: desired 1 and target healthy in eu-west-1b.
          Virginia workload → VPN router Private test host
          10.0.1.104
          strongSwan EC2/ENI
          10.0.1.55
          Virginia route table targets the strongSwan instance/ENI for 10.1.0.0/16. No current route is published for 10.2.0.0/16. Private payload
          ICMP / permitted test traffic
          Router forwards replies to 10.0.1.104.
          IPv4 forwarding persistently enabled · source/destination check disabled
          VPN #1 · Virginia ↔ Ireland strongSwan
          Elastic IP 174.129.120.215
          Private CIDR 10.0.0.0/16
          AWS endpoints
          34.247.246.9 UP
          176.34.108.143 DOWN
          vpn-0304048c980934f5a terminates on vgw-02efe604037a218cf. IKEv1 · static
          UDP/500
          UDP/4500 NAT-T
          Ireland learns 10.0.0.0/16 through VGW propagation.
          Acceptance: at least one tunnel endpoint UP.
          VPN #2 · Ireland ↔ East Asia AWS endpoints
          52.51.60.239 UP
          52.211.121.132 DOWN
          Azure VNet Gateway
          Public IP 20.24.123.36
          Private CIDR 10.2.0.0/16
          vpn-0106da6f9a20b1302 connects the Ireland VGW to eg334s-team2-vpngw. IKEv2 · route-based/static
          UDP/500
          UDP/4500
          Azure LNG represents 10.1.0.0/16; Ireland learns 10.2.0.0/16 through the VGW. Acceptance requires Azure Connected plus private ICMP/HTTP.
          Azure gateway → workload VNet Gateway
          GatewaySubnet 10.2.255.0/27
          nginx VM
          10.2.1.4
          Subnet 10.2.1.0/24
          Azure VNet system route delivers traffic to the workload subnet; the workload NSG is evaluated. Private ICMP
          TCP/80 HTTP
          VM returns through the VNet Gateway route for the Ireland prefix 10.1.0.0/16.
          AWS telemetry and evidence flow Both AWS VPCs
          CloudTrail
          CloudWatch
          Retained S3 audit storage
          CloudWatch dashboard
          SNS topic
          Provider-managed service delivery; separate from the application data path. VPC Flow Logs
          CloudTrail API events
          CloudWatch metrics
          Provides dated verification, alarm notification and teardown evidence.
          Azure management flow Authorised operator
          Azure control plane
          Azure VM and resource group
          eg334s-team2-rg
          Run Command requires VM action permission. Reader permits inspection only; it does not permit command execution. Azure management-plane HTTPS Activity Log records changes. Additional team access remains a separate, least-privilege administration task.

          Deliverables · current working artefacts

          GROUP SUBMISSION · DOCX

          Project report

          TEAM REVIEW

          A 20-page evidence-led report covering the accepted school deployment, two-VPN topology, two active Ireland application targets, Test 9, IaC controls, evidence boundaries and teardown order.

          Coverage
          Architecture, implementation, testing, controls and teardown
          Review state
          Technical update complete · team approval pending
          Updated
          1 Aug 2026 · 20 rendered pages · 1.1 MB
          Download project report

          Working submission artefact. School deployment and Test 9 results are incorporated; final team approval remains pending.

          GROUP PRESENTATION · PPTX

          Group presentation

          TEAM REVIEW

          One shared 15-slide presentation aligned to the assessment rubric and accepted school architecture: two VPNs, two active Ireland targets, security and monitoring controls, Test 9 evidence, Q&A and teardown.

          Delivery model
          One shared deck · provisional presenter assignments
          Presenter support
          Speaker cues and source references on every slide
          Updated
          1 Aug 2026 · 15 slides · 77 KB
          Download shared presentation

          Current working copy. Final speaking order still requires team confirmation.

          COMPLETE REBUILD PACKAGE · 23 FILES + MANIFEST

          Infrastructure as Code

          VALIDATED

          Account-neutral CloudFormation, Azure Bicep and strongSwan configuration for Virginia, Ireland and the Azure second-cloud cell. The accepted deployment uses Azure East Asia because suitable low-cost VM capacity was restricted in Singapore. The package covers VPN #1, VPN #2, the two-AZ ALB, active secondary, audit logging, alarms, evidence storage, validation, deployment and teardown.

          Platforms
          AWS CloudFormation · Azure Bicep · strongSwan
          Safety
          VPN secrets and generated tunnel values supplied at deployment
          Validation
          6 AWS YAML schemas + 2 Azure Bicep builds passed · 1 Aug 2026
          Portability
          Used for the accepted school deployment; secrets and generated tunnel values stay as deployment-time inputs
          Download complete IaC package · 23 files + checksum
          Individual deployment files · direct downloads

          The account-neutral package was used for the accepted school deployment. The active-secondary stack avoids custom IAM; the advanced IAM/Lambda recovery template remains optional.

          SCHOOL-ACCOUNT DEPLOYMENT MANIFEST

          Every packaged file · purpose, scope and deployment order

          23 FILES + SHA-256 MANIFEST

          Completeness boundary. The archive contains every project-controlled template, configuration skeleton, runbook, package index and safety script required for the staged rebuild. AWS-generated tunnel endpoints and VPN pre-shared keys are inserted during attended deployment and are intentionally absent. The package was used for the accepted school deployment; validation and live acceptance are separate evidence records.

          Deployment templates

          01 · vpn1-onprem-us-east-1.yamlAWS · us-east-1 (N. Virginia)VPC 10.0.0.0/16, subnet, IGW, routes, strongSwan EC2/EIP, private test host, security groups, VPC Flow Log and retained S3 audit bucket. 02 · vpn1-awspublic-eu-west-1.yamlAWS · eu-west-1 (Ireland)VPC 10.1.0.0/16, VGW, Web Node 1, VPN #1, staged VPN #2, route propagation, VPC Flow Log, multi-region CloudTrail, SNS and VPN alarms. 03 · hub-alb-eu-west-1.yamlAWS · eu-west-1 (Ireland)Second-AZ subnet, route association, internet-facing ALB, listener, security-group rule, target group, primary registration and unhealthy-host alarm. 04 · hub-secondary-eu-west-1.yamlAWS · eu-west-1 (Web Node 2)Permission-compatible ASG at desired capacity one; registers Web Node 2 in eu-west-1b without IAM, Lambda, VGW or VPN resources. 05 · hub-recovery-eu-west-1.yamlAWS · optional advanced recovery controlsPrivate DNS, EventBridge/Lambda control, health probing, SNS integration and 600-second recovery alarm. Not required for the accepted baseline. 06 · video-evidence-distribution.yamlAWS · optional evidence planePrivate encrypted S3 origin, retention controls, CloudFront origin access and chapter-delivery outputs. Not required for the network build. 07 · eg334s-azure-cell.bicepAzure · East Asia (accepted school deployment)Parameterised location, VNet 10.2.0.0/16, workload and GatewaySubnet, NSG, Ubuntu/nginx VM at 10.2.1.4, public IP and staged VpnGw1AZ resources. 08 · azure-vpn2.bicepAzure · East Asia (accepted school deployment)Scoped VPN #2 integration for an existing Azure core: VNet gateway, Ireland local network gateway and secure IKEv2 connection.

          Protected configuration inputs

          Runbooks and ownership records

          Validation and controlled execution

          School team connectivity lab · deployed test endpoints

          A concise operator view for team members to verify the two supported encrypted paths after the school build. It publishes target commands—not passwords, SSH keys, access tokens, account identifiers or VPN pre-shared keys.

          Accepted school environment

          Both AWS regions, the Azure cell and VPN #1/VPN #2 are deployed. Confirm current target health and tunnel state before each test. Azure Run Command is available through the assigned resource-group roles; AWS Session Manager is not configured because the EC2 instances currently have no SSM instance profile.

          AWS OPERATOR ACCESS REQUIRED
          VPN #1 · Virginia → Ireland

          Virginia test EC2 → Ireland Web Node 1

          Source: eg334s-team2-onprem-server (10.0.1.104). The route uses strongSwan 10.0.1.55, VPN #1 and the Ireland VGW.

          1. Sign in to school AWS and select US East (N. Virginia).
          2. Open EC2 → Instances → the Virginia test host. Obtain operator approval for TCP/22 from your temporary public /32.
          3. On your workstation use the authorised eg334s-team2-us-east-1 private key: chmod 400 <key-file>, then ssh -i <key-file> ec2-user@54.226.97.172.
          ping -c 4 10.1.1.119
          curl -fsS --max-time 10 http://10.1.1.119/

          Expected: ICMP replies and the Ireland Apache page. Remove the temporary SSH rule after testing.

          VPN #1 · Ireland → Virginia

          Ireland Web Node 1 → Virginia test EC2

          Source: eg334s-euw1a-web-node-1 (10.1.1.119). The VGW learned 10.0.0.0/16 through VPN #1.

          1. Sign in to school AWS and select Europe (Ireland).
          2. Open EC2 → Instances → Web Node 1. Obtain operator approval for a temporary TCP/22 /32 rule.
          3. Use the authorised eg334s-team2-eu-west-1 private key: ssh -i <key-file> ec2-user@3.252.61.201.
          ping -c 4 10.0.1.104

          Expected: private-address ICMP replies from the Virginia test host. Remove temporary access when complete.

          VPN #2 · Ireland → Azure

          Ireland Web Node 1 → Azure nginx VM

          Source: eg334s-euw1a-web-node-1 (10.1.1.119). Sign in to school AWS, select Ireland, open Web Node 1, and connect with the approved Ireland key and temporary /32 SSH rule as described above.

          ping -c 4 10.2.1.4
          curl -fsS --max-time 10 http://10.2.1.4/

          Acceptance: ICMP replies and the Azure nginx page.

          VPN #2 · Azure → Ireland

          Azure nginx VM → Ireland Web Node 1

          Source: eg334s-team2-azure-server (10.2.1.4). Sign in at Azure Portal with the assigned NYP identity, open resource group eg334s-team2-rg → Virtual machine → Run commandRunShellScript, paste the commands, then select Run. The EG334S Team2 Test Operator role permits this controlled action; no public SSH key is required.

          ping -c 4 10.1.1.119
          curl -fsS --max-time 10 http://10.1.1.119/

          Acceptance: ICMP replies and the Ireland Apache page. Save the timestamped output as evidence.

          Controlled VPN resilience action · VPN #1 active → standby

          Withdraw the active strongSwan tunnel; prove the standby path can carry traffic

          This is an attended tunnel-endpoint switchover for VPN #1. The strongSwan router uses policy-based selectors on one ENI, so only one of its two AWS tunnels can be installed at a time. The second connection is a configured standby and must be brought up by the operator; this exercise must not be described as automatic or interruption-free failover.

          1. Assign two operators and a rollback owner. In AWS Ireland, open VPC → Site-to-Site VPN connections → vpn-0304048c980934f5a → Tunnel details. Confirm exactly one endpoint is UP.
          2. Terminal A: connect to eg334s-team2-onprem-server (54.226.97.172) and start the timestamped private ping below. Confirm replies from 10.1.1.119 before injecting the failure.
          3. Terminal B: connect to eg334s-team2-onprem-strongswan (174.129.120.215). Record sudo ipsec statusall, withdraw tunnel 1, then start tunnel 2 using the commands below.
          4. Watch the AWS tunnel details until the original endpoint is DOWN and the standby endpoint is UP. Confirm the continuous ping resumes and the private HTTP test succeeds.
          5. Perform the rollback: stop tunnel 2, restore tunnel 1, wait for its AWS endpoint to return UP, then repeat the ping and HTTP checks.
          # Terminal A · Virginia private test host
          ping -D 10.1.1.119 | tee vpn1-standby-test.log
          # In a second shell after the path changes:
          curl -fsS --max-time 10 http://10.1.1.119/

          # Terminal B · Virginia strongSwan router
          sudo ipsec statusall
          sudo ipsec down eg334s-team2-vpn1-tunnel1
          sudo ipsec up eg334s-team2-vpn1-tunnel2
          sudo ipsec statusall

          # Mandatory rollback to the accepted baseline
          sudo ipsec down eg334s-team2-vpn1-tunnel2
          sudo ipsec up eg334s-team2-vpn1-tunnel1
          sudo ipsec statusall

          Pass condition: AWS shows the standby endpoint UP, private ICMP and HTTP recover through tunnel 2, and the accepted tunnel 1 baseline is restored afterward. Record the outage interval; a short interruption is expected during manual selector replacement and AWS state convergence. Stop condition: if tunnel 2 does not establish or traffic does not recover, immediately run sudo ipsec up eg334s-team2-vpn1-tunnel1 and confirm the original endpoint and tests recover.

          Controlled resilience action · abrupt ALB target failure

          Stop Web Node 1 abruptly; prove Web Node 2 continues serving

          This is an attended application-target test—not a whole-AZ or regional outage. It requires explicit EC2 stop/start authority and a rollback operator. First confirm both ALB targets are healthy and start continuous HTTP sampling against eg334s-team2-alb-alb-705364735.eu-west-1.elb.amazonaws.com. Then stop only i-04d4025fda0bb37b4 (eu-west-1a), observe it turn unhealthy, verify i-06305a433e0abbabb (eu-west-1b) remains healthy and serves traffic, restart the stopped instance, and wait until both targets are healthy again.

          ALB=http://eg334s-team2-alb-alb-705364735.eu-west-1.elb.amazonaws.com/
          while true; do date '+%Y-%m-%d %H:%M:%S SGT'; curl -sS --max-time 3 "$ALB" || echo HTTP_FAIL; sleep 1; done

          aws ec2 stop-instances --region eu-west-1 --instance-ids i-04d4025fda0bb37b4
          # Observe target health and retained HTTP results; do not stop Web Node 2.
          aws ec2 start-instances --region eu-west-1 --instance-ids i-04d4025fda0bb37b4
          aws ec2 wait instance-running --region eu-west-1 --instance-ids i-04d4025fda0bb37b4

          Pass condition: the secondary target remains healthy, the ALB continues returning successful responses after health convergence, all transient errors are retained, and both targets finish healthy. Stop condition: if the surviving target is not healthy, abort and restore Web Node 1 immediately.

          Routing boundary · expected in the deployed design, but technically solvable. Virginia ↔ Azure is not a current target data path because the Ireland Virtual Private Gateway terminates VPN #1 and VPN #2 independently and does not route traffic from one VPN attachment into the other. A failed Virginia–Azure ping is therefore the expected negative test; it does not mean either supported VPN path is down.

          How end-to-end transit could be added: the preferred scalable design is to replace the Ireland VGW role with an AWS Transit Gateway, attach the Ireland VPC and recreate both Site-to-Site VPNs as TGW VPN attachments, then associate and propagate the 10.0.0.0/16, 10.1.0.0/16 and 10.2.0.0/16 routes through controlled TGW route tables. Azure would retain a route-based VPN connection and matching return routes. A lower-cost project alternative is a direct third Site-to-Site VPN from the Virginia strongSwan router to the Azure VPN Gateway, which supports multiple connections to different local network gateways. An EC2/network virtual appliance in Ireland could also forward between tunnels, but it would add patching, availability and security responsibilities.

          Why it is not deployed here: Transit Gateway adds hourly attachment and data-processing charges; a third VPN adds another connection, routing and PSK lifecycle; and a routing appliance introduces another failure domain. Any option would also require symmetric return routes, security-group/NSG updates and new end-to-end acceptance tests. The current two-path VGW design therefore meets the assessed scope while documenting a clear expansion route.

          Diagrams · network, recovery, evidence and build sequence

          1 · Core network and VPN topology

          Core deployed and rebuildable multi-cloud topology showing two AWS VPCs, an Azure VNet, nested subnets, a strongSwan routed test host, Apache and nginx workloads, two Site-to-Site VPN paths, the deployed Azure gateway and the non-transitive VGW boundary

          Deployed design reference, not a substitute for live telemetry. The diagram follows the reconciled CloudFormation and Bicep design: Virginia has one public subnet; the Ireland application entry spans public subnets in eu-west-1a and eu-west-1b; Azure has one workload subnet and one GatewaySubnet. VPN #1 and VPN #2 are the current encrypted paths. The strongSwan EC2 owns the Elastic IP, has IPv4 forwarding persistently enabled and source/destination checking disabled, and routes traffic for the separate Amazon Linux 2 ICMP/SSH test host. Provider-managed addresses can change after rebuilding, and the VGW remains deliberately non-transitive. The live map and state banner above are authoritative for current availability. Open editable vector · Open historical commissioning capture.

          2 · Two-AZ ALB application resilience · Test 9

          Accepted school Ireland application entry showing the internet-facing ALB and one healthy Apache target in each of eu-west-1a and eu-west-1b

          Current school-deployment evidence. Test 9 abruptly stopped Web Node 1 in eu-west-1a while Web Node 2 in eu-west-1b remained registered and healthy behind the same ALB. Across 203 one-second samples, 198 returned HTTP 200 and five transient failures were retained while ALB health detection converged in 36.8 seconds. Both targets were restored healthy. This proves two-AZ application-target resilience; it does not claim a whole-AZ, ALB, VPC, VGW or regional failure, and it does not claim zero interruption. Open Test 9 recording.

          3 · Live evidence and public-dashboard pipeline

          Live evidence pipeline from authenticated AWS and Azure APIs through freshness-gated GitHub Actions collection, complete and error-aware records, Workers KV and committed fallbacks, Cloudflare Pages Functions and the assessor-facing public dashboard

          Why the public evidence is trustworthy. GitHub Actions uses AWS and Azure OIDC to collect state normally hourly and the larger inventory approximately every three hours. Complete, error-aware JSON is written to Workers KV as the primary path; committed files are the browser fallback. The Cloudflare watchdog checks KV every five minutes and dispatches a freshness-gated workflow only when needed, while the native GitHub schedule is an independent fallback. The dashboard distinguishes fresh, stale, partial and unreachable: freshness never substitutes for completeness, and no VPN PSK, SSH key or cloud credential is published. Open editable vector.

          4 · Cross-cloud build sequence

          The cross-cloud build order, six steps

          Figure 6.1. The cross-cloud build order. Step 3 is the hinge: AWS only generates the tunnel addresses and pre-shared keys once the VPN connection exists, so neither cloud can be completed first. The seam has to be walked once, in order, by hand.

          5 · Supporting service catalogue · report Figure 5.7

          The VPN environment and the services around it: infrastructure as code above, the two Site-to-Site VPN connections in the middle, and the detect, record and cost-control services below

          Figure 5.7. The VPN environment and the services around it. The two VPN connections are the assets being protected; AWS supplies two tunnel endpoints for each connection. The current templates define both VPC Flow Logs, the multi-region CloudTrail, SNS and both VPN alarms. AWS Budgets and the CloudWatch dashboard remain separate account-level controls. The retained central S3 bucket is intentionally left after stack deletion until evidence is preserved and it is explicitly emptied and removed. Current deployed ownership must be proved from describe-stack-resources; until a complete inventory succeeds, it is TBD rather than assumed. Open the ownership matrix.

          Test results · six tests, five pass, one expected fail

          1. VPN #1 data planePASS · on-prem to 10.1.1.119, 0% loss, ttl 254, ~69 ms
          2. VPN #1 IPSec SAPASS · ESTABLISHED, INSTALLED, ESP in UDP (NAT traversal confirmed)
          3. VPN #2 data planePASS · Azure 10.2.1.4 to 10.1.1.119, 0% loss, ttl 254, ~189 ms
          4. VPN #2 application layerPASS · HTTP from Azure returned the AWS web server page
          5. VGW transitive routing boundaryEXPECTED FAIL · VPN #1 traffic is not forwarded through VPN #2, correct by design
          6. Two-AZ ALB resiliencePASS WITH OBSERVED TRANSIENTS · 198/203 HTTP 200; eu-west-1b remained healthy; both targets restored

          Test 4 proves application traffic crossed an encrypted path between two cloud providers and returned a response. Test 5 preserves the VGW negative test: knowing the boundary of the chosen architecture is part of demonstrating it correctly. Test 6 proves that one Ireland application target can fail while the second target continues serving after ALB health convergence.

          5ControlsWhat stops this going wrong quietly.

          Security & monitoring · detective controls live (Bernard · Security/Monitoring)

          CloudWatch alarms
          3 OK
          Secondary capacity, VPN #2 tunnel state and ALB unhealthy-host detection.
          CloudTrail
          logging
          multi-region · log-file validation on
          VPC Flow Logs
          2 × ACTIVE
          both AWS VPCs → S3, objects delivering
          SNS alerts
          configured
          eg334s-team2-monitoring-alerts exists in eu-west-1
          eg334s-team2-Hub-Secondary-Capacity-Low
          OKGroupInServiceInstances confirms the active secondary capacity remains available.
          eg334s-team2-alb-UnhealthyHostAlarm
          OKUnHealthyHostCount reports no unhealthy ALB targets at the latest collection.
          eg334s-team2-VPN2-TunnelDown
          OKvpn-0106da6f9a20b1302 · one active endpoint and one provider standby endpoint
          The alarm evaluates the school VPN #2 connection. The live banner remains authoritative if the environment changes after this collection.
          CloudTrail
          eg334s-team2-audit-trail · IsLogging: true · latest delivery confirmed by the AWS API
          VPC Flow Logs
          fl-089ba53487f044bc8 (eu-west-1) + fl-0e9369512e0289153 (us-east-1)
          Both ACTIVE; central S3 destination: eg334s-team2-onprem-centrallogbucket-mqmlyajnkz0q
          CloudWatch dashboard
          NOT DEPLOYEDNo project CloudWatch dashboard was returned by the school account API. The three alarms above remain active; this is a presentation-layer gap, not a monitoring outage.
          SSH posture
          The 25 Jul deployment is restricted to one administrative /32 on the on-premises hosts, with no public SSH ingress on the hub server. The published CloudFormation templates have no permissive default: deployment requires an explicit valid /32, and scripts/validate-iac.sh rejects an open administrator default.

          Security groups decide what is allowed. Alarms, trails and flow logs decide what is noticed. The VPN #2 alarm firing on a real outage is stronger proof than a pair of green ticks: it shows the detection path works end to end, from metric to alarm to SNS to inbox.

          Cost monitoring · guardrails active (Bernard · Security/Monitoring)

          Checking billing APIs…

          Azure · month to date
          loading
          Cost Management actual cost · refreshed with the live state feed
          AWS · month to date
          loading
          Net billed and usage before credits · refreshed with the live state feed
          Idle now (torn down)
          ~$0.44/day
          Azure = 2 static IPs + disk · ~$7.85/day only while rebuilt for the demo
          Guardrails
          3 budgets
          AWS $40/mo + $3/day · Azure $25/mo
          AWS Budgetsactive · EG334S-Monthly-40 + EG334S-Daily-Tripwire-3 → email
          Cost Anomaly Detectionpresent but incapable of firing at this scale. It is the AWS Default-Services-Monitor, not one configured for this project, and its subscription requires an anomaly of ≥ $100 AND ≥ 40%. Peak spend here is about $7.85/day, so the $100 condition cannot be met. Its notification address also differs from the SNS topic address; confirm which inbox is actively monitored.
          Daily still-running checkscheduled · 09:00 SGT, push + email, teardown commands attached
          Auto-stop on breachnot implemented, but it is available. bernard-admin holds AdministratorAccess and simulate-principal-policy returns allowed for iam:CreateRole, iam:PassRole, budgets:ModifyBudget and ec2:StopInstances. An earlier note claimed lab IAM blocked Budget Actions. That was true of the previous account and of the agent guardrail, not of this account.
          Azure budgetactive · EG334S-Azure-Guardrail-25, $25/mo, alerts 40 / 75 / 100% + forecast → email
          Azure spending limitOff, and it cannot be turned on. The spending limit is not a switch we left off. Azure only offers it on credit-based subscriptions (free trial, Azure for Students, Visual Studio), where its job is to disable the subscription once the included credit runs out rather than start charging a card. This subscription is PayAsYouGo_2014-09-01, which has no included credit to protect, so Azure reports the limit as Off and offers no way to enable it. That is why spend here is uncapped and why a budget with alerts is the only native control available. For a hard cap you would need a budget wired to an action group that triggers an automation runbook to deallocate resources, which is the Azure equivalent of AWS Budget Actions.
          Cost-allocation tagactive · the Project tag was activated on 25 Jul and now reports Status: Active. An earlier note claimed it was not activatable from a linked account. That was wrong, and it was never tested. Note the lag: activation only applies to usage recorded from that point on, so it will not retrospectively split earlier spend.

          How these numbers were obtained. Actual month-to-date spend comes from the Azure Cost Management API and AWS Cost Explorer. Projected daily run rates are estimates calculated from the Azure Retail Prices API and AWS Price List API against the real resource inventory. At the 25 Jul rate check, Azure VPN Gateway VpnGw1AZ was $0.21/hr, the Azure VM Standard_D2als_v7 was $0.101/hr, and each AWS Site-to-Site VPN connection was $0.05/hr.

          Actual versus projected, and why they differ so much. The earlier $283 figure was a projection of what leaving everything running to the deadline would have cost. The current month-to-date values are displayed above from the billing APIs. Azure remains lower than the projection because the gateway runs only in short bursts—built, verified and torn down again—rather than continuously.

          How fresh can this be? Azure Cost Management returns same-day data, though the current day keeps trickling in for several hours. AWS Cost Explorer lags a day or more and flags its figures as Estimated. So "live cost" does not exist on either cloud. What is real time is the resource inventory, which is what actually matters for catching something left running. Any team member with the documented read-only access can run ./scripts/refresh-cost.sh; it fails closed if either cloud login or a required billing field is unavailable.

          Control lesson. The first guardrails covered AWS even though credits reduce its net bill to approximately zero, while the Pay-As-You-Go Azure subscription carried the cash cost. Azure now has its own monthly budget and alerts.

          Guardrails are alert-only: the cloud emails you, you act. The cheapest guardrail is still teardown · delete-stack on AWS and az group delete on Azure between work sessions.

          Risk watch · the things that actually bite

          Owner means whoever can actually act. The programme manager tracks every risk on this list and chases all of them, but only owns the ones where he holds the lever. A risk assigned to someone who cannot discharge it is not managed, it is just parked.

          !
          Key-person dependency · OPEN · automation uses short-lived OIDC access and the verification tools are now shared in this repository, but the interactive demo sessions, SSH keys and recovery access have not been proven from a second device. Backup operator: TBD by the team by 12 Aug. Closure evidence is a complete rehearsal in which Bernard does not operate the environment.
          !
          Section ownership · DECISION PENDING · the current report order and owner mapping are a working proposal. This is deliberately labelled provisional rather than treated as fact. Decision owner: full team; coordinator: Casper; target: 7 Aug checkpoint. Closure requires one accountable owner per section, an approved Responsibility Assignment Table and matching dashboard/readiness records.
          !
          Shared group presentation · TEAM REVIEW READY · one 15-slide deck now carries the assessment-aligned business case, common technical narrative, provisional speaking map, assessor Q&A and sourced speaker notes. Next action: each member validates the technical statements they may present; the full team confirms the order and ownership before rehearsal.
          !
          Live cross-cloud cost exposure · the Azure VpnGw1AZ and VPN #2 are live. Action: keep the environment only for the approved demonstration window, monitor the live billing cards, and use the dependency-ordered teardown after assessment. Owner: Bernard.
          !
          Decommission slippage · the brief states a real mark penalty for AWS resources left after 30 Aug 23:59 SGT. The templates now define Flow Logs, CloudTrail, SNS and VPN alarms, while the central evidence bucket is deliberately retained and budgets/dashboard remain manual. Current deployed ownership is TBD until a complete inventory and stack-resource reconciliation succeed. The Cloudflare evidence-site retention decision is also TBD by the team/lecturer. Owner: Bernard; second verifier: TBD. See the ownership matrix.
          !
          Public working artefacts · DECISION PENDING · the team-review report and shared group deck are publicly downloadable under the user's explicit approval. The full team should still confirm institutional rules and final submission status; both artefacts remain clearly labelled non-final.
          Closed · school ALB application-target resilience · Test 9 abruptly stopped Web Node 1 in eu-west-1a. Web Node 2 in eu-west-1b remained healthy; 198 of 203 one-second requests returned HTTP 200 and five transient failures were retained during the 36.8-second ALB detection window. Both targets were restored healthy. This proves two-AZ application-target resilience, not zero interruption, VGW/VPN failover or regional DR. Open the recording.
          Closed · report administration · four supplied admin numbers are present; Bernard's remains explicitly TBC. “Adelene” is corrected, pagination defects are removed, and the current team-review copy renders to 21 pages.
          Closed · overlapping CIDRs (locked at M1), evidence debt (captured while live), gold-plating (core proven before monitoring was added), cross-region teardown (documented per region and per subscription).

          Claim verification · dated evidence record

          Identifiers are reconciled to the accepted school deployment. Current health and cost remain timestamped separately in the live banner.

          Accepted school-deployment evidence record. The live banner remains authoritative for current health and cost. The identifiers below are the reconciled school AWS and Azure resources used by the report, shared deck, diagrams and IaC runbooks.

          AWS identifiersschool account 427617722186 · VGW vgw-02efe604037a218cf, VPN #1 vpn-0304048c980934f5a, VPN #2 vpn-0106da6f9a20b1302.
          Addressesreconciled school deployment · Ireland Web Node 1 10.1.1.119 / 3.252.61.201; Web Node 2 10.1.2.111 / 108.131.136.162; Virginia strongSwan 10.0.1.55 / 174.129.120.215; Azure VM 10.2.1.4 / 20.205.122.51; Azure gateway 20.24.123.36.
          VPN endpointsVPN #1 AWS endpoints 34.247.246.9 active and 176.34.108.143 standby. VPN #2 AWS endpoints 52.51.60.239 active and 52.211.121.132 standby. One active plus one provider standby endpoint is the accepted healthy profile for each connection.
          Design assertionscurrent · SourceDestCheck=false and persistent IPv4 forwarding on strongSwan; GatewaySubnet 10.2.255.0/27 without an NSG; workload subnet 10.2.1.0/24 with its NSG; Azure local network gateway identifies Ireland 10.1.0.0/16.
          MonitoringThree school-account CloudWatch alarms, multi-region CloudTrail with log-file validation, two ACTIVE VPC Flow Logs to S3, and SNS alerting are deployed. The live state feed reports current alarm state; it must not be inferred from this static record.
          Current private pathsVPN #1 supports Virginia 10.0.0.0/16 ↔ Ireland 10.1.0.0/16. VPN #2 supports Ireland 10.1.0.0/16 ↔ Azure 10.2.0.0/16. Virginia ↔ Azure is unavailable by design because the VGW is non-transitive.
          Working artefactsteam review · the group report, shared 15-slide deck and downloadable IaC package are aligned to the school deployment and remain subject to final team approval.
          Test 9 · abrupt target failurePASS WITH OBSERVED TRANSIENTS · Web Node 1 i-04d4025fda0bb37b4 was stopped; Web Node 2 i-06305a433e0abbabb remained healthy. Result: 198/203 HTTP 200, five retained transients, 36.8-second detection, then both targets restored healthy. Open the current school recording.

          Assessment artefacts reviewed. The scope, milestones, report requirements and both assessment rubrics were cross-checked against the supplied official files. The report and deck state the active+standby VPN endpoint model, non-transitive VGW boundary, two-target ALB result and Test 9 claim boundary consistently.

          Refresh before presentation. Infrastructure claims decay. Use the authenticated manual refresh until the school-account GitHub OIDC role is created; the dashboard will mark old values stale rather than substitute incomplete data.

          6How it endsDecommissioning. This is where marks are lost.

          Teardown checklist · run in every region before 30 Aug 23:59

          On-prem sim AWS us-east-1

          • EC2 private server
          • Customer gateway + VPN connection
          • VPC, subnets, route tables, IGW
          • Elastic IPs released
          • Security groups + key pairs
          • CloudFormation stack deleted

          AWS public AWS eu-west-1

          • Delete eg334s-hub-recovery first
          • EC2 web server
          • Virtual private gateway + VPN conn
          • CloudWatch / CloudTrail / Flow Logs
          • VPC, subnets, route tables, IGW
          • Elastic IPs released
          • CloudFormation stack deleted

          Azure East Asia

          • az group delete --name eg334s-team2-rg --yes
          • Removes VPN gateway (the big cost)
          • Removes connection + local network gateway
          • Removes VNet, NSG, VM, disks, public IPs
          • az resource list --tag Project=EG334S returns empty

          AWS order matters: delete eg334s-vpn2-aws before eg334s-vpn1-awspublic, it borrows that VGW.

          School AWS IAM and key-pair cleanup is account-wide, not regional. Confirm project-tagged roles, instance profiles and both regional key-pair records as separate teardown controls.

          Two controls that protect the teardown

          1 · DEPENDENCY ORDER

          Delete the borrower before the owner

          eg334s-vpn2-aws borrows the virtual private gateway owned by eg334s-vpn1-awspublic. Delete VPN #2 first so the owner stack can remove the gateway cleanly.

          2 · RETAIN EVIDENCE

          Prove that nothing remains

          After teardown, run the authenticated verification script across both AWS regions and Azure. Retain its PASS / FAIL / ERROR transcript as the M6 completion evidence.

          Technical note

          VPN #2 borrows the hub VGW by parameter, so CloudFormation does not enforce deletion order across the stacks. Delete the VPN #2 borrower before the stack that owns the VGW.

          The shared verification script checks project-named AWS resources and every resource in eg334s-team2-rg, and fails closed with ERROR if authentication or a required query fails. Account-level budgets, key pairs and the public dashboard remain explicit manual controls.

          Shared evidence record · technical milestones are source-controlled, not browser-local. Times in Asia/Singapore. Built for EG334S. Live status is in the banner and map above; the update stamp is below.

          Ambience Mozart · 5 recordings
          Track 1 of 5 · in order, loops
          Checking playback mode

          Le nozze di Figaro, K. 492, Act III, No. 21, Sull’aria … Che soave zeffiretto, the Letter Duet. Five interpretations. Press play above. Full tracks need an active Spotify session in this browser, otherwise Spotify serves previews. Turn this off before the assessed demo.

          <<<<<<< HEAD