Paladium Bot v100.3.85 — Final Test Report
==========================================

Baseline: paladium-single-bot-100.3.83-final.zip

Implemented
- Forced membership join/leave transition event tracking.
- Separate forced membership tables: today / this week / this month / this year / all-time.
- Required headers: 📣 کانال | 👤 عضو | 🚪 لفت | 📊 نهایی.
- Initial false membership checks are not classified as leaves.
- One-time backfill from historical pu_force_checks.
- Published file comments recorded from group replies and linked channel discussion comments.
- Direct uploader opinion callbacks were not present; public comment counts are sourced from pu_file_comments only.
- File/folder statistics use deep-link cells.
- Commerce statistics restricted to active explicit sale products; raw unsold pu_files are excluded.
- Dedicated uploader.viewer_details permission, default disabled; owner or explicitly delegated admin only.

Validation
- PHP lint: PASS — 73 PHP files, 0 errors.
- Force stats schema/helper definition counts: PASS.
- Force stats period table/header scan: PASS.
- Initial-false-does-not-create-leave transition guard: PASS.
- Published comment resolver + storage schema: PASS.
- Viewer-detail permission gate and callback mapping: PASS.
- Viewer notification recipient filtering: PASS.
- Commerce stats contains commerce_file_products and excludes raw FROM pu_files sales query: PASS.
- Direct public uploader opinion callback scan: PASS — no up:feedback:, up:opinion:, or up:comment: routes found.
- ZIP integrity: PASS.
- SHA256 recorded below.

Production limitation
- Live Telegram/cPanel production API and production database execution are not available in this environment.


SHA256 is stored in paladium-single-bot-100.3.85-final.sha256.
