CTIPilot
AI-generated · no human review · verify critical claims against the linked source. how it works →
‹Sat · 17 Oct 2026
All daily briefs →
Daily brief · UTC day

Saturday, 17 October 2026

1 verified finding from 1 run · 5 updates to prior coverage · the settled record for this UTC day, in the classic brief order.

CriticalPatch Ivanti Connect Secure now, then check the appliance and its AD account for compromiseCVE-2026-104935 +1 · exploited · improved 17 Oct 03:34Z
Criticality
Kind
Topic
Region
TL;DR · the day in one read
  1. 01GTIG: AOMEI update files were altered for minutes at a time to push a backdoor; Switzerland among victim countries. Google's GTIG and ManageEngine's METAL report that a cluster tracked as UNC7017 altered two configuration files on AOMEI's update servers for five to ten minutes at a time between April and July 2026, so any Backupper or AnyViewer client that polled during a window downloaded and ran the CROSSROAD downloader, which installed the SHINYROAD backdoor beside a signed Radmin binary. No software flaw is involved, GTIG names Switzerland among 11 victim countries, and the vendor's server-side repair does not clean a host that already ran the downloader, so installations need an endpoint hunt covering April to July 2026. →

01Active threats, incidents & disclosures1 item

HIGHNATOB1

AOMEI Backupper and AnyViewer update files tampered with for five to ten minutes at a time between April and July 2026 to push the CROSSROAD downloader and the SHINYROAD backdoor, with Switzerland among 11 countries GTIG names

GTIG and Mandiant report that a cluster they track as UNC7017 repeatedly altered two configuration files on AOMEI Technology's update servers between April and July 2026, each time for five to ten minutes before restoring the genuine content; GTIG confirmed three windows and says more probably went unseen (GTIG, 2026-10-16). ManageEngine's Threat Analysis Lab (METAL) writes "There was no CVE, no memory corruption, and no unpatched component." (METAL, 2026-10-16).

The client polls down_html.ini (update archive address and MD5 checksum) and Notifycfg.ini (what to display and run); during a window the actor pointed the first at an attacker-controlled ZIP with a matching checksum and padded the second with more than 35,000 lines of dummy sections, so the client started the unpacked downloader from its html directory, and GTIG describes the same flow for AnyViewer (GTIG, 2026-10-16). METAL's EDR recorded the chain on Backupper 8.3.0 (METAL, 2026-10-16).

The downloader, CROSSROAD, stops in some branches when the host geolocates to China (GTIG, 2026-10-16) and, METAL adds, when specific endpoint security agents are present (METAL, 2026-10-16). It registers a scheduled task that runs a signed Radmin binary every three hours; that binary loads an attacker-built DLL by search-order hijacking, which registers an in-process COM server running the SHINYROAD backdoor as encrypted PocketPy bytecode (GTIG, 2026-10-16). On some hosts GTIG later saw the Adaptix C2 agent, disguised as Nitro PDF tooling and started by hidden PowerShell through a second scheduled task (GTIG, 2026-10-16). The 20 July window also pointed a popup at a remote WebDAV path through an invisible window, which can leak the user's NetNTLMv2 response (GTIG, 2026-10-16).

GTIG's telemetry shows affected IT-services, telecommunications and higher-education organizations in 11 countries including Switzerland and calls the targeting opportunistic; AOMEI told Mandiant on 2026-07-29 that it had taken corrective action (GTIG, 2026-10-16). AOMEI's Backupper release notes through 8.5.0 list no change to update verification as of 2026-10-17 (AOMEI Technology, 2026-10-09).

Triage: do not validate an alert by fetching AOMEI's update address now: the files revert within minutes and the genuine content served then has led analysts to dismiss real detections; the Nitro PDF camouflage can make alerts read as isolated user downloads, so trace each one's parent process back to the updater (GTIG, 2026-10-16). Radmin is legitimate software, so provenance discriminates: METAL's EDR recorded the updater's unsigned child process installing it (METAL, 2026-10-16).

Each tampering window remained active for only five to ten minutes before reverting to authentic versions.

impacted organizations spanned diverse sectors, including IT services, telecommunications, higher education and related entities in Australia, Brazil, India, Pakistan, Portugal, Singapore, South Africa, Spain, Switzerland, Türkiye, and the United States.

Organizations running AOMEI software cannot assume they are protected solely because the vendor took corrective server-side action.

Google Threat Intelligence Group / Mandiant 2026-10-16

Nothing in this attack exploited a software defect. There was no CVE, no memory corruption, and no unpatched component.

As of publication, we have not independently verified that the compromise has been contained.

ManageEngine Threat Analysis Lab (METAL) 2026-10-16
threat17 Oct 03:30Zmulti-sourceOpen finding →

02Updates to prior coverage5 items

HIGHCVE-2026-81578 +2exploitedupdatedNATOB1

CVE-2026-82078 / CVE-2026-81578, PaperCut NG/MF: an Apache Tapestry request-routing confusion chains an unauthenticated config rewrite to arbitrary code execution, exploited before a patch existed

First published 2026-08-29 · open finding →

Updaterun 2026-10-17T0256Z-inteltitlesummaryregionstechniquescvessourcesevidencesourcing_noteactionsbody

Hunt.io recovered the attacker's open directories (2026-10-15) and reports a second route to code execution through PaperCut's XML-RPC API that does not use the Tapestry bypass and works when the API allowlist is too permissive or no explicit token is set, a cron-kept reverse SOCKS tunnel, an offline LSA-secret playbook and 45 victims with live internal pivots, Switzerland among the countries listed. Hunt.io does not report the XML-RPC route used against a victim; PaperCut's documentation names the token and allowlist settings that close it. PaperCut's September bulletin, revised 2026-10-13, now lists CVE-2026-82077 as fixed in 24.1.10 and names 24.1.11 as the v24 build.

Hunt.io found three open directories on one attacker host and reconstructs the operator's toolkit from the files in them; it says the recovered material aligns with GreyNoise's published account of the AI-driven campaign (Hunt.io, 2026-10-15). The operator's notes record a second route to code execution that does not use the Tapestry bypass: PaperCut's XML-RPC API at /rpc/api/xmlrpc accepts api.setConfigValue when its network allowlist is too permissive or no explicit API token is configured, because the handler then falls back to the built-in admin password as the token, and the same user-lookup settings are then rewritten (Hunt.io, 2026-10-15). Hunt.io says an instance already hardened against the Tapestry bypass is not necessarily protected against this one if its XML-RPC API is exposed with weak access controls (Hunt.io, 2026-10-15); it does not report the route used against a victim. PaperCut's documentation says the API's authentication token should be defined in the advanced config key auth.webservices.auth-token and that the address allowlist can be set in the admin interface or through auth.webservices.allowed-addresses (PaperCut Software, 2026-01-30).

The files also show what follows a compromise. A Linux kit keeps a chisel reverse SOCKS5 client alive through cron entries (periodic and at reboot) and a watchdog script that checks the process (Hunt.io, 2026-10-15). The Windows playbook exports the SECURITY and SYSTEM registry hives from a compromised host to recover LSA secrets, the domain machine account's password among them, offline (Hunt.io, 2026-10-15). The scale comes from the actor's own files: a reconnaissance pool of 1,005 hosts in at least 45 countries (800 confirmed vulnerable and 205 flagged from version fingerprinting), 2,165 logged attempts, 46 Active Directory domains packaged as victim data and 45 targets with a live reverse SOCKS5 pivot at the time of capture (Hunt.io, 2026-10-15). Switzerland is among the countries listed for those 45 targets, with no sector or organisation named, and Hunt.io says it shared its findings and the victim data with the national CERTs of the affected countries (Hunt.io, 2026-10-15).

PaperCut's September security bulletin, last updated 2026-10-13, now lists CVE-2026-82077 as fixed in 24.1.10 on the 24.x branch as well as in 26.0.5 and 25.0.13, and recommends 26.0.5, 25.0.13 or 24.1.11 or later (PaperCut Software, 2026-09-24).

NOTABLECVE-2026-70571 +1updatedNATOA2

CVE-2026-70571, Microsoft Exchange Server: an unauthenticated crafted-email code-execution flaw in the October 2026 security updates, the last Exchange 2016 and 2019 updates under the paid ESU (CVSS 8.1)

First published 2026-10-14 · open finding →

Updaterun 2026-10-17T0256Z-intelsummarysourcesevidenceactionsbody

Microsoft's Exchange Team now gives a workaround for the instability that the October 2026 Windows Server updates can cause on Exchange servers: it advises against uninstalling them and says setting the registry value EpmapSavedContextCap to 65536 and rebooting has solved the cases it assisted. It adds that DAG members losing quorum are among the reported symptoms and that the Exchange security updates are not the cause.

Microsoft's Exchange Team has published guidance for Exchange servers that become unstable after the October 2026 Windows Server updates. Since 2026-10-13 it has seen reports of OWA failing with MapiExceptionMdbOffline (hr=0x80004005, ec=1142; event ID 1006 in the Application log), mail queues growing during the day, DAG members unable to reach quorum and a reboot helping only temporarily; Exchange 2016, 2019 and Subscription Edition can all be affected (Microsoft Exchange Team, 2026-10-17). It says the issues are not related to installing the October 2026 Exchange security updates and that any Exchange version running on an affected Windows build can be hit; KB5126646 (Windows Server 2025), KB5126655 (2022), KB5126651 (2019) and KB5126868 (2016) can cause the failures after some time, and the impact varies with Exchange load, so some servers may never see a problem (Microsoft Exchange Team, 2026-10-17).

Microsoft's recommendation is not to uninstall the October 2026 Windows Server updates and, from an elevated command prompt on the Exchange server, to set the registry value EpmapSavedContextCap (REG_DWORD) under HKLM\SOFTWARE\Microsoft\Rpc to 65536, reboot, monitor, and raise the limit if the problem recurs; it says this has solved the customer cases it has assisted (Microsoft Exchange Team, 2026-10-17).

NOTABLEupdatedNATOA2

PK Softech, software supplier of Swiss pension funds: malware and a data outflow at Publica, with the City of Zurich fund PKZH saying its insured persons' test data was stolen, the Bernese funds BPK and BLVK and Pensionskasse Post also reporting the supplier incident, and the Federal Prosecutor's Office investigating

First published 2026-10-09 · open finding →

Updaterun 2026-10-17T0256Z-inteltitleheadlinesummarysourcesevidencesourcing_noteactionsbody

The Pensionskasse Stadt Zürich, the City of Zurich's pension fund, now says in its notice of 2026-10-15 that its inquiries indicate personal data of its insured persons and pensioners, handed to PK Softech as test data for a planned 2027 switch, was stolen, and that which fields were taken is still being clarified. Pensionskasse Post says in its notice of the same date that personal data did leave and no longer repeats its earlier anonymisation statement, though it is still unclear whether its insured persons' data is among it.

The Pensionskasse Stadt Zürich (PKZH), the City of Zurich's pension fund, has moved from checking to confirming. Its notice of 2026-10-15 says its inquiries so far indicate that personal data of PKZH insured persons was also stolen in the attack, and that this data had been used in tests for the planned system switch (PKZH, 2026-10-15); its FAQ adds that data was taken from PK Softech's system, including personal data of insured persons and of pensioners (PKZH, 2026-10-15). Inside IT reports that PKZH currently uses another software provider and plans to move to PK Softech's system in 2027 (Inside IT, 2026-10-16); PKZH's own FAQ says the system it uses to manage assets and pay pensions is not affected and dates the move to the beginning of 2027 (PKZH, 2026-10-15). The page still carries its earlier line that PKZH is checking whether its data is affected next to the confirmation (PKZH, 2026-10-15). It says a switch of this kind has to be tested with data that reproduces the real pension relationships as completely as possible, that PK Softech is contractually bound to protect and keep the data confidential, and that whether it met that duty is being investigated (PKZH, 2026-10-15).

Which data was stolen is still being clarified; in the worst case the fields are first name, name, date of birth, AHV number, address, private and business e-mail and telephone, insured earnings and retirement assets, civil status, partner details and IBAN (PKZH, 2026-10-15). PKZH was told on 2026-10-13 that data of its insured persons might be affected, has filed a criminal complaint and has reported the incident to the data-protection office (PKZH, 2026-10-15). It says a payout needs a signed written request and an identity check and that a change of bank details is checked additionally, so the data alone cannot trigger one, but that criminals can use it to appear credible (PKZH, 2026-10-15).

Pensionskasse Post's notice of 2026-10-15 says the investigation has shown that personal data did leave, and that it remains unclear whether data of its insured persons is affected, though that is possible (Pensionskasse Post, 2026-10-15). It does not repeat its earlier statement that its data at PK Softech is anonymised, and lists name, address, date of birth, AHV number, contact details, e-mail address and pension data as data that could be affected (Pensionskasse Post, 2026-10-15). The access vector, the actor and any ransom demand are still not public in any source read.

CRITICALCVE-2026-104935 +1exploitedupdatedNATOA1

CVE-2026-104935, Ivanti Connect Secure: an authentication bypass chained to code execution is exploited as a zero-day, and the root-escalation step of the chain was unpatched at disclosure (CVSS 8.6)

First published 2026-10-14 · open finding →

Improvementrun 2026-10-17T0256Z-inteltitleheadlinesummaryimmediate_actioncvessourcesevidencebody

The unfixed root-escalation step of the chain now has its own identifier, CVE-2026-111357, published 2026-10-15, and the Canadian Cyber Centre says open-source reporting indicates it is exploited in the wild; its description names only 22.8R2.4 as affected, says the step was exploited in the wild in October 2026 and states no fixed build, so scanners, SIEM enrichment and tickets can now follow the step by ID.

The root-escalation step of the chain now has its own identifier, CVE-2026-111357, published on 2026-10-15 and rated High on GitHub's advisory database as GHSA-fhw5-mpvj-x89m (GitHub Advisory Database, 2026-10-15). Its description reads "Ivanti Connect Secure 22.8R2.4 mishandles the manner in which the dsinvoked broker trusts DSCache configuration data, leading to privilege escalation to root, as exploited in the wild in October 2026." (GitHub Advisory Database, 2026-10-15), the same step Volexity describes as abusing the dsinvoked service's trust in the shared DSCache store (Volexity, 2026-10-13).

The record names only 22.8R2.4 as affected and states no fixed build; Volexity wrote that Ivanti was working on a fix for release in the coming weeks (Volexity, 2026-10-13), and no source read says whether any build now fixes it. The Canadian Cyber Centre's bulletin on the Ivanti advisory, updated 2026-10-16, adds that open-source reporting indicates CVE-2026-111357 is being exploited in the wild (Canadian Centre for Cyber Security, 2026-10-13). A scanner, SIEM enrichment rule or ticket can now follow the unfixed step by this ID, and an appliance that was exposed still needs the compromise check above.

HIGHCVE-2026-21589exploitedupdatedNATOA1

CVE-2026-21589, Atlassian Data Center: unauthenticated arbitrary file access in every version of eight self-managed products, patch or take them off the internet (CVSS 4.0 9.3)

First published 2026-10-06 · open finding →

Updaterun 2026-10-17T0256Z-intelheadlinesummarysourcesevidencesourcing_noteactionsbody

Atlassian, the assigner, rejected the CVE record for CVE-2026-21589 on 2026-10-16, giving only the generic reason that its publication may have been a false positive or a mistake; ENISA's EUVD record mirrors it and still lists exploitation since 2026-10-15. Atlassian's advisory still uses the ID with the same fixed versions, and no source says why the record was rejected or whether a replacement ID will follow, so tooling keyed on the ID can lose track of an exploited flaw.

ENISA's EUVD record EUVD-2026-92807 for CVE-2026-21589, which names Atlassian as the assigner, was updated at 20:39 UTC on 2026-10-16 and now describes the record only as "This CVE's publication may have been a false positive or a mistake. As a result, we have rejected this record." (ENISA EUVD, 2026-10-16). The same record still lists exploitation since 2026-10-15 (ENISA EUVD, 2026-10-16).

The flaw itself is unchanged: Atlassian's advisory, as read on 2026-10-17, still uses the ID, lists the same fixed versions and carries no note of the rejection (Atlassian, 2026-10-05). No source read says why the record was rejected or whether a replacement ID will follow. The consequence is for tooling: a scanner plugin, SIEM enrichment rule or ticket keyed on the ID, or on a feed that drops rejected IDs, can stop reporting a flaw that is exploited, so track it by Atlassian's advisory and the fixed versions above until a replacement ID appears.

03Action items13 items

Verification & coverage notes1 run

2026-10-17T0256Z-intel · Sonnet 5.5 · window 26 h · 1 entry published

Verification & coverage notes

Window: gap 24.0 h from 2026-10-16T0256Z-intel, window 26 h, developing-story window 72 h; the container clock agreed with the network date (skew 0 s) and the first fetch of origin/main was current. One new entry (AOMEI Backupper and AnyViewer update-channel tampering by UNC7017, high: GTIG names Switzerland among 11 victim countries and the decision is a bounded endpoint hunt over April to July) and five changelog records: Atlassian CVE-2026-21589 (update: the CVE record was rejected by its CNA on 2026-10-16 while advisory, fixes and KEV listing stand; the record was checked against the EUVD record, the CVE Services record and the vendor advisory), PK Softech (update: the Pensionskasse Stadt Zürich confirms that insured persons' and pensioners' test data was stolen, Pensionskasse Post confirms personal data left), Exchange October update (update: Microsoft's registry workaround and do-not-uninstall guidance for the Windows Server update regression), PaperCut NG/MF (update: Hunt.io's recovery of the attacker's open directories, a second configuration-based XML-RPC route, a cron-kept SOCKS tunnel, 45 live victim pivots, Switzerland among the countries listed) and Ivanti Connect Secure (improvement: CVE-2026-111357 now identifies the unfixed root-escalation step; it does not re-float the entry).

KEV sweep (work/2026-10-17T0256Z-intel/kev-window.txt): two additions in the window, CVE-2025-61624 and CVE-2026-102764, both COVERED by the previous fire's entries; no COVERED-STALE, MENTION-ONLY or RANSOMWARE rows. S1 also confirmed that no covered CVE moved from not-exploited to exploited and that the EUVD exploited list (ten records since 2026-10-01) is fully covered.

Backlog (state/coverage_backlog.md): the one open row, Beyond Gravity, was re-gated on today's facts by S2: no new fact since the SRF report of 2026-10-15, the vector, actor and data class are still not public and the China assumption rests on anonymous sources, so an incident entry would carry no evidence-bound technique. The row is unchanged and expires 2026-10-20; no note was appended because nothing changed state.

borderline-drop lines:

  • borderline-drop: Arkadia SpeeCAN RAIDEN, NET119 and 119RAIDEN, the Japanese municipal alerting and emergency-call registration supplier (S4; first disclosure 2026-10-13, vendor updates to 2026-10-16, up to 3.1 million addresses possibly exposed) - the vendor names no vulnerability, vector or actor, so any technique id would be inference; no Swiss nexus; incident floor. The 2026-10-16 fire dropped it on the same ground and nothing since changes it.
  • borderline-drop: PwnEscape CVE-2026-99999 and Vghost CVE-2026-74580, Linux guest-to-host and local escalation flaws (S3) - a guest or local prerequisite, no exploitation, not in KEV, fixed in stable kernels; regular patch cycle.
  • borderline-drop: NGINX 1.30.6 and 1.31.7 (five configuration-dependent flaws), Next.js out-of-band update (two unauthenticated RCEs, one conditional on Cache Components, one on SVG optimization), SAP Cloud SDK for Python CVE-2026-89111, Check Point LiteLLM CVE-2026-35029, OX Apache Airflow SSH host-key defaults (S3) - no exploitation or public proof of concept reported, conditional configurations, constituency exposure not established; Next.js was dropped on the same facts by the 2026-10-16 fire.
  • borderline-drop: Microsoft, Health-ISAC and Japan's police disruption of YAM Store, CoGUI and Iron Man (S3; dropped by the 2026-10-15 and 2026-10-16 fires on the same facts) and Qurium's Aeza address-space report with a Swiss-registered block (S3; the Swiss consequence is the analyst's inference, not Qurium's) - no decision a Swiss responder makes differently within 7 days.
  • borderline-drop: Republik's Metabase intrusion (S2; one trade-press relay of the victim's statement, a private-sector magazine, the CVE inferred rather than named, and the covered Metabase entry already carries the credential-rotation guidance).
  • borderline-drop: DD-Automation (S2; Safepay claim) - a sub-supplier of the contractor that runs the conveyor technology at the Army logistics base; the Army says no interfaces exist and site security is unaffected, the only source is Inside IT, and the one technique id (T1657) would rest on the leak-site claim alone.
  • borderline-drop: Eichstätt ransomware, the Berlin Landesnetz closure statement, Fehmarnbelt contractor FLC, the BAE-run US Bankruptcy Noticing Center outage (S2, S4) - incident floor: no vector, actor or behaviour beyond the impact, so no honest technique mapping. S3's Norwegian armed-forces rental-car lead was not followed: its primary was not reachable and it carries no Swiss nexus.
  • borderline-drop: alleged Qilin member extradited from Japan to Germany with the Synnovis attack folded into the case (S4) - a law-enforcement item with no reported change in the group's activity and no defender decision.
  • borderline-drop: GreyNoise proxyjacking, Symantec's Aoki infostealer, Forescout's ROMULUS (an update-of on the covered ChatGPT ClickFix entry with no new decision), Fox-IT's Cobalt Strike corpus, XBOW's Chrome chain (S3) - marginal for this constituency.

Single-source: the Exchange entry stays single-source (Microsoft is the vendor and the only observer); the AOMEI entry is multi-source (GTIG and METAL are independent first-hand observers) at B1. Reduced-confidence inclusions: none.

Contradictions: CVE-2026-111357's description says exploited in the wild in October 2026 while CISA's ADP data on the same CVE record says Exploitation none; the entry cites Volexity and the GitHub advisory text for the exploited status and does not repeat the CISA field because the CVE Services record is not a citable source. The PKZH page still carries the earlier line that it is checking whether its data is affected next to its confirmation; the entry reports the confirmation and the fields still being clarified.

Priority and ground calls: AOMEI is high rather than notable because GTIG names Switzerland among the victim countries and the decision is a hunt over a bounded period; it is not critical (no exploitation of a constituency system is shown and the vendor's servers are reported repaired). The Atlassian and Ivanti records leave priority unchanged (high, critical); the Exchange record leaves notable; PK Softech stays notable. The Next.js, NGINX, PwnEscape and Vghost drops follow the PD-11(b) limb: no exploitation signal and no mechanics that force the timeline. The Exchange update is update rather than improvement because Microsoft's workaround is a new vendor development, not a re-read of material already published.

Candidate sources: manageengine-metal added (S3), co-primary for the AOMEI entry; no feed exists, the landing page and reports read with extract. Not added: qurium, tencent-zhuque-lab, forescout-vedere-labs (S3; their items were dropped), br24-bayern (S2; no feed probed) and internet-watch-impress (S4; its only item was dropped), which the next audit may revisit. drupal-security promoted to active (promotion_due, three contributing runs). Recipe notes from the sub-agents' coverage gaps were folded into 25 source records, trail-of-bits moved from webfetch to its direct feed, and cash-ch-awp, the one UNSOLVED row of the health check, got a health_cmd on the news sitemap; the second health sweep reports 246 probed, 245 relevant and 1 stale, and no UNSOLVED row.

Rotation: slices were ranked on the rotation cursor; the previous two fires had attempted 109 records, and excluding them as a belt-and-braces removed 23, 23 and 29 candidates from the S1, S2 and S3 pools. S4's pool of breach sources had all been attempted by the previous two fires, so its 14 oldest by cursor were allocated anyway. All 21 essential records were attempted. The S3 slice carried 122 to 148 h lookbacks.

Coverage gaps: ivanti-advisory-hub (JavaScript shell on every transport, as in the previous fire), the BSI WID-SEC advisory page (an Angular shell; the CVE text came from the GitHub advisory page instead), the EUVD human page (an Angular shell; the rejection text is read from the record's data and is the one quote the gate could not machine-check), two metered-reader credits spent when extract fell through to the reader for BeyondTrust and Wordfence pages (S1), databreaches-net posts (reader fallback), fuitesinfos and hackernews (listing windows shorter than the lookback). No other unrecovered failure.

Verification loop: three cold passes of the single verifier definition, findings per iteration 22, 11 and 5 (truth 9, 4 and 2), all remediated or declined with a reason in the record. Iteration 1 corrected an attribution of METAL's reproduction, a missing citation per clause on PK Softech, a stale PaperCut fixed-version statement (the September bulletin, revised 2026-10-13, now lists 24.1.10 and names 24.1.11) and two run-record counts; iteration 2 found a stray template token in the AOMEI Triage line and a handful of hedges. Iteration 3 returned NEEDS_FIXES with two low-confidence one-clause truth findings (a Previdian timeline time on the Atlassian entry and a lines-versus-sections count on the AOMEI entry) and no F1 or F4, so under the early-exit rule both were applied and the run publishes without a fourth pass; verification_residual_count is 2 for that reason. Declined with reasons: PK Softech priority stays notable, the long sourcing notes and the PK Softech consolidation are left for the audit, and the actor-chosen task names stay as behavioural anchors.

Dates and telemetry: GTIG's AOMEI page carries 2026-10-15 in its JSON-LD and visible dateline but a page-meta published_time of 2026-10-16T21:02Z, and The Hacker News reported it on 2026-10-16; the entry cites it as 2026-10-16 and the window gate passes on that date. S2's return header counts 27 web searches and 130 bridge fetches, its findings file 24 and 120; the header is recorded in sub_agents.

Operational notes: files over 1 MB under work/2026-10-17T0256Z-intel/ (S1's 47 MB Microsoft October CVRF working copy, two copies of the CISA KEV JSON and the quote-check page bodies) were deleted before commit; all are re-fetchable public data and the findings that used them are in the findings files. Stop-hook nudges to commit arrived repeatedly mid-run and were not acted on (nothing is committed before Phase 6). A background-job cd in one deep-read command ran three fetches from the wrong directory; they were re-run with absolute paths. Entry timestamps were set from the container clock, which was re-read before each record.