bootstrap($app); (new Illuminate\Foundation\Bootstrap\LoadConfiguration)->bootstrap($app); $db = config('database.connections.'.config('database.default')); throw_unless($db['driver']==='pgsql' && empty($db['url']) && in_array($db['host'],['127.0.0.1','localhost'],true) && (int)$db['port']===5432 && $db['database']==='investemoz', RuntimeException::class,'Destination refused.'); $pdo = new PDO('pgsql:host='.$db['host'].';port='.$db['port'].';dbname='.$db['database'],$db['username'],$db['password'],[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]); $pdo->exec('BEGIN READ ONLY'); $proof = ['at'=>gmdate('c'),'target'=>$pdo->query("SELECT current_database() AS database,inet_server_port() AS port,current_setting('transaction_read_only') AS read_only")->fetch(PDO::FETCH_ASSOC), 'config_cached'=>$app->configurationIsCached(), 'composer_authoritative'=>$loader->isClassMapAuthoritative() ?? null, 'session'=>['driver'=>config('session.driver'),'cookie'=>config('session.cookie'),'domain'=>config('session.domain'),'path'=>config('session.path'),'secure'=>config('session.secure'),'same_site'=>config('session.same_site')], 'app_url'=>config('app.url'),'app_cipher'=>config('app.cipher'),'app_name'=>config('app.name'), 'flags'=>[], 'installed'=>[], 'counts'=>[], 'source_writes'=>0,'providers_booted'=>false,'messages_sent'=>0]; foreach (['profile_administration_enabled','profile_access_enabled','opportunity_dashboard_access_enabled','opportunity_specialized_drafts_enabled','opportunity_modular_profiles_qa_enabled','legacy_content_qa_enabled','opportunity_notifications_enabled','organization_country_enabled'] as $name) $proof['flags'][$name]=(bool)config('portal.'.$name,false); $proof['installed']=$pdo->query("SELECT migration FROM migrations WHERE migration IN ('2026_10_09_030000_extend_opportunity_resources','2026_10_10_040000_create_portal_profile_authorization','2026_10_10_050000_extend_organization_country','2026_10_09_190000_prepare_investor_path') ORDER BY migration")->fetchAll(PDO::FETCH_COLUMN); foreach (['users','organizations','memberships','portal_role_assignments','portal_profile_requests','jobs','failed_jobs'] as $table) $proof['counts'][$table]=(int)$pdo->query('SELECT count(*) FROM "'.$table.'"')->fetchColumn(); $proof['superuser_pair']=$pdo->query('SELECT first_user_id,second_user_id,version FROM portal_superuser_pair')->fetchAll(PDO::FETCH_ASSOC); $proof['binary_key_columns']=$pdo->query("SELECT table_name,column_name FROM information_schema.columns WHERE table_schema='public' AND column_name IN ('storage_key','storage_path') ORDER BY table_name,column_name")->fetchAll(PDO::FETCH_ASSOC); $pdo->exec('ROLLBACK'); file_put_contents($root.'/storage/app/private/investmoz-v2/portal-audit/onboarding-release-readonly.json',json_encode($proof,JSON_PRETTY_PRINT|JSON_THROW_ON_ERROR)); echo json_encode($proof,JSON_THROW_ON_ERROR).PHP_EOL;