Repository navigation
Third-party audit 2026-10-05: drift detection, real transport, file modes, CSV safety - #1
Merged
Merged
Conversation
…odes, CSV safety - payload_keys_missing: the parser checks every __NEXT_DATA__ key it reads and names the missing ones per account; the canary fails on it - transport records what fetched the pages (http/browser/cdp), with transport_requested beside it; the default run used to say "auto" - has_more_spotlight / has_more_highlights on the profile row - outputs were created 0600 (nine of nine under umask 022); new files now get the umask mode, existing files keep theirs - CSV formula neutralisation lifted from rakuten-scraper (0 of 10,554 string cells fire today) - a check that the three engines' shared code stays identical - CI newest Python 3.14; version 0.2.0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Works through the third-party audit of 2026-10-05 (taken at
e756e58). Every finding was checked against a live run of the current code before it was accepted, rejected or changed.Fixed, with the evidence
payload_keys_missing: the parser checks every__NEXT_DATA__key it reads (keys, not values — a hidden count is still a legitimate"0") and names the missing ones per account in the sidecar. 0 false positives on 20 raw captures and a live page. The canary fails on it.engine=playwrighton an HTTP run--transport autothe sidecar saidtransport: "auto", naming no transport at alltransportnow records what fetched the pages (http/browser/cdp),transport_requestedthe flag.enginekeeps naming the script (see below). Live, all three engines:httpfor auto,browserfor--transport browser.has_more_spotlight/has_more_highlightson the profile row, from the page's own cursors.'prefix in CSV only, strings only, counted incsv_cells_escaped.Each new check was controlled: the fix removed, the suite red on the check named for it, run with
PYTHONDONTWRITEBYTECODE=1and a cleared cache. Six of six; one control first stayed green because the planted line fell outside the block being checked — redone inside it, red.Not changed, and why
engine=http. The engine is still the script that ran, and which driver the browser fallback would use matters for reproducing a run. One field for two facts loses one of them; the newtransportfield carries the other.engine-smokejob fail when an engine cannot import, and a lazy import is exactly what made that job blind in a sibling repo. An HTTP-only user needs the pip package, not a browser download./usr/bin/python3— the audit itself ran on 3.9.6 — and the code needs nothing newer. TheNotOpenSSLWarningin the audit's log is that system Python's LibreSSL, not this repo.public-profile-category-v3-business-group) are Snapchat's own; the labels live in its front-end bundle, change per build and are localised. A mapping written here would be a guess presented as data. The raw id is the stable join key.No column was removed or renamed, and exit codes are unchanged.
🤖 Generated with Claude Code