Capture exactly what a web page says now, with a cryptographic timestamped proof it wasn't altered. Notarized web content: prove what a page said at a moment.
CHANGELOG — Arcaeon Verified Snapshot (Apify actor, fast-dollar product A)
2026-08-12 — BUILT + DEPLOYED (core proven; input-wiring last mile)
His A-and-B pick (33679) → built the FAST-DOLLAR product (portfolio option A): an Apify pay-per-result actor with our tamper-evidence as the differentiator. Niche = verified web snapshot / notarized web content ("prove what a page said at a moment") — chosen because provenance is the WHOLE value, not a bolt-on. My call under the AI-business autonomy grant.
CORE PROVEN (src/snapshot.py, tested locally): fetch URL → capture content → Ed25519-sign a canonical statement binding url + captured_at + sha256(content). verify_snapshot() passes on real content, FAILS on a single tampered byte AND on a forged hash. Signing key = dedicated Arcaeon Ed25519 keypair (private in ~/.velouria-secrets/arcaeon_snapshot_signing.key, public 4d0a4156... for verifiers).
DEPLOYED to Daniel's Apify (acct Dan8433, FREE plan; token in ~/.velouria-secrets/apify_token.txt, ACL-locked): actor qi1AAY5TcgZZjQgFD, https://console.apify.com/actors/qi1AAY5TcgZZjQgFD . Build succeeds (0.1.4), container runs, no crash. ARCAEON_SIGNING_KEY set as a secret env var (version-scoped endpoint POST /v2/acts/{id}/versions/0.1/env-vars).
Rewrote SDK-free: the apify SDK pulled a crawlee/pydantic version conflict ("cannot specify both default and default_factory") that broke the build-run. Dropped the SDK → talk to the platform via env + REST directly (requirements = just httpx + cryptography). Robust, no dep conflict.
LAST MILE (open): the SDK-free input read returns HTTP 404 on the default-KVS INPUT record under Apify's LIMITED_PERMISSIONS runtime → actor runs but gets no URLs → 0 items. Tried ACTOR_/APIFY_ env-var fallback + ACTOR_INPUT_KEY; still 404, so the input isn't at the KVS path I'm reading. NEXT: diagnose where Apify actually exposes run input to an SDK-free container (log all env vars in a diagnostic run; likely a local mounted path or a different record/store). THEN: publish to public store + set pay-per-result monetization (needs his payout details). Reported honestly to him (33690) — NOT earning yet, not claimed as such.
2026-08-12 (later) — WORKING END-TO-END on platform (last mile fixed)
ROOT CAUSE of the input 404: ACTOR_API_BASE_URL is Apify's internal proxy http://10.0.34.85:8010/ WITH a trailing slash, so f"{API}/v2/..." made a double-slash 8010//v2/ → 404. Fix: .rstrip("/") on API base. (Found via a diagnostic build 0.1.5 that logged the runtime env.)
Build 0.1.7 (clean, diagnostic removed): WORKS. Test-ran live via run-sync-get-dataset-items on 2 URLs (news.ycombinator.com + example.com) → 2 dataset items, each a signed verified snapshot, and BOTH signatures independently verify against the public key. The actor produces genuine tamper-evident notarized snapshots on the platform. "Refine current, no half-step" = DONE.
BLOCKED ON HIS APIFY ACCOUNT (console, one-time): (1) make-public requires a PUBLIC PROFILE (username) on his account ("Actor owner needs a public profile"); (2) pay-per-result monetization requires payout details. Once both: flip isPublic + set pricing → live + sellable. Product itself is complete.