← Red Threads

Correction is supported in the client; reversal of consequences remains unverified

Bounded public-code investigation,9 September2026. Acquisition stopped after six Python source files and repository metadata. This is static inspection of Meta's public reference client at commit 73a742c45c35d711e94c8bf92254df1a2d9c9f01; no package was installed, no code was run, no authentication was used and no private signal API was queried. Lantern's use of Meta's hosted ThreatExchange does not establish that any participant deploys this particular client or commit.

What the inspected code establishes

The [update wrapper](http[local research file] recognizes deletion markers. Its file-store implementation removes the matching local entry when applying such an update (lines396–413). Thus the inspected implementation provides a path for removing a previously fetched record, rather than treating received signals as intrinsically permanent.

Its checkpoint documentation describes a90-day history for deletion records and an85-day stale threshold (lines218–253). That refers to change-history availability, not Lantern's retention period for underlying signals, personal data or financial records. The hosted API's present retention behaviour was not independently tested. The code also guards against applying a stale incremental update.

The [current API adapter](http[local research file] applies the85-day threshold and maps a deletion marker to an absent record in its delta. It preserves contributor-specific opinions: explicit classifications and selected reactions can produce positive, negative or investigation-seed categories (lines105–180). These generic software categories are not Lantern's legal findings or proof that a receiving company uses a particular threshold.

The fetch command.

The [opinion model](http[local research file] distinguishes negative assessments, investigation leads and positive classifications. Its aggregator can represent conflicting categories as disputed (lines129–171). That capability does not establish that an interface displays the dispute to every investigator, that it suppresses action, or that an earlier account decision is reconsidered.

The [API wrapper](http[local research file] requests updated data including deletion/status fields and exposes reactions (lines271–308,443–520). Nothing was submitted through those methods. Their existence is evidence of the published client interface, not an observed production transaction.

Meaning for this investigation

The record now argues against describing the signal exchange as technically incapable of correction. It leaves three separate questions: whether programme obligations require the relevant update path; whether recipients actually process updates correctly and promptly; and whether a corrected signal triggers review of an already completed content, account or payment decision.

A local dataset refresh is not itself an account restoration. The inspected code addresses fetched signal state and opinions. It supplies no evidence of Lantern-specific reversal of Cash App closures, Xbox restrictions or any Steam action. This is a boundary on the current evidence, not a repository-wide claim that no related software could implement restoration.

The2024 Lantern report's appeal/removal/TechCoalition-notification requirement remains the programme-level starting point. The next discriminating artifact is an integration contract or anonymized operational trace connecting a correction identifier to recipient acknowledgement, refreshed data, case reopening and disposition. A trace that ends at data deletion would leave the consequential remedy question unresolved.

Custody and scope

captures.json records exact public URLs, commit, bytes and SHA256 for repository-main-ref.json, the complete nontruncated repository-tree.json and six source files. Retained source is not equivalent to full-file review. Root read targeted portions of threat_updates.py1–75,218–343,380–413; fb_threatexchange_api.py1–180,199–217,260–405; api.py271–308,443–520; fetch_cmd.py168–257; fetch_state.py29–51,55–181,271–276. descriptor.py was captured and search-inspected, not substantively reviewed. The tree was used to locate files, not treated as proof of their behaviour. Independent static review is recorded separately when returned.

The Meta deletion documentation and an initially discovered GitHub issue page failed in the web reader. No mirror was used to establish their contents. The ordinary public GitHub repository/API and pinned raw source provided the useful substitute. No repeated attempt, private-access request or live ThreatExchange query occurred. A discovered issue title was not used as evidence of a deployed Lantern defect.