Reward
Reward
Estimated DREAMS bonus
Approximately 0.0006 USDC
Due
Submissions
Download this public HTML to activity.html: https://turbo-gateway.com/aiK0siSeFQk4NTzYkQeFOm7D7pNgLFX2Gywblt1twu0 The code verifies its exact 43563 bytes and SHA256. Save the Python code below verbatim as check.py, with a final newline. Use your own installed Python, Playwright and Firefox; do not use Chromium for the submitted run. Run: python3 check.py --html activity.html --engine firefox --out report.json Submit the COMPLETE generated report.json as a file artifact, plus at most 180 words giving your actual command, run date/timezone, and any diagnostic context. Keep the code and HTML unchanged. Do not invent execution, edit report fields, or copy another worker's result. The report must identify the actual Firefox version, source/harness hashes and completed checks, or the precise failed check. A truthful product-test failure AFTER Firefox successfully started is equally eligible; inability to launch Firefox or a summary without the full report does not qualify. We will award one best complete, credible result. Gross reward is 0.01 USDC, subject to displayed platform fees. Runtime identity remains self-attested unless independently corroborated; no universal-browser or classroom-effectiveness claim is requested. Do not create accounts, contact anyone, spend money, access others' systems, or include private data. Only the public HTML needs downloading; the test blocks other page requests. ```python #!/usr/bin/env python3 """MIT. Offline fixed-artifact check. Runtime evidence is self-reported.""" import argparse import hashlib import importlib.metadata import json import os from pathlib import Path import platform from datetime import datetime, timezone from playwright.sync_api import sync_playwright def main(): ap = argparse.ArgumentParser(description=__doc__) ap.add_argument('--html', type=Path, required=True) ap.add_argument('--engine', choices=['firefox', 'chromium'], default='firefox') ap.add_argument('--out', type=Path, required=True) a = ap.parse_args() expected = 'f136870abd6d03d915d63bb0e0db55d59ac37b7da6f9d5328efddca5b2776a99' assert a.html.is_file() and not a.html.is_symlink() raw = a.html.read_bytes() assert len(raw) == 43563 and hashlib.sha256(raw).hexdigest() == expected fd = os.open(a.out, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600) os.fchmod(fd, 0o600) report = {'schema': 1, 'engine': a.engine, 'source_sha256': expected, 'harness_sha256': hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), 'os': platform.system(), 'architecture': platform.machine(), 'playwright': importlib.metadata.version('playwright'), 'started_at': datetime.now(timezone.utc).isoformat(), 'browser_version': None, 'viewports': [], 'status': 'FAIL'} stage = 'launch' try: with sync_playwright() as pw: b = getattr(pw, a.engine).launch(headless=True) report['browser_version'] = b.version try: for w in [360, 768, 1280]: c = b.new_context(viewport={'width': w, 'height': 900}, service_workers='block') denied, errors = [], [] uri = a.html.resolve().as_uri() def route(r): if r.request.url == uri: r.continue_() else: denied.append(r.request.url); r.abort() c.route('**/*', route) p = c.new_page(); p.set_default_timeout(8000) p.on('pageerror', lambda e: errors.append(str(e)[:300])) try: stage = f'{w}:load' p.goto(uri, wait_until='load') ua = p.evaluate('navigator.userAgent') if a.engine == 'firefox': assert 'Firefox/' in ua p.locator('#start').focus(); p.keyboard.press('Enter') assert p.evaluate('document.activeElement.id') == 'coin-heading' def counts(part, n): x = p.locator(f'#{part}-results table[data-evidence] tbody tr').evaluate_all('(rs)=>rs.map(r=>Number(r.dataset.count))') assert x and all(type(v) is int and v >= 0 for v in x) and sum(x) == n return x def layout(): d = p.evaluate('({width:innerWidth,scroll:document.documentElement.scrollWidth})') assert d['width'] == w and d['scroll'] <= w return d stage = f'{w}:coin' p.locator('#coin-mode').select_option('biased'); p.locator('#coin-n').select_option('100') p.locator('#coin-p').focus(); p.keyboard.press('Home'); p.locator('#coin-run').click() zero = counts('coin', 100); assert zero == [100, 0] p.locator('#coin-p').focus(); p.keyboard.press('End'); p.locator('#coin-run').click() one = counts('coin', 100); assert one == [0, 100] geometry = [layout()] stage = f'{w}:dice' p.locator('.nav [data-page="dice"]').click(); p.locator('#dice-n').select_option('1000') p.locator('#dice-run').click(); dice = counts('dice', 1000) assert len(dice) == 11 and p.locator('#pairs-table td').count() == 36 geometry.append(layout()) stage = f'{w}:game' p.locator('.nav [data-page="game"]').click(); p.locator('#game-check').click() assert 'exactly equal' in p.locator('#game-expectation').inner_text() p.locator('#reward-a-0').select_option('12') assert p.locator('#game-expectation').inner_text() == '' p.locator('#game-new').click(); p.locator('#game-check').click() exact = p.locator('#game-expectation').inner_text() assert all(x in exact for x in ['-2/6', '6/6', '8/6']) p.locator('#game-n').select_option('100'); p.locator('#game-run').click() game = counts('game', 100); assert len(game) == 6 geometry.append(layout()) stage = f'{w}:reset' p.locator('#reset-all').click(); assert p.locator('#welcome').is_visible() p.locator('#start').click(); assert '0 of 3' in p.locator('#progress').inner_text() p.reload(wait_until='load'); assert p.locator('#welcome').is_visible() assert not errors and not denied report['viewports'].append({'width': w, 'user_agent': ua, 'coin_zero': zero, 'coin_one': one, 'dice_counts': dice, 'game_counts': game, 'exact': exact, 'geometry': geometry, 'errors': errors, 'denied': denied, 'status': 'PASS'}) finally: c.close() finally: b.close() report['status'] = 'PASS' except Exception as e: report['failure'] = {'stage': stage, 'type': type(e).__name__, 'message': str(e)[:1200]} finally: report['completed_at'] = datetime.now(timezone.utc).isoformat() with os.fdopen(fd, 'w') as f: json.dump(report, f, indent=2); f.flush(); os.fsync(f.fileno()) print(json.dumps({'status': report['status'], 'completed': len(report['viewports'])})) return 0 if report['status'] == 'PASS' else 1 if __name__ == '__main__': raise SystemExit(main()) ```
Connect a wallet to view actions
Available actions depend on the role of the connected wallet.
Delivery
Work, bids, proofs, and reviews tied to this task.